o
    Ëý°jÎ  ã                   @   sT  d Z ddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZ g d¢ZedƒZdZe d¡ZG dd	„ d	eƒZ	d"d
eeef de
e dede	e de	e f
dd„Z	d"d
eeef de
e dede	e def
dd„Zdee	d  ddfdd„Zdedeeef fdd„ZG dd„ dƒZG dd„ dƒZG dd„ dƒZeeeef ZG d d!„ d!ƒZdS )#z	 PEP 610 é    N)ÚAnyÚDictÚIterableÚOptionalÚTypeÚTypeVarÚUnion)Ú	DirectUrlÚDirectUrlValidationErrorÚDirInfoÚArchiveInfoÚVcsInfoÚTzdirect_url.jsonz.^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$c                   @   s   e Zd ZdS )r
   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú’/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.pyr
      s    r
   ÚdÚexpected_typeÚkeyÚdefaultÚreturnc                 C   s4   || vr|S | | }t ||ƒstd |||¡ƒ‚|S )z3Get value from dictionary and verify expected type.z-{!r} has unexpected type for {} (expected {}))Ú
isinstancer
   Úformat©r   r   r   r   Úvaluer   r   r   Ú_get   s   
ÿÿr   c                 C   s(   t | |||ƒ}|d u rt|› d�ƒ‚|S )Nz must have a value)r   r
   r   r   r   r   Ú_get_required)   s   r   ÚinfosÚInfoTypec                 C   sF   dd„ | D ƒ} | st dƒ‚t| ƒdkrt dƒ‚| d d usJ ‚| d S )Nc                 S   s   g | ]}|d ur|‘qS ©Nr   )Ú.0Úinfor   r   r   Ú
<listcomp>3   s    z#_exactly_one_of.<locals>.<listcomp>z/missing one of archive_info, dir_info, vcs_infoé   z1more than one of archive_info, dir_info, vcs_infor   )r
   Úlen)r   r   r   r   Ú_exactly_one_of2   s   ÿÿr'   Úkwargsc                  K   s   dd„ |   ¡ D ƒS )z Make dict excluding None values.c                 S   s   i | ]\}}|d ur||“qS r!   r   )r"   ÚkÚvr   r   r   Ú
<dictcomp>B   s    z _filter_none.<locals>.<dictcomp>)Úitems)r(   r   r   r   Ú_filter_none@   s   r-   c                   @   s‚   e Zd ZdZ			ddededee dee dee ddfd	d
„Zedeeee	f  ded  fdd„ƒZ
deee	f fdd„ZdS )r   Úvcs_infoNÚvcsÚ	commit_idÚrequested_revisionÚresolved_revisionÚresolved_revision_typer   c                 C   s"   || _ || _|| _|| _|| _d S r!   ©r/   r1   r0   r2   r3   )Úselfr/   r0   r1   r2   r3   r   r   r   Ú__init__H   s
   
zVcsInfo.__init__r   c              	   C   sF   |d u rd S | t |tdƒt |tdƒt|tdƒt|tdƒt|tdƒd�S )Nr/   r0   r1   r2   r3   )r/   r0   r1   r2   r3   )r   Ústrr   ©Úclsr   r   r   r   Ú
_from_dictV   s   




ûzVcsInfo._from_dictc                 C   s   t | j| j| j| j| jd�S )Nr4   )r-   r/   r1   r0   r2   r3   ©r5   r   r   r   Ú_to_dictb   s   ûzVcsInfo._to_dict)NNN)r   r   r   Únamer7   r   r6   Úclassmethodr   r   r:   r<   r   r   r   r   r   E   s*    úþýüûú
ù$r   c                   @   sf   e Zd ZdZ	ddee ddfdd„Zedeeee	f  ded  fdd	„ƒZ
deee	f fd
d„ZdS )r   Úarchive_infoNÚhashr   c                 C   ó
   || _ d S r!   ©r@   )r5   r@   r   r   r   r6   o   ó   
zArchiveInfo.__init__r   c                 C   s   |d u rd S | t |tdƒd�S )Nr@   rB   )r   r7   r8   r   r   r   r:   u   s   zArchiveInfo._from_dictc                 C   s   t | jd�S )NrB   )r-   r@   r;   r   r   r   r<   {   s   zArchiveInfo._to_dictr!   )r   r   r   r=   r   r7   r6   r>   r   r   r:   r<   r   r   r   r   r   l   s    þþ
ý$r   c                   @   sb   e Zd ZdZ	ddeddfdd„Zedeee	e
f  ded  fd	d
„ƒZdee	e
f fdd„ZdS )r   Údir_infoFÚeditabler   Nc                 C   rA   r!   ©rE   )r5   rE   r   r   r   r6   ‚   rC   zDirInfo.__init__r   c                 C   s"   |d u rd S | t |tddd�d�S )NrE   F)r   rF   )r   Úboolr8   r   r   r   r:   ˆ   s   zDirInfo._from_dictc                 C   s   t | jpd d�S )NrF   )r-   rE   r;   r   r   r   r<   Ž   s   zDirInfo._to_dict)F)r   r   r   r=   rG   r6   r>   r   r   r7   r   r:   r<   r   r   r   r   r      s    þþ
ý$r   c                	   @   sÂ   e Zd Z	ddededee ddfdd„Zdedefd	d
„Zedefdd„ƒZ	ddd„Z
edeeef dd fdd„ƒZdeeef fdd„Zededd fdd„ƒZdefdd„Zdefdd„ZdS )r	   NÚurlr#   Úsubdirectoryr   c                 C   s   || _ || _|| _d S r!   )rH   r#   rI   )r5   rH   r#   rI   r   r   r   r6   –   s   
zDirectUrl.__init__Únetlocc                 C   sR   d|vr|S |  dd¡\}}t| jtƒr | jjdkr |dkr |S t |¡r'|S |S )Nú@r%   Úgit)Úsplitr   r#   r   r/   Ú
ENV_VAR_REÚmatch)r5   rJ   Ú	user_passÚnetloc_no_user_passr   r   r   Ú_remove_auth_from_netloc    s   
ÿ
z"DirectUrl._remove_auth_from_netlocc                 C   s<   t j | j¡}|  |j¡}t j |j||j|j	|j
f¡}|S )z¯url with user:password part removed unless it is formed with
        environment variables as specified in PEP 610, or it is ``git``
        in the case of a git URL.
        )ÚurllibÚparseÚurlsplitrH   rR   rJ   Ú
urlunsplitÚschemeÚpathÚqueryÚfragment)r5   ÚpurlrJ   Úsurlr   r   r   Úredacted_url®   s   ÿzDirectUrl.redacted_urlc                 C   s   |   |  ¡ ¡ d S r!   )Ú	from_dictÚto_dictr;   r   r   r   Úvalidate»   ó   zDirectUrl.validater   c                 C   sR   t t|tdƒt|tdƒtt t|tdƒ¡t t|tdƒ¡t	 t|tdƒ¡gƒd�S )NrH   rI   r?   rD   r.   )rH   rI   r#   )
r	   r   r7   r   r'   r   r:   Údictr   r   r8   r   r   r   r^   ¾   s   

ýÿýzDirectUrl.from_dictc                 C   s&   t | j| jd�}| j ¡ || jj< |S )N)rH   rI   )r-   r]   rI   r#   r<   r=   )r5   Úresr   r   r   r_   Ì   s   þzDirectUrl.to_dictÚsc                 C   s   |   t |¡¡S r!   )r^   ÚjsonÚloads)r9   rd   r   r   r   Ú	from_jsonÔ   s   zDirectUrl.from_jsonc                 C   s   t j|  ¡ dd�S )NT)Ú	sort_keys)re   Údumpsr_   r;   r   r   r   Úto_jsonØ   ra   zDirectUrl.to_jsonc                 C   s   t | jtƒo	| jjS r!   )r   r#   r   rE   r;   r   r   r   Úis_local_editableÛ   s   zDirectUrl.is_local_editabler!   )r   N)r   r   r   r7   r    r   r6   rR   Úpropertyr]   r`   r>   r   r   r^   r_   rg   rj   rG   rk   r   r   r   r   r	   •   s,    üþýü
û

r	   r!   )Ú__doc__re   ÚreÚurllib.parserS   Útypingr   r   r   r   r   r   r   Ú__all__r   ÚDIRECT_URL_METADATA_NAMEÚcompilerN   Ú	Exceptionr
   r7   r   r   r'   r-   r   r   r   r    r	   r   r   r   r   Ú<module>   sR    $
ÿ
ÿÿÿÿ
þÿ
ÿÿÿÿ
þ	'