Ë
    ��h–.  ã            
       óN  — d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZmZmZmZ ddlmZ  ej,                  e«      Zeez   Z	 ddlZeez  Z	 ddlZeez  Zd
efd„Zde d
e
e    fd„Z!de	e    d
e"fd„Z#de de d
e"fd„Z$d
efd„Z%de d
dfd„Z&ded
e"fd„Z'd!de de de"d
dfd„Z(de de d
dfd„Z)de de dejT                  de"d
df
d„Z+	 d"de de dee    d
dfd „Z,y# e$ r ej9                  d«       Y ŒŸw xY w# e$ r ej9                  d	«       Y Œ±w xY w)#zUtilities related archives.é    N)ÚIterableÚListÚOptional)ÚZipInfo)ÚInstallationError)ÚBZ2_EXTENSIONSÚTAR_EXTENSIONSÚXZ_EXTENSIONSÚZIP_EXTENSIONS)Ú
ensure_dirzbz2 module is not availablezlzma module is not availableÚreturnc                  óZ   — t        j                  d«      } t        j                  | «       | S )zBGet the current umask which involves having to set it temporarily.r   )ÚosÚumask)Úmasks    ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_internal/utils/unpacking.pyÚcurrent_umaskr   +   s   € ä�8‰8�A‹;€DÜ‡H�HˆT„NØ€Kó    Úpathc                 óø   — | j                  d«      j                  d«      } d| v r=d| v r#| j                  d«      | j                  d«      k  sd| vr| j                  dd«      S d| v r| j                  dd«      S | dgS )Nú/ú\é   Ú )ÚlstripÚfindÚsplit©r   s    r   Úsplit_leading_dirr   2   sz   € Ø�;‰;�sÓ×"Ñ" 4Ó(€DØ
ˆd�{Ø	�‰˜$Ÿ)™) C›.¨4¯9©9°T«?Ò:¸tÈ4Ñ?Oà�z‰z˜#˜qÓ!Ð!Ø	�‰Ø�z‰z˜$ Ó"Ð"à�bˆzÐr   Úpathsc                 óR   — d}| D ]   }t        |«      \  }}|s y|€|}Œ||k7  sŒ  y y)zyReturns true if all the paths have the same leading path name
    (i.e., everything is in one subdirectory in an archive)NFT)r   )r    Úcommon_prefixr   ÚprefixÚrests        r   Úhas_leading_dirr%   >   sG   € ð €MØò ˆÜ(¨Ó.‰ˆ�ÙÙØÐ"Ø"‰MØ�}Ó$Ùðð r   Ú	directoryÚtargetc                 óÊ   — t         j                  j                  | «      }t         j                  j                  |«      }t         j                  j                  ||g«      }||k(  S )zL
    Return true if the absolute path of target is within the directory
    )r   r   ÚabspathÚcommonprefix)r&   r'   Úabs_directoryÚ
abs_targetr#   s        r   Úis_within_directoryr-   M   sL   € ô —G‘G—O‘O IÓ.€MÜ—‘—‘ Ó(€Jä�W‰W×!Ñ! =°*Ð"=Ó>€FØ�]Ñ"Ð"r   c                  ó$   — dt        «        z  dz  S )Niÿ  éI   )r   © r   r   Ú!_get_default_mode_plus_executabler1   X   s   € Ø”M“OÐ#Ñ# eÑ+Ð+r   c                 ó@   — t        j                  | t        «       «       y)zx
    Make file present at path have execute for user/group/world
    (chmod +x) is no-op on windows per python docs
    N)r   Úchmodr1   r   s    r   Ú2set_extracted_file_to_default_mode_plus_executabler4   \   s   € ô
 ‡H�HˆTÔ4Ó6Õ7r   Úinfoc                 ór   — | j                   dz	  }t        |xr t        j                  |«      xr |dz  «      S )Né   r/   )Úexternal_attrÚboolÚstatÚS_ISREG)r5   Úmodes     r   Úzip_item_is_executabler=   d   s6   € Ø×Ñ Ñ#€Dô �Ò<œŸ™ dÓ+Ò<°°u±Ó=Ð=r   ÚfilenameÚlocationÚflattenc                 óÐ  — t        |«       t        | d«      }	 t        j                  |d¬«      }t	        |j                  «       «      xr |}|j                  «       D �](  }|j                  }|}|rt        |«      d   }t        j                  j                  ||«      }t        j                  j                  |«      }	t        ||«      sd}
t        |
j                  | ||«      «      ‚|j!                  d«      s|j!                  d«      rt        |«       Œ¹t        |	«       |j                  |«      }	 t        |d«      5 }t#        j$                  ||«       d	d	d	«       |j'                  «        t)        |«      s�Œt+        |«       �Œ+ 	 |j'                  «        y	# 1 sw Y   ŒFxY w# |j'                  «        t)        |«      rt+        |«       w w xY w# |j'                  «        w xY w)
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Úinfolistr>   r   r   r   ÚjoinÚdirnamer-   r   ÚformatÚendswithÚshutilÚcopyfileobjÚcloser=   r4   )r>   r?   r@   ÚzipfpÚzipÚleadingr5   ÚnameÚfnÚdirÚmessageÚfpÚdestfps                r   Ú
unzip_filerZ   k   sŠ  € ô ˆxÔÜ�˜4Ó €Eð Ü�o‰o˜e°Ô5ˆÜ! #§,¡,£.Ó1Ò=°gˆØ—L‘L“Nó 	OˆDØ—=‘=ˆDØˆBÙÜ& tÓ,¨QÑ/�Ü—‘—‘˜h¨Ó+ˆBÜ—'‘'—/‘/ "Ó%ˆCÜ& x°Ô4ð4ð ô (¨¯©°xÀÀXÓ(NÓOÐOØ�{‰{˜3Ô 2§;¡;¨tÔ#4ä˜2•ä˜3”ð —X‘X˜d“^�ðOÜ˜b $›ð 7¨6Ü×*Ñ*¨2¨vÔ6÷7ð —H‘H”JÜ-¨dÖ3ÜJÈ2ÖNñ7	Oð: 	�‰�÷7ð 7ûð —H‘H”JÜ-¨dÔ3ÜJÈ2ÕNð 4ûð 	�‰�úsB   ™DG Ä3F'Ä?FÅF'ÅG Å;G ÆF$	Æ F'Æ')GÇG ÇG%c                 ód  ‡ ‡‡‡— t        ‰«       ‰ j                  «       j                  d«      s‰ j                  «       j                  d«      rd}n†‰ j                  «       j                  t        «      rd}n`‰ j                  «       j                  t        «      rd}n:‰ j                  «       j                  d«      rd}nt
        j                  d‰ «       d	}t        j                  ‰ |d
¬«      }	 t        |j                  «       D �cg c]  }|j                  ‘Œ c}«      }	 t        j                  Št        «       Š|rj|j                  «       D ]W  }t        |j                  «      \  }}||_        |j                  «       sŒ3t        |j                   «      \  }}	||k(  sŒQ|	|_        ŒY dt        j"                  dt$        dt        j"                  fˆˆˆ ˆfd„}
|j'                  ‰|
¬«       |j-                  «        yc c}w # t(        $ r t+        ‰ ‰||«       Y Œ/w xY w# |j-                  «        w xY w)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)ÚencodingÚmemberr   r   c                 ó|  •— | j                   }	 	  ‰| ‰«      } | j                  «       r|dz  r	‰| _         | S d | _         | S # t        j                  $ r0 t        j                  d d dv rt        j
                  | ‰«      } n‚ Y Œiw xY w# t        j                  $ r"}d}t        |j                  ‰|«      «      ‚d }~ww xY w)Né   >   ©r`   é	   é   ©r`   é
   é   ©r`   é   é   z%Invalid member in the tar file {}: {}r/   )
r<   ÚtarfileÚLinkOutsideDestinationErrorÚsysÚversion_infoÚ
tar_filterÚTarErrorr   rL   Úisfile)	r^   r   Ú	orig_modeÚexcrW   Údata_filterÚdefault_mode_plus_executabler>   r?   s	        €€€€r   Ú
pip_filterz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 ÂB;ÂB6Â6B;)ÚfilterN)r   ÚlowerrM   r   r
   ÚloggerÚwarningrj   rE   r%   Ú
getmembersrT   rs   r1   r   ÚislnkÚlinknameÚTarInfoÚstrÚ
extractallÚAttributeErrorÚ_untar_without_filterrP   )r>   r?   r<   Útarr^   rS   Ú	name_leadÚ	name_restÚlnk_leadÚlnk_restru   rs   rt   s   ``         @@r   Ú
untar_filer‡   ™   sÐ  û€ ô ˆxÔØ‡~�~Ó× Ñ  Ô'¨8¯>©>Ó+;×+DÑ+DÀVÔ+LØ‰Ø	�‰Ó	×	"Ñ	"¤>Ô	2Ø‰Ø	�‰Ó	×	"Ñ	"¤=Ô	1Ø‰Ø	�‰Ó	×	"Ñ	" 6Ô	*Ø‰ä�‰Ø;Øô	
ð ˆä
�,‰,�x °Ô
8€CðCÜ!¸S¿^¹^Ó=MÖ"N°6 6§;£;Ò"NÓOˆð
:	8Ü!×-Ñ-ˆKô ,MÓ+NÐ(áð "Ÿn™nÓ.ò 7�FÜ+<¸V¿[¹[Ó+IÑ(�I˜yØ"+�F”KØ—|‘|•~Ü->¸v¿¹Ó-OÑ*˜ (Ø# yÓ0Ø.6˜F�Oð7ð%¤7§?¡?ð %¼#ð %Ä'Ç/Á/÷ %ð %ðN �N‰N˜8¨JˆNÔ7ð 	�	‰	�ùòE #Oøô ò 	DÜ! (¨H°c¸7ÖCð	Dûðv 	�	‰	�úsP   Ã0H ÄG;ÄH Ä"H  Ä2AH ÆH ÆAH Ç;H È HÈH ÈHÈH ÈH/r‚   rS   c                 óÔ  — |j                  «       D �]P  }|j                  }|rt        |«      d   }t        j                  j                  ||«      }t        ||«      sd}t        |j                  | ||«      «      ‚|j                  «       rt        |«       Œ†|j                  «       r	 |j                  ||«       Œª	 |j!                  |«      }	t        t        j                  j'                  |«      «       |	€J ‚t)        |d«      5 }
t+        j,                  |	|
«       ddd«       |	j/                  «        |j1                  ||«       |j2                  dz  s�ŒFt5        |«       �ŒS y# t        $ r-}t        j                  d| |j                  |«       Y d}~�Œ†d}~ww xY w# t"        t$        f$ r-}t        j                  d| |j                  |«       Y d}~�ŒÅd}~ww xY w# 1 sw Y   ŒÃxY w)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: %sNrD   r/   )rz   rT   r   r   r   rJ   r-   r   rL   Úisdirr   ÚissymÚ_extract_memberÚ	Exceptionrx   ry   ÚextractfileÚKeyErrorr€   rK   rE   rN   rO   rP   Úutimer<   r4   )r>   r?   r‚   rS   r^   rU   r   rW   rr   rX   rY   s              r   r�   r�   ù   s§  € ð —.‘.Ó"ó 0IˆØ�[‰[ˆÙÜ" 2Ó& qÑ)ˆBÜ�w‰w�|‰|˜H bÓ)ˆÜ" 8¨TÔ2ð0ð ô $ G§N¡N°8¸TÀ8Ó$LÓMÐMØ�<‰<Œ>Ü�tÕØ�\‰\Œ^ðØ×#Ñ# F¨DÕ1ðØ—_‘_ VÓ,�ô ”r—w‘w—‘ tÓ,Ô-Ø�>Ð!�>Ü�d˜DÓ!ð / VÜ×"Ñ" 2 vÔ.÷/à�H‰HŒJà�I‰I�f˜dÔ#à�{‰{˜UÔ"ÜBÀ4ÖHña0Iøô  ò 	ô —‘ØEØØ—K‘KØô	õ ûð	ûô œnÐ-ò 	ô —‘ØEØØ—K‘KØô	õ ûð	ú÷/ð /ús<   Â(E&Â<FÄGÅ&	FÅ/"FÆFÆGÆ."GÇGÇG'	Úcontent_typec                 óô  — t         j                  j                  | «      } |dk(  s8| j                  «       j	                  t
        «      st        j                  | «      rt        | || j	                  d«       ¬«       y |dk(  sFt        j                  | «      s1| j                  «       j	                  t        t        z   t        z   «      rt        | |«       y t        j!                  d| ||«       t#        d|› �«      ‚)Nzapplication/zipz.whl)r@   zapplication/x-gzipzZCannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive formatz#Cannot determine archive format of )r   r   Úrealpathrw   rM   r   rF   Ú
is_zipfilerZ   rj   Ú
is_tarfiler	   r   r
   r‡   rx   Úcriticalr   )r>   r?   r�   s      r   Úunpack_filer–   3  sÏ   € ô
 �w‰w×Ñ Ó)€HàÐ)Ò)Ø�>‰>Ó×$Ñ$¤^Ô4Ü×Ñ˜hÔ'ä�8˜X°8×3DÑ3DÀVÓ3LÐ/LÖMàÐ,Ò,Ü×Ñ˜hÔ'Ø�>‰>Ó×$Ñ$¤^´nÑ%DÄ}Ñ%TÔUä�8˜XÕ&ô 	�‰ð+àØØô	
ô  Ð"EÀhÀZÐ PÓQÐQr   )T)N)-Ú__doc__Úloggingr   rN   r:   rl   rj   rF   Útypingr   r   r   r   Úpip._internal.exceptionsr   Úpip._internal.utils.filetypesr   r	   r
   r   Úpip._internal.utils.miscr   Ú	getLoggerÚ__name__rx   ÚSUPPORTED_EXTENSIONSÚbz2ÚImportErrorÚdebugÚlzmaÚintr   r~   r   r9   r%   r-   r1   r4   r=   rZ   r‡   ÚTarFiler�   r–   r0   r   r   ú<module>r¦      sõ  ðÙ !ã Û 	Û Û Û 
Û Û ß +Ñ +Ý å 6÷ó õ 0à	ˆ×	Ñ	˜8Ó	$€ð &¨Ñ6Ð ð0Ûà˜NÑ*Ðð1ãà˜MÑ)Ðð
�só ð	˜Cð 	 D¨¡Ió 	ð˜8 C™=ð ¨Tó ð# 3ð #°ð #¸ó #ð,¨3ó ,ð8¸Sð 8ÀTó 8ð> ð >¨Tó >ñ+˜ð +¨ð +°dð +Àdó +ð\]˜ð ]¨ð ]°ó ]ð@7IØð7Iàð7Ið 
�‰ð7Ið ð	7Ið
 
ó7Iðz #'ñRØðRàðRð ˜3‘-ðRð 
ô	Røði ò 0Ø
‡L�LÐ.Ö/ð0ûð ò 1Ø
‡L�LÐ/Ö0ð1ús$   Á	C/ Á)	D Ã/DÄDÄD$Ä#D$