
    hk                     ~   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&m'Z' ddl(m)Z)m*Z* ddl+m,Z, dd	l-m.Z. dd
l/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@mAZA ddlBmCZCmDZDmEZEmFZF ddlGmHZHmIZImJZJmKZK ddlLmMZM er G d de"      ZN ej                  eP      ZQ e deR      ZSe%eSeRe&eTeRf   f   ZUdHdeRdeTde%eReRf   fdZVdeRdeeRef   fdZWdeRdeXfdZYdedeXfdZZd e6de%eeReRf   eeReRf   f   fd!Z[d"e#eR   de!eR   fd#Z\d$eeU   dee%eReReRf      fd%Z]d&eSd'eRdeRfd(Z^deRd'eRdeSfd)Z_d*eeeR      d+eeSeSf   d,e$eS   d-eeR   d'eRdeeU   fd.Z`d/eeReRf   deeR   fd0Za G d1 d2      Zb G d3 d4      Zc G d5 d6e2      Zdd7eRddfd8Ze G d9 d:e,      Zf	 	 	 	 dId;eRd<e)d=eRd>e>d?eXd@eXdAe!e;   dBeXddfdCZgej                  dDeRdedE   fdF       Zi	 	 	 	 dId;eRd=eRd>e>dDeRd?eXd@eXdAe!e;   dBeXddfdGZjy)JzGSupport for installing and building the "wheel" binary package format.
    N)urlsafe_b64encode)Message)chainfilterfalsestarmap)IOTYPE_CHECKING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    OD:\EasyAligner\venv\Lib\site-packages\pip/_internal/operations/install/wheel.pysavez	File.saveF   s        returnN)__name__
__module____qualname____annotations__strboolr?   r;   r@   r>   r4   r4   A   s    %%	r@   r4   r5   path	blocksizerB   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rstriprG   )rI   rJ   hlengthrN   s        r>   rehashrS   P   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)rT   newlineencodingr;   )rT   s    r>   csv_io_kwargsrZ   W   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)osrI   isfileopenreadline
startswithsys
executableencodegetfilesystemencodinglinesepreadwrite)rI   script	firstlineexenamerests        r>   
fix_scriptro   ^   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-PurelibrV   true)getlower)rp   s    r>   wheel_root_is_purelibru   r   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)rv   rx   ry   entry_points       r>   get_entrypointsr   v   su    OK--/ 110;0A0AOK,,--/,7,=,=K(()	 0
 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PATHrV      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      IQ!Is   ziNOTE: The current PATH contains path(s) starting with `~`, which may not be expanded by all applications.
)collectionsdefaultdictsetr_   rI   dirnamebasenameaddenvironrs   splitpathsepnormcasenormpathrP   sepappendrd   re   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WW__X.
gg&&x0z"&&{3  +11"**==A 	))!,-44RVV<=   
))"''//#..*IJK
 $2#7#7#9%#9J77BGG,,Z89N 	G#9  %
  I#+>>#3
K$*;$7~!#">!#4"5S9J)00		."-.8>";MMJ 	:,oj\9PQ	
 $4	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r:   )rG   )r   record_pathhash_sizes       r>   r   z&_normalized_outrows.<locals>.<genexpr>   s&      HO,DKeSY's   )r   )r   s    r>   _normalized_outrowsr      s    *  HO  r@   r   lib_dirc                 B    t         j                  j                  ||       S r:   )r_   rI   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   /r5   )r_   rI   
splitdrivert   relpathr)   r   r   )rI   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	installedr8   	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: %sr5   r   r   rV      )
r   loggerwarningr   poprS   r   r   r   values)r   r   r8   r   r   installed_rowsrowold_record_pathnew_record_pathrN   rR   frI   installed_record_paths                 r>   get_csv_rows_for_installedr      s"    -/Ns8a<NNI3O|SV4#--Ig%#$6$PQNFF"3x!|SVF"3x!|SVF?@  !!W-tVV45  ENEUEUEWEW,A	B'EW   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 = rV   
altinstallr   z = zpip(\d+(\.\d+)?)?$easy_installzeasy_install = zeasy_install-zeasy_install(-\d+\.\d+)?${} = {})copyr   r_   r   r   rs   rd   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$KW1F(J!WKA
 !++nd;bjj0&&'8;N'NO""356c:M9NO	

 
!"((+G"KAw 	 
 !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)
ZipBackedFiler6   r7   zip_filerB   Nc                 <    || _         || _        || _        d| _        y NF)r6   r7   	_zip_filer8   )r=   r6   r7   r   s       r>   __init__zZipBackedFile.__init__]  s!      /"!r@   c                 L    | j                   j                  | j                        S r:   )r   getinfor6   r<   s    r>   _getinfozZipBackedFile._getinfoe  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_   rI   existsr7   unlinkr   ra   	file_sizer   minshutilcopyfileobjr1   r0   )r=   zipinfodestr   rJ   s        r>   r?   zZipBackedFile.saveh  s     77>>$..)IIdnn%--/ $..$'4  1$^^((1Q #G$5$5{ CI&&q$	: 2 ( "'*>t~~N +	 21 ('s$   /+D.C:D:D	?DDrA   )
rC   rD   rE   r5   rG   r   r   r   r   r?   r;   r@   r>   r   r   \  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   )_filer6   r7   r8   )r=   files     r>   r   zScriptFile.__init__  s3    
#zz99--r@   c                 l    | j                   j                          t        | j                        | _        y r:   )r   r?   ro   r7   r8   r<   s    r>   r?   zScriptFile.save  s     

!$..1r@   )r   r4   rB   NrA   )rC   rD   rE   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~   rB   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@   )rC   rD   rE   rG   r   __classcell__r   s   @r>   r   r     s    
C 
D 
 
r@   r   specificationc                 `    t        |       }|!|j                  t        t        |            y y r:   )r   suffixr   rG   )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  optionsrB   c                 :    t        |       t        | 	  ||      S r:   )r  r   make)r=   r  r  r   s      r>   r
  zPipScriptMaker.make  s     	&m4w|M733r@   r:   )
rC   rD   rE   rG   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   modifiedrB   Nc                 P    t        |      }|| <   |rj                  |       yy)z6Map archive RECORD paths to installation RECORD paths.N)r   r   )r  r   r  newpathr8   r   r   s       r>   record_installedz(_install_wheel.<locals>.record_installed  s/     %Xw7$	'KK  r@   rI   c                 $    | j                  d      S )Nr   )endswithrI   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   r4   c                 ,     dt         ddf fd}|S )Nr   rB   r4   c                     t         j                  j                  |       }t         j                  j                  |      } |       t	        | |      S r:   )r_   rI   r   r   r   )r   normed_pathr7   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@   )r5   )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   rB   r4   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_   rI   r   r   r   
ValueErrorr   KeyErrorr   r   r   )r   r#  _
scheme_keydest_subpathr  scheme_pathvalid_scheme_keysr7   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&   getattrr5   )r   r  keyr1  r0  r   r  s   `   @r>   data_scheme_file_makerz._install_wheel.<locals>.data_scheme_file_maker  sP     >II[c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   r6  r   r   )r   r   r  )rI   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)r7   r_   rI   r   rt   r  )r   rI   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_   rI   r   r`   r  )installed_pathfull_installed_pathr   r   s     r>   pyc_source_file_pathsz-_install_wheel.<locals>.pyc_source_file_pathsQ  sf     
 %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quietr5   r   rV   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r:   )r(   r_   chmodr}   r)   )rI   rL  r   generated_file_modes      r>   _generate_filez&_install_wheel.<locals>._generate_file  sI     t.v.!G /
,- /.s   A A?A AA 	INSTALLERs   pip
rW   	REQUESTEDr^   RECORD)r   r8   r   r   wzIO[str])F)Tr2   ru   purelibplatlibr   r5   rG   rH   r   r   r'   r   r   namelistr   r-   mapr   r#   r"   r   r   r   r_   rI   r   r7   r+   r   r?   r6   r8   r   
contextlibredirect_stdoutr*   from_streamrd   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   rj   r   r$   to_jsonrf   ra   	read_textcsvreader
splitlinesr   rZ   writer	writerowsr   )Ar}   r  r  r  r  r  r  r  info_dirrp   r   r  r  r%  r4  r7  paths
file_pathsroot_scheme_pathsdata_scheme_pathsr$  filesr:  other_scheme_pathsscript_scheme_pathsr1  other_scheme_filesdistributionr?  script_scheme_filesexisting_parentsr   r   rC  rH  r\  rI   successpyc_pathpyc_record_pathmakerr   gui_scripts_to_generategenerated_console_scriptsmsgrP  dest_info_dirinstaller_pathinstaller_filedirect_url_pathdirect_url_filerequested_pathrecord_textrecord_rowsrowsr   record_filero  r   r8   r   rO  r>  r   r   sA     `                                                       @@@@@@@r>   _install_wheelr    sd   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 WW__T^^4
--z"  ,		--t~~t||L &9S$_#= &6c 6c 6
 ''%%cjj1
((*''113D(55d$dSG#24#8!ww~~h777*.((*:*:277;;*L+ )(C 4 +
 	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,!!*"4"4"6"="=g"FG -) m[A.$' ((((2Kszz+"8"8":;<K%D '',,}h7K		:}S'9	:k DK89,T23	 
;	:s +*
 
x 
(	' -, ('$ 
;	:s[   [,:['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    sU     
	-/%#%9%#	 0 
.	-// 
.	-s   A?AA	AA)r   )TTNF)k__doc__r   r`  rY  rl  rE  loggingos.pathr_   r   r   rd   r]  base64r   email.messager   	itertoolsr   r   r   typingr   r	   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/   r0   r1   pip._internal.utils.wheelr2   r4   	getLoggerrC   r   rG   r5   intInstalledCSVRowrS   rZ   rH   ro   ru   r   r   r   r   r   r   r   r   r   r   r  r  r  ri  r  r  r;   r@   r>   <module>r     s      
    	  
  $ ! 1 1    ( % 3 5 9 6 ; 
 P ; E T T  2x  
		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@   