§
    é ph^  ã                   óŽ  — 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mZm	Z	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(  ee)¦  «        Z*de+de+de,de
e+ddf         fd„Z-dede
eddf         f         dede
eddf         f         fd„Z.e.dede
e+ddf         fd„¦   «         Z/dee+         dee+         fd„Z0dee+         dee+         fd„Z1dee+         deee+         ee+         f         fd„Z2 G d„ d¦  «        Z3 G d„ d¦  «        Z4 G d„ d ¦  «        Z5dS )!é    N)Úcache_from_source)	ÚAnyÚCallableÚDictÚ	GeneratorÚIterableÚListÚOptionalÚSetÚTuple)ÚLegacyDistutilsInstallÚUninstallMissingRecord)Úget_bin_prefixÚget_bin_user)ÚBaseDistribution)ÚWINDOWS)Úegg_link_path_from_location)Ú	getLoggerÚ
indent_log)ÚaskÚnormalize_pathÚrenamesÚrmtree)ÚAdjacentTempDirectoryÚTempDirectory)Úrunning_under_virtualenvÚbin_dirÚscript_nameÚis_guiÚreturnc              #   ó¤   K  — t           j                             | |¦  «        }|V — t          sdS |› d�V — |› d�V — |r	|› d�V — dS |› d�V — dS )z‘Create the fully qualified name of the files created by
    {console,gui}_scripts for the given ``dist``.
    Returns the list of file names
    Nz.exez.exe.manifestz-script.pywz
-script.py)ÚosÚpathÚjoinr   )r   r   r   Úexe_names       úlC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\pip\_internal\req\req_uninstall.pyÚ_script_namesr'      s›   è è € õ Œw�|Š|˜G [Ñ1Ô1€HØ
€N€N€NÝð ØˆØÐ
Ð
Ð
ÐÐÐØÐ
$Ð
$Ð
$Ð$Ð$Ð$Øð &ØÐ&Ð&Ð&Ð&Ð&Ð&Ð&Ð&àÐ%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ó    Úfn.c           
      óŽ   ‡ — t          j        ‰ ¦  «        dt          dt          dt          t          d d f         fˆ fd„¦   «         }|S )NÚargsÚkwr    c               ?   óx   •K  — t          ¦   «         } ‰| i |¤ŽD ]}||vr|                     |¦  «         |V — Œ d S ©N)ÚsetÚadd)r+   r,   ÚseenÚitemr)   s       €r&   Úuniquez_unique.<locals>.unique+   s[   øè è € å™œˆØ�B˜�O �O�Oð 	ð 	ˆDØ˜4Ðð Ø—’˜‘”�Ø�
�
�
øð	ð 	r(   )Ú	functoolsÚwrapsr   r   )r)   r3   s   ` r&   Ú_uniquer6   (   s_   ø€ õ „_�RÑÔð•cð ¥ð ­µ3¸¸d°?Ô)Cð ð ð ð ð ñ Ôðð €Mr(   Údistc              #   óì  K  — | j         }|€
J d¦   «         ‚|                      ¦   «         }|€t          | ¬¦  «        ‚|D ]µ}t          j                             ||¦  «        }|V — |                     d¦  «        rzt          j                             |¦  «        \  }}|dd…         }t          j                             ||dz   ¦  «        }|V — t          j                             ||dz   ¦  «        }|V — Œ¶dS )aÇ  
    Yield all the uninstallation paths for dist based on RECORD-without-.py[co]

    Yield paths to all the files in RECORD. For each .py file in RECORD, add
    the .pyc and .pyo in the same directory.

    UninstallPathSet.add() takes care of the __pycache__ .py[co].

    If RECORD is not found, raises an error,
    with possible information from the INSTALLER file.

    https://packaging.python.org/specifications/recording-installed-packages/
    Nznot installed©Údistributionú.pyéýÿÿÿú.pycú.pyo)ÚlocationÚiter_declared_entriesr   r"   r#   r$   ÚendswithÚsplit)r7   r?   ÚentriesÚentryr#   Údnr)   Úbases           r&   Úuninstallation_pathsrG   6   s  è è € ð Œ}€HØÐ0Ð0 Ñ0Ô0Ð0à×(Ò(Ñ*Ô*€GØð 8Ý$°$Ð7Ñ7Ô7Ð7àð 	ð 	ˆÝŒw�|Š|˜H eÑ,Ô,ˆØˆ
ˆ
ˆ
Ø�=Š=˜ÑÔð 	Ý”W—]’] 4Ñ(Ô(‰FˆB�Ø�c�r�c”7ˆDÝ”7—<’<  D¨6¡MÑ2Ô2ˆDØˆJˆJˆJÝ”7—<’<  D¨6¡MÑ2Ô2ˆDØˆJˆJˆJøð	ð 	r(   Úpathsc                 óà   ‡‡— t           j        j        Št          ¦   «         }t	          | t
          ¬¦  «        D ]5Št          ˆˆfd„|D ¦   «         ¦  «        }|s|                     ‰¦  «         Œ6|S )zÈCompact a path set to contain the minimal number of paths
    necessary to contain all paths in the set. If /a/path/ and
    /a/path/to/a/file.txt are both in the set, leave only the
    shorter path.©Úkeyc              3   óæ   •K  — | ]k}‰                      |                     d ¦  «        ¦  «        o>‰t          |                     d ¦  «                             ‰¦  «        ¦  «                 ‰k    V — ŒldS )Ú*N)Ú
startswithÚrstripÚlen)Ú.0Ú	shortpathr#   Úseps     €€r&   ú	<genexpr>zcompact.<locals>.<genexpr>a   sŠ   øè è € ð 
ð 
ð ð �OŠO˜I×,Ò,¨SÑ1Ô1Ñ2Ô2ð DØ•S˜×)Ò)¨#Ñ.Ô.×5Ò5°cÑ:Ô:Ñ;Ô;Ô<ÀÒCð
ð 
ð 
ð 
ð 
ð 
r(   )r"   r#   rS   r/   ÚsortedrP   Úanyr0   )rH   Úshort_pathsÚshould_skipr#   rS   s      @@r&   ÚcompactrY   X   s“   øø€ õ Œ'Œ+€CÝ™EœE€KÝ�u¥#Ð&Ñ&Ô&ð "ð "ˆÝð 
ð 
ð 
ð 
ð 
ð )ð
ñ 
ô 
ñ 
ô 
ˆð
 ð 	"Ø�OŠO˜DÑ!Ô!Ð!øØÐr(   c                 óà  ‡	‡
‡— d„ | D ¦   «         }t          |¦  «        }t          d„ |                     ¦   «         D ¦   «         t          ¬¦  «        }t          ¦   «         }dt          dt          fd„Š
|D ]×Št          ˆfd„|D ¦   «         ¦  «        rŒt          ¦   «         }t          ¦   «         }t          j        ‰¦  «        D ]L\  Š	}}|                     ˆ	ˆ
ˆfd„|D ¦   «         ¦  «         |                     ˆ	ˆ
ˆfd	„|D ¦   «         ¦  «         ŒM||z
  s7| 	                    |¦  «         | 
                    ‰t          j        z   ¦  «         ŒØt          t          |j        |¦  «        ¦  «        |z  S )
z«Returns a set containing the paths that need to be renamed.

    This set may include directories when the original sequence of paths
    included every file on disk.
    c                 óN   — i | ]"}t           j                             |¦  «        |“Œ#S © )r"   r#   Únormcase©rQ   Úps     r&   ú
<dictcomp>z'compress_for_rename.<locals>.<dictcomp>q   s*   € Ð6Ð6Ð6¨1•”× Ò  Ñ#Ô# QÐ6Ð6Ð6r(   c                 óX   — h | ]'}t           j                             |¦  «        d          ’Œ(S )r   )r"   r#   rB   r^   s     r&   ú	<setcomp>z&compress_for_rename.<locals>.<setcomp>s   s+   € ÐGÐGÐG°�œŸš aÑ(Ô(¨Ô+ÐGÐGÐGr(   rJ   Úar    c                  ób   — t           j                             t          j        j        | Ž ¦  «        S r.   )r"   r#   r]   r$   )rc   s    r&   Ú	norm_joinz&compress_for_rename.<locals>.norm_joinv   s!   € ÝŒw×Ò¥¤¤¨aÐ 0Ñ1Ô1Ð1r(   c              3   ó|   •K  — | ]6}t           j                             ‰¦  «                             |¦  «        V — Œ7d S r.   )r"   r#   r]   rN   )rQ   ÚwÚroots     €r&   rT   z&compress_for_rename.<locals>.<genexpr>z   sA   øè è € ÐGÐG¸�rŒw×Ò Ñ%Ô%×0Ò0°Ñ3Ô3ÐGÐGÐGÐGÐGÐGr(   c              3   ó2   •K  — | ]} ‰‰‰|¦  «        V — Œd S r.   r\   )rQ   ÚdÚdirnamere   rh   s     €€€r&   rT   z&compress_for_rename.<locals>.<genexpr>�   s1   øè è € ÐLÐL¸q˜y˜y¨¨w¸Ñ:Ô:ÐLÐLÐLÐLÐLÐLr(   c              3   ó2   •K  — | ]} ‰‰‰|¦  «        V — Œd S r.   r\   )rQ   Úfrk   re   rh   s     €€€r&   rT   z&compress_for_rename.<locals>.<genexpr>‚   s1   øè è € ÐHÐH¸Q˜Y˜Y t¨W°aÑ8Ô8ÐHÐHÐHÐHÐHÐHr(   )r/   rU   ÚvaluesrP   ÚstrrV   r"   ÚwalkÚupdateÚdifference_updater0   rS   ÚmapÚ__getitem__)rH   Úcase_mapÚ	remainingÚ	uncheckedÚ	wildcardsÚ	all_filesÚall_subdirsÚsubdirsÚfilesrk   re   rh   s            @@@r&   Úcompress_for_renamer}   k   s£  øøø€ ð 7Ð6°Ð6Ñ6Ô6€HÝ�H‘”€IÝÐGÐG°X·_²_Ñ5FÔ5FÐGÑGÔGÍSÐQÑQÔQ€IÝ™%œ%€Ið2•cð 2�cð 2ð 2ð 2ð 2ð ð )ð )ˆÝÐGÐGÐGÐG¸YÐGÑGÔGÑGÔGð 	àå!™eœeˆ	Ý #¡¤ˆÝ')¤w¨t¡}¤}ð 	Ið 	IÑ#ˆG�W˜eØ×ÒÐLÐLÐLÐLÐLÐLÀGÐLÑLÔLÑLÔLÐLØ×ÒÐHÐHÐHÐHÐHÐHÀ%ÐHÑHÔHÑHÔHÐHÐHð ˜IÑ%ð 	)Ø×'Ò'¨	Ñ2Ô2Ð2Ø�MŠM˜$¥¤™-Ñ(Ô(Ð(øå�s�8Ô'¨Ñ3Ô3Ñ4Ô4°yÑ@Ð@r(   c                 óf  — t          | ¦  «        }t          ¦   «         }t          ¦   «         }t          ¦   «         }|D ]x}|                     d¦  «        rŒ|                     d¦  «        sd|v r2|                     t          j                             |¦  «        ¦  «         |                     |¦  «         Œyt          t          t          j        j        |¦  «        ¦  «        }t          |¦  «        }|D ]­}t          j	        |¦  «        D ]–\  }}	}
|
D ]�}|                     d¦  «        rŒt          j         
                    ||¦  «        }t          j                             |¦  «        r6t          j                             |¦  «        |vr|                     |¦  «         ŒŽŒ—Œ®|d„ |D ¦   «         z  }||fS )as  Returns a tuple of 2 sets of which paths to display to user

    The first set contains paths that would be deleted. Files of a package
    are not added and the top-level directory of the package has a '*' added
    at the end - to signify that all it's contents are removed.

    The second set contains files that would have been skipped in the above
    folders.
    r=   z__init__.pyz
.dist-infoc                 óN   — h | ]"}t           j                             |d ¦  «        ’Œ#S )rM   )r"   r#   r$   )rQ   Úfolders     r&   rb   z.compress_for_output_listing.<locals>.<setcomp>¹   s(   € ÐKÐKÐK¸�2œ7Ÿ<š<¨°Ñ4Ô4ÐKÐKÐKr(   )r/   rA   r0   r"   r#   rk   rs   r]   rY   rp   r$   Úisfile)rH   Úwill_removeÚ	will_skipÚfoldersr|   r#   Ú_normcased_filesr€   ÚdirpathÚ_ÚdirfilesÚfnameÚfile_s                r&   Úcompress_for_output_listingr‹   �   s°  € õ �e‘*”*€KÝ‘”€Iõ ‰eŒe€GÝ‰EŒE€EØð ð ˆØ�=Š=˜Ñ Ô ð 	ØØ�=Š=˜Ñ'Ô'ð 	/¨<¸4Ð+?ð 	/Ø�KŠK�œŸš¨Ñ-Ô-Ñ.Ô.Ð.Ø�	Š	�$‰Œˆˆå�3�rœwÔ/°Ñ7Ô7Ñ8Ô8Ðå�gÑÔ€Gð ð )ð )ˆÝ$&¤G¨F¡O¤Oð 	)ð 	)Ñ ˆG�Q˜Ø!ð 
)ð 
)�Ø—>’> &Ñ)Ô)ð ØåœŸš W¨eÑ4Ô4�å”G—N’N 5Ñ)Ô)ð)åœ×(Ò(¨Ñ/Ô/Ð7GÐGð)ð
 —M’M %Ñ(Ô(Ð(øð
)ð	)ð ÐKÐKÀ7ÐKÑKÔKÑK€Kà˜	Ð!Ð!r(   c                   óv   — e Zd ZdZdd„Zdedefd„Zdedefd„Zdedefd„Zdd	„Z	dd
„Z
edefd„¦   «         ZdS )ÚStashedUninstallPathSetzWA set of file rename operations to stash files while
    tentatively uninstalling them.r    Nc                 ó"   — i | _         g | _        d S r.   )Ú
_save_dirsÚ_moves©Úselfs    r&   Ú__init__z StashedUninstallPathSet.__init__Â   s   € ð 57ˆŒð .0ˆŒˆˆr(   r#   c                 óÀ   — 	 t          |¦  «        }n # t          $ r t          d¬¦  «        }Y nw xY w|| j        t          j                             |¦  «        <   |j        S )z�Stashes a directory.

        Directories are stashed adjacent to their original location if
        possible, or else moved/copied into the user's temp dir.Ú	uninstall©Úkind)r   ÚOSErrorr   r�   r"   r#   r]   )r’   r#   Úsave_dirs      r&   Ú_get_directory_stashz,StashedUninstallPathSet._get_directory_stashÊ   si   € ð	7Ý&;¸DÑ&AÔ&AˆHˆHøÝð 	7ð 	7ð 	7Ý$¨+Ð6Ñ6Ô6ˆHˆHˆHð	7øøøà2:ˆŒ�œ×(Ò(¨Ñ.Ô.Ñ/àŒ}Ðs   ‚ ’/®/c                 óV  — t           j                             |¦  «        }t           j                             |¦  «        d}}d}||k    rF	 | j        |         }np# t
          $ r Y nw xY wt           j                             |¦  «        |}}||k    °Ft           j                             |¦  «        }t          d¬¦  «        }|| j        |<   t           j                             ||¦  «        }|r:|t           j        j        k    r%t           j         	                    |j        |¦  «        S |j        S )z‚Stashes a file.

        If no root has been provided, one will be created for the directory
        in the user's temp directory.Nr•   r–   )
r"   r#   r]   rk   r�   ÚKeyErrorr   ÚrelpathÚcurdirr$   )r’   r#   ÚheadÚold_headr™   r�   s         r&   Ú_get_file_stashz'StashedUninstallPathSet._get_file_stashØ   s  € õ
 Œw×Ò Ñ%Ô%ˆÝœŸš¨Ñ.Ô.°ˆhˆØˆà�hÒð 	-ðØœ?¨4Ô0�ØøÝð ð ð Ø�ðøøøåœWŸ_š_¨TÑ2Ô2°D�(ˆDð �hÒð 	-õ ”7—?’? 4Ñ(Ô(ˆDÝ$¨+Ð6Ñ6Ô6ˆHØ$,ˆDŒO˜DÑ!å”'—/’/ $¨Ñ-Ô-ˆØð 	8�w¥"¤'¤.Ò0ð 	8Ý”7—<’< ¤¨wÑ7Ô7Ð7ØŒ}Ðs   Á
A Á
A%Á$A%c                 ó   — t           j                             |¦  «        ot           j                             |¦  «         }|r|                      |¦  «        }n|                      |¦  «        }| j                             ||f¦  «         |r3t           j                             |¦  «        rt          j        |¦  «         t          ||¦  «         |S )z�Stashes the directory or file and returns its new location.
        Handle symlinks as files to avoid modifying the symlink targets.
        )
r"   r#   ÚisdirÚislinkrš   r¡   r�   ÚappendÚrmdirr   )r’   r#   Úpath_is_dirÚnew_paths       r&   ÚstashzStashedUninstallPathSet.stashó   s¼   € õ ”g—m’m DÑ)Ô)ÐFµ"´'·.².ÀÑ2FÔ2FÐ.FˆØð 	2Ø×0Ò0°Ñ6Ô6ˆHˆHà×+Ò+¨DÑ1Ô1ˆHàŒ×Ò˜D (Ð+Ñ,Ô,Ð,Øð 	�2œ7Ÿ=š=¨Ñ2Ô2ð 	õ ŒH�XÑÔÐÝ��hÑÔÐØˆr(   c                 ó‚   — | j                              ¦   «         D ]}|                     ¦   «          Œg | _        i | _         dS )z0Commits the uninstall by removing stashed files.N)r�   rn   Úcleanupr�   )r’   r™   s     r&   ÚcommitzStashedUninstallPathSet.commit  sF   € àœ×.Ò.Ñ0Ô0ð 	ð 	ˆHØ×ÒÑÔÐÐØˆŒØˆŒˆˆr(   c                 óx  — | j         D ]}t          j        dg|¢R Ž  Œ| j         D �] \  }}	 t                               d||¦  «         t          j                             |¦  «        st          j                             |¦  «        rt	          j        |¦  «         n.t          j         	                    |¦  «        rt          |¦  «         t          ||¦  «         Œµ# t          $ r@}t                               d|¦  «         t                               d|¦  «         Y d}~Œúd}~ww xY w|                      ¦   «          dS )z2Undoes the uninstall by moving stashed files back.zMoving to %s
 from %szReplacing %s from %szFailed to restore %szException: %sN)r�   ÚloggerÚinfoÚdebugr"   r#   r�   r¤   Úunlinkr£   r   r   r˜   Úerrorr¬   )r’   r_   r¨   r#   Úexs        r&   Úrollbackz StashedUninstallPathSet.rollback  s?  € à”ð 	6ð 	6ˆAÝŒKÐ0Ð5°1Ð5Ð5Ð5Ð5Ð5à"œkð 
	2ñ 
	2‰NˆH�dð	2Ý—’Ð3°X¸tÑDÔDÐDÝ”7—>’> (Ñ+Ô+ð %­r¬w¯~ª~¸hÑ/GÔ/Gð %Ý”I˜hÑ'Ô'Ð'Ð'Ý”W—]’] 8Ñ,Ô,ð %Ý˜8Ñ$Ô$Ð$Ý˜˜hÑ'Ô'Ð'Ð'øÝð 2ð 2ð 2Ý—’Ð3°XÑ>Ô>Ð>Ý—’˜_¨bÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1øøøøð2øøøð 	�Š‰Œˆˆˆs   «B-CÃ
D#Ã#6DÄD#c                 ó*   — t          | j        ¦  «        S r.   )Úboolr�   r‘   s    r&   Úcan_rollbackz$StashedUninstallPathSet.can_rollback"  s   € å�D”KÑ Ô Ð r(   ©r    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r“   ro   rš   r¡   r©   r¬   r´   Úpropertyr¶   r·   r\   r(   r&   r�   r�   ¾   sç   € € € € € ð&ð &ð0ð 0ð 0ð 0ð¨ð °ð ð ð ð ð Cð ¨Cð ð ð ð ð6˜#ð  #ð ð ð ð ð*ð ð ð ðð ð ð ð& ð!˜dð !ð !ð !ñ „Xð!ð !ð !r(   r�   c                   ó¬   — e Zd ZdZdeddfd„Zdedefd„Zdeddfd„Z	d	ed
eddfd„Z
ddededdfd„Zdedefd„Zdd„Zdd„Zededd fd„¦   «         ZdS )ÚUninstallPathSetzMA set of file paths to be removed in the uninstallation of a
    requirement.r7   r    Nc                 óÐ   — t          ¦   «         | _        t          ¦   «         | _        i | _        || _        t          ¦   «         | _        t          j        t          ¦  «        | _
        d S r.   )r/   Ú_pathsÚ_refuseÚ_pthÚ_distr�   Ú_moved_pathsr4   Ú	lru_cacher   Ú_normalize_path_cached)r’   r7   s     r&   r“   zUninstallPathSet.__init__+  sO   € Ý #¡¤ˆŒÝ!$¡¤ˆŒØ46ˆŒ	ØˆŒ
Ý3Ñ5Ô5ˆÔõ '0Ô&9½.Ñ&IÔ&IˆÔ#Ð#Ð#r(   r#   c                 ó†   — t          ¦   «         sdS |                     |                      t          j        ¦  «        ¦  «        S )zs
        Return True if the given path is one we are permitted to
        remove/modify, False otherwise.

        T)r   rN   rÇ   ÚsysÚprefix)r’   r#   s     r&   Ú
_permittedzUninstallPathSet._permitted6  s9   € õ (Ñ)Ô)ð 	Ø�4Ø�Š˜t×:Ò:½3¼:ÑFÔFÑGÔGÐGr(   c                 óZ  — t           j                             |¦  «        \  }}t           j                             |                      |¦  «        t           j                             |¦  «        ¦  «        }t           j                             |¦  «        sd S |                      |¦  «        r| j         	                    |¦  «         n| j
         	                    |¦  «         t           j                             |¦  «        d         dk    r$|  	                    t          |¦  «        ¦  «         d S d S )Né   r;   )r"   r#   rB   r$   rÇ   r]   ÚexistsrË   rÁ   r0   rÂ   Úsplitextr   )r’   r#   rŸ   Útails       r&   r0   zUninstallPathSet.addA  sú   € Ý”W—]’] 4Ñ(Ô(‰
ˆˆdõ Œw�|Š|˜D×7Ò7¸Ñ=Ô=½r¼w×?OÒ?OÐPTÑ?UÔ?UÑVÔVˆåŒw�~Š~˜dÑ#Ô#ð 	ØˆFØ�?Š?˜4Ñ Ô ð 	#ØŒK�OŠO˜DÑ!Ô!Ð!Ð!àŒL×Ò˜TÑ"Ô"Ð"õ Œ7×Ò˜DÑ!Ô! !Ô$¨Ò-ð 	.Ø�HŠHÕ& tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-ð	.ð 	.r(   Úpth_filerD   c                 ó  — |                       |¦  «        }|                      |¦  «        rB|| j        vrt          |¦  «        | j        |<   | j        |                              |¦  «         d S | j                             |¦  «         d S r.   )rÇ   rË   rÃ   ÚUninstallPthEntriesr0   rÂ   )r’   rÑ   rD   s      r&   Úadd_pthzUninstallPathSet.add_pthT  sŠ   € Ø×.Ò.¨xÑ8Ô8ˆØ�?Š?˜8Ñ$Ô$ð 	'Ø˜tœyÐ(ð DÝ&9¸(Ñ&CÔ&C�”	˜(Ñ#ØŒI�hÔ×#Ò# EÑ*Ô*Ð*Ð*Ð*àŒL×Ò˜XÑ&Ô&Ð&Ð&Ð&r(   FÚauto_confirmÚverbosec                 ó´  — | j         s't                               d| j        j        ¦  «         dS | j        j        › d| j        j        › �}t                               d|¦  «         t          ¦   «         5  |s|                      |¦  «        rµ| j        }t          | j         ¦  «        }t          t          |¦  «        ¦  «        D ]2}|                     |¦  «         t                               d|¦  «         Œ3| j                             ¦   «         D ]}|                     ¦   «          Œt                               d|¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z\Remove paths in ``self._paths`` with confirmation (unless
        ``auto_confirm`` is True).z7Can't uninstall '%s'. No files were found to uninstall.Nú-zUninstalling %s:zRemoving file or directory %szSuccessfully uninstalled %s)rÁ   r®   r¯   rÄ   Úraw_nameÚraw_versionr   Ú_allowed_to_proceedrÅ   r}   rU   rY   r©   rÖ   rÃ   rn   Úremove)r’   rÕ   rÖ   Údist_name_versionÚmovedÚ
for_renamer#   Úpths           r&   rÜ   zUninstallPathSet.remove]  s¯  € ð Œ{ð 	Ý�KŠKØIØ”
Ô#ñô ð ð ˆFà#œzÔ2ÐMÐM°T´ZÔ5KÐMÐMÐÝ�ŠÐ&Ð(9Ñ:Ô:Ð:å‰\Œ\ð 	Nð 	NØð N˜t×7Ò7¸Ñ@Ô@ð NØÔ)�å0°´Ñ=Ô=�
å"¥7¨:Ñ#6Ô#6Ñ7Ô7ð Jð J�DØ—K’K Ñ%Ô%Ð%Ý—N’NÐ#BÀDÑIÔIÐIÐIàœ9×+Ò+Ñ-Ô-ð !ð !�CØ—J’J‘L”L�L�Lå—’Ð9Ð;LÑMÔMÐMð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ns   Á3CEÅEÅEc                 ór  — dt           dt          t                    ddfd„}|st          | j        ¦  «        \  }}n"t	          | j        ¦  «        }t	          ¦   «         } |d|¦  «          |d|¦  «          |d| j        ¦  «         |r |d	t          | j        ¦  «        ¦  «         t          d
d¦  «        dk    S )z@Display which files would be deleted and prompt for confirmationÚmsgrH   r    Nc                 ó  — |sd S t                                | ¦  «         t          ¦   «         5  t          t	          |¦  «        ¦  «        D ]}t                                |¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S r.   )r®   r¯   r   rU   rY   )râ   rH   r#   s      r&   Ú_displayz6UninstallPathSet._allowed_to_proceed.<locals>._display}  sÆ   € Øð Ø�å�KŠK˜ÑÔÐÝ‘”ð &ð &Ý"¥7¨5¡>¤>Ñ2Ô2ð &ð &�DÝ—K’K Ñ%Ô%Ð%Ð%ð&ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s   ­:A5Á5A9Á<A9zWould remove:z+Would not remove (might be manually added):z%Would not remove (outside of prefix):zWill actually move:zProceed (Y/n)? )ÚyÚnÚ ræ   )ro   r   r‹   rÁ   r/   rÂ   r}   r   )r’   rÖ   rä   r‚   rƒ   s        r&   rÛ   z$UninstallPathSet._allowed_to_proceedz  sà   € ð	&�#ð 	&¥h­s¤mð 	&¸ð 	&ð 	&ð 	&ð 	&ð ð 	Ý%@ÀÄÑ%MÔ%MÑ"ˆK˜˜õ ˜dœkÑ*Ô*ˆKÝ™œˆIàˆ� +Ñ.Ô.Ð.ØˆÐ>À	ÑJÔJÐJØˆÐ8¸$¼,ÑGÔGÐGØð 	NØˆHÐ*Õ,?ÀÄÑ,LÔ,LÑMÔMÐMåÐ$ nÑ5Ô5¸Ò<Ð<r(   c                 óH  — | j         j        s't                               d| j        j        ¦  «         dS t                               d| j        j        ¦  «         | j                              ¦   «          | j         	                    ¦   «         D ]}|                     ¦   «          ŒdS )z1Rollback the changes previously made by remove().z'Can't roll back %s; was not uninstalledNzRolling back uninstall of %s)
rÅ   r·   r®   r²   rÄ   rÙ   r¯   r´   rÃ   rn   )r’   rà   s     r&   r´   zUninstallPathSet.rollback–  s�   € àÔ Ô-ð 	Ý�LŠLØ9Ø”
Ô#ñô ð ð ˆFÝ�ŠÐ2°D´JÔ4GÑHÔHÐHØÔ×"Ò"Ñ$Ô$Ð$Ø”9×#Ò#Ñ%Ô%ð 	ð 	ˆCØ�LŠL‰NŒNˆNˆNð	ð 	r(   c                 ó8   — | j                              ¦   «          dS )z?Remove temporary save dir: rollback will no longer be possible.N)rÅ   r¬   r‘   s    r&   r¬   zUninstallPathSet.commit£  s   € àÔ× Ò Ñ"Ô"Ð"Ð"Ð"r(   c           
      óð  ‡— |j         }|j        }|€+t                               d|j        ¦  «          | |¦  «        S t          |¦  «        }|j        s7t                               d|j        |t          j        ¦  «          | |¦  «        S |d„ t          j
        d¦  «        t          j
        d¦  «        hD ¦   «         v r,t                               d|j        |¦  «          | |¦  «        S  | |¦  «        }t          |j        ¦  «        }|j        o@|d uo<t          j                             |¦  «        o|                     |j        › d�¦  «         }|�rp|�|                     |¦  «         |                     ¦   «         }|�:|D ]5}	|                     t          j                             ||	¦  «        ¦  «         Œ6�n,|                     d¦  «        rò	 |                     d	¦  «        }
|
                     d
¬¦  «        Šn# t2          $ r g ŠY nw xY wˆfd„|                     d¦  «                             ¦   «         D ¦   «         D ]}t          j                             ||¦  «        }|                     |¦  «         |                     |› d�¦  «         |                     |› d�¦  «         |                     |› d�¦  «         Œ€�n#|j        rt7          |¬¦  «        ‚|j        r’|                     |¦  «         t          j                             |¦  «        d         }t          j                             t          j                             |¦  «        d¦  «        }|                     |d|z   ¦  «         �ns|j         r)tC          |¦  «        D ]}|                     |¦  «         Œ�nC|�r$tE          |¦  «        5 }t          j         #                    | $                    ¦   «          %                    ¦   «         ¦  «        }| &                    |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j         '                    ||¦  «        sJ d|› d|› d|j        › d|› d�	¦   «         ‚|                     |¦  «         t          j                             t          j                             |¦  «        d¦  «        }|                     ||¦  «         nt           (                    d||¦  «         |j)        rtU          ¦   «         }ntW          ¦   «         }	 | ,                    ¦   «         D ]r}|                     t          j                             ||¦  «        ¦  «         tZ          r6|                     t          j                             ||› d�¦  «        ¦  «         Œsn# t2          t\          f$ r Y nw xY wdt^          dt`          dtb          t`          d d f         fd„} |||¦  «        D ]}|                     |¦  «         Œ|S )Nz-Not uninstalling %s since it is not installedz1Not uninstalling %s at %s, outside environment %sc                 ó   — h | ]}|¯|’ŒS r\   r\   r^   s     r&   rb   z-UninstallPathSet.from_dist.<locals>.<setcomp>¼  s.   € ð (
ð (
ð (
àØð(
Øð(
ð (
ð (
r(   ÚstdlibÚ
platstdlibz<Not uninstalling %s at %s, as it is in the standard library.z	.egg-infoztop_level.txtznamespace_packages.txtF)Úkeependsc                 ó    •— g | ]
}|¯|‰v¯|‘ŒS r\   r\   )rQ   r_   Ú
namespacess     €r&   ú
<listcomp>z.UninstallPathSet.from_dist.<locals>.<listcomp>ê  s>   ø€ ð &ð &ð &àØð&ð  jÐ0ð&Øð&ð &ð &r(   r;   r=   r>   r9   rÍ   zeasy-install.pthz./z	Egg-link z (to z') does not match installed location of z (at ú)z)Not sure how to uninstall: %s - Check: %sz.batr7   r   r    c              3   óÖ   K  — |                       ¦   «         D ]Q}|j        dk    rt          ||j        d¦  «        E d {V —† Œ*|j        dk    rt          ||j        d¦  «        E d {V —† ŒRd S )NÚconsole_scriptsFÚgui_scriptsT)Úiter_entry_pointsÚgroupr'   Úname)r7   r   Úentry_points      r&   Úiter_scripts_to_removez:UninstallPathSet.from_dist.<locals>.iter_scripts_to_remove5  s¦   è è € ð  $×5Ò5Ñ7Ô7ð Nð N�ØÔ$Ð(9Ò9ð NÝ,¨W°kÔ6FÈÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNØ Ô&¨-Ò7ð NÝ,¨W°kÔ6FÈÑMÔMÐMÐMÐMÐMÐMÐMÐMøð	Nð Nr(   )2r?   Úinfo_locationr®   r¯   Úcanonical_namer   ÚlocalrÉ   rÊ   Ú	sysconfigÚget_pathr   rÙ   Ú"installed_with_setuptools_egg_infor"   r#   rÎ   rA   Úsetuptools_filenamer0   r@   r$   Úis_fileÚ	read_textÚ
splitlinesÚFileNotFoundErrorÚinstalled_by_distutilsr   Úinstalled_as_eggrB   rk   rÔ   Úinstalled_with_dist_inforG   Úopenr]   ÚreadlineÚstriprÇ   Úsamefiler°   Úin_usersiter   r   Úiter_distutils_script_namesr   ÚNotADirectoryErrorr   ro   r   )Úclsr7   Údist_locationrû   Únormalized_dist_locationÚpaths_to_removeÚdevelop_egg_linkÚsetuptools_flat_installationÚinstalled_filesÚinstalled_fileÚnamespace_packagesÚtop_level_pkgr#   Úeasy_install_eggÚeasy_install_pthÚfhÚlink_pointerÚnormalized_link_pointerr   Úscriptrú   Úsrð   s                         @r&   Ú	from_distzUninstallPathSet.from_dist§  s  ø€ àœˆØÔ*ˆØð 	Ý�KŠKØ?ØÔ#ñô ð ð �3�t‘9”9Ðå#1°-Ñ#@Ô#@Ð ØŒzð 	Ý�KŠKØCØÔ#Ø(Ý”
ñ	ô ð ð �3�t‘9”9Ðà#ð (
ð (
åÔ(¨Ñ2Ô2µIÔ4FÀ|Ñ4TÔ4TÐUð(
ñ (
ô (
ð 
ð 
	õ
 �KŠKØNØÔ#Ø(ñô ð ð
 �3�t‘9”9Ðà˜#˜d™)œ)ˆÝ6°t´}ÑEÔEÐð Ô3ð SØ TÐ)ðSå”—’˜}Ñ-Ô-ðSð
 "×*Ò*¨dÔ.FÐ+QÐ+QÐ+QÑRÔRÐRð 	%ð (ñ K	Øð 3Ø×#Ò# MÑ2Ô2Ð2Ø"×8Ò8Ñ:Ô:ˆOØð 7Ø&5ð Uð U�NØ#×'Ò'­¬¯ª°]ÀNÑ(SÔ(SÑTÔTÐTÐTñUð
 —’˜oÑ.Ô.ð 7ðOØ)-¯ªÐ8PÑ)QÔ)QÐ&ð "4×!>Ò!>ÈÐ!>Ñ!NÔ!N�J�Jøõ )ð $ð $ð $Ø!#�J�J�Jð$øøøð&ð &ð &ð &à!Ÿ^š^¨OÑ<Ô<×GÒGÑIÔIð&ñ &ô &ð 	7ð 	7�Mõ
 œ7Ÿ<š<¨°}ÑEÔE�DØ#×'Ò'¨Ñ-Ô-Ð-Ø#×'Ò'¨4¨¨¨Ñ5Ô5Ð5Ø#×'Ò'¨4¨¨¨Ñ6Ô6Ð6Ø#×'Ò'¨4¨¨¨Ñ6Ô6Ð6Ð6ùàÔ(ð /	Ý(°dÐ;Ñ;Ô;Ð;àÔ"ð ,	ð ×ÒÐ 8Ñ9Ô9Ð9Ý!œwŸ}š}Ð-EÑFÔFÀqÔIÐÝ!œwŸ|š|Ý”—’Ð 8Ñ9Ô9Ø"ñ ô  Ðð ×#Ò#Ð$4°dÐ=MÑ6MÑNÔNÐNÑNàÔ*ð 	Ý,¨TÑ2Ô2ð *ð *�Ø×#Ò# DÑ)Ô)Ð)Ð)ñ*ð ñ 	õ Ð&Ñ'Ô'ð ¨2Ý!œw×/Ò/°·²±´×0CÒ0CÑ0EÔ0EÑFÔF�Ø*9×*PÒ*PØ ñ+ô +Ð'ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ
 ”7×#Ò#Ø'Ð)Añô ð ð ðNÐ,ð Nð N°<ð Nð NØ)-¬ðNð NØ=JðNð Nð Nñô ð ð ×ÒÐ 0Ñ1Ô1Ð1Ý!œwŸ|š|Ý”—’Ð 0Ñ1Ô1Ð3Eñ ô  Ðð ×#Ò#Ð$4°mÑDÔDÐDÐDõ �LŠLØ;ØØñô ð ð Ôð 	'Ý"‘n”nˆGˆGå$Ñ&Ô&ˆGð	Ø×:Ò:Ñ<Ô<ð Pð P�Ø×#Ò#¥B¤G§L¢L°¸&Ñ$AÔ$AÑBÔBÐBÝð PØ#×'Ò'­¬¯ª°WÀ¸o¸o¸oÑ(NÔ(NÑOÔOÐOøðPøõ "Õ#5Ð6ð 	ð 	ð 	ØˆDð	øøøð	NÝ"ð	Nåð	Nõ •s˜D $�Ô'ð	Nð 	Nð 	Nð 	Nð (Ð'¨¨gÑ6Ô6ð 	#ð 	#ˆAØ×Ò Ñ"Ô"Ð"Ð"àÐs8   ÇG= Ç=HÈHÎ6APÐPÐ"PÔBV ÖV(Ö'V()FFr¸   )r¹   rº   r»   r¼   r   r“   ro   r¶   rË   r0   rÔ   rÜ   rÛ   r´   r¬   Úclassmethodr!  r\   r(   r&   r¿   r¿   '  sr  € € € € € ðð ð	JÐ-ð 	J°$ð 	Jð 	Jð 	Jð 	Jð	H˜sð 	H tð 	Hð 	Hð 	Hð 	Hð.˜ð . ð .ð .ð .ð .ð&' ð '¨Cð '°Dð 'ð 'ð 'ð 'ðNð N 4ð N¸$ð NÈ4ð Nð Nð Nð Nð:=¨4ð =°Dð =ð =ð =ð =ð8ð ð ð ð#ð #ð #ð #ð ðZÐ-ð ZÐ2Dð Zð Zð Zñ „[ðZð Zð Zr(   r¿   c                   óB   — e Zd Zdeddfd„Zdeddfd„Zd	d„Zdefd„ZdS )
rÓ   rÑ   r    Nc                 óH   — || _         t          ¦   «         | _        d | _        d S r.   )Úfiler/   rC   Ú_saved_lines)r’   rÑ   s     r&   r“   zUninstallPthEntries.__init__F  s"   € ØˆŒ	Ý!$¡¤ˆŒØ37ˆÔÐÐr(   rD   c                 óü   — t           j                             |¦  «        }t          r;t           j                             |¦  «        d         s|                     dd¦  «        }| j                             |¦  «         d S )Nr   ú\ú/)r"   r#   r]   r   Ú
splitdriveÚreplacerC   r0   )r’   rD   s     r&   r0   zUninstallPthEntries.addK  sl   € Ý”× Ò  Ñ'Ô'ˆõ ð 	-�2œ7×-Ò-¨eÑ4Ô4°QÔ7ð 	-Ø—M’M $¨Ñ,Ô,ˆEØŒ×Ò˜ÑÔÐÐÐr(   c                 óˆ  — t                                d| j        ¦  «         t          j                             | j        ¦  «        s"t                                d| j        ¦  «         d S t          | j        d¦  «        5 }|                     ¦   «         }|| _	        d d d ¦  «         n# 1 swxY w Y   t          d„ |D ¦   «         ¦  «        rd}nd}|rO|d                              |                     d¦  «        ¦  «        s!|d         |                     d¦  «        z   |d<   | j        D ]Y}	 t                                d	|¦  «         |                     ||z                        d¦  «        ¦  «         ŒJ# t          $ r Y ŒVw xY wt          | j        d
¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzRemoving pth entries from %s:z.Cannot remove entries from nonexistent file %sÚrbc              3   ó   K  — | ]}d |v V — Œ	dS )s   
Nr\   )rQ   Úlines     r&   rT   z-UninstallPthEntries.remove.<locals>.<genexpr>e  s&   è è € Ð1Ð1 4ˆw˜$ˆÐ1Ð1Ð1Ð1Ð1Ð1r(   z
ú
éÿÿÿÿzutf-8zRemoving entry: %sÚwb)r®   rÖ   r%  r"   r#   r�   Úwarningr	  Ú	readlinesr&  rV   rA   ÚencoderC   rÜ   Ú
ValueErrorÚ
writelines)r’   r  ÚlinesÚendlinerD   s        r&   rÜ   zUninstallPthEntries.removeZ  s7  € Ý�ŠÐ6¸¼	ÑBÔBÐBõ Œw�~Š~˜dœiÑ(Ô(ð 	Ý�NŠNÐKÈTÌYÑWÔWÐWØˆFÝ�$”)˜TÑ"Ô"ð 	& bà—L’L‘N”NˆEØ %ˆDÔð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&õ Ð1Ð1¨5Ð1Ñ1Ô1Ñ1Ô1ð 	ØˆGˆGàˆGàð 	<˜˜rœ×+Ò+¨G¯NªN¸7Ñ,CÔ,CÑDÔDð 	<Ø˜bœ	 G§N¢N°7Ñ$;Ô$;Ñ;ˆE�"‰IØ”\ð 	ð 	ˆEðÝ—’Ð3°UÑ;Ô;Ð;Ø—’˜e g™o×5Ò5°gÑ>Ô>Ñ?Ô?Ð?Ð?øÝð ð ð Ø�ðøøøå�$”)˜TÑ"Ô"ð 	! bØ�MŠM˜%Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s7   Á<B$Â$B(Â+B(Ä(AE/Å/
E<Å;E<ÆF7Æ7F;Æ>F;c                 ó&  — | j         €"t                               d| j        ¦  «         dS t                               d| j        ¦  «         t          | j        d¦  «        5 }|                     | j         ¦  «         d d d ¦  «         n# 1 swxY w Y   dS )Nz.Cannot roll back changes to %s, none were madeFz!Rolling %s back to previous stater2  T)r&  r®   r²   r%  r°   r	  r7  )r’   r  s     r&   r´   zUninstallPthEntries.rollbacku  s¾   € ØÔð 	Ý�LŠLÐIÈ4Ì9ÑUÔUÐUØ�5Ý�ŠÐ8¸$¼)ÑDÔDÐDÝ�$”)˜TÑ"Ô"ð 	- bØ�MŠM˜$Ô+Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-àˆts   ÁBÂB
ÂB
r¸   )	r¹   rº   r»   ro   r“   r0   rÜ   r¶   r´   r\   r(   r&   rÓ   rÓ   E  s‡   € € € € € ð8 ð 8¨ð 8ð 8ð 8ð 8ð
 ˜ð   ð  ð  ð  ð  ð!ð !ð !ð !ð6˜$ð ð ð ð ð ð r(   rÓ   )6r4   r"   rÉ   rþ   Úimportlib.utilr   Útypingr   r   r   r   r   r	   r
   r   r   Úpip._internal.exceptionsr   r   Úpip._internal.locationsr   r   Úpip._internal.metadatar   Úpip._internal.utils.compatr   Úpip._internal.utils.egg_linkr   Úpip._internal.utils.loggingr   r   Úpip._internal.utils.miscr   r   r   r   Úpip._internal.utils.temp_dirr   r   Úpip._internal.utils.virtualenvr   r¹   r®   ro   r¶   r'   r6   rG   rY   r}   r‹   r�   r¿   rÓ   r\   r(   r&   ú<module>rF     sN  ðØ Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wà SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø .Ð .Ð .Ð .Ð .Ð .Ø DÐ DÐ DÐ DÐ DÐ DØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ CÐ CÐ CÐ CÐ CÐ Cà	ˆ�8Ñ	Ô	€ð&Øð&Ø"ð&Ø,0ð&àˆs�D˜$ˆÔð&ð &ð &ð &ð&Ø��i  T¨4 Ô0Ð0Ô1ðàˆc�9˜S $¨˜_Ô-Ð-Ô.ðð ð ð ð 	ðÐ/ð °I¸cÀ4È¸oÔ4Nð ð ð ñ 	„ððB�8˜C”=ð  S¨¤Xð ð ð ð ð&A˜x¨œ}ð A°°S´ð Að Að Að AðD." x°¤}ð ."¸¸sÀ3¼xÈÈSÌÐ?QÔ9Rð ."ð ."ð ."ð ."ðbf!ð f!ð f!ð f!ð f!ñ f!ô f!ð f!ðR[ð [ð [ð [ð [ñ [ô [ð [ð|7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7r(   