o
    Ëý°j*q  ã                
   @   sh  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mZ ddlm	Z	 ddl
mZ ddlm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 ddlmZ ddlmZ ddlmZ dZddddddœZddddddœddddddœeddddddœddddddœdœZerœdddd d!dœed"< ddd#d$d!dœed%< dZd&d'„ Zd(d)„ Z d*d+„ Z!G d,d-„ d-e	ƒZ"dS ).zFdistutils.command.install

Implements the Distutils 'install' command.é    N)Úlog)ÚCommand)ÚDEBUG)Úget_config_vars)ÚDistutilsPlatformError)Ú
write_file)Úconvert_pathÚ
subst_varsÚchange_root)Úget_platform)ÚDistutilsOptionError)Ú	USER_BASE)Ú	USER_SITETz{base}/Lib/site-packagesz{base}/Include/{dist_name}z{base}/Scriptsz{base})ÚpurelibÚplatlibÚheadersÚscriptsÚdatazA{base}/lib/{implementation_lower}{py_version_short}/site-packageszN{platbase}/{platlibdir}/{implementation_lower}{py_version_short}/site-packageszM{base}/include/{implementation_lower}{py_version_short}{abiflags}/{dist_name}z
{base}/binz!{base}/lib/{implementation_lower}z*{base}/{platlibdir}/{implementation_lower}z1{base}/include/{implementation_lower}/{dist_name}z{base}/site-packagesz{base}/include/{dist_name})Úposix_prefixÚ
posix_homeÚntÚpypyÚpypy_ntz
{usersite}zA{userbase}/{implementation}{py_version_nodot}/Include/{dist_name}z5{userbase}/{implementation}{py_version_nodot}/Scriptsz
{userbase}Únt_userzQ{userbase}/include/{implementation_lower}{py_version_short}{abiflags}/{dist_name}z{userbase}/binÚ
posix_userc                   C   s@   t  t¡� dd„ t ¡ D ƒW  d   ƒ S 1 sw   Y  d S )Nc                 S   s   i | ]
}|t j|d d�“qS )F)Úexpand)Ú	sysconfigÚ	get_paths©Ú.0Úscheme© r!   ú˜/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.pyÚ
<dictcomp>\   s    ÿÿz+_load_sysconfig_schemes.<locals>.<dictcomp>)Ú
contextlibÚsuppressÚAttributeErrorr   Úget_scheme_namesr!   r!   r!   r"   Ú_load_sysconfig_schemesZ   s
   þ$ÿr(   c                      s(   t ƒ pi ‰ ‡ fdd„tt tˆ ¡ƒD ƒS )z=
    Extend default schemes with schemes from sysconfig.
    c                    s*   i | ]}|i t  |i ¡¥ˆ  |i ¡¥“qS r!   )ÚINSTALL_SCHEMESÚgetr   ©Úsysconfig_schemesr!   r"   r#   i   s    ü
ÿ
þÿz!_load_schemes.<locals>.<dictcomp>)r(   ÚsetÚ	itertoolsÚchainr)   r!   r!   r+   r"   Ú_load_schemesb   s   

ûr0   c                   C   s   t tdƒrdS dS )NÚpypy_version_infoÚPyPyÚPython)ÚhasattrÚsysr!   r!   r!   r"   Ú_get_implementationr   s   
r6   c                   @   s  e Zd ZdZg d¢Zg d¢Zere ddde f¡ e d¡ ddiZ	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3efd4efd5efd6efd7d8d9„ fgZdS ):Úinstallz'install everything from build directory))zprefix=Nzinstallation prefix)zexec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)zinstall-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nz<install everything relative to this alternate root directory)zinstall-purelib=Nz;installation directory for pure Python module distributions)zinstall-platlib=Nz8installation directory for non-pure module distributions)zinstall-lib=Nzginstallation directory for all module distributions (overrides --install-purelib and --install-platlib))zinstall-headers=Nz(installation directory for C/C++ headers)zinstall-scripts=Nz)installation directory for Python scripts)zinstall-data=Nz%installation directory for data files)ÚcompileÚczcompile .py to .pyc [default])ú
no-compileNzdon't compile .py files)z	optimize=ÚOzlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])ÚforceÚfz1force installation (overwrite any existing files))ú
skip-buildNz2skip rebuilding everything (for testing/debugging))zrecord=Nz3filename in which to record list of installed files)r8   r<   r>   ÚuserNz!install in user site-package '%s'r:   r8   c                 C   sš   d| _ d| _d| _d| _d| _d| _d| _d| _d| _d| _	d| _
d| _d| _t| _t| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _dS )zInitializes options.Nr   é   )ÚprefixÚexec_prefixÚhomer?   Úinstall_baseÚinstall_platbaseÚrootÚinstall_purelibÚinstall_platlibÚinstall_headersÚinstall_libÚinstall_scriptsÚinstall_datar   Úinstall_userbaser   Úinstall_usersiter8   ÚoptimizeÚ
extra_pathÚinstall_path_filer<   Ú
skip_buildÚwarn_dirÚ
build_baseÚ	build_libÚrecord©Úselfr!   r!   r"   Úinitialize_optionsÂ   s2   
zinstall.initialize_optionsc                 C   sš  | j s	| js	| jr| js| jrtdƒ‚| jr | j s| jr tdƒ‚| jr6| j s2| js2| js2| js2| jr6tdƒ‚tjdkrF| jrF|  	d¡ d| _|  
d¡ tjdkrU|  ¡  n|  ¡  |  
d¡ tj ¡ d	 }td
dƒ\}}ztj}W n ty|   d}Y nw | j ¡ | j ¡ | j ¡ |dtjdd…  dtjdd…  |||||ttddƒtƒ  ¡ tƒ dœ| _tr¼| j| jd< | j| jd< |  ¡  |  
d¡ | j| jd< | j| jd< t  ¡ d | jd< t!rëd	dl"m"} t#dƒ || jƒ |  $¡  |  
d¡ | jrû|  %¡  | j&du �r| j '¡ �r| j(| _&n| j)| _&|  *dddddd dd¡ |  +¡  | j&| _,tj- .| j&| j/¡| _&| j0du�r?|  1d!dddddd ¡ |  
d"¡ |  2d#d$d%¡ dS )&zFinalizes options.zWmust supply either prefix/exec-prefix/home or install-base/install-platbase -- not bothz9must supply either home or prefix/exec-prefix -- not bothzGcan't combine user with prefix, exec_prefix/home, or install_(plat)baseÚposixz+exec-prefix option ignored on this platformNzpre-finalize_{unix,other}zpost-finalize_{unix,other}()r   rA   rB   Ú z%d.%dé   z%d%dÚ
platlibdirÚlib)Ú	dist_nameÚdist_versionÚdist_fullnameÚ
py_versionÚpy_version_shortÚpy_version_nodotÚ
sys_prefixrA   Úsys_exec_prefixrB   Úabiflagsr]   Úimplementation_lowerÚimplementationÚuserbaseÚusersitezpost-expand_basedirs()ÚbaseÚplatbaseÚinstalled_base)Úpprintzconfig vars:zpost-expand_dirs()r   r   r   r   r   Úlibbasezafter prepending rootÚbuild)rT   rT   )rU   rU   )3rA   rB   rC   rD   rE   r   r?   ÚosÚnameÚwarnÚ	dump_dirsÚfinalize_unixÚfinalize_otherr5   ÚversionÚsplitr   rg   r&   ÚdistributionÚget_nameÚget_versionÚget_fullnameÚversion_infoÚgetattrr6   ÚlowerÚconfig_varsÚHAS_USER_SITErM   rN   Úexpand_basedirsr   r   ro   ÚprintÚexpand_dirsÚcreate_home_pathrJ   Úhas_ext_modulesrH   rG   Úconvert_pathsÚhandle_extra_pathÚinstall_libbaseÚpathÚjoinÚ
extra_dirsrF   Úchange_rootsÚset_undefined_options)rX   rb   rA   rB   rg   ro   r!   r!   r"   Úfinalize_options  s¬   ÿÿÿÿÿÿ







þ
ó

ÿ



þ	ÿ
þzinstall.finalize_optionsc                 C   s    t sdS ddlm} t |d ¡ | jD ]9}|d }|d dkr&|dd… }|| jv r<| j| }| |¡}t| |ƒ }n
| |¡}t| |ƒ}t d||¡ qdS )zDumps the list of user options.Nr   )Úlongopt_xlateú:éÿÿÿÿú=z  %s: %s)	r   Údistutils.fancy_getoptr‘   r   ÚdebugÚuser_optionsÚnegative_optÚ	translater   )rX   Úmsgr‘   ÚoptÚopt_nameÚvalr!   r!   r"   ru   ª  s    





õzinstall.dump_dirsc                 C   s8  | j dus
| jdur.| jdu r| jdu r| jdu s(| jdu s(| jdu s(| jdu r,tdƒ‚dS | j	rH| j
du r:tdƒ‚| j
 | _ | _|  d¡ dS | jdur[| j | _ | _|  d¡ dS | jdu r„| jduritdƒ‚ttddƒ}tj tj¡| | _tj tj¡| | _n	| jdu r�| j| _| j| _ | j| _|  d	¡ dS )
z&Finalizes options for posix platforms.NzPinstall-base or install-platbase supplied, but installation scheme is incompleteú$User base directory is not specifiedr   r   z*must not supply exec-prefix without prefixÚ_prefix_additionr[   r   )rD   rE   rJ   rG   rH   rI   rK   rL   r   r?   rM   r   Úselect_schemerC   rA   rB   r   r   rr   r‹   Únormpathr5   )rX   rŸ   r!   r!   r"   rv   ½  sH   





ÿ
ÿ


ÿÿÿ
zinstall.finalize_unixc                 C   s¸   | j r| jdu rtdƒ‚| j | _| _|  tjd ¡ dS | jdur0| j | _| _|  d¡ dS | j	du r=tj
 tj	¡| _	| j	 | _| _z	|  tj¡ W dS  ty[   tdtj ƒ‚w )z)Finalizes options for non-posix platformsNrž   Ú_userr   z)I don't know how to install stuff on '%s')r?   rM   r   rD   rE   r    rr   rs   rC   rA   r‹   r¡   r5   ÚKeyErrorrW   r!   r!   r"   rw   ê  s(   
ÿ

ÿÿzinstall.finalize_otherc                 C   sp   t tdƒrtjdk r| d¡stjdkrd}nd}tƒ | }tD ]}d| }t| |ƒdu r5t	| ||| ƒ q dS )	z=Sets the install directories by applying the install schemes.r1   )é   é   )r¢   Ú_homer   r   r   Úinstall_N)
r4   r5   r~   Úendswithrr   rs   r0   ÚSCHEME_KEYSr   Úsetattr)rX   rs   r    ÚkeyÚattrnamer!   r!   r"   r       s   

ÿ

€ýzinstall.select_schemec                 C   sX   |D ]'}t | |ƒ}|d ur)tjdkstjdkrtj |¡}t|| jƒ}t| ||ƒ qd S )NrZ   r   )r   rr   rs   r‹   Ú
expanduserr	   r�   rª   )rX   ÚattrsÚattrr�   r!   r!   r"   Ú_expand_attrs  s   
€úzinstall._expand_attrsc                 C   ó   |   g d¢¡ dS )zNCalls `os.path.expanduser` on install_base, install_platbase and
        root.)rD   rE   rF   N©r°   rW   r!   r!   r"   rƒ     s   zinstall.expand_basedirsc                 C   r±   )z+Calls `os.path.expanduser` on install dirs.)rG   rH   rJ   rI   rK   rL   Nr²   rW   r!   r!   r"   r…     s   zinstall.expand_dirsc                 G   s,   |D ]}d| }t | |tt| |ƒƒƒ qdS )z!Call `convert_path` over `names`.r§   N)rª   r   r   ©rX   Únamesrs   r¯   r!   r!   r"   rˆ   $  s   þzinstall.convert_pathsc                 C   s¤   | j du r
| jj | _ | j durFt d¡ t| j tƒr!| j  d¡| _ t| j ƒdkr0| j d  }}nt| j ƒdkr=| j \}}ntdƒ‚t	|ƒ}nd}d}|| _
|| _dS )	z4Set `path_file` and `extra_dirs` using `extra_path`.NzIDistribution option extra_path is deprecated. See issue27919 for details.ú,r@   r   r\   zY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsr[   )rP   rz   r   rt   Ú
isinstanceÚstrry   Úlenr   r   Ú	path_filer�   )rX   r¹   r�   r!   r!   r"   r‰   *  s(   


ÿÿ

zinstall.handle_extra_pathc              	   G   s0   |D ]}d| }t | |t| jt| |ƒƒƒ qdS )z:Change the install directories pointed by name using root.r§   N)rª   r
   rF   r   r³   r!   r!   r"   rŽ   L  s   þzinstall.change_rootsc                 C   sb   | j sdS ttj d¡ƒ}| j ¡ D ]\}}| |¡r.tj |¡s.|  	d| ¡ t 
|d¡ qdS )zCreate directories under ~.Nú~zos.makedirs('%s', 0o700)iÀ  )r?   r   rr   r‹   r­   r�   ÚitemsÚ
startswithÚisdirÚdebug_printÚmakedirs)rX   rC   rs   r‹   r!   r!   r"   r†   R  s   €ýzinstall.create_home_pathc                 C   s&  | j s|  d¡ | j d¡j}| jr|tƒ krtdƒ‚|  ¡ D ]}|  |¡ q| j	r.|  
¡  | jr]|  ¡ }| jrPt| jƒ}tt|ƒƒD ]}|| |d… ||< qC|  t| j|fd| j ¡ ttjjtjƒ}ttjj|ƒ}tj tj | j¡¡}| jr�| j	r€| js‘||vr�t d| j¡ dS dS dS dS )zRuns the command.rq   z"Can't install when cross-compilingNz'writing list of installed files to '%s'zƒmodules installed to '%s', which is not in Python's module search path (sys.path) -- you'll have to change the search path yourself)rR   Úrun_commandrz   Úget_command_objÚ	plat_namerS   r   r   Úget_sub_commandsr¹   Úcreate_path_filerV   Úget_outputsrF   r¸   ÚrangeÚexecuter   Úmaprr   r‹   r¡   r5   ÚnormcaserJ   rQ   r   r–   )rX   Ú
build_platÚcmd_nameÚoutputsÚroot_lenÚcounterÚsys_pathrJ   r!   r!   r"   Úrun^  sH   

ÿþÿÿýýþzinstall.runc                 C   sL   t j | j| jd ¡}| jr|  t|| jgfd| ¡ dS |  	d| ¡ dS )zCreates the .pth fileú.pthzcreating %szpath file '%s' not createdN)
rr   r‹   rŒ   rŠ   r¹   rQ   rÇ   r   r�   rt   )rX   Úfilenamer!   r!   r"   rÄ   Š  s   
ÿ
þzinstall.create_path_filec                 C   sh   g }|   ¡ D ]}|  |¡}| ¡ D ]}||vr| |¡ qq| jr2| jr2| tj | j	| jd ¡¡ |S )z.Assembles the outputs of all the sub-commands.rÑ   )
rÃ   Úget_finalized_commandrÅ   Úappendr¹   rQ   rr   r‹   rŒ   rŠ   )rX   rÌ   rË   ÚcmdrÒ   r!   r!   r"   rÅ   ˜  s   

€þÿzinstall.get_outputsc                 C   s.   g }|   ¡ D ]}|  |¡}| | ¡ ¡ q|S )z*Returns the inputs of all the sub-commands)rÃ   rÓ   ÚextendÚ
get_inputs)rX   ÚinputsrË   rÕ   r!   r!   r"   r×   ©  s
   
zinstall.get_inputsc                 C   s   | j  ¡ p	| j  ¡ S )zSReturns true if the current distribution has any Python
        modules to install.)rz   Úhas_pure_modulesr‡   rW   r!   r!   r"   Úhas_libµ  s   
ÿzinstall.has_libc                 C   ó
   | j  ¡ S )zLReturns true if the current distribution has any headers to
        install.)rz   Úhas_headersrW   r!   r!   r"   rÜ   »  ó   
zinstall.has_headersc                 C   rÛ   )zMReturns true if the current distribution has any scripts to.
        install.)rz   Úhas_scriptsrW   r!   r!   r"   rÞ   À  rÝ   zinstall.has_scriptsc                 C   rÛ   )zJReturns true if the current distribution has any data to.
        install.)rz   Úhas_data_filesrW   r!   r!   r"   Úhas_dataÅ  rÝ   zinstall.has_datarJ   rI   rK   rL   Úinstall_egg_infoc                 C   s   dS )NTr!   rW   r!   r!   r"   Ú<lambda>Ð  s    zinstall.<lambda>) Ú__name__Ú
__module__Ú__qualname__Údescriptionr—   Úboolean_optionsr‚   rÔ   r   r˜   rY   r�   ru   rv   rw   r    r°   rƒ   r…   rˆ   r‰   rŽ   r†   rÐ   rÄ   rÅ   r×   rÚ   rÜ   rÞ   rà   Úsub_commandsr!   r!   r!   r"   r7   y   sL    ;ÿ
N -	",
ür7   )#Ú__doc__r5   rr   r$   r   r.   Ú	distutilsr   Údistutils.corer   Údistutils.debugr   Údistutils.sysconfigr   Údistutils.errorsr   Údistutils.file_utilr   Údistutils.utilr   r	   r
   r   r   Úsiter   r   r‚   ÚWINDOWS_SCHEMEr)   r©   r(   r0   r6   r7   r!   r!   r!   r"   Ú<module>   sˆ    û
ûûûûé!
û	
ú