+
    yj'                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RI	Ht ^ RI	Ht ^ RI	Ht ^ RI	Ht ^ RI	Ht ^ R	I	Ht R
R.t ! R R]P$                  4      t]P(                  ! RR7       ! R R4      4       t ! R R]4      t ! R R4      tRtR R ltR R ltR R ltR R ltRRRR R!R/tR" R# ltR$ R% lt  ! R& R']4      t!]P(                   ! R( R)4      4       t" ! R* R+]]#]"3,          4      t$ ! R, R
4      t%R# )-a  Evaluate match expressions, as used by `-k` and `-m`.

The grammar is:

expression: expr? EOF
expr:       and_expr ('or' and_expr)*
and_expr:   not_expr ('and' not_expr)*
not_expr:   'not' not_expr | '(' expr ')' | ident kwargs?

ident:      (\w|:|\+|-|\.|\[|\]|\\|/)+
kwargs:     ('(' name '=' value ( ', ' name '=' value )*  ')')
name:       a valid ident, but not a reserved keyword
value:      (unescaped) string literal | (-)?[0-9]+ | 'False' | 'True' | 'None'

The semantics are:

- Empty expression evaluates to False.
- ident evaluates to True or False according to a provided matcher function.
- or/and/not evaluate according to the usual boolean semantics.
- ident with parentheses and keyword arguments evaluates to True or False according to a provided matcher function.
)annotationsN)Iterator)Literal)Mapping)NoReturn)overload)Protocol)Sequence
Expression
ParseErrorc                  >    ] tR t^.tRtRtRtRtRtRt	Rt
RtR	tR
tRtR# )	TokenTypezleft parenthesiszright parenthesisorandnot
identifierzend of input=zstring literal, N)__name__
__module____qualname____firstlineno__LPARENRPARENORANDNOTIDENTEOFEQUALSTRINGCOMMA__static_attributes__r       K/var/www/html/2rare/lib/python3.14/site-packages/_pytest/mark/expression.pyr   r   .   s4    F F	B
C
CE
CEFEr$   r   T)frozenc                  :    ] tR t^;t$ R	tR]R&   R]R&   R]R&   RtR# )
Tokentypevalueposr   strintr   N)r)   r*   r+   )r   r   r   r   	__slots____annotations__r#   r   r$   r%   r(   r(   ;   s    (I
OJ	Hr$   r(   c                  2    ] tR t^CtRtR R ltR R ltRtR# )r   zThe expression contains invalid syntax.

:param column: The column in the line where the error occurred (1-based).
:param message: A description of the error.
c               $    V ^8  d   QhRRRRRR/# )   columnr-   messager,   returnNoner   )formats   "r%   __annotate__ParseError.__annotate__J   s!      s S T r$   c                	    Wn         W n        R # Nr3   r4   )selfr3   r4   s   &&&r%   __init__ParseError.__init__J   s    r$   c                   V ^8  d   QhRR/# )r2   r5   r,   r   )r7   s   "r%   r8   r9   N   s     : : :r$   c                	:    R V P                    RV P                   2# )z
at column z: r<   r=   s   &r%   __str__ParseError.__str__N   s    DKK=4<<.99r$   r<   N)r   r   r   r   __doc__r>   rC   r#   r   r$   r%   r   r   C   s    : :r$   c                      ] tR t^RtRtR R ltR R lt]R R l4       t]RR/R	 R
 ll4       tRR/R R lltR R lt	Rt
R# )Scannerc                    V ^8  d   QhRRRR/# )r2   inputr,   r5   r6   r   )r7   s   "r%   r8   Scanner.__annotate__U   s     ) )c )d )r$   c                	f    V P                  V4      V n        \        V P                  4      V n        R # r;   )lextokensnextcurrent)r=   rI   s   &&r%   r>   Scanner.__init__U   s!    hhuoDKK(r$   c                    V ^8  d   QhRRRR/# )r2   rI   r,   r5   zIterator[Token]r   )r7   s   "r%   r8   rJ   Y   s     2, 2, 2, 2,r$   c              #  	v  "   ^ pV\        V4      8  Ed   W,          R9   d   V^,          pK)  W,          R8X  d)   \        \        P                  RV4      x  V^,          pK^  W,          R8X  d)   \        \        P                  RV4      x  V^,          pK  W,          R8X  d)   \        \        P
                  RV4      x  V^,          pK  W,          R8X  d)   \        \        P                  RV4      x  V^,          pK  W,          ;pR9   d   VP                  W2^,           4      pVR8X  d   \        V^,           RV R24      hWV^,            pVP                  R4      ;pR8w  d   \        V^,           R	4      h\        \        P                  WR4      x  V\        V4      ,          pEK  \        P                  ! R
WR 4      pV'       d   VP                  ^ 4      pVR8X  d   \        \        P                  WR4      x  MdVR8X  d   \        \        P                  WR4      x  M@VR8X  d   \        \        P                  WR4      x  M\        \        P                   WR4      x  V\        V4      ,          pEKx  \        V^,           RW,           R24      h\        \        P"                  RV4      x  R# 5i)    ()r   r   "zclosing quote "z" is missing\z4escaping with "\" not supported in marker expressionz(:?\w|:|\+|-|\.|\[|\]|\\|/)+Nr   r   r   zunexpected character " ) 	)'rV   )lenr(   r   r   r   r    r"   findr   r!   rematchgroupr   r   r   r   r   )r=   rI   r+   
quote_charend_quote_posr*   backslash_posr`   s   &&      r%   rL   Scanner.lexY   s3    CJz[(qs"I,,c377qs"I,,c377qs"IOOS#66qs"IOOS#66q %
**z9 %

:Qw ? B&$a)*\B  MA$56%*ZZ%55M"<$%)O  I,,e99s5z!!@%+N!KKNE}#ILL%==%#IMM5>>%#IMM5>>#IOOU@@3u:%C$a0A>  IMM2s++s   J7J9c               $    V ^8  d   QhRRRRRR/# )r2   r)   r   rejectzLiteral[True]r5   r(   r   )r7   s   "r%   r8   rJ      s    MM9MM5Mr$   c               	    R # r;   r   r=   r)   rg   s   &&$r%   acceptScanner.accept   s    JMr$   rg   Fc               $    V ^8  d   QhRRRRRR/# )r2   r)   r   rg   zLiteral[False]r5   Token | Noner   )r7   s   "r%   r8   rJ      s$      *8	r$   c               	    R # r;   r   ri   s   &&$r%   rj   rk      s     r$   c               $    V ^8  d   QhRRRRRR/# )r2   r)   r   rg   boolr5   rm   r   )r7   s   "r%   r8   rJ      s!      9  , r$   c               	    V P                   P                  VJ dG   V P                   pVP                  \        P                  Jd   \	        V P
                  4      V n         V# V'       d   V P                  V34       R # r;   )rO   r)   r   r   rN   rM   rg   )r=   r)   rg   tokens   &&$ r%   rj   rk      sV    <<$LLEzz.#DKK0LKK r$   c                    V ^8  d   QhRRRR/# )r2   expectedzSequence[TokenType]r5   r   r   )r7   s   "r%   r8   rJ      s     
 
2 
x 
r$   c           	     	    \        V P                  P                  ^,           RP                  RP	                  R V 4       4      V P                  P
                  P                  4      4      h)   zexpected {}; got {}z OR c              3  8   "   T F  qP                   x  K  	  R # 5ir;   )r*   ).0r)   s   & r%   	<genexpr>!Scanner.reject.<locals>.<genexpr>   s     <84JJ8s   )r   rO   r+   r7   joinr)   r*   )r=   rt   s   &&r%   rg   Scanner.reject   sT    LLq !((<8<<!!''
 	
r$   )rO   rM   N)rM   rO   )r   r   r   r   r.   r>   rL   r   rj   rg   r#   r   r$   r%   rG   rG   R   sR    %I)2,h M M;@  
 
r$   rG   $c                    V ^8  d   QhRRRR/# )r2   srG   r5   zast.Expressionr   )r7   s   "r%   r8   r8      s     : :' :n :r$   c                &   V P                  \        P                  4      '       d   \        P                  ! R 4      pM,\        V 4      pV P                  \        P                  RR7       \        P                  ! \        P                  ! V4      4      # )FTrg   )rj   r   r   astConstantexprfix_missing_locationsr
   r   rets   & r%   
expressionr      sZ    xx	U+1g	t,$$S^^C%899r$   c                    V ^8  d   QhRRRR/# r2   r   rG   r5   zast.exprr   )r7   s   "r%   r8   r8      s      G  r$   c                    \        V 4      pV P                  \        P                  4      '       d9   \        V 4      p\        P
                  ! \        P                  ! 4       W.4      pK]  V# r;   )and_exprrj   r   r   r   BoolOpOrr   r   rhss   &  r%   r   r      sD    
1+C
((9<<
 
 qkjjC:.Jr$   c                    V ^8  d   QhRRRR/# r   r   )r7   s   "r%   r8   r8      s       H r$   c                    \        V 4      pV P                  \        P                  4      '       d9   \        V 4      p\        P
                  ! \        P                  ! 4       W.4      pK]  V# r;   )not_exprrj   r   r   r   r   Andr   s   &  r%   r   r      sD    
1+C
((9==
!
!qkjjSJ/Jr$   c                    V ^8  d   QhRRRR/# r   r   )r7   s   "r%   r8   r8      s     A A AH Ar$   c                   V P                  \        P                  4      '       d4   \        P                  ! \        P
                  ! 4       \        V 4      4      # V P                  \        P                  4      '       d/   \        V 4      pV P                  \        P                  R R7       V# V P                  \        P                  4      pV'       d   \        P                  ! \        VP                  ,           \        P                  ! 4       4      pV P                  \        P                  4      '       dF   \        P                  ! V. \!        V 4      R7      pV P                  \        P                  R R7       V# TpV# V P#                  \        P                  \        P                  \        P                  34       R# )Tr   )funcargskeywordsN)rj   r   r   r   UnaryOpNotr   r   r   r   r   NameIDENT_PREFIXr*   LoadCall
all_kwargsrg   )r   r   identnames   &   r%   r   r      s   xx	{{3779hqk22xx	  !!1g	!!$/
HHY__%Exxu{{2CHHJ?88I$$%%((2
1FCHHY%%dH3 
 C
HHimmY--y?@r$   TrueFalseFr6   c                    V ^8  d   QhRRRR/# )r2   r   rG   r5   zast.keywordr   )r7   s   "r%   r8   r8      s     ! !G ! !r$   c                N   V P                  \        P                  R R7      pVP                  P	                  4       '       g+   \        VP                  ^,           RVP                   24      h\        P                  ! VP                  4      '       d,   \        VP                  ^,           RVP                   R24      hV P                  \        P                  R R7       V P                  \        P                  4      ;p'       d   VP                  ^R	 pMV P                  \        P                  R R7      pVP                  ;pP                  4       '       g5   VP                  R4      '       d*   VR,          P                  4       '       d   \        V4      pMXVP                  \        9   d   \        VP                  ,          pM+\        VP                  ^,           RVP                   R24      h\        P                  ! VP                  \        P                   ! V4      4      pV# )
Tr   znot a valid python identifier z$unexpected reserved python keyword ``-:rv   NNzunexpected character/s "rV   r\   )rj   r   r   r*   isidentifierr   r+   keyword	iskeywordr    r!   isdigit
startswithr-   BUILTIN_MATCHERSr   r   )r   keyword_namevalue_tokenr*   numberr   s   &     r%   single_kwargr      s   88IOOD89L**,,q ,\-?-?,@A
 	
 ++,,q 2<3E3E2FaH
 	
 HHY__TH*hhy//00{0)4):):1R)@hhyth<"(((V1133  %%r
""$$KE"22$[%6%67E!#*;+<+<*=Q? 
 ++l((#,,u*=
>CJr$   c                    V ^8  d   QhRRRR/# )r2   r   rG   r5   zlist[ast.keyword]r   )r7   s   "r%   r8   r8     s      ' / r$   c                    \        V 4      .pV P                  \        P                  4      '       d   VP	                  \        V 4      4       KA  V# r;   )r   rj   r   r"   appendr   s   & r%   r   r     s6    ?
C
((9??
#
#

<?#Jr$   c                  "    ] tR tRtR R ltRtR# )MatcherCalli
  c               $    V ^8  d   QhRRRRRR/# )r2   r   r,   kwargsstr | int | bool | Noner5   rp   r   )r7   s   "r%   r8   MatcherCall.__annotate__  s    TTST/FT4Tr$   c               	    R # r;   r   )r=   r   r   s   "",r%   __call__MatcherCall.__call__  s    QTr$   r   N)r   r   r   r   r   r#   r   r$   r%   r   r   
  s    TTr$   r   c                  D    ] tR tRt$ R]R&   R]R&   R R ltR R	 ltR
tR# )MatcherNameAdapteri  r   matcherr,   r   c                   V ^8  d   QhRR/# )r2   r5   rp   r   )r7   s   "r%   r8   MatcherNameAdapter.__annotate__  s     ' '$ 'r$   c                	8    V P                  V P                  4      # r;   r   r   rB   s   &r%   __bool__MatcherNameAdapter.__bool__  s    ||DII&&r$   c                    V ^8  d   QhRRRR/# )r2   r   r   r5   rp   r   )r7   s   "r%   r8   r     s     1 1!8 1T 1r$   c                	<    V P                   ! V P                  3/ VB # r;   r   )r=   r   s   &,r%   r   MatcherNameAdapter.__call__  s    ||DII000r$   r   N)r   r   r   r   r/   r   r   r#   r   r$   r%   r   r     s    
I'1 1r$   r   c                  J    ] tR tRtRtR R ltR R ltR R ltR	 R
 ltRt	R# )MatcherAdapteri  zDAdapts a matcher function to a locals mapping as required by eval().c                    V ^8  d   QhRRRR/# )r2   r   r   r5   r6   r   )r7   s   "r%   r8   MatcherAdapter.__annotate__  s        r$   c                	    Wn         R # r;   r   )r=   r   s   &&r%   r>   MatcherAdapter.__init__  s    r$   c                    V ^8  d   QhRRRR/# )r2   keyr,   r5   r   r   )r7   s   "r%   r8   r      s     W Ws W'9 Wr$   c                	P    \        V P                  V\        \        4      R  R7      # )Nr   )r   r   r]   r   )r=   r   s   &&r%   __getitem__MatcherAdapter.__getitem__   s     !$,,S\ARAT=UVVr$   c                   V ^8  d   QhRR/# )r2   r5   zIterator[str]r   )r7   s   "r%   r8   r   #  s     $ $- $r$   c                	    \        4       hr;   NotImplementedErrorrB   s   &r%   __iter__MatcherAdapter.__iter__#      !##r$   c                   V ^8  d   QhRR/# )r2   r5   r-   r   )r7   s   "r%   r8   r   &  s     $ $ $r$   c                	    \        4       hr;   r   rB   s   &r%   __len__MatcherAdapter.__len__&  r   r$   r   N)
r   r   r   r   rE   r>   r   r   r   r#   r   r$   r%   r   r     s    NW$$ $r$   r   c                  L    ] tR tRtRtR	tR R lt]R R l4       tR R lt	R	t
R
# )r
   i*  zoA compiled match expression as used by -k and -m.

The expression can be evaluated against different matchers.
c                    V ^8  d   QhRRRR/# )r2   codeztypes.CodeTyper5   r6   r   )r7   s   "r%   r8   Expression.__annotate__2  s      ^  r$   c                	    Wn         R # r;   r   )r=   r   s   &&r%   r>   Expression.__init__2  s    	r$   c                    V ^8  d   QhRRRR/# )r2   rI   r,   r5   r
   r   )r7   s   "r%   r8   r   6  s        S  Z  r$   c                \    \        \        V4      4      p\        VRRR7      p\        V4      # )zLCompile a match expression.

:param input: The input expression - one line.
z<pytest match expression>eval)filenamemode)r   rG   compiler
   )r=   rI   astexprr   s   &&  r%   r   Expression.compile5  s2     WU^,&0 

 $r$   c                    V ^8  d   QhRRRR/# )r2   r   r   r5   rp   r   )r7   s   "r%   r8   r   C  s     
 
 
 
r$   c           	     \    \        \        V P                  R/ /\        V4      4      4      pV# )zEvaluate the match expression.

:param matcher:
    Given an identifier, should return whether it matches or not.
    Should be prepared to handle arbitrary strings as input.

:returns: Whether the expression matches or not.
__builtins__)rp   r   r   r   )r=   r   r   s   && r%   evaluateExpression.evaluateC  s*     dii.")=~g?VWX
r$   r   N)r   r   r   r   rE   r.   r>   classmethodr   r   r#   r   r$   r%   r
   r
   *  s1    
 I    
 
r$   )&rE   
__future__r   r   dataclassesenumr   r_   typestypingr   r   r   r   r   r   r	   __all__Enumr   	dataclassr(   	Exceptionr   rG   r   r   r   r   r   r   r   r   r   r   r,   r   r
   r   r$   r%   <module>r      s  , # 
    	         
		 
 d#  $: :T
 T
t :A( D'5&$? !HU( U 1 1 1$WS"445 $ # #r$   