U
    +|j›  ã                   @   sâ   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 dddddgZed	ƒZd
Ze d¡ZG dd„ deƒZddd„Zddd„Zdd„ Z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   úgC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_internal/models/direct_url.pyr
      s   c                 C   s4   || kr|S | | }t ||ƒs0td |||¡ƒ‚|S )z3Get value from dictionary and verify expected type.z-{!r} has unexpected type for {} (expected {}))Ú
isinstancer
   Úformat©ÚdÚexpected_typeÚkeyÚdefaultÚ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   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>2   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)Úinfosr   r   r   Ú_exactly_one_of0   s    ÿÿr&   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)Úkwargsr   r   r   Ú_filter_none?   s    r,   c                   @   s.   e Zd ZdZd	dd„Zedd„ ƒZdd„ ZdS )
r   Úvcs_infoNc                 C   s"   || _ || _|| _|| _|| _d S r   ©ÚvcsÚrequested_revisionÚ	commit_idÚresolved_revisionÚresolved_revision_type)Úselfr/   r1   r0   r2   r3   r   r   r   Ú__init__H   s
    zVcsInfo.__init__c              	   C   sF   |d krd S | t |tdƒt |tdƒt|tdƒt|tdƒt|tdƒd�S )Nr/   r1   r0   r2   r3   )r/   r1   r0   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 )Nr.   )r,   r/   r0   r1   r2   r3   ©r4   r   r   r   Ú_to_dictc   s    ûzVcsInfo._to_dict)NNN©r   r   r   Únamer5   Úclassmethodr9   r;   r   r   r   r   r   E   s      ú

c                   @   s.   e Zd ZdZd	dd„Zedd„ ƒZdd„ ZdS )
r   Úarchive_infoNc                 C   s
   || _ d S r   ©Úhash)r4   rA   r   r   r   r5   q   s    zArchiveInfo.__init__c                 C   s   |d krd S | t |tdƒd�S )NrA   r@   )r   r6   r7   r   r   r   r9   w   s    zArchiveInfo._from_dictc                 C   s   t | jd�S )Nr@   )r,   rA   r:   r   r   r   r;   ~   s    zArchiveInfo._to_dict)Nr<   r   r   r   r   r   n   s    þ

c                   @   s.   e Zd ZdZd
dd„Zedd„ ƒZdd„ Zd	S )r   Údir_infoFc                 C   s
   || _ d S r   ©Úeditable)r4   rD   r   r   r   r5   †   s    zDirInfo.__init__c                 C   s"   |d krd S | t |tddd�d�S )NrD   F)r   rC   )r   Úboolr7   r   r   r   r9   Œ   s
    ÿzDirInfo._from_dictc                 C   s   t | jp
d d�S )NrC   )r,   rD   r:   r   r   r   r;   •   s    zDirInfo._to_dictN)Fr<   r   r   r   r   r   ƒ   s    þ

c                   @   sZ   e Zd Zddd„Zdd„ Zedd„ ƒZdd	„ Zed
d„ ƒZ	dd„ Z
edd„ ƒZdd„ ZdS )r	   Nc                 C   s   || _ || _|| _d S r   )Úurlr    Úsubdirectory)r4   rF   r    rG   r   r   r   r5   Ÿ   s    zDirectUrl.__init__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)Úsplitr   r    r   r/   Ú
ENV_VAR_REÚmatch)r4   ÚnetlocÚ	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ÚurlsplitrF   rP   rM   Ú
urlunsplitÚschemeÚpathÚqueryÚfragment)r4   ÚpurlrM   Ú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.validatec                 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 )NrF   rG   r?   rB   r-   )rF   rG   r    )
r	   r   r6   r   r&   r   r9   Údictr   r   r7   r   r   r   r\   Ê   s    

ýÿýzDirectUrl.from_dictc                 C   s&   t | j| jd�}| j ¡ || jj< |S )N)rF   rG   )r,   r[   rG   r    r;   r=   )r4   Úresr   r   r   r]   Ù   s    þzDirectUrl.to_dictc                 C   s   |   t |¡¡S r   )r\   ÚjsonÚloads)r8   Úsr   r   r   Ú	from_jsonâ   s    zDirectUrl.from_jsonc                 C   s   t j|  ¡ dd�S )NT)Ú	sort_keys)ra   Údumpsr]   r:   r   r   r   Úto_jsonç   s    zDirectUrl.to_json)N)r   r   r   r5   rP   Úpropertyr[   r^   r>   r\   r]   rd   rg   r   r   r   r   r	   �   s    ü



	
)N)N)Ú__doc__ra   ÚreÚurllib.parserQ   Útypingr   r   r   r   r   r   r   Ú__all__r   ÚDIRECT_URL_METADATA_NAMEÚcompilerK   Ú	Exceptionr
   r   r   r&   r,   r   r   r   ÚInfoTyper	   r   r   r   r   Ú<module>   s.   $û


)