o
    hW                  	   @  s  d Z ddlmZ zed  W n eefy   Y nw 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 ddlmZ eeZ					d'ddd(ddZ					d'd)dd Zd*d!d"Z d*d#d$Z!d*d%d&Z"dS )+z7Locations where we look for configs, install stuff, etc    )annotations_distutils_hackN)Command)SCHEME_KEYS)installget_python_lib)Scheme)WINDOWS)running_under_virtualenv   )get_major_minor_versionF)ignore_config_files	dist_namestruserboolhome
str | Nonerootisolatedprefixr   returndict[str, str]c             
   C  s  ddl m} d| i}|rdg|d< ||}	|s9z|	  W n ty8   |	 }
tdddd	 |
D  Y nw d
}|	jddd}|d
usHJ |}|rX|rXJ d| d| |rf|rfJ d| d| |pj|j	|_	|sp|rsd|_
|pw|j
|_
|p}|j|_|p|j|_|  i }tD ]}t|d| ||< qd|	dv r||j|jd t r|r|}n	|r|j}n|j
}tj|dddt  | |d< |d
urtjtj|d d }tj||dd
 |d< |S )z+
    Return a distutils install scheme
    r   )Distributionnamez--no-user-cfgscript_argsz6Ignore distutils configs in %s due to encoding errors.z, c                 s  s    | ]	}t j|V  qd S )N)ospathbasename).0p r"   U/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py	<genexpr>?   s    z#distutils_scheme.<locals>.<genexpr>Nr   T)createzuser=z prefix=zhome= install_install_lib)purelibplatlibincludesitepythonheadersr   )distutils.distr   parse_config_filesUnicodeDecodeErrorfind_config_filesloggerwarningjoinget_command_objr   r   r   r   finalize_optionsr   getattrget_option_dictupdater(   r   install_userbaser   r   r   
splitdriveabspath)r   r   r   r   r   r   r   r   	dist_argsdpathsobjischemekeypath_no_driver"   r"   r#   distutils_scheme$   sd   

rF   r	   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
    r*   r)   r.   scriptsdata)r*   r)   r.   rG   rH   )rF   r	   )r   r   r   r   r   r   rC   r"   r"   r#   
get_schemet   s   rI   c                  C  sr   t jtj} trt j| d}t j|st j| d}|S tjd d dkr2| d d dkr2dS t j| dS )NScriptsbin   darwin   z/System/Library/z/usr/local/bin)	r   r   normpathsysr   r
   r5   existsplatform)r   bin_pyr"   r"   r#   get_bin_prefix   s   "rT   c                   C  
   t ddS )NFplat_specificr   r"   r"   r"   r#   get_purelib      
rX   c                   C  rU   )NTrV   r   r"   r"   r"   r#   get_platlib   rY   rZ   )FNNFN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r	   )r   r   )#__doc__
__future__r   
__import__remove_shimImportErrorAttributeErrorloggingr   rP   distutils.cmdr   DistutilsCommanddistutils.command.installr   r   distutils_install_commanddistutils.sysconfigr   pip._internal.models.schemer	   pip._internal.utils.compatr
   pip._internal.utils.virtualenvr   baser   	getLogger__name__r3   rF   rI   rT   rX   rZ   r"   r"   r"   r#   <module>   sH    
R
#
