
    )hk                     v   d Z ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlmZ ddlmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ dd	l,m-Z- dd
l.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJ ddlKmLZL  G d de!      ZM ej                  eO      ZP edeQ      ZRe$eReQe%eSeQf   f   ZTdHdeQdeSde$eQeQf   fdZUdeQdeeQef   fdZVdeQdeWfdZXdedeWfdZYd e5de$eeQeQf   eeQeQf   f   fd!ZZd"e"eQ   de eQ   fd#Z[d$eeT   dee$eQeQeQf      fd%Z\d&eRd'eQdeQfd(Z]deQd'eQdeRfd)Z^d*eeeQ      d+eeReRf   d,e#eR   d-eeQ   d'eQdeeT   fd.Z_d/eeQeQf   deeQ   fd0Z` G d1 d2      Za G d3 d4      Zb G d5 d6e1      Zcd7eQddfd8Zd G d9 d:e+      Ze	 	 	 	 dId;eQd<e(d=eQd>e=d?eWd@eWdAe e:   dBeWddfdCZfej                  dDeQdedE   fdF       Zh	 	 	 	 dId;eQd=eQd>e=dDeQd?eWd@eWdAe e:   dBeWddfdGZiy)JzFSupport for installing and building the "wheel" binary package format.    N)urlsafe_b64encode)Message)chainfilterfalsestarmap)IOAnyBinaryIOCallableDict	GeneratorIterableIteratorListNewTypeOptionalProtocolSequenceSetTupleUnioncast)ZipFileZipInfo)ScriptMaker)get_export_entry)canonicalize_name)InstallationError)get_major_minor_version)BaseDistributionFilesystemWheelget_wheel_distribution)DIRECT_URL_METADATA_NAME	DirectUrl)SCHEME_KEYSScheme)adjacent_tmp_filereplace)StreamWrapper
ensure_dir	hash_file	partition)current_umaskis_within_directory2set_extracted_file_to_default_mode_plus_executablezip_item_is_executable)parse_wheelc                   4    e Zd ZU ded<   eed<   eed<   ddZy)File
RecordPathsrc_record_path	dest_pathchangedNc                      y N selfs    Y/var/www/html/venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.pysavez	File.saveC   s        returnN)__name__
__module____qualname____annotations__strboolr>   r:   r?   r=   r3   r3   >   s    !!NMr?   r3   r4   path	blocksizerA   c                     t        | |      \  }}dt        |j                               j                  d      j	                  d      z   }|t        |      fS )z?Return (encoded_digest, length) for path using hashlib.sha256()zsha256=latin1=)r+   r   digestdecoderstriprF   )rH   rI   hlengthrM   s        r=   rehashrR   M   sM    $	*IAv*188:6==hGNNsSSFCK  r?   modec                     | dddS )zPReturn keyword arguments to properly open a CSV file
    in the given mode.
     utf-8)rS   newlineencodingr:   )rS   s    r=   csv_io_kwargsrY   T   s     RW==r?   c                 0   t         j                  j                  |       sJ t        | d      5 }|j	                         }|j                  d      s
	 ddd       yt        j                  j                  t        j                               }d|z   t         j                  j                  d      z   }|j                         }ddd       t        | d      5 }|j                         |j                         ddd       y# 1 sw Y   AxY w# 1 sw Y   yxY w)	zQReplace #!python with #!/path/to/python
    Return True if file was changed.
    rbs   #!pythonNFs   #!asciiwbT)osrH   isfileopenreadline
startswithsys
executableencodegetfilesystemencodinglinesepreadwrite)rH   script	firstlineexenamerests        r=   
fix_scriptrn   [   s    
 77>>$	dD	 VOO%	##K0  ..''(A(A(CDGObjj&7&7&@@	{{} 
dD	 VYT   s   #D A&D #D D	Dmetadatac                 H    | j                  dd      j                         dk(  S )NzRoot-Is-PurelibrU   true)getlower)ro   s    r=   wheel_root_is_purelibrt   o   s"    <<)2.446&@@r?   distc                     i }i }| j                         D ]T  }|j                  dk(  r|j                  ||j                  <   ,|j                  dk(  s<|j                  ||j                  <   V ||fS )Nconsole_scriptsgui_scripts)iter_entry_pointsgroupvaluename)ru   rw   rx   entry_points       r=   get_entrypointsr~   s   sz    OK--/ > 110;0A0AOK,,--/,7,=,=K(()	>
 K''r?   scriptsc           	         | syt        j                  t              }| D ]T  }t        j                  j                  |      }t        j                  j                  |      }||   j                  |       V t        j                  j                  dd      j                  t        j                        D cg c][  }t        j                  j                  t        j                  j                  |            j                  t        j                        ] }}|j!                  t        j                  j                  t        j                  j                  t        j                  j                  t"        j$                                           |j'                         D  ci c]F  \  }} t        j                  j                  t        j                  j                  |            |vr|| H }}} |syg }|j'                         D ]l  \  }}	t)        |	      }
t+        |
      dk(  r
d|
d    d}n,dj-                  d	j/                  |
dd
       dz   |
d
   z         }|j!                  d| d| d       n d}t+        |      dk(  r!|j!                  |j-                  d             n |j!                  |j-                  d             t1        d t        j                  j                  dd      j                  t        j                        D              }|rd}|j!                  |       dj/                  |      S c c}w c c} }w )zDetermine if any scripts are not on PATH and format a warning.
    Returns a warning message if one or more scripts are not on PATH,
    otherwise None.
    NPATHrU      zscript r   z iszscripts {} are, z and zThe z installed in 'z' which is not on PATH.zeConsider adding {} to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.zthis directoryzthese directoriesc              3   2   K   | ]  }|s|d    dk(    yw)r   ~Nr:   ).0is     r=   	<genexpr>z4message_about_scripts_not_on_PATH.<locals>.<genexpr>   s      Q!s   ziNOTE: The current PATH contains path(s) starting with `~`, which may not be expanded by all applications.
)collectionsdefaultdictsetr^   rH   dirnamebasenameaddenvironrr   splitpathsepnormcasenormpathrO   sepappendrc   rd   itemssortedlenformatjoinany)r   grouped_by_dirdestfile
parent_dirscript_namer   not_warn_dirswarn_for	msg_linesdir_scriptssorted_scripts
start_textlast_line_fmtwarn_for_tildetilde_warning_msgs                  r=   !message_about_scripts_not_on_PATHr   ~   s   
  +6*A*A#*FN 4WW__X.
gg&&x0z"&&{34 +11"**= 	))!,-44RVV<M  
))"''//#..*IJK
 $2#7#7#9%J77BGG,,Z89N 	G%H %
  I#+>>#3 

K$*;$7~!#">!#4"5S9J)00		."-.8>";MMJ 	:,oj\9PQ	

	C  9~--.>?@--.ABC  ZZ^^FB7==bjjI N = 	 	*+ 99Yk%s   5A L6 AL;outrowsc                 &    t        d | D              S )a  Normalize the given rows of a RECORD file.

    Items in each row are converted into str. Rows are then sorted to make
    the value more predictable for tests.

    Each row is a 3-tuple (path, hash, size) and corresponds to a record of
    a RECORD file (see PEP 376 and PEP 427 for details).  For the rows
    passed to this function, the size can be an integer as an int or string,
    or the empty string.
    c              3   @   K   | ]  \  }}}||t        |      f  y wr9   )rF   )r   record_pathhash_sizes       r=   r   z&_normalized_outrows.<locals>.<genexpr>   s&      ,DKeSY's   )r   )r   s    r=   _normalized_outrowsr      s    *  HO  r?   r   lib_dirc                 B    t         j                  j                  ||       S r9   )r^   rH   r   )r   r   s     r=   _record_to_fs_pathr      s    77<<--r?   c                 p   t         j                  j                  |       d   j                         t         j                  j                  |      d   j                         k(  r t         j                  j	                  | |      } | j                  t         j                  j                  d      } t        d|       S )Nr   /r4   )r^   rH   
splitdrivers   relpathr(   r   r   )rH   r   s     r=   _fs_to_record_pathr      s     
ww$"((*bgg.@.@.I!.L.R.R.TTwwtW-<<S)Dd##r?   old_csv_rows	installedr7   	generatedc                    g }| D ]  }t        |      dkD  rt        j                  d|       t        d|d         }|j	                  ||      }||v rt        t        ||            \  }	}
n*t        |      dkD  r|d   nd}	t        |      dkD  r|d   nd}
|j                  ||	|
f        |D ]0  }t        ||      }t        |      \  }	}
|j                  ||	|
f       2 ||j                         D cg c]  }|ddf	 c}z   S c c}w )z_
    :param installed: A map from archive RECORD path to installation RECORD
        path.
       z,RECORD line has more than three elements: %sr4   r   r   rU      )
r   loggerwarningr   poprR   r   r   r   values)r   r   r7   r   r   installed_rowsrowold_record_pathnew_record_pathrM   rQ   frH   installed_record_paths                 r=   get_csv_rows_for_installedr      s(    -/N 
As8a<NNI3O|SV4#--Ig%#$6$PQNFF"3x!|SVF"3x!|SVF?@
A  6!!W-tVV456 ENEUEUEW,A	B'   s   2Dconsolec                 ^   | j                         } g }| j                  dd      }|rdt        j                  vr|j	                  d|z          t        j                  j                  dd      dk7  r(|j	                  dt        j                  d    d|        |j	                  dt                d|        | D cg c]  }t        j                  d	|      s| }}|D ]  }| |=  | j                  d
d      }|rudt        j                  vr|j	                  d|z          |j	                  dt                d|        | D cg c]  }t        j                  d|      s| }}|D ]  }| |=  |j                  t        dj                  | j                                      |S c c}w c c}w )zk
    Given the mapping from entrypoint name to callable, return the relevant
    console script specs.
    pipNENSUREPIP_OPTIONSzpip = rU   
altinstallr   z = zpip(\d+(\.\d+)?)?$easy_installzeasy_install = zeasy_install-zeasy_install(-\d+\.\d+)?${} = {})copyr   r^   r   r   rr   rc   version_infor   rematchextendr   r   r   )r   scripts_to_generate
pip_scriptkpip_epeasy_install_scripteasy_install_eps          r=   get_console_script_specsr     s    llnGB UD)Jbjj0&&x*'<=::>>-r2lB&&S-=-=a-@,AZL'QR""S)@)B(C3zl#ST$K1F(J!KK 	A
	!++nd;bjj0&&'8;N'NO""356c:M9NO	

 
"((+G"KA
 
 ! 	A
	 wy'7'7IJ+ L
s   ;F%F%F* F*c                   8    e Zd ZdedededdfdZdefdZd	dZ	y)
ZipBackedFiler5   r6   zip_filerA   Nc                 <    || _         || _        || _        d| _        y NF)r5   r6   	_zip_filer7   )r<   r5   r6   r   s       r=   __init__zZipBackedFile.__init__Z  s!      /"!r?   c                 L    | j                   j                  | j                        S r9   )r   getinfor5   r;   s    r=   _getinfozZipBackedFile._getinfob  s    ~~%%d&:&:;;r?   c                 $   t         j                  j                  | j                        rt        j                  | j                         | j                         }t        | j                  d      5 }|j                  dkD  rQ| j                  j                  |      5 }t        |j                  d      }t        j                  |||       d d d        d d d        t        |      rt        | j                         y y # 1 sw Y   3xY w# 1 sw Y   7xY w)Nr]   r      )r^   rH   existsr6   unlinkr   r`   	file_sizer   minshutilcopyfileobjr0   r/   )r<   zipinfodestr   rI   s        r=   r>   zZipBackedFile.savee  s     77>>$..)IIdnn%--/ $..$' 	;4  1$^^((1 ;Q #G$5$5{ CI&&q$	:;	; "'*>t~~N +	; ;	; 	;s$   /+D.C:D:D	?DDr@   )
rB   rC   rD   r4   rF   r   r   r   r   r>   r:   r?   r=   r   r   Y  s9    )69EL	<' <Or?   r   c                       e Zd ZddZddZy)
ScriptFileNc                     || _         | j                   j                  | _        | j                   j                  | _        d| _        y r   )_filer5   r6   r7   )r<   files     r=   r   zScriptFile.__init__  s3    
#zz99--r?   c                 l    | j                   j                          t        | j                        | _        y r9   )r   r>   rn   r6   r7   r;   s    r=   r>   zScriptFile.save  s     

!$..1r?   )r   r3   rA   Nr@   )rB   rC   rD   r   r>   r:   r?   r=   r   r     s    2r?   r   c                   (     e Zd Zdeddf fdZ xZS )MissingCallableSuffixr}   rA   Nc                 ,    t         |   d| d       y )NzInvalid script entry point: z - A callable suffix is required. Cf https://packaging.python.org/specifications/entry-points/#use-for-scripts for more information.)superr   )r<   r}   	__class__s     r=   r   zMissingCallableSuffix.__init__  s!    *;- 8 	
r?   )rB   rC   rD   rF   r   __classcell__r   s   @r=   r   r     s    
C 
D 
 
r?   r   specificationc                 `    t        |       }|!|j                  t        t        |            y y r9   )r   suffixr   rF   )r   entrys     r=   _raise_for_invalid_entrypointr    s2    ]+EU\\1#CJ// 2r?   c                   F     e Zd Z	 ddedeeeef      dee   f fdZ xZ	S )PipScriptMakerr   optionsrA   c                 :    t        |       t        | 	  ||      S r9   )r  r   make)r<   r   r  r   s      r=   r	  zPipScriptMaker.make  s     	&m4w|M733r?   r9   )
rB   rC   rD   rF   r   r   r	   r   r	  r   r   s   @r=   r  r    s9    FJ4 4+3DcN+C4	c4 4r?   r  r|   	wheel_zip
wheel_pathscheme	pycompilewarn_script_location
direct_url	requestedc           
      (  :;<=>?@ t        ||       \  }}	t        |	      r|j                  @n|j                  @i ?t	               ;g }
	 d,dt
        dt        dt        ddf;?@fd}dt
        dt        fd}d	t        d
t        ddffd:dt        dt        dt        t
        gdf   f:fd}dt        dt        dt        t
        gdf   f:fd}dt
        dt        fd}t        t        t
           |j                               }t        ||      }t        ||      \  }} ||@      }t!        ||      }dt
        dt        fd}t        ||      \  }} |||      }t!        ||      }t#        ||      }t%        t'              t)        |             }t+        |      \  <>dddt        f<>fd}t!        ||      }t        ||      }t!        t,        |      }t#        ||      }t	               }|D ]  }t.        j0                  j3                  |j4                        } | |vrt7        |        |j9                  |        |j;                           ||j<                  |j4                  |j>                          dt@        t        ddf   f?@fd}!dt        dt        fd}"|r"tC        jD                  tG        jH                  tJ        jL                              5 }#tO        jP                         5  tO        jR                  d        |!       D ]  }$tU        jV                  |$dd      }%|%s |"|$      }&t.        j0                  jY                  |&      sJ t        d|&j[                  t.        j0                  j\                  d            }' ||'|&        	 ddd       ddd       t^        ja                  #jc                                te        d|jf                        }(d|(_4        dh|(_5        d|(_6        to        <      })tq        ts        djt                  >jw                                     }*|(jy                  |)      }+|
j{                  |+       |
j{                  |(jy                  |*ddi             |r"t}        |+      },|,t^        j                  |,       d t                z  =tB        j                  dt        d!t        dt@        t        ddf   f=fd"       }-t.        j0                  j                  @|      }.t.        j0                  j                  |.d#      }/ |-|/      5 }0|0j                  d$       ddd       |
j                  |/       |tt.        j0                  j                  |.t              }1 |-|1      5 }2|2j                  |j                         j                  d%             ddd       |
j                  |1       |rGt.        j0                  j                  |.d&      }3t        |3d'      5  	 ddd       |
j                  |3       |j                  d(      }4tq        t        j                  |4j                                     }5t        |5?;|
@)      }6t.        j0                  j                  |.d(      }7 |-|7fi t        d*      5 }8t        j                  t        d+|8            }9|9j                  t        |6             ddd       y# 1 sw Y   9xY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   xY w# 1 sw Y   yxY w)-a  Install a wheel.

    :param name: Name of the project to install
    :param wheel_zip: open ZipFile for wheel being installed
    :param scheme: Distutils scheme dictating the install directories
    :param req_description: String used in place of the requirement, for
        logging
    :param pycompile: Whether to byte-compile installed Python files
    :param warn_script_location: Whether to check that scripts are installed
        into a directory on PATH
    :raises UnsupportedWheel:
        * when the directory holds an unpacked wheel with incompatible
          Wheel-Version
        * when the .dist-info dir does not match the wheel
    srcfiler   modifiedrA   Nc                 P    t        |      }|| <   |rj                  |       yy)z6Map archive RECORD paths to installation RECORD paths.N)r   r   )r  r   r  newpathr7   r   r   s       r=   record_installedz(_install_wheel.<locals>.record_installed  s/     %Xw7$	'KK  r?   rH   c                 $    | j                  d      S )Nr   )endswithrH   s    r=   is_dir_pathz#_install_wheel.<locals>.is_dir_path  s    }}S!!r?   dest_dir_pathtarget_pathc                 Z    t        | |      sd}t        |j                  ||             y )NzRThe wheel {!r} has a file {!r} trying to install outside the target directory {!r})r.   r   r   )r  r  messager  s      r=   assert_no_path_traversalz0_install_wheel.<locals>.assert_no_path_traversal  s;    "=+>5  $z;F  ?r?   r   r   r3   c                 ,     dt         ddf fd}|S )Nr   rA   r3   c                     t         j                  j                  |       }t         j                  j                  |      } |       t	        | |      S r9   )r^   rH   r   r   r   )r   normed_pathr6   r  r   r   s      r=   make_root_scheme_filezM_install_wheel.<locals>.root_scheme_file_maker.<locals>.make_root_scheme_file  sD    ''**;7KT;7I$T95 iBBr?   )r4   )r   r   r#  r  s   `` r=   root_scheme_file_makerz._install_wheel.<locals>.root_scheme_file_maker  s!    	Cz 	Cf 	C %$r?   r  c                 v     t         D ci c]  }|t        ||       c}dt        ddf fd}|S c c}w )Nr   rA   r3   c           
         t         j                  j                  |       }	 |j                  t         j                  j                  d      \  }}}	 
|   }t         j                  j                  ||      } 	||       t        | |      S # t
        $ r d d| d}t        |      w xY w# t        $ r5 dj                  t        
            }d d| d| d| d		}t        |      w xY w)
Nr   zUnexpected file in z: zG. .data directory contents should be named like: '<scheme key>/<path>'.r   zUnknown scheme key used in z (for file zW). .data directory contents should be in subdirectories named with a valid scheme key ())r^   rH   r   r   r   
ValueErrorr   KeyErrorr   r   r   )r   r"  _
scheme_keydest_subpathr  scheme_pathvalid_scheme_keysr6   r  scheme_pathsr  r   s            r=   make_data_scheme_filezM_install_wheel.<locals>.data_scheme_file_maker.<locals>.make_data_scheme_file  s   ''**;7K1.9.?.?Q.O+:|
1*:6 [,?I$[)< iBB+  1)*R GM M  (001  1$(IIf\.B$C!1*R
| L!!, 0-.a1  (001s   .B B- B*->C+)r%   getattrr4   )r   r  keyr0  r/  r  r  s   `   @r=   data_scheme_file_makerz._install_wheel.<locals>.data_scheme_file_maker  sL     >IIcWVS11I	Cz 	Cf 	C 	C6 %$; Js   6c                 J    | j                  dd      d   j                  d      S )Nr   r   r   .data)r   r  r  s    r=   is_data_scheme_pathz+_install_wheel.<locals>.is_data_scheme_path  s#    zz#q!!$--g66r?   c                     | j                  dd      }t        |      dkD  xr |d   j                  d      xr |d   dk(  S )Nr   r   r   r5  r   r   )r   r   r  )rH   partss     r=   is_script_scheme_pathz-_install_wheel.<locals>.is_script_scheme_path  sB    

3"5zA~V%("3"3G"<VqYAVVr?   r   c                 P   | j                   }t        j                  j                  |      }|j	                         j                  d      r|d d }nL|j	                         j                  d      r|d d }n'|j	                         j                  d      r|d d }n|}|v xs |v S )Nz.exez
-script.pyiz.pya)r6   r^   rH   r   rs   r  )r   rH   r|   	matchnamer   guis       r=   is_entrypoint_wrapperz-_install_wheel.<locals>.is_entrypoint_wrapper+  s     ~~ww%::<  (Sb	IZZ\""<0Tc
IZZ\""6*Sb	IIG#7yC'77r?   c               3     K   t        t        j                                     D ]X  } t        j                  j                  |       }t        j                  j                  |      sC|j                  d      sU| Z y w)Nz.py)r   r   r   r^   rH   r   r_   r  )installed_pathfull_installed_pathr   r   s     r=   pyc_source_file_pathsz-_install_wheel.<locals>.pyc_source_file_pathsN  sk     
 %S)9)9);%<= 	&N"$'',,w"G77>>"56&//6%%	&s   A?Bc                 @    t         j                  j                  |       S )z8Return the path the pyc file would have been written to.)	importlibutilcache_from_sourcer  s    r=   pyc_output_pathz'_install_wheel.<locals>.pyc_output_path[  s    ~~//55r?   ignoreT)forcequietr4   r   rU   r   r=  i  kwargsc              ;      K   t        | fi |5 }| d d d        t        j                  j                         t	        |j                  |        y # 1 sw Y   @xY wwr9   )r'   r^   chmodr|   r(   )rH   rK  r   generated_file_modes      r=   _generate_filez&_install_wheel.<locals>._generate_file  sP     t.v. 	!G	
,-	 	s   A A?A AA 	INSTALLERs   pip
rV   	REQUESTEDr]   RECORD)r   r7   r   r   wzIO[str])F)Tr1   rt   purelibplatlibr   r4   rF   rG   r   r   r&   r   r   namelistr   r,   mapr   r"   r!   r   r~   r   r^   rH   r   r6   r*   r   r>   r5   r7   r   
contextlibredirect_stdoutr)   from_streamrc   stdoutwarningscatch_warningsfilterwarnings
compileallcompile_filer   r(   r   r   debuggetvaluer  r   clobbervariantsset_moder   listr   r   r   make_multipler   r   r   r-   contextmanagerr	   r
   r   ri   r   r#   to_jsonre   r`   	read_textcsvreader
splitlinesr   rY   writer	writerowsr   )Ar|   r
  r  r  r  r  r  r  info_dirro   r   r  r  r$  r3  r6  paths
file_pathsroot_scheme_pathsdata_scheme_pathsr#  filesr9  other_scheme_pathsscript_scheme_pathsr0  other_scheme_filesdistributionr>  script_scheme_filesexisting_parentsr   r   rB  rG  r[  rH   successpyc_pathpyc_record_pathmakerr   gui_scripts_to_generategenerated_console_scriptsmsgrO  dest_info_dirinstaller_pathinstaller_filedirect_url_pathdirect_url_filerequested_pathrecord_textrecord_rowsrowsr   record_filern  r  r7   r   rN  r=  r   r   sA     `                                                       @@@@@@@r=   _install_wheelr    s   2 %Y5HhX&.... /1I"uGI >C!!'*!6:!	!"* " " # $ 	%	%!$	%	:,&	'	% % %#) %	:,&	' %D7* 7 7 j!9#5#5#78E[%0J+45H*+U((29gF 57HIEWJ W4 W /80/++ 39fE24FG%+,E *
#$L #<0LGS8F 8t 8  +.2+ &&;=PQj*=>%,-Eu 	M WW__T^^4
--z"  ,		--t~~t||L	M&9S$_#= &6c 6c 6
 ''%%cjj1
 	D((* 
D''113 DD(55d$dSG#24#8!ww~~h777*.((*:*:277;;*L+ )(CD
D	D 	V__&'40E EM
 TEN
 EN 37;"79+;+;SYY[#IJ % 3 34G H./U(()@5$-PQ/0IJ?NN3=?"22S C Ihd>R4S   GGLL(3M WW\\-=N		' '>X&'^$ '',,}6NOO, 	H!!*"4"4"6"="=g"FG	H) m[A.$' 		(((2Kszz+"8"8":;<K%D '',,}h7K		:}S'9	: 4k DK89,T23	4 4s
D 
D	D 	Dx' '	H 	H	 	$4 4s[   [,:['A([[[!4/[.*[;:\[	[[![+.[8;\\req_description)NNNc              #   z   K   	 d  y # t         $ r&}d|  d|j                  d    }t        |      |d }~ww xY ww)Nz	For req: z. r   )r   args)r  er  s      r=   req_error_contextr    sE     0 0o.b<(a/0s   ;	 ;	8!38;c                     t        |d      5 }t        |      5  t        | |||||||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NT)
allowZip64)r|   r
  r  r  r  r  r  r  )r   r  r  )	r|   r  r  r  r  r  r  r  zs	            r=   install_wheelr    sg     
	- / 
	%#%9%#	
	 
	 
	 s   A?AA	AA)r   )TTNF)j__doc__r   r_  rX  rk  rD  loggingos.pathr^   r   r   rc   r\  base64r   email.messager   	itertoolsr   r   r   typingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   zipfiler   r   pip._vendor.distlib.scriptsr   pip._vendor.distlib.utilr   pip._vendor.packaging.utilsr   pip._internal.exceptionsr   pip._internal.locationsr   pip._internal.metadatar    r!   r"   pip._internal.models.direct_urlr#   r$   pip._internal.models.schemer%   r&   pip._internal.utils.filesystemr'   r(   pip._internal.utils.miscr)   r*   r+   r,   pip._internal.utils.unpackingr-   r.   r/   r0   pip._internal.utils.wheelr1   r3   	getLoggerrB   r   rF   r4   intInstalledCSVRowrR   rY   rG   rn   rt   r~   r   r   r   r   r   r   r   r   r   r  r  r  rh  r  r  r:   r?   r=   <module>r     s   L    
    	  
  $ ! 1 1    & % 3 5 9 6 ; 
 P ; E T T  28  
		8	$\3'

CsCx89! ! !5c? !> >S#X >S T (AG A A(* (uT#s(^T#s(^5S/T (E x} E # E Po&	%S#
4.J . . .$S $3 $: $tCy/J
*+ _ Cy	
  
/@Hd38n Hc HV#O #OL	2 	2
- 
0 0 04[ 4 !%&*^4
^4^4 ^4 	^4
 ^4 ^4 #^4 ^4 
^4B	 0s 0y9I/J 0 0 !%&*
  	
   #  
r?   