§
    u”já4  ã                  óÒ  — d Z ddlm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 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n # e$ r e                     d	¦  «         Y nw xY w	 ddlZeez  Zn # e$ r e                     d
¦  «         Y nw xY wd/d„Zd0d„Zd1d„Z d2d„Z!d/d„Z"d3d„Z#d4d„Z$d5d6d#„Z%d7d$„Z&d8d)„Z'd9d+„Z(	 d:d;d.„Z)dS )<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 availableÚreturnÚintc                 óV   — t          j        d¦  «        } t          j        | ¦  «         | S )zBGet the current umask which involves having to set it temporarily.r   )ÚosÚumask)Úmasks    úl/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pip/_internal/utils/unpacking.pyÚcurrent_umaskr   -   s!   € åŒ8�A‰;Œ;€DÝ„HˆT�N„N€NØ€Kó    ÚpathÚstrú	list[str]c                ó*  — |                       d¦  «                              d¦  «        } d| v rJd| v r,|                      d¦  «        |                      d¦  «        k     sd| vr|                      dd¦  «        S d| v r|                      dd¦  «        S | dgS )Nú/ú\é   Ú )ÚlstripÚfindÚsplit©r   s    r   Úsplit_leading_dirr!   4   s–   € Ø�;Š;�sÑÔ×"Ò" 4Ñ(Ô(€DØ
ˆd€{€{Ø	�ˆˆ˜$Ÿ)š) C™.œ.¨4¯9ª9°T©?¬?Ò:Ð:¸tÈ4Ð?OÐ?Oà�zŠz˜#˜qÑ!Ô!Ð!Ø	�ˆˆØ�zŠz˜$ Ñ"Ô"Ð"à�bˆzÐr   ÚpathsúIterable[str]Úboolc                ó^   — d}| D ]'}t          |¦  «        \  }}|s dS |€|}Œ||k    r dS Œ(dS )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)   @   sa   € ð €MØð ð ˆÝ(¨Ñ.Ô.‰ˆ�Øð 	Ø�5�5ØÐ"Ø"ˆMˆMØ�}Ò$Ð$Ø�5�5ð %àˆ4r   Ú	directoryÚtargetc                óÌ   — t           j                             | ¦  «        }t           j                             |¦  «        }t           j                             ||g¦  «        }||k    S )zL
    Return true if the absolute path of target is within the directory
    )r   r   ÚabspathÚ
commonpath)r*   r+   Úabs_directoryÚ
abs_targetr'   s        r   Úis_within_directoryr1   O   sO   € õ ”G—O’O IÑ.Ô.€MÝ”—’ Ñ(Ô(€JåŒW×Ò °
Ð ;Ñ<Ô<€FØ�]Ò"Ð"r   c                 ó,   — dt          ¦   «          z  dz  S )Niÿ  éI   )r   © r   r   Ú!_get_default_mode_plus_executabler5   Z   s   € Ø•M‘O”OÐ#Ñ# eÑ+Ð+r   ÚNonec                óH   — t          j        | t          ¦   «         ¦  «         dS )zx
    Make file present at path have execute for user/group/world
    (chmod +x) is no-op on windows per python docs
    N)r   Úchmodr5   r    s    r   Ú2set_extracted_file_to_default_mode_plus_executabler9   ^   s#   € õ
 „HˆTÕ4Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7r   Úinfor   c                óf   — | j         dz	  }t          |ot          j        |¦  «        o|dz  ¦  «        S )Né   r3   )Úexternal_attrr$   ÚstatÚS_ISREG)r:   Úmodes     r   Úzip_item_is_executablerA   f   s7   € ØÔ Ñ#€Dõ �Ð<�œ dÑ+Ô+Ð<°°u±Ñ=Ô=Ð=r   TÚfilenameÚlocationÚflattenc                óR  — t          |¦  «         t          | d¦  «        }	 t          j        |d¬¦  «        }t	          |                     ¦   «         ¦  «        o|}|                     ¦   «         D �]‰}|j        }|}|rt          |¦  «        d         }t          j
                             ||¦  «        }t          j
                             |¦  «        }	t          ||¦  «        s&d}
t          |
                     | ||¦  «        ¦  «        ‚|                     d¦  «        rt          |¦  «         Œ½t          |	¦  «         |                     |¦  «        }	 t          |d¦  «        5 }t#          j        ||¦  «         ddd¦  «         n# 1 swxY w Y   |                     ¦   «          t)          |¦  «        rt+          |¦  «         �ŒS# |                     ¦   «          t)          |¦  «        rt+          |¦  «         w w xY w	 |                     ¦   «          dS # |                     ¦   «          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ÚinfolistrB   r!   r   r   ÚjoinÚdirnamer1   r   ÚformatÚendswithÚshutilÚcopyfileobjÚcloserA   r9   )rB   rC   rD   ÚzipfpÚzipÚleadingr:   ÚnameÚfnÚdirÚmessageÚfpÚdestfps                r   Ú
unzip_filer^   m   sD  € õ ˆxÑÔÐÝ�˜4Ñ Ô €Eð ÝŒo˜e°Ð5Ñ5Ô5ˆÝ! #§,¢,¡.¤.Ñ1Ô1Ð=°gˆØ—L’L‘N”Nð 	Oñ 	OˆDØ”=ˆDØˆBØð 0Ý& tÑ,Ô,¨QÔ/�Ý”—’˜h¨Ñ+Ô+ˆBÝ”'—/’/ "Ñ%Ô%ˆCÝ& x°Ñ4Ô4ð Pð4ð õ (¨¯ª°xÀÀXÑ(NÔ(NÑOÔOÐOØ�{Š{˜;Ñ'Ô'ð Oå˜2‘”��å˜3‘”�ð —X’X˜d‘^”^�ðOÝ˜b $™œð 7¨6ÝÔ*¨2¨vÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð —H’H‘J”J�JÝ-¨dÑ3Ô3ð OÝJÈ2ÑNÔNÐNùøð —H’H‘J”J�JÝ-¨dÑ3Ô3ð OÝJÈ2ÑNÔNÐNÐNðOøøøð5	Oð: 	�Š‰Œˆˆˆøˆ�Š‰ŒˆˆøøøsH   ¡D.H ÅGÅ FÅ6GÆF	ÆGÆ	F	Æ
GÆ4H Ç5G6Ç6H ÈH&c                ó’  ‡ ‡‡‡— t          ‰¦  «         ‰                      ¦   «                              d¦  «        s'‰                      ¦   «                              d¦  «        rd}n¥‰                      ¦   «                              t          ¦  «        rd}nv‰                      ¦   «                              t          ¦  «        rd}nG‰                      ¦   «                              d¦  «        rd}nt
                               d‰ ¦  «         d	}t          j        ‰ |d
¬¦  «        }	 t          d„ | 
                    ¦   «         D ¦   «         ¦  «        }	 t          j        Št          ¦   «         Š|rm| 
                    ¦   «         D ]X}t          |j        ¦  «        \  }}||_        |                     ¦   «         r$t          |j        ¦  «        \  }}	||k    r|	|_        ŒYdˆˆˆ ˆfd„}
|                     ‰|
¬¦  «         n"# t$          $ r t'          ‰ ‰||¦  «         Y nw xY w|                     ¦   «          dS # |                     ¦   «          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)Úencodingc                ó   — g | ]	}|j         ‘Œ
S r4   )rX   )Ú.0Úmembers     r   ú
<listcomp>zuntar_file.<locals>.<listcomp>¶   s   € Ð"NÐ"NÐ"N°6 6¤;Ð"NÐ"NÐ"Nr   rd   útarfile.TarInfor   r   r   c                ó‚  •— | j         }	 	  ‰| ‰¦  «        } nB# t          j        $ r0 t          j        d d…         dv rt          j        | ‰¦  «        } n‚ Y nw xY wn<# t          j        $ r*}d}t          |                     ‰|¦  «        ¦  «        ‚d }~ww xY w|  	                    ¦   «         r|dz  r‰| _         nd | _         | S )Né   >   ©rh   é	   é   ©rh   é
   é   ©rh   é   é   z%Invalid member in the tar file {}: {}r3   )
r@   ÚtarfileÚLinkOutsideDestinationErrorÚsysÚversion_infoÚ
tar_filterÚTarErrorr   rP   Úisfile)	rd   r   Ú	orig_modeÚexcr[   Údata_filterÚdefault_mode_plus_executablerB   rC   s	        €€€€r   Ú
pip_filterzuntar_file.<locals>.pip_filterÎ   s  ø€ Ø"œK�	ðð"Ø!, ¨V°XÑ!>Ô!>˜˜øÝ"Ô>ð "ð "ð "ÝÔ+¨B¨Q¨BÔ/ð 4ð ð õ &-Ô%7¸ÀÑ%IÔ%I˜F˜Fà!ð #˜Fð"øøøøøõ Ô'ð 	ð 	ð 	ØE�Gõ ,ØŸšØ$Øñô ñô ð øøøøð		øøøð —=’=‘?”?ð ' y°5Ñ'8ð 'Ø">�F”K�Kð #'�F”KØ�s2   ‹ —A ˜<AÁA ÁAÁA ÁBÁ*%BÂB)ÚfilterN)rd   rf   r   r   r   rf   )r   ÚlowerrQ   r   r	   ÚloggerÚwarningrr   rI   r)   Ú
getmembersr{   r5   r!   rX   ÚislnkÚlinknameÚ
extractallÚAttributeErrorÚ_untar_without_filterrT   )rB   rC   r@   ÚtarrW   rd   Ú	name_leadÚ	name_restÚlnk_leadÚlnk_restr}   r{   r|   s   ``         @@r   Ú
untar_filer�   ›   sr  øøøø€ õ ˆxÑÔÐØ‡~‚~ÑÔ× Ò  Ñ'Ô'ð ¨8¯>ª>Ñ+;Ô+;×+DÒ+DÀVÑ+LÔ+Lð ØˆˆØ	�ŠÑ	Ô	×	"Ò	"¥>Ñ	2Ô	2ð ØˆˆØ	�ŠÑ	Ô	×	"Ò	"¥=Ñ	1Ô	1ð 	ØˆˆØ	�ŠÑ	Ô	×	"Ò	" 6Ñ	*Ô	*ð Øˆˆå�ŠØ;Øñ	
ô 	
ð 	
ð ˆå
Œ,�x °Ð
8Ñ
8Ô
8€CðCÝ!Ð"NÐ"N¸S¿^º^Ñ=MÔ=MÐ"NÑ"NÔ"NÑOÔOˆð
:	8Ý!Ô-ˆKõ ,MÑ+NÔ+NÐ(àð 
7ð "ŸnšnÑ.Ô.ð 7ð 7�FÝ+<¸V¼[Ñ+IÔ+IÑ(�I˜yØ"+�F”KØ—|’|‘~”~ð 7Ý->¸v¼Ñ-OÔ-OÑ*˜ (Ø# yÒ0Ð0Ø.6˜FœOøð%ð %ð %ð %ð %ð %ð %ð %ð %ðN �NŠN˜8¨JˆNÑ7Ô7Ð7Ð7øõq ð 	Dð 	Dð 	DÝ! (¨H°c¸7ÑCÔCÐCÐCÐCð	Døøøðv 	�	Š	‰Œˆˆˆøˆ�	Š	‰Œˆˆøøøs1   Ä"+H0 ÅG8 ÅBH0 Ç8HÈH0 ÈHÈH0 È0Irˆ   útarfile.TarFileÚtarinforf   c                óL  — t           j                             t           j                             |j        ¦  «        |j        ¦  «        }t           j                             |¦  «        }|                     dd¦  «        }	 |                      |¦  «         dS # t          $ r Y dS w xY w)zGCheck if the file pointed to by the symbolic link is in the tar archiver   r   TF)
r   r   rN   rO   rX   r„   ÚnormpathÚreplaceÚ	getmemberÚKeyError)rˆ   r�   r„   s      r   Úis_symlink_target_in_tarr•   û   s’   € åŒw�|Š|�BœGŸOšO¨G¬LÑ9Ô9¸7Ô;KÑLÔL€HåŒw×Ò Ñ)Ô)€HØ×Ò  cÑ*Ô*€HðØ�Š�hÑÔÐØˆtøÝð ð ð Øˆuˆuðøøøs   Á>B Â
B#Â"B#rW   c                óÆ  — |                      ¦   «         D �]J}|j        }|rt          |¦  «        d         }t          j                             ||¦  «        }t          ||¦  «        s&d}t          |                     | ||¦  «        ¦  «        ‚| 	                    ¦   «         rt          |¦  «         Œ›|                     ¦   «         r“t          ||¦  «        s0d}t          |                     | |j        |j        ¦  «        ¦  «        ‚	 |                     ||¦  «         �Œ# t          $ r-}t                                d| |j        |¦  «         Y d}~�Œ:d}~ww xY w	 |                     |¦  «        }	nA# t&          t(          f$ r-}t                                d| |j        |¦  «         Y d}~�Œ’d}~ww xY wt          t          j                             |¦  «        ¦  «         |	€J ‚t-          |d¦  «        5 }
t/          j        |	|
¦  «         ddd¦  «         n# 1 swxY w Y   |	                     ¦   «          |                     ||¦  «         |j        dz  rt9          |¦  «         �ŒLdS )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: %sNrH   r3   )r‚   rX   r!   r   r   rN   r1   r   rP   Úisdirr   Úissymr•   r„   Ú_extract_memberÚ	Exceptionr€   r�   Úextractfiler”   r†   rO   rI   rR   rS   rT   Úutimer@   r9   )rB   rC   rˆ   rW   rd   rY   r   r[   rz   r\   r]   s              r   r‡   r‡   	  sÔ  € ð —.’.Ñ"Ô"ð 8Iñ 8IˆØŒ[ˆØð 	*Ý" 2Ñ&Ô& qÔ)ˆBÝŒw�|Š|˜H bÑ)Ô)ˆÝ" 8¨TÑ2Ô2ð 	Nð0ð õ $ G§N¢N°8¸TÀ8Ñ$LÔ$LÑMÔMÐMØ�<Š<‰>Œ>ð -	IÝ�tÑÔÐÐØ�\Š\‰^Œ^ð +	IÝ+¨C°Ñ8Ô8ð ð4ð õ (Ø—N’N 8¨V¬[¸&¼/ÑJÔJñô ð ðØ×#Ò# F¨DÑ1Ô1Ð1Ñ1øÝð 	ð 	ð 	õ —’ØEØØ”KØñ	ô ð ð ���‘øøøøð	øøøðØ—_’_ VÑ,Ô,��øÝ�nÐ-ð 	ð 	ð 	õ —’ØEØØ”KØñ	ô ð ð ���‘øøøøð	øøøõ •r”w—’ tÑ,Ô,Ñ-Ô-Ð-Ø�>�>�>Ý�d˜DÑ!Ô!ð / VÝÔ" 2 vÑ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /à�HŠH‰JŒJˆJà�IŠI�f˜dÑ#Ô#Ð#àŒ{˜UÑ"ð IÝBÀ4ÑHÔHÐHùðq8Ið 8IsB   ÄDÄ
EÄ'"EÅEÅE.Å.F,Å?"F'Æ'F,Ç/HÈH	ÈH	Úcontent_typeú
str | Nonec                óì  ‡ ‡‡— t           j                             ‰ ¦  «        Š ‰                      d¦  «         Šdˆ ˆˆfd„}dˆ ˆfd„}|dk    r
 |¦   «         S |dk    r
 |¦   «         S ‰                      ¦   «                              t
          ¦  «        r
 |¦   «         S ‰                      ¦   «                              t          t          z   t          z   ¦  «        r
 |¦   «         S t          j
        ‰ ¦  «        }t          j        ‰ ¦  «        }|r|s
 |¦   «         S |r|s
 |¦   «         S |r|rt                               d‰ ¦  «         t                               d	‰ ‰|¦  «         t!          d
‰› �¦  «        ‚)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.whlr   r6   c                 ó,   •— t          ‰ ‰‰¬¦  «         d S )N)rD   )r^   )rB   rC   Úzip_flattens   €€€r   Ú_unzipzunpack_file.<locals>._unzip\  s   ø€ Ý�8˜X¨{Ð;Ñ;Ô;Ð;Ð;Ð;r   c                 ó(   •— t          ‰ ‰¦  «         d S ©N)r�   )rB   rC   s   €€r   Ú_untarzunpack_file.<locals>._untar_  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 N)r   r6   )r   r   ÚrealpathrQ   r   r
   r   r   r	   rJ   Ú
is_zipfilerr   Ú
is_tarfiler€   ÚerrorÚcriticalr   )rB   rC   r�   r¢   r¥   r§   r¨   r¡   s   ``     @r   Úunpack_filer«   N  sÆ  øøø€ õ Œw×Ò Ñ)Ô)€HØ×'Ò'¨Ñ/Ô/Ð/€Kð<ð <ð <ð <ð <ð <ð <ð <ð'ð 'ð 'ð 'ð 'ð 'ð 'ð Ð(Ò(Ð(Øˆv‰xŒxˆØÐ+Ò+Ð+Øˆv‰xŒxˆà‡~‚~ÑÔ× Ò ¥Ñ0Ô0ð Øˆv‰xŒxˆØ‡~‚~ÑÔ× Ò ¥µ.Ñ!@Å=Ñ!PÑQÔQð Øˆv‰xŒxˆõ Ô# HÑ-Ô-€JÝÔ# HÑ-Ô-€JØð ˜*ð Øˆv‰xŒxˆØð ˜*ð Øˆv‰xŒxˆØð B�jð BÝ�ŠÐ6¸ÑAÔAÐAå
‡O‚Oð	'àØØñô ð õ ÐLÀ(ÐLÐLÑ
MÔ
MÐMr   )r   r   )r   r   r   r   )r"   r#   r   r$   )r*   r   r+   r   r   r$   )r   r   r   r6   )r:   r   r   r$   )T)rB   r   rC   r   rD   r$   r   r6   )rB   r   rC   r   r   r6   )rˆ   rŽ   r�   rf   r   r$   )
rB   r   rC   r   rˆ   rŽ   rW   r$   r   r6   r¤   )rB   r   rC   r   r�   rž   r   r6   )*Ú__doc__Ú
__future__r   Úloggingr   rR   r>   rt   rr   rJ   Ú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)   r1   r5   r9   rA   r^   r�   r•   r‡   r«   r4   r   r   ú<module>rº      sÀ  ðØ !Ð !à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð 0Ð /Ð /Ð /Ð /Ð /à	ˆÔ	˜8Ñ	$Ô	$€ð &¨Ñ6Ð ð0Ø€J€J€Jà˜NÑ*ÐÐøØð 0ð 0ð 0Ø
‡L‚LÐ.Ñ/Ô/Ð/Ð/Ð/ð0øøøð1à€K€K€Kà˜MÑ)ÐÐøØð 1ð 1ð 1Ø
‡L‚LÐ/Ñ0Ô0Ð0Ð0Ð0ð1øøøðð ð ð ð	ð 	ð 	ð 	ðð ð ð ð#ð #ð #ð #ð,ð ,ð ,ð ,ð8ð 8ð 8ð 8ð>ð >ð >ð >ð+ð +ð +ð +ð +ð\]ð ]ð ]ð ]ð@ð ð ð ðBIð BIð BIð BIðP  $ð/Nð /Nð /Nð /Nð /Nð /Nð /Ns$   Á	A) Á)BÂBÂ
	B ÂB1Â0B1