o
    ­—Žjp  ã                   @  sÒ   d dl m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 d dlmZ d dlmZmZ d d	lmZ e	rBd d
lmZ e
d Zddd„ZG dd„ dƒZG dd„ deƒZG dd„ ded ejd�ZdS )é    )ÚannotationsN)ÚIterable)ÚAbstractContextManager)ÚTYPE_CHECKINGÚLiteralÚProtocol)ÚVersion)Ú
get_scheme)Úget_default_environmentÚget_environment)Úget_requirement)ÚInstallRequirement)ÚoffÚvirtualÚvenvÚaÚstrÚbÚreturnútuple[str] | tuple[str, str]c                 C  s   | |kr| |fS | fS ©N© )r   r   r   r   úY/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pip/_internal/build_env/base.pyÚ_dedup   s   r   c                   @  s   e Zd Zddœdd	d
„ZdS )ÚPrefixN)Úvenv_executableÚpathr   r   ú
str | Noner   ÚNonec                C  s:   || _ d| _td|d�}|j| _t|j|jƒ| _|| _	d S )NFÚ )Úprefix)
r   Úsetupr	   ÚscriptsÚbin_dirr   ÚpurelibÚplatlibÚlib_dirsr   )Úselfr   r   Úschemer   r   r   Ú__init__   s   
zPrefix.__init__)r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r)   r   r   r   r   r      s    r   c                   @  s   e Zd ZdZddd„ZdS )ÚBuildEnvironmentInstallerz]
    Interface for installing build dependencies into an isolated build
    environment.
    ÚrequirementsúIterable[str]r    r   Úkindr   Úfor_reqúInstallRequirement | Noner   r   c                C  ó   d S r   r   )r'   r.   r    r0   r1   r   r   r   Úinstall*   s   z!BuildEnvironmentInstaller.installN)
r.   r/   r    r   r0   r   r1   r2   r   r   )r*   r+   r,   Ú__doc__r4   r   r   r   r   r-   $   s    r-   c                   @  sR   e Zd ZU dZded< ded< ejddd	„ƒZddd„Zejddœddd„ƒZ	dS )ÚBuildEnvironmentzACreates and manages an isolated environment to install build depsz	list[str]r&   r   Úpython_executableÚ	installerr-   c                 C  r3   r   r   )r'   r8   r   r   r   r)   :   s   zBuildEnvironment.__init__Úreqsr/   r   ú%tuple[set[tuple[str, str]], set[str]]c           	      C  sÎ   t ƒ }t ƒ }|rct| dƒrt| jƒntƒ }|D ]K}t|ƒ}|jdur+|j ddi¡s+q| |j	¡}|s9| 
|¡ qt|jtƒrI|j	› d|j› �}n	|j	› d|j› �}|jj|jdd�sb| 
||f¡ q||fS )	zŽReturn 2 sets:
        - conflicting requirements: set of (installed, wanted) reqs tuples
        - missing requirements: set of reqs
        r&   NÚextrar   z==z===T)Úprereleases)ÚsetÚhasattrr   r&   r
   r   ÚmarkerÚevaluateÚget_distributionÚnameÚaddÚ
isinstanceÚversionr   Ú	specifierÚcontains)	r'   r9   ÚmissingÚconflictingÚenvÚreq_strÚreqÚdistÚinstalled_req_strr   r   r   Úcheck_requirements=   s,   ÿý
€z#BuildEnvironment.check_requirementsN)r1   r.   Úprefix_as_stringr0   r1   r2   r   c                C  r3   r   r   )r'   r.   rP   r0   r1   r   r   r   Úinstall_requirements_   s   z%BuildEnvironment.install_requirements)r8   r-   )r9   r/   r   r:   )
r.   r/   rP   r   r0   r   r1   r2   r   r   )
r*   r+   r,   r5   Ú__annotations__ÚabcÚabstractmethodr)   rO   rQ   r   r   r   r   r6   4   s   
 
"úr6   )Ú	metaclass)r   r   r   r   r   r   )Ú
__future__r   rS   Úcollections.abcr   Ú
contextlibr   ÚContextManagerÚtypingr   r   r   Úpip._vendor.packaging.versionr   Úpip._internal.locationsr	   Úpip._internal.metadatar
   r   Úpip._internal.utils.packagingr   Úpip._internal.req.req_installr   ÚBuildIsolationModer   r   r-   ÚABCMetar6   r   r   r   r   Ú<module>   s     
