§
    
Á³gí]  ã                   ó‚  — 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 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"m#Z# d dl$m%Z%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„Z.dee)         dee)         fd„Z/dee)         deee)         ee)         f         fd„Z0 G d„ d¦  «        Z1 G d„ d¦  «        Z2 G d„ d¦  «        Z3dS ) é    N)Úcache_from_source)	ÚAnyÚCallableÚDictÚ	GeneratorÚIterableÚListÚOptionalÚSetÚTuple)ÚUninstallationError)Úget_bin_prefixÚget_bin_user)ÚBaseDistribution)ÚWINDOWS)Úegg_link_path_from_location)Ú	getLoggerÚ
indent_log)ÚaskÚis_localÚnormalize_pathÚrenamesÚrmtree)ÚAdjacentTempDirectoryÚTempDirectoryÚ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       ú]/var/www/html/mpstechhub/venv/lib/python3.11/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*   sY   øè è € å™œˆØ�B˜�O �O�Oð 	ð 	ˆDØ˜4ÐÐØ—’˜‘”�Ø�
�
�
øð	ð 	r'   )Ú	functoolsÚwrapsr   r   )r(   r2   s   ` r%   Ú_uniquer5   '   s_   ø€ õ „_�RÑÔð•cð ¥ð ­µ3¸¸d°?Ô)Cð ð ð ð ð ñ Ôðð €Mr'   Údistc              #   óÖ  K  — | j         }|€
J d¦   «         ‚|                      ¦   «         }|€…d                     | ¬¦  «        }| j        }|r|dk    r9d                     | j        | j        ¦  «        }|d                     |¦  «        z  }n|d                     |¦  «        z  }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 UninstallationError,
    with possible information from the INSTALLER file.

    https://packaging.python.org/specifications/recording-installed-packages/
    Nznot installedz/Cannot uninstall {dist}, RECORD file not found.)r6   Úpipz{}=={}zZ You might be able to recover from this via: 'pip install --force-reinstall --no-deps {}'.z' Hint: The package was installed by {}.ú.pyéýÿÿÿú.pycú.pyo)ÚlocationÚiter_declared_entriesÚformatÚ	installerÚraw_nameÚversionr   r!   r"   r#   ÚendswithÚsplit)r6   r=   ÚentriesÚmsgr@   ÚdepÚentryr"   Údnr(   Úbases              r%   Úuninstallation_pathsrK   5   sz  è è € ð Œ}€HØÐÐ ÑÔÐà×(Ò(Ñ*Ô*€GØ€Ø?×FÒFÈDÐFÑQÔQˆØ”Nˆ	Øð 	O˜I¨Ò.Ð.Ø—/’/ $¤-°´Ñ>Ô>ˆCØð@ß@FÂÀsÁÄñˆCˆCð
 Ð<×CÒCÀIÑNÔNÑNˆCÝ! #Ñ&Ô&Ð&àð 	ð 	ˆÝŒ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>j   sŠ   øè è € ð 
ð 
ð ð �OŠO˜I×,Ò,¨SÑ1Ô1Ñ2Ô2ð DØ•S˜×)Ò)¨#Ñ.Ô.×5Ò5°cÑ:Ô:Ñ;Ô;Ô<ÀÒCð
ð 
ð 
ð 
ð 
ð 
r'   )r!   r"   rW   r.   ÚsortedrT   Úanyr/   )rL   Úshort_pathsÚshould_skipr"   rW   s      @@r%   Úcompactr]   a   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©rU   Úps     r%   ú
<dictcomp>z'compress_for_rename.<locals>.<dictcomp>z   s*   € Ð6Ð6Ð6¨1•”× Ò  Ñ#Ô# QÐ6Ð6Ð6r'   c                 óX   — h | ]'}t           j                             |¦  «        d          ’Œ(S )r   )r!   r"   rD   rb   s     r%   ú	<setcomp>z&compress_for_rename.<locals>.<setcomp>|   s+   € ÐGÐGÐG°�œŸš aÑ(Ô(¨Ô+ÐGÐGÐGr'   rN   Úar   c                  ób   — t           j                             t          j        j        | Ž ¦  «        S r-   )r!   r"   ra   r#   )rg   s    r%   Ú	norm_joinz&compress_for_rename.<locals>.norm_join   s!   € ÝŒw×Ò¥¤¤¨aÐ 0Ñ1Ô1Ð1r'   c              3   ó|   •K  — | ]6}t           j                             ‰¦  «                             |¦  «        V — Œ7d S r-   )r!   r"   ra   rR   )rU   ÚwÚroots     €r%   rX   z&compress_for_rename.<locals>.<genexpr>ƒ   sA   øè è € ÐGÐG¸�rŒw×Ò Ñ%Ô%×0Ò0°Ñ3Ô3ÐGÐGÐGÐGÐGÐGr'   c              3   ó2   •K  — | ]} ‰‰‰|¦  «        V — Œd S r-   r`   )rU   ÚdÚdirnameri   rl   s     €€€r%   rX   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`   )rU   Úfro   ri   rl   s     €€€r%   rX   z&compress_for_rename.<locals>.<genexpr>‹   s1   øè è € ÐHÐH¸Q˜Y˜Y t¨W°aÑ8Ô8ÐHÐHÐHÐHÐHÐHr'   )r.   rY   ÚvaluesrT   ÚstrrZ   r!   ÚwalkÚupdateÚdifference_updater/   rW   ÚmapÚ__getitem__)rL   Úcase_mapÚ	remainingÚ	uncheckedÚ	wildcardsÚ	all_filesÚall_subdirsÚsubdirsÚfilesro   ri   rl   s            @@@r%   Úcompress_for_renamer�   t   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 )rQ   )r!   r"   r#   )rU   Úfolders     r%   rf   z.compress_for_output_listing.<locals>.<setcomp>Ã   s(   € ÐKÐKÐK¸�2œ7Ÿ<š<¨°Ñ4Ô4ÐKÐKÐKr'   )r.   rC   r/   r!   r"   ro   rw   ra   r]   rt   r#   Úisfile)rL   Ú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Ð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"   ra   )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"   ra   ro   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Ð0Ý”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“   ÚitemsÚcleanupr”   )r–   r‹   r�   s      r%   ÚcommitzStashedUninstallPathSet.commit  sJ   € àœ?×0Ò0Ñ2Ô2ð 	ð 	‰KˆAˆxØ×ÒÑÔÐÐØˆŒØˆŒˆˆ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–   rc   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—   rs   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.r6   r   Nc                 ó”   — t          ¦   «         | _        t          ¦   «         | _        i | _        || _        t          ¦   «         | _        d S r-   )r.   Ú_pathsÚ_refuseÚ_pthÚ_distr‘   Ú_moved_paths)r–   r6   s     r%   r—   zUninstallPathSet.__init__5  s:   € Ý #¡¤ˆŒÝ!$¡¤ˆŒØ46ˆŒ	ØˆŒ
Ý3Ñ5Ô5ˆÔÐÐr'   r"   c                 ó    — t          |¦  «        S )zs
        Return True if the given path is one we are permitted to
        remove/modify, False otherwise.

        )r   )r–   r"   s     r%   Ú
_permittedzUninstallPathSet._permitted<  s   € õ ˜‰~Œ~Ðr'   c                 óN  — t           j                             |¦  «        \  }}t           j                             t	          |¦  «        t           j                             |¦  «        ¦  «        }t           j                             |¦  «        sd S |                      |¦  «        r| j         	                    |¦  «         n| j
         	                    |¦  «         t           j                             |¦  «        d         dk    r$|  	                    t          |¦  «        ¦  «         d S d S )Né   r9   )r!   r"   rD   r#   r   ra   ÚexistsrÌ   rÆ   r/   rÇ   Úsplitextr   )r–   r"   r£   Útails       r%   r/   zUninstallPathSet.addD  sï   € Ý”W—]’] 4Ñ(Ô(‰
ˆˆdõ Œw�|Š|�N¨4Ñ0Ô0µ"´'×2BÒ2BÀ4Ñ2HÔ2HÑIÔIˆåŒw�~Š~˜dÑ#Ô#ð 	ØˆFØ�?Š?˜4Ñ Ô ð 	#ØŒK�OŠO˜DÑ!Ô!Ð!Ð!àŒL×Ò˜TÑ"Ô"Ð"õ Œ7×Ò˜DÑ!Ô! !Ô$¨Ò-Ð-Ø�HŠHÕ& tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-ð .Ð-r'   Úpth_filerH   c                 ó  — t          |¦  «        }|                      |¦  «        rB|| j        vrt          |¦  «        | j        |<   | j        |                              |¦  «         d S | j                             |¦  «         d S r-   )r   rÌ   rÈ   ÚUninstallPthEntriesr/   rÇ   )r–   rÒ   rH   s      r%   Úadd_pthzUninstallPathSet.add_pthW  s�   € Ý! (Ñ+Ô+ˆØ�?Š?˜8Ñ$Ô$ð 	'Ø˜tœyÐ(Ð(Ý&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É   rA   rB   r   Ú_allowed_to_proceedrÊ   r�   rY   r]   r­   r×   rÈ   rr   Úremove)r–   rÖ   r×   Údist_name_versionÚmovedÚ
for_renamer"   Úpths           r%   rÛ   zUninstallPathSet.remove`  s¯  € ð Œ{ð 	Ý�KŠKØIØ”
Ô#ñô ð ð ˆFà#œzÔ2ÐIÐI°T´ZÔ5GÐIÐIÐÝ�ŠÐ&Ð(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 confirmationrF   rL   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   rY   r]   )rF   rL   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ä   )rs   r   r�   rÆ   r.   rÇ   r�   r   )r–   r×   râ   r†   r‡   s        r%   rÚ   z$UninstallPathSet._allowed_to_proceed}  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É   rA   r´   r¹   rÈ   rr   )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�¦  «         Œ€�n1|j        r't7          d                     |j        ¦  «        ¦  «        ‚|j        r’|                     |¦  «         t          j                             |¦  «        d         }t          j                             t          j                             |¦  «        d¦  «        }|                      |d|z   ¦  «         �nj|j!        r)tE          |¦  «        D ]}|                     |¦  «         Œ�n:|�rtG          |¦  «        5 }t          j         $                    | %                    ¦   «          &                    ¦   «         ¦  «        }t          |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j         '                    ||¦  «        sJ 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`   rb   s     r%   rf   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 | ]
}|r|‰v¯|‘ŒS r`   r`   )rU   rc   Ú
namespacess     €r%   ú
<listcomp>z.UninstallPathSet.from_dist.<locals>.<listcomp>í  s8   ø€ ð &ð &ð &àØð&ð  jÐ0Ð0ð à0Ð0Ð0r'   r9   r;   r<   z©Cannot uninstall {!r}. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.rÎ   zeasy-install.pthz./z	Egg-link z& does not match installed location of z (at ú)z)Not sure how to uninstall: %s - Check: %sz.batr6   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)r6   r   Úentry_points      r%   Úiter_scripts_to_removez:UninstallPathSet.from_dist.<locals>.iter_scripts_to_remove9  s    è è € ð  $×5Ò5Ñ7Ô7ð Nð N�ØÔ$Ð(9Ò9Ð9Ý,¨W°kÔ6FÈÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNØ Ô&¨-Ò7Ð7Ý,¨W°kÔ6FÈÑMÔMÐMÐMÐMÐMÐMÐMÐMøð	Nð Nr'   )2r=   Úinfo_locationr³   r´   Úcanonical_namer   ÚlocalÚsysÚprefixÚ	sysconfigÚget_pathr   rA   Ú"installed_with_setuptools_egg_infor!   r"   rÏ   rC   Úsetuptools_filenamer/   r>   r#   Úis_fileÚ	read_textÚ
splitlinesÚFileNotFoundErrorÚinstalled_by_distutilsr   r?   Úinstalled_as_eggrD   ro   rÕ   Úinstalled_with_dist_inforK   Úopenra   ÚreadlineÚstripÚsamefilerµ   Úin_usersiter   r   Úiter_distutils_script_namesr   ÚNotADirectoryErrorr   rs   r   )Úclsr6   Ú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ð 	%ð (ñ L	ØÐ(Ø×#Ò# MÑ2Ô2Ð2Ø"×8Ò8Ñ:Ô:ˆOØÐ*Ø&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ùàÔ(ð 0	Ý%ðFçFLÂfØ”MñGô Gñô ð ð Ô"ð '	ð ×Ò Ñ.Ô.Ð.Ý!œwŸ}š}¨]Ñ;Ô;¸AÔ>ÐÝ!œwŸ|š|Ý”—’ Ñ.Ô.Ø"ñ ô  Ðð ×#Ò#Ð$4°dÐ=MÑ6MÑNÔNÐNÑNàÔ*ð 	Ý,¨TÑ2Ô2ð *ð *�Ø×#Ò# DÑ)Ô)Ð)Ð)ñ*ð ñ 	õ Ð&Ñ'Ô'ð G¨2Ý!œw×/Ò/°·²±´×0CÒ0CÑ0EÔ0EÑFÔF�Ý*8¸Ñ*FÔ*FÐ'ðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ ”7×#Ò#Ø'Ð)Añô ð ð ð8˜Lð 8ð 8Ø”=ð8ð 8Ø'4ð8ð 8ð 8ñô ð ð ×ÒÐ 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ÏAP,Ð,P0Ð3P0ÔBV" Ö"V6Ö5V6)FFr½   )r¾   r¿   rÀ   rÁ   r   r—   rs   r»   rÌ   r/   rÕ   rÛ   rÚ   r¹   r±   Úclassmethodr!  r`   r'   r%   rÄ   rÄ   1  sf  € € € € € ðð ð6Ð-ð 6°$ð 6ð 6ð 6ð 6ð˜sð  tð ð ð ð ð.˜ð . ð .ð .ð .ð .ð&' ð '¨Cð '°Dð 'ð 'ð 'ð 'ðNð N 4ð N¸$ð NÈ4ð Nð Nð Nð Nð:=¨4ð =°Dð =ð =ð =ð =ð8ð ð ð ð#ð #ð #ð #ð ð[Ð-ð [Ð2Dð [ð [ð [ñ „[ð[ð [ð [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.   rE   Ú_saved_lines)r–   rÒ   s     r%   r—   zUninstallPthEntries.__init__J  s"   € ØˆŒ	Ý!$¡¤ˆŒØ37ˆÔÐÐr'   rH   c                 óü   — t           j                             |¦  «        }t          r;t           j                             |¦  «        d         s|                     dd¦  «        }| j                             |¦  «         d S )Nr   ú\ú/)r!   r"   ra   r   Ú
splitdriveÚreplacerE   r/   )r–   rH   s     r%   r/   zUninstallPthEntries.addO  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`   )rU   Úlines     r%   rX   z-UninstallPthEntries.remove.<locals>.<genexpr>i  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&  rZ   rC   ÚencoderE   rÛ   Ú
ValueErrorÚ
writelines)r–   r  ÚlinesÚendlinerH   s        r%   rÛ   zUninstallPthEntries.remove^  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.rollbacky  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À   rs   r—   r/   rÛ   r»   r¹   r`   r'   r%   rÔ   rÔ   I  s‡   € € € € € ð8 ð 8¨ð 8ð 8ð 8ð 8ð
 ˜ð   ð  ð  ð  ð  ð!ð !ð !ð !ð6˜$ð ð ð ð ð ð r'   rÔ   )4r3   r!   rü   rþ   Úimportlib.utilr   Útypingr   r   r   r   r   r	   r
   r   r   Úpip._internal.exceptionsr   Ú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   r   Úpip._internal.utils.temp_dirr   r   r¾   r³   rs   r»   r&   r5   rK   r]   r�   r�   r‘   rÄ   rÔ   r`   r'   r%   ú<module>rE     s<  ðØ Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wà 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø .Ð .Ð .Ð .Ð .Ð .Ø DÐ DÐ DÐ DÐ DÐ DØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà	ˆ�8Ñ	Ô	€ð&Øð&Ø"ð&Ø,0ð&àˆs�D˜$ˆÔð&ð &ð &ð &ð&Ø��i  T¨4 Ô0Ð0Ô1ðàˆc�9˜S $¨˜_Ô-Ð-Ô.ðð ð ð ð 	ð(Ð/ð (°I¸cÀ4È¸oÔ4Nð (ð (ð (ñ 	„ð(ðV�8˜C”=ð  S¨¤Xð ð ð ð ð&A˜x¨œ}ð A°°S´ð Að Að Að AðD/" x°¤}ð /"¸¸sÀ3¼xÈÈSÌÐ?QÔ9Rð /"ð /"ð /"ð /"ðdf!ð f!ð f!ð f!ð f!ñ f!ô f!ð f!ðRUð Uð Uð Uð Uñ Uô Uð Uðp7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7r'   