ó
    ¢'Ôi¬2  ã                  ó  • 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 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         Nvf = 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    Ú\/var/www/surfInsights/venv3-11/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   c                óÆ   • [         R                  R                  U 5      n[         R                  R                  U5      n[         R                  R                  X#/5      nXB:H  $ )zD
Return true if the absolute path of target is within the directory
)r   r   ÚabspathÚ
commonpath)Ú	directoryÚtargetÚabs_directoryÚ
abs_targetr!   s        r   Úis_within_directoryr+   O   sH   € ô —G‘G—O‘O IÓ.€MÜ—‘—‘ Ó(€Jä�W‰W×Ñ Ð ;Ó<€FØÑ"Ð"r   c                 ó$   • S[        5       ) -  S-  $ )Niÿ  éI   )r   © r   r   Ú!_get_default_mode_plus_executabler/   Z   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   Úchmodr/   r   s    r   Ú2set_extracted_file_to_default_mode_plus_executabler2   ^   s   € ô
 ‡H‚HˆTÔ4Ó6Õ7r   c                óˆ   • U R                   S-	  n[        U=(       a"    [        R                  " U5      =(       a    US-  5      $ )Né   r-   )Úexternal_attrÚboolÚstatÚS_ISREG)ÚinfoÚmodes     r   Úzip_item_is_executabler;   f   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;   r2   )rE   ÚlocationÚflattenÚzipfpÚzipÚleadingr9   ÚnameÚfnÚdirÚmessageÚfpÚdestfps                r   Ú
unzip_filerX   m   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é   >   ©r]   é	   é   ©r]   é
   é   ©r]   é   é   z%Invalid member in the tar file {}: {}r-   )
r:   ÚtarfileÚLinkOutsideDestinationErrorÚsysÚversion_infoÚ
tar_filterÚTarErrorr   rH   Úisfile)	Úmemberr   Ú	orig_modeÚexcrU   Údata_filterÚdefault_mode_plus_executablerE   rM   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)rn   útarfile.TarInfor   ÚstrÚreturnrv   )r   ÚlowerrI   r   r	   ÚloggerÚwarningrg   r@   r#   Ú
getmembersrR   rq   r/   r   ÚislnkÚlinknameÚ
extractallÚAttributeErrorÚ_untar_without_filterrL   )rE   rM   r:   Útarrn   rQ   Ú	name_leadÚ	name_restÚlnk_leadÚlnk_restrs   rq   rr   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   rF   rG   rR   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Hª  nUR                  nU(       a  [        U5      S   n[        R                  R                  X5      n[        X5      (       d  Sn[        UR                  XU5      5      eUR                  5       (       a  [        U5        M“  UR                  5       (       aU  [        X$5      (       d1  Sn[        UR                  XR                  UR                  5      5      e UR                  XF5        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MŸ  [9        U5        GM­     g! [         a.  n[         R#                  SU UR                  U5         SnAGMã  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   zQThe tar file ({}) has a file ({}) trying to install outside target directory ({})z/In the tar file %s the member %s is invalid: %sNr?   r-   )r|   rR   r   r   r   rF   r+   r   rH   Úisdirr   ÚissymrŽ   r~   Ú_extract_memberÚ	Exceptionrz   r{   ÚextractfilerŒ   r€   rG   r@   rJ   rK   rL   Úutimer:   r2   )rE   rM   r‚   rQ   rn   rS   r   rU   rp   rV   rW   s              r   r�   r�   	  sÑ  € ð —.‘.×"ˆØ�[‰[ˆÞÜ" 2Ó& qÑ)ˆBÜ�w‰w�|‰|˜HÓ)ˆÜ" 8×2Ñ2ð0ð ô $ G§N¡N°8À8Ó$LÓMÐMØ�<‰<�>‰>Ü�tÖØ�\‰\�^‰^Ü+¨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òq #øô0 ó 	ô —‘ØEØØ—K‘KØô	ö ûð	ûô œnÐ-ó 	ô —‘ØEØØ—K‘KØô	ö ûð	ú÷ "Õ!ús<   Ã;GÄG<ÅH=Ç
G9Ç"G4Ç4G9Ç<H:È"H5È5H:È=
I	c                ó"  • [         R                  R                  U 5      n US:X  dC  U R                  5       R	                  [
        5      (       d  [        R                  " U 5      (       a  [        XU R	                  S5      (       + S9  g US:X  dQ  [        R                  " U 5      (       d6  U R                  5       R	                  [        [        -   [        -   5      (       a  [        X5        g [        R!                  SU UU5        [#        SU 35      e)Nzapplication/zipz.whl)rN   zapplication/x-gzipzZCannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive formatz#Cannot determine archive format of )r   r   Úrealpathry   rI   r
   rA   Ú
is_zipfilerX   rg   Ú
is_tarfiler   r   r	   r‡   rz   Úcriticalr   )rE   rM   Úcontent_types      r   Úunpack_filerœ   N  s×   € ô
 �w‰w×Ñ Ó)€HàÐ)Ó)Ø�>‰>Ó×$Ñ$¤^×4Ñ4Ü×Ò˜h×'Ñ'ä�8°8×3DÑ3DÀVÓ3LÔ/LÓMàÐ,Ó,Ü×Ò˜h×'Ñ'Ø�>‰>Ó×$Ñ$¤^´nÑ%DÄ}Ñ%T×UÑUä�8Õ&ô 	�‰ð+àØØô	
ô  Ð"EÀhÀZÐ PÓQÐQr   )rx   Úint)r   rw   rx   z	list[str])r   zIterable[str]rx   r6   )r'   rw   r(   rw   rx   r6   )r   rw   rx   ÚNone)r9   r   rx   r6   )T)rE   rw   rM   rw   rN   r6   rx   rž   )rE   rw   rM   rw   rx   rž   )r‚   útarfile.TarFiler�   rv   rx   r6   )
rE   rw   rM   rw   r‚   rŸ   rQ   r6   rx   rž   )N)rE   rw   rM   rw   r›   z
str | Nonerx   rž   )*Ú__doc__Ú
__future__r   Úloggingr   rJ   r7   ri   rg   rA   Úcollections.abcr   r   Úpip._internal.exceptionsr   Úpip._internal.utils.filetypesr   r   r	   r
   Úpip._internal.utils.miscr   Ú	getLoggerÚ__name__rz   ÚSUPPORTED_EXTENSIONSÚbz2ÚImportErrorÚdebugÚlzmar   r   r#   r+   r/   r2   r;   rX   r‡   rŽ   r�   rœ   r.   r   r   Ú<module>r®      s_  ðÙ !å "ã Û 	Û Û Û 
Û Û Ý $Ý å 6÷ó õ 0à	×	Ò	˜8Ó	$€ð &¨Ñ6Ð ð0Ûà˜NÑ*Ðð1ãà˜MÑ)Ðô
ô	ôô#ô,ô8ô>ö+ô\]ô@ðBIØðBIàðBIð 
ðBIð ð	BIð
 
ôBIðP  $ðRØðRàðRð ðRð 
ö	Røð[	 ó 0Ø
‡L�LÐ.Ö/ð0ûð ó 1Ø
‡L�LÐ/Ö0ð1ús$   Á!	C Á+	C$ ÃC!Ã C!Ã$C>Ã=C>