ó
    T=ŒjÅ9  ã                  ó  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSK	Jr  SSKJr  SSKJrJrJrJr  SSKJr  \R,                  " \5      r\\-   r SSKr\\-  r SSKr\\-  rSS jrSS jrSS jr SS.       SS jjr!SS jr"SS jr#SS jr$SS S jjr%S!S jr&S"S jr'          S#S jr( S$       S%S jjr)g! \ a    \R9                  S	5         N�f = f! \ a    \R9                  S
5         N”f = f)&zUtilities related archives.é    )ÚannotationsN)ÚIterable)ÚZipInfo)ÚInstallationError)ÚBZ2_EXTENSIONSÚTAR_EXTENSIONSÚXZ_EXTENSIONSÚZIP_EXTENSIONS)Ú
ensure_dirzbz2 module is not availablezlzma module is not availablec                 ó^   • [         R                  " S5      n [         R                  " U 5        U $ )zBGet the current umask which involves having to set it temporarily.r   )ÚosÚumask)Úmasks    Úa/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/utils/unpacking.pyÚcurrent_umaskr   -   s   € ä�8Š8�A‹;€DÜ‡H‚HˆT„NØ€Kó    c                ó
  • U R                  S5      R                  S5      n SU ;   aB  SU ;   a$  U R                  S5      U R                  S5      :  d  SU ;  a  U R                  SS5      $ SU ;   a  U R                  SS5      $ U S/$ )NÚ/Ú\é   Ú )ÚlstripÚfindÚsplit©Úpaths    r   Úsplit_leading_dirr   4   sz   € Ø�;‰;�sÓ×"Ñ" 4Ó(€DØ
ˆdƒ{Ø	�‹˜$Ÿ)™) C›.¨4¯9©9°T«?Ó:¸tÈ4Ó?Oà�z‰z˜#˜qÓ!Ð!Ø	�‹Ø�z‰z˜$ Ó"Ð"à�bˆzÐr   c                ób   • SnU  H'  n[        U5      u  p4U(       d    gUc  UnM   X1:w  d  M'    g   g)zuReturns true if all the paths have the same leading path name
(i.e., everything is in one subdirectory in an archive)NFT)r   )ÚpathsÚcommon_prefixr   ÚprefixÚrests        r   Úhas_leading_dirr#   @   s>   € ð €MÛˆÜ(¨Ó.‰ˆÞÙØÑ"Ø"ŠMØÕ$Ùñ ð r   F©Úresolve_symlinksc               ód  • U(       a?  [         R                  R                  U 5      n[         R                  R                  U5      nO>[         R                  R                  U 5      n[         R                  R                  U5      nXC:H  =(       d"    UR	                  U[         R
                  -   5      $ )a  
Return true if the absolute path of target is within the directory
(including when target is equal to the directory).

When ``resolve_symlinks`` is true, resolve symlinks before comparing so
traversal through a symlink (e.g. "link/../file") is also caught.
)r   r   ÚrealpathÚabspathÚ
startswithÚsep)Ú	directoryÚtargetr%   Úabs_directoryÚ
abs_targets        r   Úis_within_directoryr/   O   sx   € ö ÜŸ™×(Ñ(¨Ó3ˆÜ—W‘W×%Ñ% fÓ-‰
äŸ™Ÿ™¨	Ó2ˆÜ—W‘W—_‘_ VÓ,ˆ
àÑ&×W¨*×*?Ñ*?ÀÔPR×PVÑPVÑ@VÓ*WÐWr   c                 ó$   • S[        5       ) -  S-  $ )Niÿ  éI   )r   © r   r   Ú!_get_default_mode_plus_executabler3   c   s   € Ø”M“OÐ#Ñ# eÑ+Ð+r   c                óB   • [         R                  " U [        5       5        g)zl
Make file present at path have execute for user/group/world
(chmod +x) is no-op on windows per python docs
N)r   Úchmodr3   r   s    r   Ú2set_extracted_file_to_default_mode_plus_executabler6   g   s   € ô
 ‡H‚HˆTÔ4Ó6Õ7r   c                óˆ   • U R                   S-	  n[        U=(       a"    [        R                  " U5      =(       a    US-  5      $ )Né   r1   )Úexternal_attrÚboolÚstatÚS_ISREG)ÚinfoÚmodes     r   Úzip_item_is_executabler?   o   s6   € Ø×Ñ Ñ#€Dô �×<œŸš dÓ+×<°°u±Ó=Ð=r   c                óð  • [        U5        [        U S5      n [        R                  " USS9n[	        UR                  5       5      =(       a    UnUR                  5        GH+  nUR                  nUnU(       a  [        U5      S   n[        R                  R                  X5      n[        R                  R                  U5      n	[        X5      (       d  Sn
[        U
R                  XU5      5      eUR!                  S5      (       a  [        U5        Mµ  [        U	5        UR                  U5      n [        US5       n["        R$                  " X¼5        SSS5        UR'                  5         [)        U5      (       a  [+        U5        GM+  GM.     UR'                  5         g! , (       d  f       NR= f! UR'                  5         [)        U5      (       a  [+        U5        f f = f! UR'                  5         f = f)	aƒ  
Unzip the file (with path `filename`) to the destination `location`.  All
files are written based on system defaults and umask (i.e. permissions are
not preserved), except that regular file members with any execute
permissions (user, group, or world) have "chmod +x" applied after being
written. Note that for windows, any execute changes using os.chmod are
no-ops per the python docs.
ÚrbT)Ú
allowZip64r   zQThe zip file ({}) has a file ({}) trying to install outside target directory ({}))r   r   ÚwbN)r   ÚopenÚzipfileÚZipFiler#   ÚnamelistÚinfolistÚfilenamer   r   r   ÚjoinÚdirnamer/   r   ÚformatÚendswithÚshutilÚcopyfileobjÚcloser?   r6   )rI   ÚlocationÚflattenÚzipfpÚzipÚleadingr=   ÚnameÚfnÚdirÚmessageÚfpÚdestfps                r   Ú
unzip_filer\   v   sy  € ô ˆxÔÜ�˜4Ó €Eð Ü�oŠo˜e°Ñ5ˆÜ! #§,¡,£.Ó1×=°gˆØ—L‘L—NˆDØ—=‘=ˆDØˆBÞÜ& tÓ,¨QÑ/�Ü—‘—‘˜hÓ+ˆBÜ—'‘'—/‘/ "Ó%ˆCÜ& x×4Ñ4ð4ð ô (¨¯©°xÀXÓ(NÓOÐOØ�{‰{˜;×'Ñ'ä˜2–ä˜3”ð —X‘X˜d“^�ðOÜ˜b $œ¨6Ü×*Ò*¨2Ô6÷ (ð —H‘H”JÜ-¨d×3Ñ3ÜJÈ2×Nò 4ñ5 #ð: 	�‰�÷ (�ûð —H‘H”JÜ-¨d×3Ñ3ÜJÈ2ÕNð 4ûð 	�‰�ús<   ™DG# Ä2F2Ä>F!ÅF2Å3G# Æ!
F/	Æ+F2Æ2.G Ç G# Ç#G5c                ó\  ^ ^^^• [        T5        T R                  5       R                  S5      (       d$  T R                  5       R                  S5      (       a  SnO•T R                  5       R                  [        5      (       a  SnOjT R                  5       R                  [        5      (       a  SnO?T R                  5       R                  S5      (       a  SnO[
        R                  ST 5        S	n[        R                  " T US
S9n [        UR                  5        Vs/ s H  oDR                  PM     sn5      n [        R                  m[        5       mU(       ao  UR                  5        H[  n[        UR                  5      u  pgXtl        UR                  5       (       d  M7  [        UR                   5      u  p‰X†:X  d  MU  X”l        M]     SUUU U4S jjn
UR#                  TU
S9  UR)                  5         gs  snf ! [$         a    ['        T TX55         N/f = f! UR)                  5         f = f)a…  
Untar the file (with path `filename`) to the destination `location`.
All files are written based on system defaults and umask (i.e. permissions
are not preserved), except that regular file members with any execute
permissions (user, group, or world) have "chmod +x" applied on top of the
default.  Note that for windows, any execute changes using os.chmod are
no-ops per the python docs.
z.gzz.tgzzr:gzzr:bz2zr:xzz.tarÚrz-Cannot determine compression type for file %szr:*zutf-8)Úencodingc                ó˜  >• U R                   n  T" U T5      n U R                  5       (       a  US-  (       a	  TU l         U $ S U l         U $ ! [        R                   a2    [        R                  S S S;   a  [        R
                  " U T5      n  Nue f = f! [        R                   a"  nSn[        UR                  TU5      5      eS nAff = f)Né   >   ©ra   é	   é   ©ra   é
   é   ©ra   é   é   z%Invalid member in the tar file {}: {}r1   )
r>   ÚtarfileÚLinkOutsideDestinationErrorÚsysÚversion_infoÚ
tar_filterÚTarErrorr   rL   Úisfile)	Úmemberr   Ú	orig_modeÚexcrY   Údata_filterÚdefault_mode_plus_executablerI   rQ   s	        €€€€r   Ú
pip_filterÚuntar_file.<locals>.pip_filter×   sØ   ø€ Ø"ŸK™K�	ðð"Ù!,¨V°XÓ!>˜ð2 —=‘=—?‘? y°5×'8Ø">�F”Kð �ð #'�F”KØ�øôA #×>Ñ>ó "Ü×+Ñ+¨B¨QÐ/ð 4ó ô &-×%7Ò%7¸ÀÓ%IšFà!ð"ûô ×'Ñ'ó 	ØE�Gô ,ØŸ™Ø$Øóóð ûð		ús0   �	A
 Á
ABÂB ÂBÂB ÂC	Â'CÃC	)ÚfilterN)rr   útarfile.TarInfor   ÚstrÚreturnrz   )r   ÚlowerrM   r   r	   ÚloggerÚwarningrk   rD   r#   Ú
getmembersrV   ru   r3   r   ÚislnkÚlinknameÚ
extractallÚAttributeErrorÚ_untar_without_filterrP   )rI   rQ   r>   Útarrr   rU   Ú	name_leadÚ	name_restÚlnk_leadÚlnk_restrw   ru   rv   s   ``         @@r   Ú
untar_filer‹   ¤   s·  û€ ô ˆxÔØ‡~�~Ó× Ñ  ×'Ñ'¨8¯>©>Ó+;×+DÑ+DÀV×+LÑ+LØ‰Ø	�‰Ó	×	"Ñ	"¤>×	2Ñ	2Ø‰Ø	�‰Ó	×	"Ñ	"¤=×	1Ñ	1Ø‰Ø	�‰Ó	×	"Ñ	" 6×	*Ñ	*Ø‰ä�‰Ø;Øô	
ð ˆä
�,Š,�x °Ñ
8€CðCÜ!¸S¿^¹^Ô=MÓ"NÒ=M°6§;¤;Ñ=MÑ"NÓOˆð
:	8Ü!×-Ñ-ˆKô ,MÓ+NÐ(æð "Ÿn™nÖ.�FÜ+<¸V¿[¹[Ó+IÑ(�IØ"+”KØ—|‘|—~“~Ü->¸v¿¹Ó-OÑ*˜Ø#Õ0Ø.6žOñ /÷%ò %ðN �N‰N˜8¨JˆNÑ7ð 	�	‰	�ùòE #Oøô ó 	DÜ! (¨H°cÖCð	Dûðv 	�	‰	�úsO   ÄH ÄG7Ä3H Ä;G< ÅAH Æ#H Ç%H Ç7H Ç<HÈH ÈHÈH ÈH+c                óL  • [         R                  R                  [         R                  R                  UR                  5      UR
                  5      n[         R                  R                  U5      nUR                  SS5      n U R                  U5        g! [         a     gf = f)zGCheck if the file pointed to by the symbolic link is in the tar archiver   r   TF)
r   r   rJ   rK   rV   r‚   ÚnormpathÚreplaceÚ	getmemberÚKeyError)r†   Útarinfor‚   s      r   Úis_symlink_target_in_tarr’     sy   € ä�w‰w�|‰|œBŸG™GŸO™O¨G¯L©LÓ9¸7×;KÑ;KÓL€Hä�w‰w×Ñ Ó)€HØ×Ñ  cÓ*€HðØ�‰�hÔØøÜó Ùðús   ÂB Â
B#Â"B#c                óÊ  • UR                  5        GHA  nUR                  nU(       a  [        U5      S   n[        R                  R                  X5      n[        X5      (       a  [        XSS9(       d  Sn[        UR                  XU5      5      eUR                  5       (       a  [        U5        M¢  UR                  5       (       aÝ  [        R                  R                  [        R                  R                  U5      UR                  5      n[        XSS9(       d1  Sn[        UR                  XR                  UR                  5      5      e[        X$5      (       d1  Sn[        UR                  XR                  UR                  5      5      e UR                  XF5        GM”   UR'                  U5      n
[        [        R                  R                  U5      5        U
c   e[-        US5       n[.        R0                  " X«5        SSS5        U
R3                  5         UR5                  XF5        UR6                  S-  (       d  GM6  [9        U5        GMD     g! [          a.  n	["        R%                  SU UR                  U	5         Sn	A	GMz  Sn	A	ff = f! [(        [*        4 a.  n	["        R%                  SU UR                  U	5         Sn	A	GM»  Sn	A	ff = f! , (       d  f       NÓ= f)	z/Fallback for Python without tarfile.data_filterr   Tr$   zQThe tar file ({}) has a file ({}) trying to install outside target directory ({})z/In the tar file %s the member %s is invalid: %sNrC   r1   )r€   rV   r   r   r   rJ   r/   r   rL   Úisdirr   ÚissymrK   r‚   r’   Ú_extract_memberÚ	Exceptionr~   r   Úextractfiler�   r„   rD   rN   rO   rP   Úutimer>   r6   )rI   rQ   r†   rU   rr   rW   r   rY   r,   rt   rZ   r[   s               r   r…   r…     sC  € ð —.‘.×"ˆØ�[‰[ˆÞÜ" 2Ó& qÑ)ˆBÜ�w‰w�|‰|˜HÓ)ˆô
 # 8×2Ñ2Ô:MØ¨T÷;
ð0ð ô $ G§N¡N°8À8Ó$LÓMÐMØ�<‰<�>‰>Ü�tÖØ�\‰\�^‰^ô —W‘W—\‘\¤"§'¡'§/¡/°$Ó"7¸¿¹ÓIˆFÜ& xÈ$×Oð4ð ô (Ø—N‘N 8¯[©[¸&¿/¹/ÓJóð ô ,¨C×8Ñ8ð4ð ô (Ø—N‘N 8¯[©[¸&¿/¹/ÓJóð ðØ×#Ñ# F×1ðØ—_‘_ VÓ,�ô ”r—w‘w—‘ tÓ,Ô-Ø‘>Ð!�>Ü�d˜DÔ! VÜ×"Ò" 2Ô.÷ "à�H‰HŒJà�I‰I�fÔ#à�{‰{˜U×"Ò"ÜBÀ4×HòS #øôR ó 	ô —‘ØEØØ—K‘KØô	ö ûð	ûô œnÐ-ó 	ô —‘ØEØØ—K‘KØô	ö ûð	ú÷ "Õ!ús<   ÆIÆ&JÇ0KÉ
JÉ""JÊJÊKÊ#"KËKË
K"	c                óä  ^ ^^• [         R                  R                  T 5      m T R                  S5      (       + mS	U UU4S jjnS	U U4S jjnUS:X  a  U" 5       $ US:X  a  U" 5       $ T R	                  5       R                  [
        5      (       a  U" 5       $ T R	                  5       R                  [        [        -   [        -   5      (       a  U" 5       $ [        R                  " T 5      n[        R                  " T 5      nU(       a  U(       d  U" 5       $ U(       a  U(       d  U" 5       $ U(       a  U(       a  [        R                  ST 5        [        R                  ST TU5        [!        ST 35      e)
zÁUnpack ``filename`` into ``location``.

Archive format is chosen in order of decreasing reliability:
``content_type``, then filename extension, then magic signature
(unambiguous matches only).
z.whlc                 ó   >• [        T TTS9  g )N)rR   )r\   )rI   rQ   Úzip_flattens   €€€r   Ú_unzipÚunpack_file.<locals>._unzipv  s   ø€ Ü�8˜X¨{Ó;r   c                 ó   >• [        T T5        g ©N)r‹   )rI   rQ   s   €€r   Ú_untarÚunpack_file.<locals>._untary  s   ø€ Ü�8˜XÕ&r   zapplication/zipzapplication/x-gzipzAmbiguous file signature in %s.zZCannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive formatz#Cannot determine archive format of )r|   ÚNone)r   r   r'   rM   r}   r
   r   r   r	   rE   Ú
is_zipfilerk   Ú
is_tarfiler~   ÚerrorÚcriticalr   )rI   rQ   Úcontent_typer�   r¡   r¤   r¥   rœ   s   ``     @r   Úunpack_filer©   h  s'  ú€ ô �w‰w×Ñ Ó)€HØ×'Ñ'¨Ó/Ô/€K÷<ñ <÷'ð 'ð Ð(Ó(Ù‹xˆØÐ+Ó+Ù‹xˆà‡~�~Ó× Ñ ¤×0Ñ0Ù‹xˆØ‡~�~Ó× Ñ ¤´.Ñ!@Ä=Ñ!P×QÑQÙ‹xˆô ×#Ò# HÓ-€JÜ×#Ò# HÓ-€JÞž*Ù‹xˆÞž*Ù‹xˆÞ–jÜ�‰Ð6¸ÔAä
‡O�Oð	'àØØôô ÐAÀ(ÀÐLÓ
MÐMr   )r|   Úint)r   r{   r|   z	list[str])r   zIterable[str]r|   r:   )r+   r{   r,   r{   r%   r:   r|   r:   )r   r{   r|   r£   )r=   r   r|   r:   )T)rI   r{   rQ   r{   rR   r:   r|   r£   )rI   r{   rQ   r{   r|   r£   )r†   útarfile.TarFiler‘   rz   r|   r:   )
rI   r{   rQ   r{   r†   r«   rU   r:   r|   r£   r    )rI   r{   rQ   r{   r¨   z
str | Noner|   r£   )*Ú__doc__Ú
__future__r   Úloggingr   rN   r;   rm   rk   rE   Úcollections.abcr   r   Úpip._internal.exceptionsr   Úpip._internal.utils.filetypesr   r   r	   r
   Úpip._internal.utils.miscr   Ú	getLoggerÚ__name__r~   ÚSUPPORTED_EXTENSIONSÚbz2ÚImportErrorÚdebugÚlzmar   r   r#   r/   r3   r6   r?   r\   r‹   r’   r…   r©   r2   r   r   Ú<module>rº      sŠ  ðÙ !å "ã Û 	Û Û Û 
Û Û Ý $Ý å 6÷ó õ 0à	×	Ò	˜8Ó	$€ð &¨Ñ6Ð ð0Ûà˜NÑ*Ðð1ãà˜MÑ)Ðô
ô	ôð  >CñXØðXØðXØ6:ðXà	õXô(,ô8ô>ö+ô\]ô@ðSIØðSIàðSIð 
ðSIð ð	SIð
 
ôSIðr  $ð/NØð/Nàð/Nð ð/Nð 
ö	/NøðO
 ó 0Ø
‡L�LÐ.Ö/ð0ûð ó 1Ø
‡L�LÐ/Ö0ð1ús$   Á!	C Á+	C/ ÃC,Ã+C,Ã/D	ÄD	