
    c f                        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j                   d      Z G d d	e      Z	 dd
eeef   de
e   dede	e   de	e   f
dZ	 dd
eeef   de
e   dede	e   def
dZdee	d      ddfdZdedeeef   fdZ G d d      Z G d d      Z G d d      Zeeeef   Z G d d      Zy)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                       e Zd Zy)r   N)__name__
__module____qualname__     Y/var/www/html/py/new-venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.pyr   r      s    r   r   dexpected_typekeydefaultreturnc                 \    || 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   r   r   r   r   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   infosInfoTypec                     | 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)r$   infos     r   _exactly_one_ofr*   0   sj    #8dt'7T8E8&=
 	
 5zA~&?
 	
 88O 9s
   AAkwargsc                  \    | j                         D ci c]  \  }}|	|| c}}S c c}}w )z Make dict excluding None values.)items)r+   kvs      r   _filter_noner0   >   s(    #\\^=TQq}AqD===s   
((c            	       x    e Zd ZdZ	 ddededee   ddfdZedeeee	f      ded    fd	       Z
deee	f   fd
Zy)r   vcs_infoNvcs	commit_idrequested_revisionr   c                 .    || _         || _        || _        y Nr3   r5   r4   )selfr3   r4   r5   s       r   __init__zVcsInfo.__init__F   s     "4"r   r   c           	      x    |y  | t        |t        d      t        |t        d      t        |t        d            S )Nr3   r4   r5   )r3   r4   r5   )r#   strr!   clsr   s     r   
_from_dictzVcsInfo._from_dictP   s<    9ae,#AsK8#As,@A
 	
r   c                 Z    t        | j                  | j                  | j                        S )Nr8   )r0   r3   r5   r4   r9   s    r   _to_dictzVcsInfo._to_dictZ   s&    #66nn
 	
r   r7   )r   r   r   namer<   r   r:   classmethodr   r   r?   rB   r   r   r   r   r   C   s    D -1	## # %SM	#
 
# 
8DcN3 
8K 
 

$sCx. 
r   r   c                       e Zd ZdZ	 	 ddee   deeeef      ddfdZedee   fd       Z	e	j                  dee   ddfd	       Z	ed
eeeef      ded    fd       Zdeeef   fdZy)r   archive_infoNhashhashesr   c                      || _         || _        y r7   )rH   rG   )r9   rG   rH   s      r   r:   zArchiveInfo.__init__e   s     	r   c                     | j                   S r7   )_hashrA   s    r   rG   zArchiveInfo.hashn   s    zzr   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   rH   copyrK   )r9   r    	hash_name
hash_values       r   rG   zArchiveInfo.hashr   s    (-C(;%	:
 {{"(*5 
 $++-"kk..0)3I&
  .8	B s   A: :Br   c                 X    |y  | t        |t        d      t        |t        d            S )NrG   rH   rG   rH   )r!   r<   dictr=   s     r   r?   zArchiveInfo._from_dict   s)    9QV,T!T85LMMr   c                 D    t        | j                  | j                        S )NrT   )r0   rG   rH   rA   s    r   rB   zArchiveInfo._to_dict   s    4;;??r   )NN)r   r   r   rC   r   r<   r   r:   propertyrG   setterrD   r   r?   rB   r   r   r   r   r   b   s    D #+/sm c3h( 
	 hsm   
[[(3- D  " N8DcN3 N8O N N
@$sCx. @r   r   c                   j    e Zd ZdZ	 d	deddfdZedeee	e
f      ded    fd       Zdee	e
f   fdZy)
r   dir_infoeditabler   Nc                     || _         y r7   r[   )r9   r[   s     r   r:   zDirInfo.__init__   s     !r   r   c                 <    |y  | t        |t        dd            S )Nr[   F)r   r]   )r#   boolr=   s     r   r?   zDirInfo._from_dict   s     9M!T:uMNNr   c                 6    t        | j                  xs d       S )Nr]   )r0   r[   rA   s    r   rB   zDirInfo._to_dict   s    T]]%:d;;r   )F)r   r   r   rC   r_   r:   rD   r   r   r<   r   r?   rB   r   r   r   r   r      so    D !! 
! O8DcN3 O8K O O
<$sCx. <r   r   c            	           e Zd Z	 ddededee   ddfdZdedefdZedefd	       Z	dd
Z
edeeef   dd fd       Zdeeef   fdZededd fd       ZdefdZdefdZy)r
   Nurlr)   subdirectoryr   c                 .    || _         || _        || _        y r7   )rb   r)   rc   )r9   rb   r)   rc   s       r   r:   zDirectUrl.__init__   s     	(r   netlocc                     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)rN   r   r)   r   r3   
ENV_VAR_REmatch)r9   re   	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urlsplitrb   rm   re   
urlunsplitschemepathqueryfragment)r9   purlre   surls       r   redacted_urlzDirectUrl.redacted_url   si     ||$$TXX...t{{;||&&[[&$))TZZG
 r   c                 B    | j                  | j                                y r7   )	from_dictto_dictrA   s    r   validatezDirectUrl.validate   s    t||~&r   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 )Nrb   rc   rF   rZ   r2   )rb   rc   r)   )
r
   r#   r<   r!   r*   r   r?   rU   r   r   r=   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)rb   rc   )r0   ry   rc   r)   rB   rC   )r9   ress     r   r|   zDirectUrl.to_dict   sD    !!**
 #ii002DIINN
r   sc                 J    | j                  t        j                  |            S r7   )r{   jsonloads)r>   r   s     r   	from_jsonzDirectUrl.from_json   s    }}TZZ]++r   c                 L    t        j                  | j                         d      S )NT)	sort_keys)r   dumpsr|   rA   s    r   to_jsonzDirectUrl.to_json   s    zz$,,.D99r   c                 f    t        | j                  t              xr | j                  j                  S r7   )r   r)   r   r[   rA   s    r   is_local_editablezDirectUrl.is_local_editable   s"    $))W-D$))2D2DDr   r7   )r   N)r   r   r   r<   r%   r   r:   rm   rW   ry   r}   rD   r   r   r{   r|   r   r   r_   r   r   r   r   r
   r
      s    
 '+	)) ) sm	)
 
)#s #s # 
c 
 
' 
$sCx. 
[ 
 
c3h  ,# ,+ , ,: :E4 Er   r
   r7   )__doc__r   reurllib.parsero   typingr   r   r   r   r   r   r	   __all__r   DIRECT_URL_METADATA_NAMEcompileri   	Exceptionr   r<   r!   r#   r*   r0   r   r   r   r%   r
   r   r   r   <module>r      sU     	  F F F CL, RZZIJ
	y 	
 QUCH~&*1g47BJ1+a[ QUCH~&*1g47BJ1+8HZ$89 j >3 >4S> >

 
>)@ )@X< <& gw./GE GEr   