
    #j_1                       d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddl
mZmZmZ  G d d	      Z G d
 de      Z G d de      Z G d de      Zed   Ze	eef   Zeeeef   Ze	eed   f   Zee	deef      Z G d de      Zd&dZd'dZ	 	 	 	 d(dZ	 	 	 	 	 	 	 	 d)dZd*dZd*dZd+dZ d+dZ!d,dZ"d-dZ#d-dZ$d.d Z%d/d!Z&d0d"Z'd1d#Z(d2d$Z)d3d%Z*y)4zHandwritten parser of dependency specifiers.

The docstring for each __parse_* function contains EBNF-inspired grammar representing
the implementation.
    )annotationsN)Sequence)Literal
NamedTupleUnion   )DEFAULT_RULESParserSyntaxError	Tokenizerc                  H    e Zd ZdZd
dZddZddZddZddZddZ	ddZ
y	)Nodevaluec                    || _         y Nr   selfr   s     U/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/packaging/_parser.py__init__zNode.__init__   s	    
    c                    | j                   S r   r   r   s    r   __str__zNode.__str__   s    zzr   c                P    d| j                   j                   d| j                  dS )N<(z)>)	__class____name__r   r   s    r   __repr__zNode.__repr__   s&    4>>**+1TZZN"==r   c                    t         r   )NotImplementedErrorr   s    r   	serializezNode.serialize   s    !!r   c                    | j                   S r   r   r   s    r   __getstate__zNode.__getstate__   s    zzr   c                |    t        |t              s%t        d| j                  j                   d|      || _        y )NCannot restore z value from )
isinstancestr	TypeErrorr   r   r   r   s     r   _restore_valuezNode._restore_value#   s=    %%!$.."9"9!:,uiP  
r   c                z   t        |t              r| j                  |       y t        |t              r<t	        |      dk(  r.|\  }}t        |t
              rd|v r| j                  |d          y t        |t
              rd|v r| j                  |d          y t        d| j                  j                   d|      )N   r   r&   z from )	r'   r(   r*   tuplelendictr)   r   r   )r   state_	slot_dicts       r   __setstate__zNode.__setstate__*   s    eS!&eU#E
a LAy)T*w)/C##Ig$67eT"w%'7g//$..*A*A)B&	RSSr   N)r   r(   returnNoner4   r(   )r   objectr4   r5   )r0   r7   r4   r5   )r   
__module____qualname__	__slots__r   r   r   r"   r$   r*   r3    r   r   r   r      s+    I>"Tr   r   c                      e Zd ZdZddZy)Variabler;   c                    t        |       S r   r(   r   s    r   r"   zVariable.serialize?       4yr   Nr6   r   r8   r9   r:   r"   r;   r   r   r=   r=   <       Ir   r=   c                      e Zd ZdZddZy)Valuer;   c                V    t        |       }d|vrd| dS d|vrd| dS t        d      )N"'z>Cannot serialize marker value containing both quote characters)r(   
ValueErrorr   s     r   r"   zValue.serializeF   sG    D	eugQ<eugQ<L
 	
r   Nr6   rA   r;   r   r   rD   rD   C   s    I
r   rD   c                      e Zd ZdZddZy)Opr;   c                    t        |       S r   r?   r   s    r   r"   zOp.serializeT   r@   r   Nr6   rA   r;   r   r   rJ   rJ   Q   rB   r   rJ   )andor
MarkerAtom
MarkerListc                  @    e Zd ZU ded<   ded<   ded<   ded<   ded<   y	)
ParsedRequirementr(   nameurl	list[str]extras	specifierzMarkerList | NonemarkerN)r   r8   r9   __annotations__r;   r   r   rQ   rQ   _   s    
I	HNr   rQ   c                6    t        t        | t                    S N)rules)_parse_requirementr   r	   sources    r   parse_requirementr_   j       imDEEr   c                   | j                  d       | j                  dd      }|j                  }| j                  d       t        |       }| j                  d       t	        |       \  }}}| j                  dd       t        |||||      S )zI
    requirement = WS? IDENTIFIER WS? extras WS? requirement_details
    WS
IDENTIFIERz1package name at the start of dependency specifierexpectedENDzend of dependency specifier)consumeexpecttext_parse_extras_parse_requirement_detailsrQ   )	tokenizer
name_tokenrR   rU   rS   rV   rW   s          r   r\   r\   n   s     d!!R " J ??Dd9%Fd7	BCFU%BCT3	6BBr   c                   d}d}d}| j                  d      r| j                          | j                  d       | j                  }| j	                  dd      j
                  }| j                  dd	
      r|||fS | j	                  dd       | j                  dd	
      r|||fS t        | |d      }nR| j                  }t        |       }| j                  d       | j                  dd	
      r|||fS t        | ||rdnd      }|||fS )z~
    requirement_details = AT URL (WS requirement_marker?)?
                        | specifier WS? (requirement_marker)?
     NATrb   URLzURL after @rd   rf   Tpeekzwhitespace after URLz$semicolon (after URL and whitespace))
span_startre   zEcomma (within version specifier), semicolon (after version specifier)z0semicolon (after name with no version specifier))checkreadrg   positionrh   ri   _parse_requirement_marker_parse_specifier)rl   rV   rS   rW   	url_startspecifier_starts         r   rk   rk      s/    I
CFt$&&	u}=BB??5t?,F++(>? ??5t?,F++* ;
 $,,$Y/	$??5t?,F++*&  XG
 F##r   c                   | j                  d      s| j                  d| d|d       | j                          t        |       }| j	                  d       |S )z3
    requirement_marker = SEMICOLON marker WS?
    	SEMICOLONz	Expected z or endNrt   span_endrb   )ru   raise_syntax_errorrv   _parse_markerrg   )rl   rt   re   rW   s       r   rx   rx      s^     ??;'$$z)! 	% 	

 NN9%FdMr   c                    | j                  dd      sg S | j                  ddd      5  | j                  d       t        |       }| j                  d       ddd       |S # 1 sw Y   S xY w)	zG
    extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
    LEFT_BRACKETTrr   RIGHT_BRACKETrU   aroundrb   N)ru   enclosing_tokensrg   _parse_extras_list)rl   rU   s     r   rj   rj      s{     ??>?5			#	# 
$ 
  
 	$#I.$  M  Ms   .A""A,c                   g }| j                  d      s|S |j                  | j                         j                         	 | j	                  d       | j                  dd      r| j                  d       n| j                  d      s	 |S | j                          | j	                  d       | j                  dd      }|j                  |j                         )	z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    rc   Trb   rr   z"Expected comma between extra namesCOMMAzextra name after commard   )ru   appendrv   ri   rg   r   rh   )rl   rU   extra_tokens      r   r   r      s     F??<(
MM).."''(
$??<d?3(()MN) M 	$&&|>V&Wk&&' r   c                    | j                  ddd      5  | j                  d       t        |       }| j                  d       ddd       |S # 1 sw Y   S xY w)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    LEFT_PARENTHESISRIGHT_PARENTHESISzversion specifierr   rb   N)r   rg   _parse_version_many)rl   parsed_specifierss     r   ry   ry      si    
 
	#	#" 
$ 
  
 	$/	:$    s   .AAc                   d}| j                  d      r-| j                  }| j                         j                  }||z  }| j                  dd      rXd}|j	                  d      s"|j	                  d      r|j	                  d	      sd
}| j                  ||| j                  dz          | j                  dd      r| j                  d|| j                         | j                  d       | j                  d      s	 |S || j                         j                  z  }| j                  d       | j                  d      r-|S )z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    ro   	SPECIFIERVERSION_PREFIX_TRAILTrr   z6.* suffix can only be used with `==` or `!=` operatorsz!=z==z===zN.* suffix cannot be used with pre-release, post-release, dev or local versionsr   r~   VERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrb   r   )ru   rw   rv   ri   
startswithr   rg   )rl   r   rt   rV   messages        r   r   r     sJ    
//+
&''
NN$))	Y&??1?=NG##D)$$T*93G3G3N,  ((%"++a/ ) 
 ??6T?B((R%"++ ) 
 	$w'  	Y^^-222$9 //+
&< r   c                6    t        t        | t                    S rZ   )_parse_full_markerr   r	   r]   s    r   parse_markerr   5  r`   r   c                B    t        |       }| j                  dd       |S )Nrf   zend of marker expressionrd   )r   rh   )rl   retvals     r   r   r   9  s%    9%FU%?@Mr   c                    t        |       g}| j                  d      rJ| j                         }t        |       }|j                  |j                  |f       | j                  d      rJ|S )z4
    marker = marker_atom (BOOLOP marker_atom)+
    BOOLOP)_parse_marker_atomru   rv   extendri   )rl   
expressiontoken
expr_rights       r   r   r   ?  s`     %Y/0J
//(
# '	2
5::z23 //(
# r   c                4   | j                  d       | j                  dd      rK| j                  ddd      5  | j                  d       t        |       }| j                  d       ddd       nt	        |       }| j                  d       S # 1 sw Y   xY w)	zw
    marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS?
                | WS? marker_item WS?
    rb   r   Trr   r   zmarker expressionr   N)rg   ru   r   r   _parse_marker_item)rl   rW   s     r   r   r   K  s     d)5''& ( 
 	$
 d#!.y!9Fd#	$ 	$ $I.dM	$ 	$s   .BBc                    | j                  d       t        |       }| j                  d       t        |       }| j                  d       t        |       }| j                  d       |||fS )zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rb   )rg   _parse_marker_var_parse_marker_op)rl   marker_var_left	marker_opmarker_var_rights       r   r   r   a  si     d'	2Od +Id(3dY(899r   c           
        | j                  d      r3t        | j                         j                  j	                  dd            S | j                  d      r&| j                         }	 t        |j                        S | j                  d	       y# t        t        f$ rJ}t        d| j                  |j                  |j                  t        |j                        z   f      |d}~ww xY w)
z/
    marker_var = VARIABLE | QUOTED_STRING
    VARIABLE.r1   QUOTED_STRINGzInvalid quoted string)r^   spanNz+Expected a marker variable or quoted string)r   )ru   process_env_varrv   ri   replaceprocess_python_strSyntaxErrorrH   r
   r^   rw   r.   r   )rl   r   excs      r   r   r   o  s     z"y~~/44<<S#FGG		) 	%ejj11 	$$A 	% 	
 Z( 	#' ''nnenns5::&FG 		s   'B C(AC##C(c                6    | dv rt        d      S t        |       S )N)platform_python_implementationpython_implementationr   )r=   )env_vars    r   r   r     s"    MM899  r   c                T    t        j                  |       }t        t        |            S r   )astliteral_evalrD   r(   )
python_strr   s     r   r   r     s!    Z(EUr   c                   | j                  d      r| j                          t        d      S | j                  d      rA| j                          | j                  dd       | j                  dd       t        d      S | j                  d	      r#t        | j                         j                        S | j                  d
      S )z&
    marker_op = IN | NOT IN | OP
    INinNOTrb   zwhitespace after 'not'rd   z'in' after 'not'znot inOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)ru   rv   rJ   rh   ri   r   )rl   s    r   r   r     s     t$x		(@A(:;(|		).."''((++X
 	
r   )r^   r(   r4   rQ   )rl   r   r4   rQ   )rl   r   r4   z"tuple[str, str, MarkerList | None])rl   r   rt   intre   r(   r4   rO   )rl   r   r4   rT   )rl   r   r4   r(   )r^   r(   r4   rO   )rl   r   r4   rO   )rl   r   r4   rN   )rl   r   r4   
MarkerItem)rl   r   r4   	MarkerVar)r   r(   r4   r=   )r   r(   r4   rD   )rl   r   r4   rJ   )+__doc__
__future__r   r   collections.abcr   typingr   r   r   
_tokenizerr	   r
   r   r   r=   rD   rJ   MarkerLogicalr   r-   r   rN   listrO   rQ   r_   r\   rk   rx   rj   r   ry   r   r   r   r   r   r   r   r   r   r   r;   r   r   <module>r      s=   # 
 $ - - C C)T )TXt 
D 
  $(E/"	9b)+,
:x556
%j-?@A

 FC*2$2$'2$j),8;*&6"#RF	,:
,!

r   