
    #j}-                       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	m
Z
mZmZ e	r,d dlZd dlmZ d dlmZ ej                   dk\  rd dlmZ nd dlmZ g d	Zd'd
Z ed      Z G d de      Z ede      Zd(dZd)dZd*dZ	 	 	 	 	 	 	 	 d+dZ ej8                  d      Zd,dZd-dZd.dZ  G d de!      Z" G d de"      Z# ejH                  dd       G d d              Z% ejH                  dd       G d! d"             Z& ejH                  dd       G d# d$             Z' ejH                  dd       G d% d&             Z(y)/    )annotationsN)Mapping)TYPE_CHECKINGAnyProtocolTypeVar)
Collection)SplitResult)      )Self)ArchiveInfoDirInfo	DirectUrlDirectUrlValidationErrorVcsInfoc                     t         S N)__all__     X/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/packaging/direct_url.py__dir__r      s    Nr   _Tc                      e Zd Zedd       Zy)_FromMappingProtocolc                     y r   r   clsds     r   
_from_dictz_FromMappingProtocol._from_dict$   s    7:r   Nr    Mapping[str, Any]returnr   )__name__
__module____qualname__classmethodr!   r   r   r   r   r   #   s    : :r   r   _FromMappingProtocolT)boundc                @    | D ci c]  \  }}|	|| c}}S c c}}w r   r   )datakeyvalues      r   _json_dict_factoryr/   +   s#    )-C:31BCJCCCs   
c                    | j                  |      x}yt        ||      s1t        dt        |      j                   d|j                   d|      |S )zBGet a value from the dictionary and verify it's the expected type.NzUnexpected type z (expected )context)get
isinstancer   typer%   r    expected_typer-   r.   s       r   _getr9   /   sc    s$e]+&tE{334 5&//03
 	

 Lr   c                :    t        | ||      x}t        |      |S )zKGet a required value from the dictionary and verify it's the expected type.)r9   _DirectUrlRequiredKeyErrorr7   s       r   _get_requiredr<   <   s&    a,,5(--Lr   c                    t        | t        |      x}y	 |j                  |      S # t        $ r}t	        ||      |d}~ww xY w)zIGet a dictionary value from the dictionary and convert it to a dataclass.Nr2   )r9   r   r!   	Exceptionr   )r    target_typer-   r.   es        r   _get_objectrA   C   sP     a#&&/>%%e,, >&q#6A=>s   ' 	A>Az.^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$c                v    d| vr| S | j                  dd      \  }}||v r| S t        j                  |      r| S |S )N@   )rsplit _PEP610_USER_PASS_ENV_VARS_REGEXmatch)netlocsafe_user_passwords	user_passnetloc_no_user_passs       r   _strip_auth_from_netlocrL   T   sL    
&%+]]3%:"I"'''--i8r   c                   t         j                  j                  |       }t        |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 a safe user:password
    such as `git`.
    )
urllibparseurlsplitrL   rH   
urlunsplitschemepathqueryfragment)urlrI   
parsed_urlrH   s       r   
_strip_urlrX   _   sl    
 &&s+J$Z%6%68KLF<<""OO	
 r   c                8    | j                   j                  d      S )N/)rS   
startswith)rW   s    r   _file_url_has_absolute_pathr\   q   s    ??%%c**r   c                  J    e Zd ZU dZdZded<   ded<   dd	 	 	 	 	 d
dZdd	Zy)r   zSRaised when when input data is not spec-compliant.

    .. versionadded:: 26.1
    N
str | Noner3   strmessager2   c                   t        |t              rJ|j                  r%|r| d|j                   n|j                  | _        n|| _        |j                  | _        y || _        t	        |      | _        y )N.)r5   r   r3   r`   r_   )selfcauser3   s      r   __init__z!DirectUrlValidationError.__init__~   s]     e56}}4;wiq0   ' ==DL"DLu:DLr   c                h    | j                   r| j                   d| j                   S | j                  S )Nz in )r3   r`   rc   s    r   __str__z DirectUrlValidationError.__str__   s-    <<ll^4'788||r   )rd   zstr | Exceptionr3   r^   r$   None)r$   r_   )r%   r&   r'   __doc__r3   __annotations__re   rh   r   r   r   r   r   u   sC    
 GZL #	&& 	&
 
&$r   r   c                        e Zd Zd fdZ xZS )r;   c                (    t         |   d|       y )NzMissing required valuer2   )superre   )rc   r-   	__class__s     r   re   z#_DirectUrlRequiredKeyError.__init__   s    13?r   )r-   r_   r$   ri   )r%   r&   r'   re   __classcell__)ro   s   @r   r;   r;      s    @ @r   r;   TF)frozeninitc                  b    e Zd ZU dZded<   ded<   dZded<   dd	 	 	 	 	 	 	 dd	Zedd
       Zy)r   z8The version control information of a :class:`DirectUrl`.r_   vcs	commit_idNr^   requested_revision)rv   c                   t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nrt   ru   rv   object__setattr__)rc   rt   ru   rv   s       r   re   zVcsInfo.__init__   s<     	4,4i84!57IJr   c           	     r     | t        |t        d      t        |t        d      t        |t        d            S )Nrt   rv   ru   )rt   rv   ru   )r<   r_   r9   r   s     r   r!   zVcsInfo._from_dict   s6     ae,#As,@A#AsK8
 	
r   )rt   r_   ru   r_   rv   r^   r$   ri   r"   )	r%   r&   r'   rj   rk   rv   re   r(   r!   r   r   r   r   r      se    B	HN%)
) *.	K 	K 		K
 '	K 
	K 
 
r   r   c                  F    e Zd ZU dZdZded<   dd	 	 	 ddZed	d       Zy)
r   z0The archive information of a :class:`DirectUrl`.NMapping[str, str] | Nonehashesr~   c               2    t         j                  | d|       y )Nr~   rx   )rc   r~   s     r   re   zArchiveInfo.__init__   s    
 	462r   c                p   t        |t        d      }|-t        d |j                         D              st	        dd      t        |t
        d      }|[d|vrt	        dd      |j                  dd      \  }}|||i}n.||vrt	        d	|d
d      ||   |k7  rt	        d	|dd       | |      S )Nr~   c              3  <   K   | ]  }t        |t                y wr   )r5   r_   ).0hs     r   	<genexpr>z)ArchiveInfo._from_dict.<locals>.<genexpr>   s     )V*Q*<)Vs   zHash values must be stringsr2   hash=z3Invalid hash format (expected '<algorithm>=<hash>')rD   z
Algorithm z2 used in hash field is not present in hashes fieldz7 used in hash field has different value in hashes fieldr   )r9   r   allvaluesr   r_   split)r   r    r~   legacy_hashhash_algorithm
hash_values         r   r!   zArchiveInfo._from_dict   s    a(+c)Vfmmo)V&V*-x  1c6*"+%.I"  *5):):3)B&NJ~(*5 "/2$^$6 79 : ( 
 .)Z72$^$6 7> ? & 
 &!!r   )r~   r}   r$   ri   r"   )	r%   r&   r'   rj   r~   rk   re   r(   r!   r   r   r   r   r      sB    :'+F$+
 ,03 )3 
	3 " "r   r   c                  F    e Zd ZU dZdZded<   dd	 	 	 ddZed	d       Zy)
r   z8The local directory information of a :class:`DirectUrl`.Nbool | Noneeditabler   c               2    t         j                  | d|       y )Nr   rx   )rc   r   s     r   re   zDirInfo.__init__   s    
 	4X6r   c                2     | t        |t        d            S )Nr   r   )r9   boolr   s     r   r!   zDirInfo._from_dict   s    !T:.
 	
r   )r   r   r$   ri   r"   )	r%   r&   r'   rj   r   rk   re   r(   r!   r   r   r   r   r      sA    B Hk 
 !%7 7 
	7 
 
r   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   ddddd	 	 	 	 	 	 	 	 	 	 	 ddZ	e
dd       Ze
dd       Zdddd	 	 	 	 	 	 	 ddZddZy)r   zCA class representing a direct URL.

    .. versionadded:: 26.1
    r_   rV   NArchiveInfo | Nonearchive_infoVcsInfo | Nonevcs_infoDirInfo | Nonedir_infor^   subdirectory)r   r   r   r   c                   t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )NrV   r   r   r   r   rx   )rc   rV   r   r   r   r   s         r   re   zDirectUrl.__init__	  s^     	4,4>4X64X64>r   c                &    | t        |t        d      t        |t        d      t        |t        d      t        |t
        d      t        |t        d            }t        |j                        t        |j                        z   t        |j                        z   dk7  rt        d      |j                  ]t        j                  j                  |j                        }|j                   d	k7  rt        d
d      t#        |      st        dd      |S )NrV   r   r   r   r   )rV   r   r   r   r   rD   z?Exactly one of vcs_info, archive_info, dir_info must be presentfilez3URL scheme must be file:// when dir_info is presentr2   z2File URL must be absolute when dir_info is present)r<   r_   rA   r   r   r   r9   r   r   r   r   r   rN   rO   rP   rV   rR   r\   )r   r    
direct_urlrW   s       r   r!   zDirectUrl._from_dict  s   ae,$Q^D GZ8 GZ8an5

 $$%:**+,:&&'( 	
 +Q  *..z~~>J  F*.I!  /z:.H! 
 r   c               $    | j                  |      S )z@Create and validate a DirectUrl instance from a JSON dictionary.)r!   r   s     r   	from_dictzDirectUrl.from_dict8  s     ~~a  r   FT)git)generate_legacy_hashstrip_user_passwordrI   c               F   t        j                  | t              }|rh| j                  r\| j                  j                  rFt        t        | j                  j                  j                                     \  }}| d| |d   d<   |rt        | j                  |      |d<   |S )a  Convert the DirectUrl instance to a JSON dictionary.

        :param generate_legacy_hash: If True, include a legacy `hash` field in
            `archive_info` for backward compatibility with tools that don't
            support the `hashes` field.
        :param strip_user_password: If True, strip user:password from the URL
            unless it is formed with environment variables as specified in PEP
            610, or it is a safe user:password such as `git`.
        :param safe_user_passwords: A collection of user:password strings that
            should not be stripped from the URL even if `strip_user_password` is
            True.
        )dict_factoryr   r   r   rV   )
dataclassesasdictr/   r   r~   nextiteritemsrX   rV   )rc   r   r   rI   resr   r   s          r   to_dictzDirectUrl.to_dict=  s    &   4FGD$5$5$:K:K:R:R)-d43D3D3K3K3Q3Q3S.T)U&NJ-;,<Aj\*JC'#DHH.ABCJ
r   c                B    | j                  | j                                y)zValidate the DirectUrl instance against the specification.

        Raises :class:`DirectUrlValidationError` if invalid.
        N)r   r   rg   s    r   validatezDirectUrl.validateX  s    
 	t||~&r   )rV   r_   r   r   r   r   r   r   r   r^   r$   ri   r"   )r   r   r   r   rI   Collection[str]r$   r#   )r$   ri   )r%   r&   r'   rj   rk   r   r   r   r   re   r(   r!   r   r   r   r   r   r   r   r      s    
 
H'+L$+#Hn##Hn##L*# ,0#'#'#'? ? )	?
 !? !? !? 
?  > ! ! &+$(/7 # "	
 - 
6'r   r   )r$   z	list[str])r,   zlist[tuple[str, Any]]r$   zdict[str, Any])r    r#   r8   type[_T]r-   r_   r$   z	_T | None)r    r#   r8   r   r-   r_   r$   r   )r    r#   r?   ztype[_FromMappingProtocolT]r-   r_   r$   z_FromMappingProtocolT | None)rH   r_   rI   r   r$   r_   )rV   r_   rI   r   r$   r_   )rW   r
   r$   r   ))
__future__r   r   reurllib.parserN   collections.abcr   typingr   r   r   r   sysr	   r
   version_infor   typing_extensionsr   r   r   r   r)   r/   r9   r<   rA   compilerF   rL   rX   r\   r>   r   r;   	dataclassr   r   r   r   r   r   r   <module>r      s   "  	  # 8 8*(
7"* T];8 ;
   7?ST D
	>	>'B	>IL	>!	> $.2::5$  
$+y B@!9 @
 d/
 
 0
8 d/," ," 0,"^ d/
 
 0
& d/`' `' 0`'r   