+
    i#^                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RI	H
t
 ^ RI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t. ! R R4      t/ ! R R4      t0 ! R R 4      t1R# )!    )annotationsN)	GeneratorIterable)cache_from_source)AnyCallable)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               (    V ^8  d   QhRRRRRRRR/# )   bin_dirstrscript_nameis_guiboolreturnGenerator[str, None, None] )formats   "e/Users/ahmad/.openclaw/workspace/venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py__annotate__r%      s,     & &&"&,0&&    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/# )r   fnz)Callable[..., Generator[Any, None, None]]r    r"   )r#   s   "r$   r%   r%   +   s      1.r&   c                L   a  \         P                  ! S 4      R  V 3R ll4       pV# )c               $    V ^8  d   QhRRRRRR/# )r   argsr   kwr    zGenerator[Any, None, None]r"   )r#   s   "r$   r%   _unique.<locals>.__annotate__/   s"      c  )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)r1   r2   seenitemr.   s   *,  r$   unique_unique.<locals>.unique.   s5     OOD
 $s   <<)	functoolswraps)r.   r:   s   f r$   _uniquer>   +   s'     __R  Mr&   c                    V ^8  d   QhRRRR/# )r   distr   r    r!   r"   )r#   s   "r$   r%   r%   :   s      / 4N 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)r@   rH   entriesentryr)   dnr.   bases   &       r$   uninstallation_pathsrP   9   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R/# r   pathsIterable[str]r    zset[str]r"   )r#   s   "r$   r%   r%   [   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>d   sh      
 )	 OOI,,S12 D DS))#.55c:;<CD(s
   +A+<A+TF)r(   r)   r_   r6   sortedr\   anyr7   )rS   short_pathsshould_skipr)   r_   s   &  @@r$   compactrf   [   su     ''++CEKu#&c 
 )
ccc 
 )
 

 {OOD! ' r&   c                    V ^8  d   QhRRRR/# rR   r"   )r#   s   "r$   r%   r%   n   s     A A} A 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.
rV   c                    V ^8  d   QhRRRR/# )r   ar   r    r"   )r#   s   "r$   r%   )compress_for_rename.<locals>.__annotate__y   s     2 2c 2c 2r&   c                 x    \         P                  P                  \         P                  P                  ! V !  4      # r5   )r(   r)   normcaser*   )rj   s   *r$   	norm_join&compress_for_rename.<locals>.norm_joiny   s$    wwa 011r&   c              3     <"   T F3  p\         P                  P                  S4      P                  V4      x  K5  	  R # 5ir5   )r(   r)   rm   rZ   )r]   wroots   & r$   r`   &compress_for_rename.<locals>.<genexpr>}   s.     GYrww%0033Ys   ;>TFc              3  8   <"   T F  pS! SSV4      x  K  	  R # 5ir5   r"   )r]   ddirnamern   rr   s   & r$   r`   rs      s     LGqyw::G   c              3  8   <"   T F  pS! SSV4      x  K  	  R # 5ir5   r"   )r]   frv   rn   rr   s   & r$   r`   rs      s     H%QYtWa88%rw   )r(   r)   rm   r6   rb   valuesrK   r\   rc   walkupdatedifference_updater7   r_   map__getitem__)rS   pcase_map	remaining	unchecked	wildcards	all_filesall_subdirssubdirsfilesrv   rn   rr   s   &         @@@r$   compress_for_renamer   n   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RR/# )r   rS   rT   r    ztuple[set[str], set[str]]r"   )r#   s   "r$   r%   r%      s     ." ."} ."9R ."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.
rE   z__init__.pyz
.dist-inforY   )r6   rJ   r7   r(   r)   rv   r~   rm   rf   r{   r*   isfile)rS   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                  x    ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
]R R l4       tR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    Noner"   )r#   s   "r$   r%   $StashedUninstallPathSet.__annotate__   s     0 0$ 0r&   c                	"    / V n         . V n        R # r5   )
_save_dirs_movesselfs   &r$   __init__ StashedUninstallPathSet.__init__   s     57 .0r&   c                    V ^8  d   QhRRRR/# r   r)   r   r    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)   rm   )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RRR/# r   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)   rm   rv   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RRR/# r   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   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   rz   cleanupr   )r   r   s   & r$   commitStashedUninstallPathSet.commit  s3    ..0H 1r&   c                   V ^8  d   QhRR/# r   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R/# r   r    r   r"   )r#   s   "r$   r%   r   &  s     ! !d !r&   c                	,    \        V P                  4      # r5   )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__r"   r&   r$   r   r      s9    &06*& ! !r&   r   c                      ] tR tRtRtR R ltR R ltR R ltR	 R
 ltRR R llt	R R lt
R R ltR R lt]R R l4       tRtR# )UninstallPathSeti*  zIA set of file paths to be removed in the uninstallation of a
requirement.c                    V ^8  d   QhRRRR/# )r   r@   r   r    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 # r5   )r6   _paths_refuse_pth_distr   _moved_pathsr<   	lru_cacher   _normalize_path_cached)r   r@   s   &&r$   r   UninstallPathSet.__init__.  s@     #!$46	
35 '0&9&9.&I#r&   c                    V ^8  d   QhRRRR/# )r   r)   r   r    r   r"   )r#   s   "r$   r%   r   9  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   rZ   r   sysprefix)r   r)   s   &&r$   
_permittedUninstallPathSet._permitted9  s.     ())t::3::FGGr&   c                    V ^8  d   QhRRRR/# )r   r)   r   r    r   r"   )r#   s   "r$   r%   r   D  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 # )NrD   )r(   r)   rK   r*   r   rm   existsr   r   r7   r   splitextr   )r   r)   r   tails   &&  r$   r7   UninstallPathSet.addD  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RRRRR/# )r   pth_filer   rM   r    r   r"   )r#   s   "r$   r%   r   W  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 # r5   )r   r   r   UninstallPthEntriesr7   r   )r   r   rM   s   &&&r$   add_pthUninstallPathSet.add_pthW  sg    ..x8??8$$yy(&9(&C		(#IIh##E*LLX&r&   c               $    V ^8  d   QhRRRRRR/# )r   auto_confirmr   verboser    r   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   rb   rf   r   r   r   rz   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RRR/# )r   r   r   r    r"   )r#   s   "r$   r%   r   }  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               $    V ^8  d   QhRRRRRR/# )r   msgr   rS   rT   r    r   r"   )r#   s   "r$   r%   :UninstallPathSet._allowed_to_proceed.<locals>.__annotate__  s!     	& 	&# 	&m 	& 	&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r5   )r   r   r   rb   rf   )r  rS   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   r6   r   r   r   )r   r   r  r   r   s   &&   r$   r  $UninstallPathSet._allowed_to_proceed}  s    	& %@%M"K dkk*KI+.>	J8$,,G*,?,LM$n5<<r&   c                   V ^8  d   QhRR/# r   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   rz   )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   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RRR/# )r   r@   r   r    r   r"   )r#   s   "r$   r%   r     s      Z Z- Z2B 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)keependsrD   rE   rF   rB   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               $    V ^8  d   QhRRRRRR/# )r   r@   r   r   r   r    r!   r"   )r#   s   "r$   r%   0UninstallPathSet.from_dist.<locals>.__annotate__8  s+     	N 	N"	N	N (	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)r@   r   entry_points   && r$   iter_scripts_to_remove:UninstallPathSet.from_dist.<locals>.iter_scripts_to_remove8  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)/rH   info_locationr   r   canonical_namer   localr   r   	sysconfigget_pathr   r  "installed_with_setuptools_egg_infor(   r)   r   rJ   setuptools_filenamer7   rI   r*   is_file	read_text
splitlinesFileNotFoundErrorinstalled_by_distutilsr	   installed_as_eggrK   rv   r   installed_with_dist_inforP   openrm   readlinestripr   samefiler   in_usersiter   r   iter_distutils_script_namesr   NotADirectoryError)clsr@   dist_locationr-  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   scriptr+  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   r7   r   r  r  r   r   classmethodrT  r   r"   r&   r$   r   r   *  sH    	J	H.&'N:=8# Z Zr&   r   c                  F    ] tR tRtR R ltR R ltR R ltR R	 ltR
tR# )r   iH  c                    V ^8  d   QhRRRR/# )r   r   r   r    r   r"   )r#   s   "r$   r%    UninstallPthEntries.__annotate__I  s     5 5 5 5r&   c                	>    Wn         \        4       V n        R V n        R # r5   )filer6   rL   _saved_lines)r   r   s   &&r$   r   UninstallPthEntries.__init__I  s    	!$04r&   c                    V ^8  d   QhRRRR/# )r   rM   r   r    r   r"   )r#   s   "r$   r%   rY  N  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)   rm   r   
splitdrivereplacerL   r7   )r   rM   s   &&r$   r7   UninstallPthEntries.addN  sX      ' 7277--e4Q77MM$,Er&   c                   V ^8  d   QhRR/# r   r"   )r#   s   "r$   r%   rY  ]  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   
Nr"   )r]   lines   & r$   r`   -UninstallPthEntries.remove.<locals>.<genexpr>h  s     154w$5s   TFz

zutf-8zRemoving entry: %swb)r   r   r[  r(   r)   r   warningr;  	readlinesr\  rc   rJ   encoderL   r  
ValueError
writelines)r   rO  linesendlinerM   s   &    r$   r  UninstallPthEntries.remove]  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R/# r   r"   )r#   s   "r$   r%   rY  x  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 staterl  T)r\  r   r   r[  r   r;  rr  )r   rO  s   & r$   r   UninstallPthEntries.rollbackx  sp    $LLI499U8$))D$))T""bMM$++, # #"s   /BB&	)r\  rL   r[  N)	r   r   r   r   r   r7   r  r   r   r"   r&   r$   r   r   H  s    5
 !6 r&   r   )2
__future__r   r<   r(   r   r0  collections.abcr   r   importlib.utilr   typingr   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,   r>   rP   rf   r   r   r   r   r   r"   r&   r$   <module>r     s    "  	 
  / ,   S @ 3 . D = I I M C	8	&& 	 	B&AD."bf! f!R[ [|7 7r&   