ó
    Ñ]jõ  ã                  óŒ  • S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJr  SSKJr  SSKJrJr  SS	KJrJrJr  \(       a  SS
KJr  SSKJr  \R6                  S:¼  a  SSKJr  OSSKJr   " S S\\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\"\5      r# " S S\"5      r$ " S S\$\#5      r%/ SQr&g)aE  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)ÚTYPE_CHECKING)Úfs_is_case_sensitiveÚfs_supports_symlink)ÚcopyÚmake_exeÚsymlink)ÚCallable)ÚPath)é   é   )ÚStrEnum)ÚEnumc                  ó   • \ rS rSrSrg)r   é   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Úi/home/mande/repo/quber/.venv/lib/python3.13/site-packages/virtualenv/create/via_global_ref/builtin/ref.pyr   r      s   † Úr   r   c                  ó    • \ rS rSrSrSrSrSrg)ÚRefMusté   ÚNAr   r   r   N)r   r   r   r   r#   ÚCOPYÚSYMLINKr   r   r   r   r!   r!      s   † Ø	€BØ€DØƒGr   r!   c                  ó    • \ rS rSrSrSrSrSrg)ÚRefWhené"   ÚANYr   r   r   N)r   r   r   r   r)   r$   r%   r   r   r   r   r'   r'   "   s   † Ø
€CØ€DØƒGr   r'   c                  óÒ   • \ rS rSrSr\" 5       r\" 5       r\	R                  \R                  4SS jjrSS jr\SS j5       r\SS j5       r\SS j5       r\SS j5       rSS	 jrS
rg)ÚPathRefé(   zABase class that checks if a file reference can be symlink/copied.c                ó*  • X l         X0l        Xl         UR                  5       U l        U R                  (       a  S OSU l        U R                  (       a  S OSU l        U R                  (       a  S U l        g SU l        g ! [         a
    SU l         Nhf = f©NF)ÚmustÚwhenÚsrcÚexistsÚOSErrorÚ	_can_readÚ	_can_copyÚ_can_symlink)Úselfr1   r/   r0   s       r   Ú__init__ÚPathRef.__init__.   sp   € ØŒ	ØŒ	ØŒð	 ØŸ*™*›,ˆDŒKð /3¯k¯k¡d¸uˆŒØ.2¯k¯k¡d¸uˆŒØ15··¨ˆÕÀ%ˆÕøô	 ó 	 ØˆDŽKð	 ús   ”A> Á>BÂBc                óN   • U R                   R                   SU R                   S3$ )Nú(src=Ú))Ú	__class__r   r1   ©r7   s    r   Ú__repr__ÚPathRef.__repr__:   s$   € Ø—.‘.×)Ñ)Ð*¨%°·±¨z¸Ð;Ð;r   c                óØ  • U R                   c”  U R                  R                  5       (       a8   U R                  R                  S5         SU l         S S S 5        U R                   $ [
        R                  " [        U R                  5      [
        R                  5      U l         U R                   $ ! , (       d  f       U R                   $ = f! [         a    SU l          U R                   $ f = f)NÚrbTF)	r4   r1   Úis_fileÚopenr3   ÚosÚaccessÚstrÚR_OKr>   s    r   Úcan_readÚPathRef.can_read=   s®   € à�>‰>Ñ!Ø�x‰x×Ñ×!Ñ!ð+ØŸ™Ÿ™ tÕ,Ø)-˜œ÷ -ð �~‰~Ðô "$§¢¬3¨t¯x©x«=¼"¿'¹'Ó!B�”Ø�~‰~Ð÷ -Ô,ð �~‰~Ðûô	 ó +Ø%*�D•Nð �~‰~Ðð	+ús/   ®C
 Á	B.ÁC
 Â.
CÂ8C
 ÃC
 Ã
C)Ã(C)c                óÌ   • U R                   cL  U R                  [        R                  :X  a  U R                  U l         U R                   $ U R
                  U l         U R                   $ ©N)r5   r/   r!   r%   Úcan_symlinkrI   r>   s    r   Úcan_copyÚPathRef.can_copyJ   sL   € à�>‰>Ñ!Ø�y‰yœGŸO™OÓ+Ø!%×!1Ñ!1�”ð �~‰~Ðð "&§¡�”Ø�~‰~Ðr   c                óò   • U R                   c_  U R                  [        R                  :X  a  U R                  U l         U R                   $ U R
                  =(       a    U R                  U l         U R                   $ rL   )r6   r/   r!   r$   rN   ÚFS_SUPPORTS_SYMLINKrI   r>   s    r   rM   ÚPathRef.can_symlinkS   s]   € à×ÑÑ$Ø�y‰yœGŸL™LÓ(Ø$(§M¡M�Ô!ð × Ñ Ð ð %)×$<Ñ$<×$NÀÇÁ�Ô!Ø× Ñ Ð r   c                ó   • [         erL   )ÚNotImplementedError)r7   ÚcreatorÚsymlinkss      r   ÚrunÚPathRef.run\   s   € ä!Ð!r   c                ó¸   • U R                   [        R                  :X  a  [        $ U R                   [        R                  :X  a  [
        $ U(       a  [        $ [
        $ rL   )r/   r!   r%   r   r$   r   )r7   rV   s     r   ÚmethodÚPathRef.method`   s9   € Ø�9‰9œŸ™Ó'ÜˆNØ�9‰9œŸ™Ó$ÜˆKÞ"ŒwÐ,¬Ð,r   )r5   r4   r6   r2   r/   r1   r0   N©r1   r   r/   rG   r0   rG   ÚreturnÚNone©r]   rG   ©r]   Úbool©rU   ÚobjectrV   ra   r]   r^   )rV   ra   r]   zCallable[..., None])r   r   r   r   Ú__doc__r   rQ   r   ÚFS_CASE_SENSITIVEr!   r#   r'   r)   r8   r?   ÚpropertyrI   rN   rM   r   rW   rZ   r   r   r   r   r+   r+   (   s„   † ÙKá-Ó/ÐÙ,Ó.Ðà.5¯j©jÀgÇkÁkö 
Hô<ð ó
ó ð
ð óó ðð ó!ó ð!ð ó"ó ð"÷-r   r+   c                  óˆ   ^ • \ rS rSrSr\R                  \R                  4SU 4S jjjr	\
SS j5       r\
SS j5       rSrU =r$ )	Ú
ExePathReféh   zJBase class that checks if a executable can be references via symlink/copy.c                ó4   >• [         TU ]  XU5        S U l        g rL   )Úsuperr8   Ú_can_run)r7   r1   r/   r0   r=   s       €r   r8   ÚExePathRef.__init__k   s   ø€ Ü‰Ñ˜ DÔ)Ø%)ˆ�r   c                ó>   • U R                   (       a  U R                  $ gr.   )rQ   Úcan_runr>   s    r   rM   ÚExePathRef.can_symlinko   s   € à×#×#Ø—<‘<ÐØr   c                óð   • U R                   c^  U R                  R                  5       R                  n[        [
        [        4 H  nX-  (       a  SU l           U R                   $    SU l         U R                   $ )NTF)rl   r1   ÚstatÚst_moder	   r   r   )r7   ÚmodeÚkeys      r   ro   ÚExePathRef.can_runu   s`   € à�=‰=Ñ Ø—8‘8—=‘=“?×*Ñ*ˆDÜ¤¬'Ó2�Ø—:Ø$(�D”MØð �}‰}Ðñ 3ð
 !&�”Ø�}‰}Ðr   )rl   r\   r`   )r   r   r   r   rd   r!   r#   r'   r)   r8   rf   rM   ro   r   Ú__classcell__©r=   s   @r   rh   rh   h   sE   ø† ÙTà.5¯j©jÀgÇkÁk÷ *ñ *ð óó ðð
 ó	ó ö	r   rh   c                  ój   ^ • \ rS rSrSr\R                  \R                  4SU 4S jjjr	SS jr
SrU =r$ )ÚPathRefToDesté‚   zLink a path on the file system.c                ó2   >• [         TU ]  XU5        X l        g rL   )rk   r8   Údest)r7   r1   r}   r/   r0   r=   s        €r   r8   ÚPathRefToDest.__init__…   s   ø€ Ü‰Ñ˜ DÔ)Ø�	r   c                ó:  • U R                  XR                  5      nU R                  U5      n[        U[        5      (       a  UOU4nUR
                  R                  5       (       d  UR
                  R                  SSS9  U H  nU" U R                  U5        M     g )NT)ÚparentsÚexist_ok)r}   r1   rZ   Ú
isinstanceÚlistÚparentr2   Úmkdir)r7   rU   rV   r}   rZ   Údest_iterableÚdsts          r   rW   ÚPathRefToDest.run‰   sy   € Ø�y‰y˜§(¡(Ó+ˆØ—‘˜XÓ&ˆÜ *¨4´× 6Ñ 6™¸T¸GˆØ�{‰{×!Ñ!×#Ñ#Ø�K‰K×Ñ d°TÐÑ:Û ˆCÙ�4—8‘8˜SÖ!ò !r   )r}   )
r1   r   r}   úCallable[..., Path]r/   rG   r0   rG   r]   r^   rb   )r   r   r   r   rd   r!   r#   r'   r)   r8   rW   r   rw   rx   s   @r   rz   rz   ‚   s*   ø† Ù)àIPÏÉÐah×alÑal÷ ñ ÷"ò "r   rz   c                  ó|   • \ rS rSrSr\R                  \R                  4           SS jjr	S	S jr
S
S jrSrg)ÚExePathRefToDesté“   z#Link a exe path on the file system.c                ó  • [         R                  XXE5        [        R                  XX4U5        U R                  (       d)  [	        [        S U 5       5      R                  5       5      nUS   U l        USS  U l        X0l	        g )Nc              3  óD   #   • U  H  oR                  5       S 4v •  M     g 7frL   )Úlower)Ú.0Úis     r   Ú	<genexpr>Ú,ExePathRefToDest.__init__.<locals>.<genexpr>œ   s   é € Ð&JÂ'¸Q¯©«	°4Õ'8Â'ùs   ‚ r   é   )
rh   r8   rz   re   rƒ   r   ÚkeysÚbaseÚaliasesr}   )r7   r1   Útargetsr}   r/   r0   s         r   r8   ÚExePathRefToDest.__init__–   sj   € ô 	×Ñ˜D tÔ2Ü×Ñ˜t¨$°dÔ;Ø×%×%Üœ;Ñ&JÁ'Ó&JÓJ×OÑOÓQÓRˆGØ˜A‘JˆŒ	Ø˜q˜r�{ˆŒØ�	r   c                óè  • U R                  XR                  5      R                  nX0R                  -  nU R	                  U5      nU" U R                  U5        U(       d  [        U5        U R                   Hy  nX6-  nUR                  5       (       a  UR                  5         U(       a  UR                  U R                  5        O[        U R                  U5        U(       a  Mn  [        U5        M{     g rL   )r}   r1   r„   r–   rZ   r   r—   r2   ÚunlinkÚ
symlink_tor   )r7   rU   rV   Úbin_dirr}   rZ   ÚextraÚ	link_files           r   rW   ÚExePathRefToDest.run¡   s¬   € Ø—)‘)˜G§X¡XÓ.×5Ñ5ˆØŸ™Ñ"ˆØ—‘˜XÓ&ˆÙˆt�x‰x˜ÔÞÜ�TŒNØ—\”\ˆEØ™ˆIØ×Ñ×!Ñ!Ø× Ñ Ô"ÞØ×$Ñ$ T§Y¡YÕ/ä�T—X‘X˜yÔ)ß�8Ü˜Ö#ò "r   c                óh   • U R                   R                   SU R                   SU R                   S3$ )Nr;   z, alias=r<   )r=   r   r1   r—   r>   s    r   r?   ÚExePathRefToDest.__repr__³   s.   € Ø—.‘.×)Ñ)Ð*¨%°·±¨z¸À$Ç,Á,ÀÈqÐQÐQr   )r—   r–   r}   N)r1   r   r˜   z	list[str]r}   r‰   r/   rG   r0   rG   r]   r^   rb   r_   )r   r   r   r   rd   r!   r#   r'   r)   r8   rW   r?   r   r   r   r   r‹   r‹   “   s[   † Ù-ð U\×T^ÑT^Ðls×lwÑlwð	Øð	Ø"+ð	Ø3Fð	ØNQð	Øfið	à	õ	ô$÷$Rr   r‹   )rh   r‹   r+   rz   r!   r'   )'rd   Ú
__future__r   rE   ÚsysÚabcr   r   Úcollectionsr   rr   r   r   r	   Útypingr
   Úvirtualenv.infor   r   Úvirtualenv.util.pathr   r   r   Úcollections.abcr   Úpathlibr   Úversion_infoÚenumr   r   rG   r!   r'   r+   rh   rz   r‹   Ú__all__r   r   r   Ú<module>r¯      s®   ðñ Lå "ã 	Û 
ß #Ý #ß *Ñ *Ý  ç Eß 8Ñ 8æÝ(Ýà×Ñ�wÓÞåô�#�tô ôˆgô ôˆgô ô=-ˆcô =-ô@�˜#ô ô4"�Gô "ô"!R�} jô !RòH�r   