+
    <j^                        ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHtHtH	t	H
t
HtHtHtHtHt ^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IH t H!t!H"t"H#t# ^ RI$H%t%H&t& ^ RI'H(t( ]! ])4      t*R R lt+R R lt,],R R l4       t-R R lt.R R lt/R R lt0 ! R R4      t1 ! R R4      t2 ! R R4      t3R# )    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_virtualenvc                d    V ^8  d   QhR\         R\         R\        R\        \         RR3,          /# )   bin_dirscript_nameis_guireturnN)strboolr   )formats   "T/opt/headortail/venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py__annotate__r(      s7     & &&"&,0&sD$&    c              #     "   \         P                  P                  W4      pVx  \        '       g   R# V R2x  V R2x  V'       d
   V R2x  R# V R2x  R# 5i)zCreate 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   &&& r'   _script_namesr/      s]      ww||G1H
N7Jd
Jm
$$
+&&
*%%s   AA
Ac          	          V ^8  d   QhR\         R\        \        RR3,          3,          R\         R\        \        RR3,          3,          /# )r   fn.Nr#   )r   r   r   )r&   s   "r'   r(   r(   (   sF      iT4001c9S$_--.r)   c                 L   a  \         P                  ! S 4      R  V 3R ll4       pV# )c          	      X    V ^8  d   QhR\         R\         R\        \         RR3,          /# )r   argskwr#   N)r   r   )r&   s   "r'   r(   _unique.<locals>.__annotate__,   s,      c  3d?)C r)   c               ?   |   <"   \        4       pS! V / VB  F   pW29  g   K  VP                  V4       Vx  K"  	  R # 5iN)setadd)r4   r5   seenitemr1   s   *,  r'   unique_unique.<locals>.unique+   s5     OOD
 $s   <<)	functoolswraps)r1   r=   s   f r'   _uniquerA   (   s'     __R  Mr)   c                L    V ^8  d   QhR\         R\        \        RR3,          /# r   distr#   N)r   r   r$   )r&   s   "r'   r(   r(   7   s&      / Ic4o4N r)   c              #    "   V P                   pVf   Q R4       hV P                  4       pVf   \        V R7      hV F  p\        P                  P                  W4      pVx  VP                  R4      '       g   K?  \        P                  P                  V4      w  rVVRR p\        P                  P                  WWR,           4      pVx  \        P                  P                  WWR,           4      pVx  K  	  R# 5i)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)rD   rL   entriesentryr,   dnr1   bases   &       r'   uninstallation_pathsrT   6   s      }}H00((*G$$77ww||H,
==WW]]4(FBcr7D77<<6M2DJ77<<6M2DJ s   A4C;;B C;c                \    V ^8  d   QhR\         \        ,          R\        \        ,          /# r   pathsr#   r   r$   r   )r&   s   "r'   r(   r(   X   s"      8C= SX r)   c                0  aa \         P                  P                  o\        4       p\	        V \
        R7       FZ  o\        ;QJ d     VV3R lV 4       F  '       g   K   RM	  RM! VV3R lV 4       4      pV'       d   KI  VP                  S4       K\  	  V# )zCompact 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      <"   T F`  pSP                  VP                  R 4      4      ;'       d4    S\        VP                  R 4      P                  S4      4      ,          S8H  x  Kb  	  R# 5i)*N)
startswithrstriplen).0	shortpathr,   seps   & r'   	<genexpr>compact.<locals>.<genexpr>a   sh      
 )	 OOI,,S12 D DS))#.55c:;<CD(s
   +A+<A+TF)r+   r,   rc   r9   sortedr`   anyr:   )rW   short_pathsshould_skipr,   rc   s   &  @@r'   compactrj   X   su     ''++CEKu#&c 
 )
ccc 
 )
 

 {OOD! ' r)   c                \    V ^8  d   QhR\         \        ,          R\        \        ,          /# rV   rX   )r&   s   "r'   r(   r(   k   s&     A Ax} AS Ar)   c                  a
aa V  Uu/ uF#  p\         P                  P                  V4      VbK%  	  pp\        V4      p\	        VP                  4        Uu0 uF)  p\         P                  P                  V4      ^ ,          kK+  	  up\        R7      p\        4       pR R loV F  o\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   KE  \        4       p\        4       p\         P                  ! S4       F@  w  o
rVP                  V
VV3R lV 4       4       VP                  V
VV3R lV	 4       4       KB  	  Wc,
          '       d   K  VP                  V4       VP                  S\         P                  ,           4       K  	  \        \        VP                  V4      4      V,          # u upi u upi )	zReturns 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.
rZ   c                0    V ^8  d   QhR\         R\         /# )r   ar#   r$   )r&   s   "r'   r(   )compress_for_rename.<locals>.__annotate__v   s     2 2c 2c 2r)   c                  x    \         P                  P                  \         P                  P                  ! V !  4      # r8   )r+   r,   normcaser-   )rn   s   *r'   	norm_join&compress_for_rename.<locals>.norm_joinv   s$    wwa 011r)   c              3      <"   T F3  p\         P                  P                  S4      P                  V4      x  K5  	  R # 5ir8   )r+   r,   rr   r^   )ra   wroots   & r'   rd   &compress_for_rename.<locals>.<genexpr>z   s.     GYrww%0033Ys   ;>TFc              3   8   <"   T F  pS! SSV4      x  K  	  R # 5ir8    )ra   ddirnamers   rw   s   & r'   rd   rx      s     LGqyw::G   c              3   8   <"   T F  pS! SSV4      x  K  	  R # 5ir8   rz   )ra   fr|   rs   rw   s   & r'   rd   rx      s     H%QYtWa88%r}   )r+   r,   rr   r9   rf   valuesrO   r`   rg   walkupdatedifference_updater:   rc   map__getitem__)rW   pcase_map	remaining	unchecked	wildcards	all_filesall_subdirssubdirsfilesr|   rs   rw   s   &         @@@r'   compress_for_renamer   k   sL    1661  #Q&H6HIX__5FG5Fa(++5FGSQI%I2 3GYG333GYGGG!e	 #')wwt}#GWLGLLH%HH (5 %%''	2MM$-( " s8''34y@@3 7Gs   )G/Gc                    V ^8  d   QhR\         \        ,          R\        \        \        ,          \        \        ,          3,          /# rV   )r   r$   r   r   )r&   s   "r'   r(   r(      s0     ." ."x} ."s3xS?Q9R ."r)   c                   \        V 4      p\        4       p\        4       p\        4       pV Fy  pVP                  R4      '       d   K  VP                  R4      '       g   RV9   d/   VP                  \        P                  P                  V4      4       VP                  V4       K{  	  \        \        \        P                  P                  V4      4      p\        V4      pV F  p\        P                  ! V4       F  w  rp
V
 F  pVP                  R4      '       d   K  \        P                  P                  W4      p\        P                  P                  V4      '       g   Kb  \        P                  P                  V4      V9  g   K  VP                  V4       K  	  K  	  K  	  YC Uu0 uF#  p\        P                  P                  VR4      kK%  	  up,          pW3# u upi )a[  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.
rI   z__init__.pyz
.dist-infor]   )r9   rN   r:   r+   r,   r|   r   rr   rj   r   r-   isfile)rW   will_remove	will_skipfoldersr   r,   _normcased_filesfolderdirpath_dirfilesfnamefile_s   &            r'   compress_for_output_listingr      se    e*KI eGEE==  ==''<4+?KK-.		$  3rww//78gG $&GGFO G!>>&))W4GGNN5))((/7GG MM%( " %4  7K7277<<47KKK!! Ls   -)G"c                      a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
]V 3R lR l4       tRtV tR# )StashedUninstallPathSetzSA set of file rename operations to stash files while
tentatively uninstalling them.c                   < V ^8  d   QhRR/# r   r#   Nrz   )r&   __classdict__s   "r'   r(   $StashedUninstallPathSet.__annotate__   s     0 0$ 0r)   c                "    / V n         . V n        R # r8   )
_save_dirs_movesselfs   &r'   __init__ StashedUninstallPathSet.__init__   s     57 .0r)   c                &   < V ^8  d   QhRS[ RS[ /# r   r,   r#   ro   )r&   r   s   "r'   r(   r      s        r)   c                     \        V4      pW P                  \        P
                  P                  V4      &   VP
                  #   \         d    \        RR7      p LPi ; i)zStashes 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,   rr   )r   r,   save_dirs   && r'   _get_directory_stash,StashedUninstallPathSet._get_directory_stash   sS    	7&;D&AH 3;((./}}	  	7$+6H	7s   A AAc                &   < V ^8  d   QhRS[ RS[ /# r   ro   )r&   r   s   "r'   r(   r      s      C C r)   c                   \         P                  P                  V4      p\         P                  P                  V4      Rr2RpW#8w  d    V P                  V,          pM9\         P                  P                  V4      p\        RR7      pW@P                  V&   \         P                  P                  W4      pV'       dJ   V\         P                  P                  8w  d+   \         P                  P                  VP                  V4      # VP                  #   \
         d     Mi ; i\         P                  P                  T4      Tr2EK  )zrStashes 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,   rr   r|   r   KeyErrorr   relpathcurdirr-   )r   r,   headold_headr   r   s   &&    r'   _get_file_stash'StashedUninstallPathSet._get_file_stash   s    
 ww%.h??40 77??4(D$+6H$,OOD!''//$-w"''..077<<w77}}  WW__T2D(s   	D D D c                &   < V ^8  d   QhRS[ RS[ /# r   ro   )r&   r   s   "r'   r(   r      s      # # r)   c                   \         P                  P                  V4      ;'       d%    \         P                  P                  V4      '       * pV'       d   V P	                  V4      pMV P                  V4      pV P                  P                  W34       V'       d<   \         P                  P                  V4      '       d   \         P                  ! V4       \        W4       V# )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'   stashStashedUninstallPathSet.stash   s     ggmmD)FF"''..2F.F006H++D1HD+,277==22 HHXr)   c                   < V ^8  d   QhRR/# r   rz   )r&   r   s   "r'   r(   r     s       r)   c                    V P                   P                  4        F  pVP                  4        K  	  . V n        / V n         R# )z0Commits the uninstall by removing stashed files.N)r   r   cleanupr   )r   r   s   & r'   commitStashedUninstallPathSet.commit  s3    ..0H 1r)   c                   < V ^8  d   QhRR/# r   rz   )r&   r   s   "r'   r(   r     s      $ r)   c                   V P                    F  p\        P                  ! R.VO5!   K  	  V P                    F  w  r# \        P                  RW#4       \        P
                  P                  V4      '       g&   \        P
                  P                  V4      '       d   \        P                  ! V4       M0\        P
                  P                  V4      '       d   \        V4       \        W24       K  	  V P                  4        R#   \         d9   p\        P                  RT4       \        P                  RT4        Rp?EK  Rp?ii ; i)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'   rollback StashedUninstallPathSet.rollback  s    AKK0515  #kkNH	23XD77>>(++rww~~h/G/GIIh'WW]]8,,8$' * 		  23X>_b112s$   AD;DDE	,EE	c                    < V ^8  d   QhRS[ /# r   r#   r%   )r&   r   s   "r'   r(   r   #  s     ! !d !r)   c                ,    \        V P                  4      # r8   )r%   r   r   s   &r'   can_rollback$StashedUninstallPathSet.can_rollback"  s    DKK  r)   )r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   r   r   propertyr   __static_attributes____classdictcell__r   s   @r'   r   r      sZ     &0 0  6 *  & ! !r)   r   c                      a  ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltRV 3R lR llt	V 3R lR lt
V 3R lR ltV 3R lR lt]V 3R lR l4       tRtV tR# )UninstallPathSeti'  zIA set of file paths to be removed in the uninstallation of a
requirement.c                $   < V ^8  d   QhRS[ RR/# rC   r   )r&   r   s   "r'   r(   UninstallPathSet.__annotate__+  s      	J 	J- 	J$ 	Jr)   c                    \        4       V n        \        4       V n        / V n        Wn        \        4       V n        \        P                  ! \        4      V n
        R # r8   )r9   _paths_refuse_pth_distr   _moved_pathsr?   	lru_cacher   _normalize_path_cached)r   rD   s   &&r'   r   UninstallPathSet.__init__+  s@     #!$46	
35 '0&9&9.&I#r)   c                &   < V ^8  d   QhRS[ RS[/# r   )r$   r%   )r&   r   s   "r'   r(   r   6  s     	H 	Hs 	Ht 	Hr)   c                    \        4       '       g   R# VP                  V P                  \        P                  4      4      # )z[
Return True if the given path is one we are permitted to
remove/modify, False otherwise.

T)r   r^   r   sysprefix)r   r,   s   &&r'   
_permittedUninstallPathSet._permitted6  s.     ())t::3::FGGr)   c                $   < V ^8  d   QhRS[ RR/# )r   r,   r#   Nro   )r&   r   s   "r'   r(   r   A  s     . . . .r)   c                X   \         P                  P                  V4      w  r#\         P                  P                  V P	                  V4      \         P                  P                  V4      4      p\         P                  P                  V4      '       g   R # V P                  V4      '       d   V P                  P                  V4       MV P                  P                  V4       \         P                  P                  V4      ^,          R8X  d   V P                  \        V4      4       R # R # )NrH   )r+   r,   rO   r-   r   rr   existsr   r   r:   r   splitextr   )r   r,   r   tails   &&  r'   r:   UninstallPathSet.addA  s    WW]]4(
 ww||D77=rww?O?OPT?UVww~~d##??4  KKOOD!LLT" 77D!!$-HH&t,- .r)   c                *   < V ^8  d   QhRS[ RS[ RR/# )r   pth_filerQ   r#   Nro   )r&   r   s   "r'   r(   r   T  s"     ' ' 'C 'D 'r)   c                $   V P                  V4      pV P                  V4      '       dM   WP                  9  d   \        V4      V P                  V&   V P                  V,          P	                  V4       R # V P
                  P	                  V4       R # r8   )r   r   r   UninstallPthEntriesr:   r   )r   r   rQ   s   &&&r'   add_pthUninstallPathSet.add_pthT  sg    ..x8??8$$yy(&9(&C		(#IIh##E*LLX&r)   c                *   < V ^8  d   QhRS[ RS[ RR/# )r   auto_confirmverboser#   Nr   )r&   r   s   "r'   r(   r   ]  s'     N N4 N$ N4 Nr)   c                   V P                   '       g-   \        P                  RV P                  P                  4       R# V P                  P                   RV P                  P
                   2p\        P                  RV4       \        4       ;_uu_ 4        V'       g   V P                  V4      '       d   V P                  p\        V P                   4      p\        \        V4      4       F*  pVP                  V4       \        P                  RV4       K,  	  V P                  P                  4        F  pVP!                  4        K  	  \        P                  RV4       RRR4       R#   + '       g   i     R# ; i)zTRemove 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   rf   rj   r   r  r   r   remove)r   r  r  dist_name_versionmoved
for_renamer,   pths   &&&     r'   r  UninstallPathSet.remove]  s    {{{KKI

## #zz2231TZZ5K5K4LM&(9:\\t77@@))0=
"7:#67DKK%NN#BDI 8  99++-CJJL . 9;LM \\\s   E*6B*E**E;	c                &   < V ^8  d   QhRS[ RS[ /# )r   r  r#   r   )r&   r   s   "r'   r(   r   z  s     = =4 =D =r)   c                <   R R lpV'       g   \        V P                  4      w  r4M\        V P                  4      p\        4       pV! RV4       V! RV4       V! RV P                  4       V'       d   V! R\	        V P                  4      4       \        RR	4      R8g  # )
z@Display which files would be deleted and prompt for confirmationc                J    V ^8  d   QhR\         R\        \         ,          RR/# )r   msgrW   r#   N)r$   r   )r&   s   "r'   r(   :UninstallPathSet._allowed_to_proceed.<locals>.__annotate__}  s%     	& 	&# 	&hsm 	& 	&r)   c                    V'       g   R # \         P                  V 4       \        4       ;_uu_ 4        \        \	        V4      4       F  p\         P                  V4       K  	  R R R 4       R #   + '       g   i     R # ; ir8   )r   r   r   rf   rj   )r  rW   r,   s   && r'   _display6UninstallPathSet._allowed_to_proceed.<locals>._display}  sF    KK"75>2DKK% 3 s   1A--A>	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)? n)yr   )r   r   r9   r   r   r   )r   r  r  r   r   s   &&   r'   r  $UninstallPathSet._allowed_to_proceedz  s    	& %@%M"K dkk*KI+.>	J8$,,G*,?,LM$n5<<r)   c                   < V ^8  d   QhRR/# r   rz   )r&   r   s   "r'   r(   r     s      $ r)   c                   V P                   P                  '       g-   \        P                  RV P                  P
                  4       R# \        P                  RV P                  P
                  4       V P                   P                  4        V P                  P                  4        F  pVP                  4        K  	  R# )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   r   )r   r  s   & r'   r   UninstallPathSet.rollback  s      ---LL9

## 2DJJ4G4GH""$99##%CLLN &r)   c                   < V ^8  d   QhRR/# r   rz   )r&   r   s   "r'   r(   r     s     # # #r)   c                :    V P                   P                  4        R# )z?Remove temporary save dir: rollback will no longer be possible.N)r   r   r   s   &r'   r   UninstallPathSet.commit  s      "r)   c                $   < V ^8  d   QhRS[ RR/# )r   rD   r#   r   r   )r&   r   s   "r'   r(   r     s!     Z Z- Z2D Zr)   c           
     h   VP                   pVP                  pVf)   \        P                  RVP                  4       V ! V4      # \        V4      pVP                  '       g9   \        P                  RVP                  V\        P                  4       V ! V4      # T\        P                  ! R4      \        P                  ! R4      0 Uu0 uF  pV'       g   K  VkK  	  up9   d*   \        P                  RVP                  V4       V ! V4      # V ! V4      p\        VP                  4      pVP                  ;'       dW    VR J;'       dK    \        P                  P!                  V4      ;'       d$    VP#                  VP$                   R24      '       * pV'       EdT   Ve   VP'                  V4       VP)                  4       p	V	e:   V	 F1  p
VP'                  \        P                  P+                  W*4      4       K3  	  EMVP-                  R4      '       d    VP/                  R4      pVP1                  R	R
7      pVP/                  R4      P1                  4        Uu. uF  pV'       g   K  W\9  g   K  VNK  	  up Fo  p\        P                  P+                  W-4      pVP'                  V4       VP'                  V R24       VP'                  V R24       VP'                  V R24       Kq  	  EM#VP4                  '       d   \7        VR7      hVP8                  '       d   VP'                  V4       \        P                  P;                  V4      ^,          p\        P                  P+                  \        P                  P=                  V4      R4      pVP?                  VRV,           4       EMdVP@                  '       d&   \C        V4       F  pVP'                  V4       K  	  EM-V'       Ed   \E        V4      ;_uu_ 4       p\        P                  PG                  VPI                  4       PK                  4       4      pVPM                  V4      pR R R 4       \        P                  PO                  XV4      '       g   Q RV RX RVP                   RV R2	4       hVP'                  V4       \        P                  P+                  \        P                  P=                  V4      R4      pVP?                  VV4       M\        PQ                  RVV4       VPR                  '       d   \U        4       pM
\W        4       p VPY                  4        Fr  pVP'                  \        P                  P+                  VV4      4       \Z        '       g   K@  VP'                  \        P                  P+                  VV R24      4       Kt  	  R R lpV! VV4       F  pVP'                  V4       K  	  V# u upi   \2         d    . p ELi ; iu upi   + '       g   i     EL; i  \2        \\        3 d     Lni ; i)Nz-Not uninstalling %s since it is not installedz1Not uninstalling %s at %s, outside environment %sstdlib
platstdlibz<Not uninstalling %s at %s, as it is in the standard library.z	.egg-infoztop_level.txtznamespace_packages.txtF)keependsrH   rI   rJ   rF   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.batc          	      X    V ^8  d   QhR\         R\        R\        \        RR3,          /# )r   rD   r    r#   N)r   r$   r   )r&   s   "r'   r(   0UninstallPathSet.from_dist.<locals>.__annotate__5  s6     	N 	N"	N	N sD$'	Nr)   c              3     "   V P                  4        Fe  pVP                  R 8X  d!   \        WP                  R4       Rj  xL
  K4  VP                  R8X  g   KG  \        WP                  R4       Rj  xL
  Kg  	  R#  L= L5i)console_scriptsFNgui_scriptsT)iter_entry_pointsgroupr/   name)rD   r    entry_points   && r'   iter_scripts_to_remove:UninstallPathSet.from_dist.<locals>.iter_scripts_to_remove5  si       $557$$(99,W6F6FNNN &&-7,W6F6FMMM	  8NMs)   >B A>BB3B 4B B)/rL   info_locationr   r   canonical_namer   localr   r   	sysconfigget_pathr   r
  "installed_with_setuptools_egg_infor+   r,   r   rN   setuptools_filenamer:   rM   r-   is_file	read_text
splitlinesFileNotFoundErrorinstalled_by_distutilsr   installed_as_eggrO   r|   r  installed_with_dist_inforT   openrr   readlinestripr   samefiler   in_usersiter   r   iter_distutils_script_namesr   NotADirectoryError)clsrD   dist_locationr6  normalized_dist_locationr   paths_to_removedevelop_egg_linksetuptools_flat_installationinstalled_filesinstalled_filenamespace_packages
namespacestop_level_pkgr,   easy_install_eggeasy_install_pthfhlink_pointernormalized_link_pointerr    scriptr4  ss   &&                      r'   	from_distUninstallPathSet.from_dist  sd   ** KK?## t9#1-#@ zzzKKC##(

	 t9#((2I4F4F|4TU(
U AU(
 

 KKN##(
 t9d)6t}}E 33 S ST)S S}-S S
 "**d.F.F-Gy+QRR 	% ('(##M2"88:O*&5N#''](ST '6
 o..O)-8P)Q& "4!>!>!>!NJ "^^O<GGI&I 0 AI&M
 77<<ED#''-#''4&5#''4&6#''4&6& ((((d;;"""  89!ww}}-EFqI!ww|| 89"  ##$4d=M6MN***,T2##D) 3  &''2!ww//0C0C0EF*9*P*P +' (
 77##')A   ,-U<. A))-u]O1N   01!ww|| 013E  ##$4mD LL; "nG$&G	::<##BGGLL&$AB7#''Wo(NO =	N (g6A" 7 M(
T ) $!#J$&H (''F "#56 		sV   	
W+W+W0 
X+X3XAX	<AX 6X 0X X	X	X10X1)r   r   r   r   r   r   N)FF)r   r   r   r   r   r   r   r:   r  r  r  r   r   classmethodr]  r   r   r   s   @r'   r   r   '  sv     	J 	J	H 	H. .&' 'N N:= =8 # # Z Zr)   r   c                   h   a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltR
tV t	R# )r  iE  c                $   < V ^8  d   QhRS[ RR/# )r   r   r#   Nro   )r&   r   s   "r'   r(    UninstallPthEntries.__annotate__F  s     8 8 8 8r)   c                >    Wn         \        4       V n        R V n        R # r8   )filer9   rP   _saved_lines)r   r   s   &&r'   r   UninstallPthEntries.__init__F  s    	!$37r)   c                $   < V ^8  d   QhRS[ RR/# )r   rQ   r#   Nro   )r&   r   s   "r'   r(   rb  K  s            r)   c                   \         P                  P                  V4      p\        '       d?   \         P                  P	                  V4      ^ ,          '       g   VP                  RR4      pV P                  P                  V4       R# )r   \/N)r+   r,   rr   r   
splitdrivereplacerP   r:   )r   rQ   s   &&r'   r:   UninstallPthEntries.addK  sX      ' 7277--e4Q77MM$,Er)   c                   < V ^8  d   QhRR/# r   rz   )r&   r   s   "r'   r(   rb  Z  s     ! ! !r)   c                   \         P                  R V P                  4       \        P                  P                  V P                  4      '       g#   \         P                  RV P                  4       R# \        V P                  R4      ;_uu_ 4       pVP                  4       pW n	        RRR4       \        ;QJ d    R X 4       F  '       g   K   RM	  RM! R X 4       4      '       d   RpMRpV'       dP   VR,          P                  VP                  R	4      4      '       g#   VR,          VP                  R	4      ,           VR&   V P                   F@  p \         P                  R
V4       VP                  WC,           P                  R	4      4       KB  	  \        V P                  R4      ;_uu_ 4       pVP!                  V4       RRR4       R#   + '       g   i     EL1; i  \         d     K  i ; i  + '       g   i     R# ; i)zRemoving pth entries from %s:z.Cannot remove entries from nonexistent file %sNrbc              3   ,   "   T F
  pR V9   x  K  	  R# 5i)s   
Nrz   )ra   lines   & r'   rd   -UninstallPthEntries.remove.<locals>.<genexpr>e  s     154w$5s   TFz

zutf-8zRemoving entry: %swb)r   r  rd  r+   r,   r   warningrD  	readlinesre  rg   rN   encoderP   r  
ValueError
writelines)r   rX  linesendlinerQ   s   &    r'   r  UninstallPthEntries.removeZ  sb   6		B ww~~dii((NNKTYYW$))T""bLLNE % # 315133315111GGr++GNN7,CDDb	GNN7$;;E"I\\E3U;eo55g>? " $))T""bMM%  #"# #""  """s*   G<G#3G5G 	#G21G25H	c                    < V ^8  d   QhRS[ /# r   r   )r&   r   s   "r'   r(   rb  u  s      $ r)   c                R   V P                   f#   \        P                  RV P                  4       R# \        P	                  RV P                  4       \        V P                  R4      ;_uu_ 4       pVP                  V P                   4       R R R 4       R#   + '       g   i     R# ; i)Nz.Cannot roll back changes to %s, none were madeFz!Rolling %s back to previous stateru  T)re  r   r   rd  r   rD  r{  )r   rX  s   & r'   r   UninstallPthEntries.rollbacku  sp    $LLI499U8$))D$))T""bMM$++, # #"s   /BB&	)re  rP   rd  N)
r   r   r   r   r   r:   r  r   r   r   r   s   @r'   r  r  E  s-     8 8
   ! !6 r)   r  )4r?   r+   r   r9  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   r/   rA   rT   rj   r   r   r   r   r  rz   r)   r'   <module>r     s     	 
  , W W W S @ 3 . D = I I M C	8	&& 	 	B&AD."bf! f!R[ [|7 7r)   