o
    ­—ŽjW  ã                	   @  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| ƒ||< q�d|	 d¡v rª| |j|jdœ¡ tƒ rê|r²|}n	|r¸|j}n|j
}tj |dddtƒ › �| ¡|d< |d
u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_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"   ú_/var/www/kodo/Anonymous/send/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ú
#
