U
    cUh                     @   s^  d Z ddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZmZ ddddd	gZed
ZdZedZG dd deZde
eef ee eee ee dddZde
eef ee eee edddZeed  ddddZee
eef dddZeG dd	 d	ZG dd dZeG dd dZeeeef ZeG dd dZ dS ) z	 PEP 610     N)	dataclass)AnyClassVar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   _/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/pip/_internal/models/direct_url.pyr      s   )dexpected_typekeydefaultreturnc                 C   s<   || kr|S | | }t ||s8t|d| d| d|S )z3Get value from dictionary and verify expected type.z has unexpected type for z (expected ))
isinstancer   r   r   r   r   valuer   r   r   _get   s    
r   c                 C   s(   t | |||}|d kr$t| d|S )Nz must have a value)r   r   r   r   r   r   _get_required)   s    r    InfoType)infosr   c                 C   sF   dd | D } | st dt| dkr.t d| d d k	s>t| d S )Nc                 S   s   g | ]}|d k	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AssertionError)r"   r   r   r   _exactly_one_of2   s    r*   )kwargsr   c                  K   s   dd |   D S )z Make dict excluding None values.c                 S   s   i | ]\}}|d k	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    r0   c                   @   st   e Zd ZU dZeed< eed< eed< dZee ed< e	ee
eef  ed  ddd	Ze
eef d
ddZdS )r   vcs_infonamevcs	commit_idNrequested_revisionr   r   c                 C   s2   |d krd S | t |tdt |tdt|tddS )Nr3   r4   r5   )r3   r4   r5   )r    strr   clsr   r   r   r   
_from_dictM   s    


zVcsInfo._from_dictr   c                 C   s   t | j| j| jdS )N)r3   r5   r4   )r0   r3   r5   r4   selfr   r   r   _to_dictW   s
    zVcsInfo._to_dict)r   r   r   r2   r   __annotations__r7   r5   r   classmethodr   r   r:   r>   r   r   r   r   r   E   s   
"	c                   @   s   e Zd ZdZdee eeeef  ddddZeee dddZ	e	j
ee dd	d
dZ	eeeeef  ed  dddZeeef dddZdS )r   archive_infoN)hashhashesr   c                 C   s   || _ || _d S r#   )rC   rB   )r=   rB   rC   r   r   r   __init__b   s    zArchiveInfo.__init__r;   c                 C   s   | j S r#   )_hashr<   r   r   r   rB   k   s    zArchiveInfo.hash)r   r   c                 C   s   |d k	rvz| dd\}}W n" tk
r>   td|Y nX | jd krV||i| _n || jkrv| j | _|| j|< || _d S )N=r'   z"invalid archive_info.hash format: )split
ValueErrorr   rC   copyrE   )r=   r   	hash_nameZ
hash_valuer   r   r   rB   o   s    



r6   c                 C   s(   |d krd S | t |tdt |tddS )NrB   rC   rB   rC   )r   r7   dictr8   r   r   r   r:      s    zArchiveInfo._from_dictc                 C   s   t | j| jdS )NrK   )r0   rB   rC   r<   r   r   r   r>      s    zArchiveInfo._to_dict)NN)r   r   r   r2   r   r7   r   rD   propertyrB   setterr@   r   r:   r>   r   r   r   r   r   _   s     	"c                   @   s`   e Zd ZU dZeed< dZeed< ee	e
eef  e	d  dddZe
eef dd	d
ZdS )r   dir_infor2   Feditabler6   c                 C   s"   |d krd S | t |tddddS )NrP   F)r   rP   )r    boolr8   r   r   r   r:      s    zDirInfo._from_dictr;   c                 C   s   t | jp
d dS )NrQ   )r0   rP   r<   r   r   r   r>      s    zDirInfo._to_dictN)r   r   r   r2   r   r?   rP   rR   r@   r   r   r7   r   r:   r>   r   r   r   r   r      s
   
"c                   @   s   e Zd ZU eed< eed< dZee ed< eedddZe	edd	d
Z
ddddZeeeef d dddZeeef dddZeed dddZedddZedddZdS )r   urlr%   Nsubdirectory)netlocr   c                 C   sR   d|kr|S | dd\}}t| jtr@| jjdkr@|dkr@|S t|rN|S |S )N@r'   git)rG   r   r%   r   r3   
ENV_VAR_REmatch)r=   rU   Z	user_passZnetloc_no_user_passr   r   r   _remove_auth_from_netloc   s    


z"DirectUrl._remove_auth_from_netlocr;   c                 C   s<   t j| j}| |j}t j|j||j|j	|j
f}|S )zurl 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urlsplitrS   rZ   rU   
urlunsplitschemepathqueryfragment)r=   purlrU   surlr   r   r   redacted_url   s    zDirectUrl.redacted_urlc                 C   s   |  |   d S r#   )	from_dictto_dictr<   r   r   r   validate   s    zDirectUrl.validater6   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 )NrS   rT   rA   rO   r1   )rS   rT   r%   )
r   r    r7   r   r*   r   r:   rL   r   r   r8   r   r   r   rf      s    

zDirectUrl.from_dictc                 C   s&   t | j| jd}| j || jj< |S )N)rS   rT   )r0   re   rT   r%   r>   r2   )r=   resr   r   r   rg      s    zDirectUrl.to_dict)sr   c                 C   s   |  t|S r#   )rf   jsonloads)r9   rj   r   r   r   	from_json   s    zDirectUrl.from_jsonc                 C   s   t j|  ddS )NT)	sort_keys)rk   dumpsrg   r<   r   r   r   to_json   s    zDirectUrl.to_jsonc                 C   s   t | jto| jjS r#   )r   r%   r   rP   r<   r   r   r   is_local_editable   s    zDirectUrl.is_local_editable)r   r   r   r7   r?   r!   rT   r   rZ   rM   re   rh   r@   r   r   rf   rg   rm   rp   rR   rq   r   r   r   r   r      s   
)N)N)!__doc__rk   reurllib.parser[   dataclassesr   typingr   r   r   r   r   r   r	   r
   __all__r   DIRECT_URL_METADATA_NAMEcompilerX   	Exceptionr   r7   r   r    r*   r0   r   r   r   r!   r   r   r   r   r   <module>   sR   (
 
    
   	,