§
    òyIfJ  ã                  ó"  — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
mZmZ ddlmZmZ ddlmZmZmZ  G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Zg d¢ZdS )aG  
Virtual environments in the traditional sense are built as reference to the host python. This file allows declarative
references to elements on the file system, allowing our system to automatically detect what modes it can support given
the constraints: e.g. can the file system symlink, can the files be read, executed, etc.
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚOrderedDict)ÚS_IXGRPÚS_IXOTHÚS_IXUSR)Úfs_is_case_sensitiveÚfs_supports_symlink)ÚcopyÚmake_exeÚsymlinkc                  ó   — e Zd ZdZdZdZdS )ÚRefMustÚNAr   r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚCOPYÚSYMLINK© ó    ú`/var/www/piapp/venv/lib/python3.11/site-packages/virtualenv/create/via_global_ref/builtin/ref.pyr   r      s   € € € € € Ø	€BØ€DØ€G€G€Gr   r   c                  ó   — e Zd ZdZdZdZdS )ÚRefWhenÚANYr   r   N)r   r   r   r   r   r   r   r   r   r   r      s   € € € € € Ø
€CØ€DØ€G€G€Gr   r   c                  óÂ   — e Zd ZdZ e¦   «         Z e¦   «         Zej	        e
j        fdd„Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zd„ ZdS )ÚPathRefzABase class that checks if a file reference can be symlink/copied.ÚreturnÚNonec                óô   — || _         || _        || _        	 |                     ¦   «         | _        n# t          $ r
 d| _        Y nw xY w| j        rd nd| _        | j        rd nd| _        | j        rd nd| _        d S ©NF)ÚmustÚwhenÚsrcÚexistsÚOSErrorÚ	_can_readÚ	_can_copyÚ_can_symlink)Úselfr%   r#   r$   s       r   Ú__init__zPathRef.__init__$   s�   € ØˆŒ	ØˆŒ	ØˆŒð	 ØŸ*š*™,œ,ˆDŒKˆKøÝð 	 ð 	 ð 	 ØˆDŒKˆKˆKð	 øøøà!%¤Ð7˜˜°%ˆŒØ!%¤Ð7˜˜°%ˆŒØ$(¤KÐ:˜D˜D°UˆÔÐÐs   —1 ±AÁAÚstrc                ó0   — | j         j        › d| j        › d�S )Nú(src=ú))Ú	__class__r   r%   ©r+   s    r   Ú__repr__zPathRef.__repr__0   s    € Ø”.Ô)Ð;Ð;°´Ð;Ð;Ð;Ð;r   c                ó`  — | j         €¡| j                             ¦   «         rR	 | j                             d¦  «        5  d| _         d d d ¦  «         n# 1 swxY w Y   nM# t          $ r
 d| _         Y n:w xY wt          j        t          | j        ¦  «        t
          j        ¦  «        | _         | j         S )NÚrbTF)	r(   r%   Úis_fileÚopenr'   ÚosÚaccessr-   ÚR_OKr2   s    r   Úcan_readzPathRef.can_read3   sä   € àŒ>Ð!ØŒx×ÒÑ!Ô!ð Cð+ØœŸš tÑ,Ô,ð .ð .Ø)-˜œð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .øøåð +ð +ð +Ø%*�D”N�N�Nð+øøøõ "$¤­3¨t¬x©=¬=½"¼'Ñ!BÔ!B�”ØŒ~Ðs4   ¢A ¼AÁA ÁAÁA ÁAÁA ÁA0Á/A0c                óz   — | j         €.| j        t          j        k    r| j        | _         n| j        | _         | j         S ©N)r)   r#   r   r   Úcan_symlinkr;   r2   s    r   Úcan_copyzPathRef.can_copy@   s6   € àŒ>Ð!ØŒy�GœOÒ+Ð+Ø!%Ô!1�”�à!%¤�”ØŒ~Ðr   c                óˆ   — | j         €5| j        t          j        k    r| j        | _         n| j        o| j        | _         | j         S r=   )r*   r#   r   r   r?   ÚFS_SUPPORTS_SYMLINKr;   r2   s    r   r>   zPathRef.can_symlinkI   sB   € àÔÐ$ØŒy�GœLÒ(Ð(Ø$(¤M�Ô!Ð!à$(Ô$<Ð$NÀÄ�Ô!ØÔ Ð r   c                ó   — t           ‚r=   )ÚNotImplementedError)r+   ÚcreatorÚsymlinkss      r   ÚrunzPathRef.runR   s   € å!Ð!r   c                ó’   — | j         t          j        k    rt          S | j         t          j        k    rt
          S |rt          nt
          S r=   )r#   r   r   r   r   r   )r+   rE   s     r   ÚmethodzPathRef.methodV   s9   € ØŒ9�œÒ'Ð'ÝˆNØŒ9�œÒ$Ð$ÝˆKØ"Ð,�wˆw­Ð,r   N©r   r    ©r   r-   )r   r   r   Ú__doc__r   rA   r
   ÚFS_CASE_SENSITIVEr   r   r   r   r,   r3   Úpropertyr;   r?   r>   r   rF   rH   r   r   r   r   r      sé   € € € € € ØKÐKà-Ð-Ñ/Ô/ÐØ,Ð,Ñ.Ô.Ðà!(¤°'´+ð 
;ð 
;ð 
;ð 
;ð 
;ð<ð <ð <ð <ð ð
ð 
ñ „Xð
ð ðð ñ „Xðð ð!ð !ñ „Xð!ð ð"ð "ñ „^ð"ð-ð -ð -ð -ð -r   r   c                  ój   ‡ — e Zd ZdZej        ej        fdˆ fd„Ze	d„ ¦   «         Z
e	d„ ¦   «         Zˆ xZS )Ú
ExePathRefzJBase class that checks if a executable can be references via symlink/copy.r   r    c                ó\   •— t          ¦   «                              |||¦  «         d | _        d S r=   )Úsuperr,   Ú_can_run)r+   r%   r#   r$   r1   s       €r   r,   zExePathRef.__init__a   s*   ø€ Ý‰Œ×Ò˜˜d DÑ)Ô)Ð)ØˆŒˆˆr   c                ó"   — | j         r| j        S dS r"   )rA   Úcan_runr2   s    r   r>   zExePathRef.can_symlinke   s   € àÔ#ð 	 Ø”<ÐØˆur   c                ó°   — | j         €I| j                             ¦   «         j        }t          t
          t          fD ]}||z  rd| _          nd| _         | j         S )NTF)rR   r%   ÚstatÚst_moder	   r   r   )r+   ÚmodeÚkeys      r   rT   zExePathRef.can_runk   sY   € àŒ=Ð Ø”8—=’=‘?”?Ô*ˆDÝ¥­'Ð2ð &ð &�Ø˜#‘:ð )Ø$(�D”MØ�à %�”ØŒ}Ðr   rI   )r   r   r   rK   r   r   r   r   r,   rM   r>   rT   Ú__classcell__©r1   s   @r   rO   rO   ^   s‡   ø€ € € € € ØTÐTà!(¤°'´+ð ð ð ð ð ð ð ð ðð ñ „Xðð
 ð	ð 	ñ „Xð	ð 	ð 	ð 	ð 	r   rO   c                  óD   ‡ — e Zd ZdZej        ej        fdˆ fd„Zd„ Z	ˆ xZ
S )ÚPathRefToDestzLink a path on the file system.r   r    c                ó\   •— t          ¦   «                              |||¦  «         || _        d S r=   )rQ   r,   Údest)r+   r%   r_   r#   r$   r1   s        €r   r,   zPathRefToDest.__init__{   s*   ø€ Ý‰Œ×Ò˜˜d DÑ)Ô)Ð)ØˆŒ	ˆ	ˆ	r   c                ó0  — |                       || j        ¦  «        }|                      |¦  «        }t          |t          ¦  «        r|n|f}|j                             ¦   «         s|j                             dd¬¦  «         |D ]} || j        |¦  «         Œd S )NT)ÚparentsÚexist_ok)r_   r%   rH   Ú
isinstanceÚlistÚparentr&   Úmkdir)r+   rD   rE   r_   rH   Údest_iterableÚdsts          r   rF   zPathRefToDest.run   s£   € Ø�yŠy˜ $¤(Ñ+Ô+ˆØ—’˜XÑ&Ô&ˆÝ *¨4µÑ 6Ô 6ÐC˜˜¸T¸GˆØŒ{×!Ò!Ñ#Ô#ð 	;ØŒK×Ò d°TÐÑ:Ô:Ð:Ø ð 	"ð 	"ˆCØˆF�4”8˜SÑ!Ô!Ð!Ð!ð	"ð 	"r   rI   )r   r   r   rK   r   r   r   r   r,   rF   rZ   r[   s   @r   r]   r]   x   s`   ø€ € € € € Ø)Ð)à'.¤z¸¼ð ð ð ð ð ð ð ð"ð "ð "ð "ð "ð "ð "r   r]   c                  óB   — e Zd ZdZej        ej        fd	d„Zd„ Z	d
d„Z
dS )ÚExePathRefToDestz#Link a exe path on the file system.r   r    c                ó@  — t                                | |||¦  «         t                               | ||||¦  «         | j        s8t	          t          d„ |D ¦   «         ¦  «                             ¦   «         ¦  «        }|d         | _        |dd …         | _        || _	        d S )Nc              3  óB   K  — | ]}|                      ¦   «         d fV — Œd S r=   )Úlower)Ú.0Úis     r   ú	<genexpr>z,ExePathRefToDest.__init__.<locals>.<genexpr>�   s/   è è € Ð&JÐ&J¸Q¨¯ª©	¬	°4Ð'8Ð&JÐ&JÐ&JÐ&JÐ&JÐ&Jr   r   é   )
rO   r,   r]   rL   rd   r   ÚkeysÚbaseÚaliasesr_   )r+   r%   Útargetsr_   r#   r$   s         r   r,   zExePathRefToDest.__init__Œ   s™   € Ý×Ò˜D # t¨TÑ2Ô2Ð2Ý×Ò˜t S¨$°°dÑ;Ô;Ð;ØÔ%ð 	SÝ�;Ð&JÐ&JÀ'Ð&JÑ&JÔ&JÑJÔJ×OÒOÑQÔQÑRÔRˆGØ˜A”JˆŒ	Ø˜q˜r˜r”{ˆŒØˆŒ	ˆ	ˆ	r   c                ó¼  — |                       || j        ¦  «        j        }|| j        z  }|                      |¦  «        } || j        |¦  «         |st          |¦  «         | j        D ]r}||z  }|                     ¦   «         r|                     ¦   «          |r| 	                    | j        ¦  «         nt          | j        |¦  «         |st          |¦  «         Œsd S r=   )r_   r%   re   rs   rH   r   rt   r&   ÚunlinkÚ
symlink_tor   )r+   rD   rE   Úbin_dirr_   rH   ÚextraÚ	link_files           r   rF   zExePathRefToDest.run•   sò   € Ø—)’)˜G T¤XÑ.Ô.Ô5ˆØ˜œÑ"ˆØ—’˜XÑ&Ô&ˆØˆˆtŒx˜ÑÔÐØð 	Ý�T‰NŒNˆNØ”\ð 		$ð 		$ˆEØ %™ˆIØ×ÒÑ!Ô!ð #Ø× Ò Ñ"Ô"Ð"Øð *Ø×$Ò$ T¤YÑ/Ô/Ð/Ð/å�T”X˜yÑ)Ô)Ð)Øð $Ý˜Ñ#Ô#Ð#øð		$ð 		$r   r-   c                ó@   — | j         j        › d| j        › d| j        › d�S )Nr/   z, alias=r0   )r1   r   r%   rt   r2   s    r   r3   zExePathRefToDest.__repr__§   s*   € Ø”.Ô)ÐQÐQ°´ÐQÐQÀ$Ä,ÐQÐQÐQÐQr   NrI   rJ   )r   r   r   rK   r   r   r   r   r,   rF   r3   r   r   r   rj   rj   ‰   se   € € € € € Ø-Ð-à07´
ÀÄð ð ð ð ð ð$ð $ð $ð$Rð Rð Rð Rð Rð Rr   rj   )rO   rj   r   r]   r   r   )rK   Ú
__future__r   r8   Úabcr   r   Úcollectionsr   rV   r   r   r	   Úvirtualenv.infor
   r   Úvirtualenv.util.pathr   r   r   r   r   r   rO   r]   rj   Ú__all__r   r   r   ú<module>rƒ      sÅ  ððð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ñ ô ð ðð ð ð ð ñ ô ð ð=-ð =-ð =-ð =-ð =-ˆcñ =-ô =-ð =-ð@ð ð ð ð �˜#ñ ô ð ð4"ð "ð "ð "ð "�Gñ "ô "ð "ð"Rð Rð Rð Rð R�} jñ Rô Rð RðDð ð €€€r   