B
    `’»dN  ã               @   sè  d Z ddlm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 ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ erÌddlmZmZmZmZ ddlm Z! e "d¡Z#dd„ Z$dd„ Z%e &d¡Z'e (¡  )¡ dkr
e
 *¡ Z'ye +¡ Z,W n e-k
r2   ej.Z,Y nX er†ej/ 0ej1d¡Z2ej/ 0e,d¡Z3ej/ 4e2¡sÐej/ 0ej1d¡Z2ej/ 0e,d¡Z3nJej/ 0ej1d¡Z2ej/ 0e,d¡Z3ejdd… dkrÐej1dd… dkrÐdZ2d!dd„Z5d"dd „Z6dS )#z7Locations where we look for configs, install stuff, etcé    )Úabsolute_importN)Ú	sysconfig)ÚSCHEME_KEYS)Úinstall)ÚScheme)Úappdirs)ÚWINDOWS)ÚMYPY_CHECK_RUNNINGÚcast)Úrunning_under_virtualenv)ÚDictÚListÚOptionalÚUnion)ÚCommandÚpipc               C   s   dj tjŽ S )ze
    Return the major-minor version of the current Python as a string, e.g.
    "3.7" or "3.10".
    z{}.{})ÚformatÚsysÚversion_info© r   r   ú;/tmp/pip-unpacked-wheel-hu9qqap1/pip/_internal/locations.pyÚget_major_minor_version"   s    r   c              C   sZ   t ƒ rtj tjd¡} n6ytj t ¡ d¡} W n tk
rL   t d¡ Y nX tj 	| ¡S )NÚsrcz=The folder you are executing pip from can no longer be found.)
r   ÚosÚpathÚjoinr   ÚprefixÚgetcwdÚOSErrorÚexitÚabspath)Ú
src_prefixr   r   r   Úget_src_prefix+   s    r"   ÚpurelibÚpypyZScriptsÚbiné   Údarwiné   z/System/Library/z/usr/local/binFc             C   sˆ  ddl m} d| i}|r"dg|d< ||ƒ}| ¡  d}	|jddd	}	|	dk	sPt‚tt|	ƒ}
|rr|rrtd
 ||¡ƒ‚|rŠ|rŠtd ||¡ƒ‚|p’|
j|
_|sž|r¤d|
_	|p¬|
j	|
_	|p¸|
j
|
_
|pÄ|
j|
_|
 ¡  i }xtD ]}t|
d| ƒ||< qÚW d| d¡kr| t|
j|
jd¡ tƒ r„tj tj	ddd tƒ ¡| ¡|d< |dk	r„tj tj |d ¡¡d }tj ||dd… ¡|d< |S )z+
    Return a distutils install scheme
    r   )ÚDistributionÚnamez--no-user-cfgÚscript_argsNr   T)Úcreatezuser={} prefix={}zhome={} prefix={}Ú Úinstall_Úinstall_lib)r#   ÚplatlibÚincludeÚsitezpython{}Úheadersé   )Údistutils.distr)   Úparse_config_filesÚget_command_objÚAssertionErrorr
   Údistutils_install_commandr   Úuserr   ÚhomeÚrootÚfinalize_optionsr   ÚgetattrÚget_option_dictÚupdateÚdictr/   r   r   r   r   r   r   Ú
splitdriver    )Ú	dist_namer:   r;   r<   Úisolatedr   r)   Ú	dist_argsÚdÚobjÚiÚschemeÚkeyÚpath_no_driver   r   r   Údistutils_scheme_   sL    





rL   c             C   s8   t | |||||ƒ}t|d |d |d |d |d dS )a;  
    Get the "scheme" corresponding to the input parameters. The distutils
    documentation provides the context for the available schemes:
    https://docs.python.org/3/install/index.html#alternate-installation

    :param dist_name: the name of the package to retrieve the scheme for, used
        in the headers scheme path
    :param user: indicates to use the "user" scheme
    :param home: indicates to use the "home" scheme and provides the base
        directory for the same
    :param root: root under which other directories are re-based
    :param isolated: equivalent to --no-user-cfg, i.e. do not consider
        ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for
        scheme paths
    :param prefix: indicates to use the "prefix" scheme and provides the
        base directory for the same
    r0   r#   r3   ÚscriptsÚdata)r0   r#   r3   rM   rN   )rL   r   )rC   r:   r;   r<   rD   r   rI   r   r   r   Ú
get_schemeŸ   s    rO   )FNNFN)FNNFN)7Ú__doc__Ú
__future__r   r   Úos.pathÚplatformr2   r   r   Ú	distutilsÚdistutils_sysconfigÚdistutils.command.installr   r   r9   Úpip._internal.models.schemer   Zpip._internal.utilsr   Úpip._internal.utils.compatr   Úpip._internal.utils.typingr	   r
   Úpip._internal.utils.virtualenvr   Útypingr   r   r   r   Údistutils.cmdr   ZDistutilsCommandÚuser_cache_dirÚUSER_CACHE_DIRr   r"   Úget_pathÚsite_packagesÚpython_implementationÚlowerÚget_python_libÚgetusersitepackagesÚ	user_siteÚAttributeErrorÚ	USER_SITEr   r   r   Úbin_pyÚbin_userÚexistsrL   rO   r   r   r   r   Ú<module>   sX   
	
(
A    