
    q"h^                     &   S SK r S SKrS SKrS SKrS SKJr  S SKJrJrJ	r	J
r
JrJrJrJrJr  S SKJrJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJ r J!r!J"r"J#r#  S SK$J%r%J&r&  S SK'J(r(  \" \)5      r*S\+S\+S\,S\
\+SS4   4S jr-S\S\
\SS4   4   S\S\
\SS4   4   4S jr.\.S\S\
\+SS4   4S j5       r/S\\+   S\\+   4S jr0S\\+   S\\+   4S jr1S\\+   S\\\+   \\+   4   4S jr2 " S S5      r3 " S S5      r4 " S S 5      r5g)!    N)cache_from_source)	AnyCallableDict	GeneratorIterableListOptionalSetTuple)LegacyDistutilsInstallUninstallMissingRecord)get_bin_prefixget_bin_user)BaseDistribution)WINDOWS)egg_link_path_from_location)	getLogger
indent_log)asknormalize_pathrenamesrmtree)AdjacentTempDirectoryTempDirectory)running_under_virtualenvbin_dirscript_nameis_guireturnc              #      #    [         R                  R                  X5      nUv   [        (       d  gU S3v   U S3v   U(       a  U S3v   gU S3v   g7f)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       Q/var/www/html/env/lib/python3.13/site-packages/pip/_internal/req/req_uninstall.py_script_namesr'      s]      ww||G1H
N7Jd
Jm
$$
+&&
*%%s   AAfn.c           
         ^  [         R                  " T 5      S[        S[        S[        [        S S 4   4U 4S jj5       nU$ )Nargskwr    c               ?   x   >#    [        5       nT" U 0 UD6 H  nX2;  d  M
  UR                  U5        Uv   M!     g 7fN)setadd)r*   r+   seenitemr(   s       r&   unique_unique.<locals>.unique+   s5     OOD
 $s   ::)	functoolswrapsr   r   )r(   r2   s   ` r&   _uniquer6   (   sG     __Rc  3d?)C   M    distc              #     #    U R                   nUc   S5       eU R                  5       nUc	  [        U S9eU H  n[        R                  R                  X5      nUv   UR                  S5      (       d  M>  [        R                  R                  U5      u  pVUSS n[        R                  R                  XWS-   5      nUv   [        R                  R                  XWS-   5      nUv   M     g7f)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)r8   r@   entriesentryr#   dnr(   bases           r&   uninstallation_pathsrH   6   s      }}H00((*G$$77ww||H,
==WW]]4(FBcr7D77<<6M2DJ77<<6M2DJ s   A/C,5A7C,pathsc                    ^^ [         R                  R                  m[        5       n[	        U [
        S9 H3  m[        UU4S jU 5       5      nU(       a  M"  UR                  T5        M5     U$ )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      >#    U  H[  nTR                  UR                  S 5      5      =(       a/    T[        UR                  S 5      R                  T5      5         T:H  v   M]     g7f)*N)
startswithrstriplen).0	shortpathr#   seps     r&   	<genexpr>compact.<locals>.<genexpr>a   sb      
 )	 OOI,,S12 DS))#.55c:;<CD(s   A#A&)r"   r#   rT   r.   sortedrQ   anyr/   )rI   short_pathsshould_skipr#   rT   s      @@r&   compactr[   X   s^     ''++CEKu#& 
 )
 

 {OOD! ' r7   c                 H  ^
^^ U  Vs0 s H#  n[         R                  R                  U5      U_M%     nn[        U5      n[	        UR                  5        Vs1 s H%  n[         R                  R                  U5      S   iM'     sn[        S9n[        5       nS[        S[        4S jmU H  m[        U4S jU 5       5      (       a  M  [        5       n[        5       n[         R                  " T5       H@  u  m
pUR                  U
UU4S jU 5       5        UR                  U
UU4S jU	 5       5        MB     Xc-
  (       a  M  UR                  U5        UR                  T[         R                  -   5        M     [        [        UR                   U5      5      U-  $ s  snf s  snf )	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.
r   rK   ar    c                  v    [         R                  R                  [         R                  R                  " U 6 5      $ r-   )r"   r#   normcaser$   )r]   s    r&   	norm_join&compress_for_rename.<locals>.norm_joinv   s$    wwa 011r7   c              3      >#    U  H3  n[         R                  R                  T5      R                  U5      v   M5     g 7fr-   )r"   r#   r_   rO   )rR   wroots     r&   rU   &compress_for_rename.<locals>.<genexpr>z   s.     GYrww%0033Ys   ;>c              3   8   >#    U  H  nT" TTU5      v   M     g 7fr-    )rR   ddirnamer`   rd   s     r&   rU   re      s     LGqyw::G   c              3   8   >#    U  H  nT" TTU5      v   M     g 7fr-   rg   )rR   fri   r`   rd   s     r&   rU   re      s     H%QYtWa88%rj   )r"   r#   r_   r.   rW   valuesrC   rQ   strrX   walkupdatedifference_updater/   rT   map__getitem__)rI   pcase_map	remaining	unchecked	wildcards	all_filesall_subdirssubdirsfilesri   r`   rd   s             @@@r&   compress_for_renamer}   k   sG    1661  #Q&H6HIX__5FG5Fa(+5FGSQI%I2c 2c 2 GYGGG!e	 #')wwt}#GWLGLLH%HH (5 %%''	2MM$-( " s8''34y@@3 7Gs   *F,Fc                    [        U 5      n[        5       n[        5       n[        5       nU Hv  nUR                  S5      (       a  M  UR                  S5      (       d  SU;   a.  UR                  [        R                  R                  U5      5        UR                  U5        Mx     [        [        [        R                  R                  U5      5      n[        U5      nU H  n[        R                  " U5       H  u  pn
U
 H  nUR                  S5      (       a  M  [        R                  R                  X5      n[        R                  R                  U5      (       d  M`  [        R                  R                  U5      U;  d  M  UR                  U5        M     M     M     XC Vs1 s H#  n[        R                  R                  US5      iM%     sn-  nX4$ s  snf )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.
r>   z__init__.pyz
.dist-inforN   )r.   rB   r/   r"   r#   ri   rr   r_   r[   ro   r$   isfile)rI   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                       \ rS rSrSrSS jrS\S\4S jrS\S\4S jrS\S\4S	 jr	SS
 jr
SS jr\S\4S j5       rSrg)StashedUninstallPathSet   zSA set of file rename operations to stash files while
tentatively uninstalling them.r    Nc                      0 U l         / U l        g r-   )
_save_dirs_movesselfs    r&   __init__ StashedUninstallPathSet.__init__   s     57 .0r7   r#   c                      [        U5      nX R                  [        R
                  R                  U5      '   UR
                  $ ! [         a    [        SS9n NLf = f)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#   r_   )r   r#   save_dirs      r&   _get_directory_stash,StashedUninstallPathSet._get_directory_stash   sS    	7&;D&AH 3;((./}}	  	7$+6H	7s   A AAc                    [         R                  R                  U5      n[         R                  R                  U5      Sp2SnX#:w  a   U R                  U   nO6[         R                  R                  U5      n[        SS9nX@R                  U'   [         R                  R                  X5      nU(       aH  U[         R                  R                  :w  a*  [         R                  R                  UR                  U5      $ UR                  $ ! [
         a     Of = f[         R                  R                  U5      Up2X#:w  a  M  N)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#   r_   ri   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                    [         R                  R                  U5      =(       a$    [         R                  R                  U5      (       + nU(       a  U R	                  U5      nOU R                  U5      nU R                  R                  X45        U(       a:  [         R                  R                  U5      (       a  [         R                  " U5        [        X5        U$ )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"''..2F.F006H++D1HD+,277==22 HHXr7   c                     U R                   R                  5        H  nUR                  5         M     / U l        0 U l         g)z0Commits the uninstall by removing stashed files.N)r   rm   cleanupr   )r   r   s     r&   commitStashedUninstallPathSet.commit  s3    ..0H 1r7   c                    U R                    H  n[        R                  " S/UQ76   M     U R                    H  u  p# [        R                  SX#5        [        R
                  R                  U5      (       d$  [        R
                  R                  U5      (       a  [        R                  " U5        O/[        R
                  R                  U5      (       a  [        U5        [        X25        M     U R                  5         g! [         a8  n[        R                  SU5        [        R                  SU5         SnAGM  SnAff = f)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   rt   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   B/D
E,D>>Ec                 ,    [        U R                  5      $ r-   )boolr   r   s    r&   can_rollback$StashedUninstallPathSet.can_rollback"  s    DKK  r7   )r   r   r    N)__name__
__module____qualname____firstlineno____doc__r   rn   r   r   r   r   r   propertyr   r   __static_attributes__rg   r7   r&   r   r      sj    &0  C C 6# # *& !d ! !r7   r   c                       \ rS rSrSrS\SS4S jrS\S\4S jr	S\SS4S	 jr
S
\S\SS4S jrSS\S\SS4S jjrS\S\4S jrSS jrSS jr\S\SS 4S j5       rSrg)UninstallPathSeti'  zIA set of file paths to be removed in the uninstallation of a
requirement.r8   r    Nc                     [        5       U l        [        5       U l        0 U l        Xl        [        5       U l        [        R                  " [        5      U l
        g r-   )r.   _paths_refuse_pth_distr   _moved_pathsr4   	lru_cacher   _normalize_path_cached)r   r8   s     r&   r   UninstallPathSet.__init__+  s@     #!$46	
35 '0&9&9.&I#r7   r#   c                 ~    [        5       (       d  gUR                  U R                  [        R                  5      5      $ )z[
Return True if the given path is one we are permitted to
remove/modify, False otherwise.

T)r   rO   r   sysprefix)r   r#   s     r&   
_permittedUninstallPathSet._permitted6  s.     ())t::3::FGGr7   c                 D   [         R                  R                  U5      u  p#[         R                  R                  U R	                  U5      [         R                  R                  U5      5      n[         R                  R                  U5      (       d  g U R                  U5      (       a  U R                  R                  U5        OU R                  R                  U5        [         R                  R                  U5      S   S:X  a  U R                  [        U5      5        g g )N   r<   )r"   r#   rC   r$   r   r_   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,- .r7   pth_filerE   c                    U R                  U5      nU R                  U5      (       aF  XR                  ;  a  [        U5      U R                  U'   U R                  U   R	                  U5        g U R
                  R	                  U5        g r-   )r   r   r   UninstallPthEntriesr/   r   )r   r   rE   s      r&   add_pthUninstallPathSet.add_pthT  sg    ..x8??8$$yy(&9(&C		(#IIh##E*LLX&r7   auto_confirmverbosec                    U R                   (       d+  [        R                  SU R                  R                  5        gU R                  R                   SU R                  R
                   3n[        R                  SU5        [        5          U(       d  U R                  U5      (       a  U R                  n[        U R                   5      n[        [        U5      5       H*  nUR                  U5        [        R                  SU5        M,     U R                  R                  5        H  nUR!                  5         M     [        R                  SU5        SSS5        g! , (       d  f       g= f)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}   rW   r[   r   r   r   rm   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   CE
E+c                 `   S[         S[        [            SS4S jnU(       d  [        U R                  5      u  p4O[	        U R                  5      n[	        5       nU" SU5        U" SU5        U" SU R
                  5        U(       a  U" S	[        U R                  5      5        [        S
S5      S:g  $ )z@Display which files would be deleted and prompt for confirmationmsgrI   r    Nc                     U(       d  g [         R                  U 5        [        5          [        [	        U5      5       H  n[         R                  U5        M     S S S 5        g ! , (       d  f       g = fr-   )r   r   r   rW   r[   )r   rI   r#   s      r&   _display6UninstallPathSet._allowed_to_proceed.<locals>._display}  sB    KK"75>2DKK% 3 s   1A""
A0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   )rn   r   r   r   r.   r   r}   r   )r   r   r   r   r   s        r&   r   $UninstallPathSet._allowed_to_proceedz  s    	&# 	&hsm 	& 	& %@%M"K dkk*KI+.>	J8$,,G*,?,LM$n5<<r7   c                 z   U R                   R                  (       d+  [        R                  SU R                  R
                  5        g[        R                  SU R                  R
                  5        U R                   R                  5         U R                  R                  5        H  nUR                  5         M     g)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   rm   )r   r   s     r&   r   UninstallPathSet.rollback  s}      --LL9

## 2DJJ4G4GH""$99##%CLLN &r7   c                 8    U R                   R                  5         g)z?Remove temporary save dir: rollback will no longer be possible.N)r   r   r   s    r&   r   UninstallPathSet.commit  s      "r7   c           
      F   UR                   nUR                  nUc(  [        R                  SUR                  5        U " U5      $ [        U5      nUR                  (       d8  [        R                  SUR                  U[        R                  5        U " U5      $ U[        R                  " S5      [        R                  " S5      1 Vs1 s H  nU(       d  M  UiM     sn;   a)  [        R                  SUR                  U5        U " U5      $ U " U5      n[        UR                  5      nUR                  =(       aT    US L=(       aI    [        R                  R!                  U5      =(       a#    UR#                  UR$                   S35      (       + nU(       GaL  Ub  UR'                  U5        UR)                  5       n	U	b9  U	 H1  n
UR'                  [        R                  R+                  X*5      5        M3     GOUR-                  S5      (       a   UR/                  S5      nUR1                  S	S
9nUR/                  S5      R1                  5        Vs/ s H  nU(       d  M  X\;  d  M  UPM     sn Ho  n[        R                  R+                  X-5      nUR'                  U5        UR'                  U S35        UR'                  U S35        UR'                  U S35        Mq     GOUR4                  (       a	  [7        US9eUR8                  (       a  UR'                  U5        [        R                  R;                  U5      S   n[        R                  R+                  [        R                  R=                  U5      S5      nUR?                  USU-   5        GOYUR@                  (       a%  [C        U5       H  nUR'                  U5        M     GO#U(       Ga  [E        U5       n[        R                  RG                  URI                  5       RK                  5       5      nURM                  U5      nS S S 5        [        R                  RO                  WU5      (       d   SU SW SUR                   SU S3	5       eUR'                  U5        [        R                  R+                  [        R                  R=                  U5      S5      nUR?                  UU5        O[        RQ                  SUU5        URR                  (       a  [U        5       nO
[W        5       n URY                  5        Hq  nUR'                  [        R                  R+                  UU5      5        [Z        (       d  M?  UR'                  [        R                  R+                  UU S35      5        Ms     S[^        S[`        S[b        [`        S S 4   4S jnU" UU5       H  nUR'                  U5        M     U$ s  snf ! [2         a    / n GNf = fs  snf ! , (       d  f       GN= f! [2        [\        4 a     Nf = f)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)keependsr<   r>   r?   r:   r   zeasy-install.pthz./z	Egg-link z (to z') does not match installed location of z (at )z)Not sure how to uninstall: %s - Check: %sz.batr8   r   r    c              3     #    U R                  5        Hc  nUR                  S:X  a   [        XR                  S5       S h  vN   M3  UR                  S:X  d  ME  [        XR                  S5       S h  vN   Me     g  N; N7f)Nconsole_scriptsFgui_scriptsT)iter_entry_pointsgroupr'   name)r8   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(   =A?A; A?A?1A=2
A?=A?)2r@   info_locationr   r   canonical_namer   localr   r   	sysconfigget_pathr   r   "installed_with_setuptools_egg_infor"   r#   r   rB   setuptools_filenamer/   rA   r$   is_file	read_text
splitlinesFileNotFoundErrorinstalled_by_distutilsr   installed_as_eggrC   ri   r   installed_with_dist_inforH   openr_   readlinestripr   samefiler   in_usersiter   r   iter_distutils_script_namesr   NotADirectoryErrorr   rn   r   )clsr8   dist_locationr
  normalized_dist_locationrt   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  s\   ** KK?## t9#1-#@ zzKKC##(

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

 KKN##(
 t9d)6t}}E 33 ST)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 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"	N	N sD$'	N (g6A" 7 M(
T ) $!#J$&H ('F "#56 		sV   WWW# W6W6%W6AW;AX $6X #W32W3;
X
X X )r   r   r   r   r   r   )FFr   )r   r   r   r   r   r   r   rn   r   r   r/   r   r   r   r   r   classmethodr1  r   rg   r7   r&   r   r   '  s    	J- 	J$ 	J	Hs 	Ht 	H. . .&' 'C 'D 'N4 N$ N4 N:=4 =D =8# Z- Z2D Z Zr7   r   c                   P    \ rS rSrS\SS4S jrS\SS4S jrSS jrS\4S	 jr	S
r
g)r   iE  r   r    Nc                 <    Xl         [        5       U l        S U l        g r-   )filer.   rD   _saved_lines)r   r   s     r&   r   UninstallPthEntries.__init__F  s    	!$37r7   rE   c                     [         R                  R                  U5      n[        (       a9  [         R                  R	                  U5      S   (       d  UR                  SS5      nU R                  R                  U5        g )Nr   \/)r"   r#   r_   r   
splitdrivereplacerD   r/   )r   rE   s     r&   r/   UninstallPthEntries.addK  sU      ' 7277--e4Q7MM$,Er7   c                 t   [         R                  SU R                  5        [        R                  R                  U R                  5      (       d!  [         R                  SU R                  5        g [        U R                  S5       nUR                  5       nX l	        S S S 5        [        S W 5       5      (       a  SnOSnU(       aB  US   R                  UR                  S5      5      (       d  US   UR                  S5      -   US'   U R                   H<  n [         R                  S	U5        UR                  XC-   R                  S5      5        M>     [        U R                  S
5       nUR!                  U5        S S S 5        g ! , (       d  f       N= f! [         a     M  f = f! , (       d  f       g = f)NzRemoving pth entries from %s:z.Cannot remove entries from nonexistent file %srbc              3   ,   #    U  H
  nS U;   v   M     g7f)s   
Nrg   )rR   lines     r&   rU   -UninstallPthEntries.remove.<locals>.<genexpr>e  s     154w$5s   z

zutf-8zRemoving entry: %swb)r   r   r6  r"   r#   r   warningr  	readlinesr7  rX   rB   encoderD   r   
ValueError
writelines)r   r,  linesendlinerE   s        r&   r   UninstallPthEntries.removeZ  sF   6		B ww~~dii((NNKTYYW$))T"bLLNE % # 15111GGr++GNN7,CDDb	GNN7$;;E"I\\E3U;eo55g>? " $))T"bMM%  #"# #"  ""s*   F8F,F)
F
F&%F&)
F7c                 6   U R                   c!  [        R                  SU R                  5        g[        R	                  SU R                  5        [        U R                  S5       nUR                  U R                   5        S S S 5        g! , (       d  f       g= f)Nz.Cannot roll back changes to %s, none were madeFz!Rolling %s back to previous staterF  T)r7  r   r   r6  r   r  rK  )r   r,  s     r&   r   UninstallPthEntries.rollbacku  sm    $LLI499U8$))D$))T"bMM$++, # #"s   %B


B)r7  rD   r6  r   )r   r   r   r   rn   r   r/   r   r   r   r   rg   r7   r&   r   r   E  s9    8 8 8
     !6$ r7   r   )6r4   r"   r   r  importlib.utilr   typingr   r   r   r   r   r	   r
   r   r   pip._internal.exceptionsr   r   pip._internal.locationsr   r   pip._internal.metadatar   pip._internal.utils.compatr   pip._internal.utils.egg_linkr   pip._internal.utils.loggingr   r   pip._internal.utils.miscr   r   r   r   pip._internal.utils.temp_dirr   r   pip._internal.utils.virtualenvr   r   r   rn   r   r'   r6   rH   r[   r}   r   r   r   r   rg   r7   r&   <module>r\     sk    	 
  , W W W S @ 3 . D = I I M C	8	&&"&,0&sD$&&iT4001c9S$_--. 	/ Ic4o4N  	B8C= SX &Ax} AS AD."x} ."s3xS?Q9R ."bf! f!R[ [|7 7r7   