
    dh                    |   d Z ddlmZ 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mZmZmZ g dZ ed      Zd	Z ej&                  d
      Z G d de      Z	 d	 	 	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 	 	 ddZddZddZe
 G d d             Z G d d      Ze
 G d d             Zeeeef   Ze
 G d d             Zy)zPEP 610    )annotationsN)Iterable)	dataclass)AnyClassVarTypeVarUnion)	DirectUrlDirectUrlValidationErrorDirInfoArchiveInfoVcsInfoTzdirect_url.jsonz.^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$c                      e Zd Zy)r   N)__name__
__module____qualname__     a/var/www/html/vivango/api/ia/venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.pyr   r      s    r   r   c                \    || vr|S | |   }t        ||      st        |d| d| d      |S )z3Get value from dictionary and verify expected type.z has unexpected type for z (expected ))
isinstancer   dexpected_typekeydefaultvalues        r   _getr       sN     !|cFEe]+&i0[qQ
 	
 Lr   c                B    t        | |||      }|t        | d      |S )Nz must have a value)r    r   r   s        r   _get_requiredr"   ,   s1     M30E}&#.@'ABBLr   c                    | D cg c]  }||	 } }| st        d      t        |       dkD  rt        d      | d   J | d   S c c}w )Nz/missing one of archive_info, dir_info, vcs_info   z1more than one of archive_info, dir_info, vcs_infor   )r   len)infosinfos     r   _exactly_one_ofr(   5   sj    #8dt'7T8E8&=
 	
 5zA~&?
 	
 88O 9s
   AAc                 \    | j                         D ci c]  \  }}|	|| c}}S c c}}w )z Make dict excluding None values.)items)kwargskvs      r   _filter_noner.   C   s(    #\\^=TQq}AqD===s   
((c                  X    e Zd ZU dZded<   ded<   ded<   dZded	<   edd
       ZddZy)r   vcs_infor   namestrvcs	commit_idN
str | Nonerequested_revisionc           	     x    |y  | t        |t        d      t        |t        d      t        |t        d            S )Nr3   r4   r6   )r3   r4   r6   )r"   r2   r    clsr   s     r   
_from_dictzVcsInfo._from_dictP   s<    9ae,#AsK8#As,@A
 	
r   c                Z    t        | j                  | j                  | j                        S )N)r3   r6   r4   )r.   r3   r6   r4   selfs    r   _to_dictzVcsInfo._to_dictZ   s&    #66nn
 	
r   )r   dict[str, Any] | NonereturnzVcsInfo | Noner@   dict[str, Any])	r   r   r   r1   __annotations__r6   classmethodr:   r>   r   r   r   r   r   H   s8    D(	HN%)
)
 

r   r   c                  z    e Zd ZdZ	 	 d	 	 	 	 	 d	dZed
d       Zej                  dd       Zedd       Z	ddZ
y)r   archive_infoNc                     || _         || _        y N)hasheshash)r=   rJ   rI   s      r   __init__zArchiveInfo.__init__e   s     	r   c                    | j                   S rH   )_hashr<   s    r   rJ   zArchiveInfo.hashn   s    zzr   c                *   |o	 |j                  dd      \  }}| j                  ||i| _        || _        y || j                  vr.| j                  j	                         | _        || j                  |<   || _        y # t        $ r t        d|      w xY w)N=r$   z"invalid archive_info.hash format: )split
ValueErrorr   rI   copyrM   )r=   r   	hash_name
hash_values       r   rJ   zArchiveInfo.hashr   s    (-C(;%	:
 {{"(*5 
 $++-"kk..0)3I&
  .8	B s   A: :Bc                X    |y  | t        |t        d      t        |t        d            S )NrJ   rI   rJ   rI   )r    r2   dictr8   s     r   r:   zArchiveInfo._from_dict   s)    9QV,T!T85LMMr   c                D    t        | j                  | j                        S )NrV   )r.   rJ   rI   r<   s    r   r>   zArchiveInfo._to_dict   s    4;;??r   )NN)rJ   r5   rI   zdict[str, str] | Noner@   None)r@   r5   )r   r5   r@   rY   )r   r?   r@   zArchiveInfo | NonerA   )r   r   r   r1   rK   propertyrJ   setterrD   r:   r>   r   r   r   r   r   b   sx    D  (, & 
	   
[[ " N N
@r   r   c                  D    e Zd ZU dZded<   dZded<   ed
d       ZddZy	)r   dir_infor   r1   Fbooleditablec                <    |y  | t        |t        dd            S )Nr_   F)r   r_   )r"   r^   r8   s     r   r:   zDirInfo._from_dict   s     9M!T:uMNNr   c                6    t        | j                  xs d       S )Nra   )r.   r_   r<   s    r   r>   zDirInfo._to_dict   s    T]]%:d;;r   N)r   r?   r@   zDirInfo | NonerA   )	r   r   r   r1   rC   r_   rD   r:   r>   r   r   r   r   r      s/    D(HdO O
<r   r   c                      e Zd ZU ded<   ded<   dZded<   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dZy)r
   r2   urlInfoTyper'   Nr5   subdirectoryc                    d|vr|S |j                  dd      \  }}t        | j                  t              r | j                  j                  dk(  r|dk(  r|S t
        j                  |      r|S |S )N@r$   git)rP   r   r'   r   r3   
ENV_VAR_REmatch)r=   netloc	user_passnetloc_no_user_passs       r   _remove_auth_from_netlocz"DirectUrl._remove_auth_from_netloc   si    fM)/c1)=&	&tyy'*		&U"MI&M""r   c                &   t         j                  j                  | j                        }| j	                  |j
                        }t         j                  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urlsplitrd   ro   rl   
urlunsplitschemepathqueryfragment)r=   purlrl   surls       r   redacted_urlzDirectUrl.redacted_url   si     ||$$TXX...t{{;||&&[[&$))TZZG
 r   c                B    | j                  | j                                y rH   )	from_dictto_dictr<   s    r   validatezDirectUrl.validate   s    t||~&r   c                >   t        t        |t        d      t        |t        d      t	        t
        j                  t        |t        d            t        j                  t        |t        d            t        j                  t        |t        d            g            S )Nrd   rf   rF   r]   r0   )rd   rf   r'   )
r
   r"   r2   r    r(   r   r:   rW   r   r   r8   s     r   r}   zDirectUrl.from_dict   sy    ae,an5 **44+HI&&tAtZ'@A&&tAtZ'@A

 
	
r   c                    t        | j                  | j                        }| j                  j	                         || j                  j
                  <   |S )N)rd   rf   )r.   r{   rf   r'   r>   r1   )r=   ress     r   r~   zDirectUrl.to_dict   sD    !!**
 #ii002DIINN
r   c                J    | j                  t        j                  |            S rH   )r}   jsonloads)r9   ss     r   	from_jsonzDirectUrl.from_json   s    }}TZZ]++r   c                L    t        j                  | j                         d      S )NT)	sort_keys)r   dumpsr~   r<   s    r   to_jsonzDirectUrl.to_json   s    zz$,,.D99r   c                f    t        | j                  t              xr | j                  j                  S rH   )r   r'   r   r_   r<   s    r   is_local_editablezDirectUrl.is_local_editable   s"    $))W-D$))2D2DDr   )rl   r2   r@   r2   )r@   r2   )r@   rY   )r   rB   r@   r
   rA   )r   r2   r@   r
   )r@   r^   )r   r   r   rC   rf   ro   rZ   r{   r   rD   r}   r~   r   r   r   r   r   r   r
   r
      sl    	H
N#L*## 
 
' 
 
 , ,:Er   r
   rH   )
r   rB   r   type[T]r   r2   r   T | Noner@   r   )
r   rB   r   r   r   r2   r   r   r@   r   )r&   zIterable[InfoType | None]r@   re   )r+   r   r@   rB   ) __doc__
__future__r   r   reurllib.parserq   collections.abcr   dataclassesr   typingr   r   r   r	   __all__r   DIRECT_URL_METADATA_NAMEcompilerj   	Exceptionr   r    r"   r(   r.   r   r   r   re   r
   r   r   r   <module>r      s8    "  	  $ ! 0 0 CL, RZZIJ
	y 	
 NR&-47BJ NR&-47BJ>
 
 
 
2)@ )@X < < < gw./ AE AE AEr   