ó
    áÅŸg¨'  ã                  óö  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSK	Jr  SSK	Jr  SSK	Jr  SSK	Jr  SS	K	Jr  SS
K	Jr  SS/r " S S\R$                  5      r\R(                  " SS9 " S S5      5       r " S S\5      r " S S5      rSrS&S jrS'S jrS'S jrS'S jrSSSS.rS(S jrS)S jr  " S S \5      r!\R(                   " S! S"5      5       r" " S# S$\\#\"4   5      r$ " S% S5      r%g)*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                  ó<   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrg)Ú	TokenTypeé.   z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   ó    ÚX/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/_pytest/mark/expression.pyr   r   .   s4   † Ø€FØ €FØ	€BØ
€CØ
€CØ€EØ
€CØ€EØ€FØƒEr&   r   T)Úfrozenc                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)ÚTokené;   )ÚtypeÚvalueÚposr   r,   Ústrr-   Úintr.   r   N)r   r   r   r   Ú	__slots__Ú__annotations__r%   r   r&   r'   r*   r*   ;   s   ‡ à(€IØ
ƒOØƒJØ	†Hr&   r*   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)	r   éC   zŸThe 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                ó   • Xl         X l        g ©N©ÚcolumnÚmessage)Úselfr8   r9   s      r'   Ú__init__ÚParseError.__init__J   s   € ØŒØ�r&   c                ó:   • SU R                    SU R                   3$ )Nz
at column z: r7   ©r:   s    r'   Ú__str__ÚParseError.__str__N   s   € Ø˜DŸK™K˜=¨¨4¯<©<¨.Ð9Ð9r&   r7   N)r8   r0   r9   r/   ÚreturnÚNone)rA   r/   )r   r   r   r   Ú__doc__r;   r?   r%   r   r&   r'   r   r   C   s   † ñô÷:r&   c                  ó‚   • \ rS rSrSrSS jrSS jr\SS j5       r\SS.     SS jj5       rSS.SS	 jjrSS
 jr	Sr
g)ÚScanneréR   )ÚtokensÚcurrentc                ód   • U R                  U5      U l        [        U R                  5      U l        g r6   )ÚlexrG   ÚnextrH   )r:   Úinputs     r'   r;   ÚScanner.__init__U   s!   € Ø—h‘h˜u“oˆŒÜ˜DŸK™KÓ(ˆ�r&   c              #  óÞ  #   • SnU[        U5      :  Ga:  X   S;   a  US-  nGOX   S:X  a$  [        [        R                  SU5      v •  US-  nGOíX   S:X  a$  [        [        R                  SU5      v •  US-  nGOÁX   S:X  a$  [        [        R
                  SU5      v •  US-  nGO•X   S:X  a$  [        [        R                  SU5      v •  US-  nGOiX   =nS;   a…  UR                  X2S-   5      nUS	:X  a  [        US-   S
U S35      eXUS-    nUR                  S5      =nS	:w  a  [        US-   S5      e[        [        R                  XR5      v •  U[        U5      -  nOÚ[        R                  " SXS  5      nU(       a¥  UR                  S5      nUS:X  a  [        [        R                  XR5      v •  ObUS:X  a  [        [        R                  XR5      v •  O?US:X  a  [        [        R                  XR5      v •  O[        [        R                   XR5      v •  U[        U5      -  nO[        US-   SX    S35      eU[        U5      :  a  GM:  [        [        R"                  SU5      v •  g 7f)Nr   )Ú Ú	é   Ú(Ú)r   r   )Ú'Ú"éÿÿÿÿzclosing quote "z" is missingÚ\z4escaping with "\" not supported in marker expressionz(:?\w|:|\+|-|\.|\[|\]|\\|/)+r   r   r   zunexpected character "rU   Ú )Úlenr*   r   r   r   r"   r$   Úfindr   r#   ÚreÚmatchÚgroupr   r   r   r    r!   )r:   rL   r.   Ú
quote_charÚend_quote_posr-   Úbackslash_posr\   s           r'   rJ   ÚScanner.lexY   sC  é € ØˆØ”C˜“JÔØ‰z˜[Ó(Ø�q‘’Ø‘˜sÓ"ÜœI×,Ñ,¨c°3Ó7Ò7Ø�q‘’Ø‘˜sÓ"ÜœI×,Ñ,¨c°3Ó7Ò7Ø�q‘’Ø‘˜sÓ"ÜœIŸO™O¨S°#Ó6Ò6Ø�q‘’Ø‘˜sÓ"ÜœIŸO™O¨S°#Ó6Ò6Ø�q‘’Ø %¡
Ð*�*¨zÓ9Ø %§
¡
¨:¸Q±wÓ ?�Ø  BÓ&Ü$Ø˜a™Ø)¨*¨°\ÐBóð ð  M°AÑ$5Ð6�Ø%*§Z¡Z°Ó%5Ð5�M¸"Ó<Ü$Ø%¨Ñ)ØOóð ô œI×,Ñ,¨eÓ9Ò9Ø”s˜5“zÑ!‘äŸšÐ!@À%ÈÀ+ÓN�ÞØ!ŸK™K¨›N�EØ “}Ü#¤I§L¡L°%Ó=Ó=Ø %›Ü#¤I§M¡M°5Ó>Ó>Ø %›Ü#¤I§M¡M°5Ó>Ó>ä#¤I§O¡O°UÓ@Ò@Øœ3˜u›:Ñ%‘Cä$Ø˜a™Ø0°±°¸AÐ>óð ðY ”C˜“JÖô` ”I—M‘M 2 sÓ+Ó+ùs   ‚I
I-ÉI-c               ó   • g r6   r   ©r:   r,   Úrejects      r'   ÚacceptÚScanner.accept�   s   € ØJMr&   F©rd   c               ó   • g r6   r   rc   s      r'   re   rf   �   s   € ð r&   c               óò   • U R                   R                  UL aE  U R                   nUR                  [        R                  La  [	        U R
                  5      U l         U$ U(       a  U R                  U45        g r6   )rH   r,   r   r!   rK   rG   rd   )r:   r,   rd   Útokens       r'   re   rf   •   sV   € Ø�<‰<×Ñ Ò$Ø—L‘LˆEØ�z‰z¤§¡Ò.Ü# D§K¡KÓ0�”ØˆLÞØ�K‰K˜˜Ô Ør&   c           	     óÐ   • [        U R                  R                  S-   SR                  SR	                  S U 5       5      U R                  R
                  R                  5      5      e)NrQ   zexpected {}; got {}z OR c              3  ó6   #   • U H  oR                   v •  M     g 7fr6   )r-   )Ú.0r,   s     r'   Ú	<genexpr>Ú!Scanner.reject.<locals>.<genexpr>£   s   é € Ð<±8¨4ŸJžJ²8ùs   ‚)r   rH   r.   ÚformatÚjoinr,   r-   )r:   Úexpecteds     r'   rd   ÚScanner.rejectŸ   sT   € ÜØ�L‰L×Ñ˜qÑ Ø!×(Ñ(Ø—‘Ñ<±8Ó<Ó<Ø—‘×!Ñ!×'Ñ'óó
ð 	
r&   )rH   rG   N)rL   r/   rA   rB   )rL   r/   rA   zIterator[Token])r,   r   rd   zLiteral[True]rA   r*   )r,   r   rd   zLiteral[False]rA   úToken | None)r,   r   rd   ÚboolrA   rt   )rr   zSequence[TokenType]rA   r   )r   r   r   r   r1   r;   rJ   r   re   rd   r%   r   r&   r'   rE   rE   R   s^   † Ø%€Iô)ô2,ðh ÛMó ØMàà;@ñØðØ*8ðà	ôó ðð 9>÷ ÷
r&   rE   Ú$c                ó  • U R                  [        R                  5      (       a  [        R                  " S5      nO)[        U 5      nU R                  [        R                  SS9  [        R                  " [        R                  " U5      5      $ )NFTrg   )re   r   r!   ÚastÚConstantÚexprÚfix_missing_locationsr   ©ÚsÚrets     r'   Ú
expressionr   ¯   sZ   € Ø‡x�x”	—‘×ÑÜŸš UÓ+‰ä�1‹gˆØ	�‰”—‘ tˆÑ,Ü×$Ò$¤S§^¢^°CÓ%8Ó9Ð9r&   c                ó  • [        U 5      nU R                  [        R                  5      (       a\  [        U 5      n[        R
                  " [        R                  " 5       X/5      nU R                  [        R                  5      (       a  M\  U$ r6   )Úand_exprre   r   r   rx   ÚBoolOpÚOr©r}   r~   Úrhss      r'   rz   rz   ¸   s[   € Ü
�1‹+€CØ
�(‰(”9—<‘<×
 Ñ
 Ü�q‹kˆÜ�jŠjœŸš› C :Ó.ˆð �(‰(”9—<‘<×
 Ó
 ð €Jr&   c                ó  • [        U 5      nU R                  [        R                  5      (       a\  [        U 5      n[        R
                  " [        R                  " 5       X/5      nU R                  [        R                  5      (       a  M\  U$ r6   )Únot_exprre   r   r   rx   r‚   ÚAndr„   s      r'   r�   r�   À   s[   € Ü
�1‹+€CØ
�(‰(”9—=‘=×
!Ñ
!Ü�q‹kˆÜ�jŠjœŸš› S JÓ/ˆð �(‰(”9—=‘=×
!Ó
!ð €Jr&   c                ó\  • U R                  [        R                  5      (       a3  [        R                  " [        R
                  " 5       [        U 5      5      $ U R                  [        R                  5      (       a+  [        U 5      nU R                  [        R                  SS9  U$ U R                  [        R                  5      nU(       a¢  [        R                  " [        UR                  -   [        R                  " 5       5      nU R                  [        R                  5      (       a?  [        R                  " U/ [!        U 5      S9nU R                  [        R                  SS9  U$ UnU$ U R#                  [        R                  [        R                  [        R                  45        g )NTrg   )ÚfuncÚargsÚkeywords)re   r   r   rx   ÚUnaryOpÚNotr‡   r   rz   r   r    ÚNameÚIDENT_PREFIXr-   ÚLoadÚCallÚ
all_kwargsrd   )r}   r~   ÚidentÚnames       r'   r‡   r‡   È   s  € Ø‡x�x”	—‘×ÑÜ�{Š{œ3Ÿ7š7›9¤h¨q£kÓ2Ð2Ø‡x�x”	× Ñ ×!Ñ!Ü�1‹gˆØ	�‰”×!Ñ!¨$ˆÑ/Øˆ
Ø�H‰H”Y—_‘_Ó%€EÞÜ�xŠxœ u§{¡{Ñ2´C·H²H³JÓ?ˆØ�8‰8”I×$Ñ$×%Ñ%Ü—(’( ¨2¼
À1»ÑFˆCØ�H‰H”Y×%Ñ%¨dˆHÑ3ð ˆ
ð ˆCØˆ
à‡H�HŒi�m‰mœY×-Ñ-¬y¯©Ð?Õ@r&   F)ÚTrueÚFalserB   c                ó  • U R                  [        R                  SS9nUR                  R	                  5       (       d&  [        UR                  S-   SUR                   35      e[        R                  " UR                  5      (       a'  [        UR                  S-   SUR                   S35      eU R                  [        R                  SS9  U R                  [        R                  5      =n(       a  UR                  SS nOÈU R                  [        R                  SS9nUR                  =nR                  5       (       d.  UR                  S5      (       a$  USS  R                  5       (       a  [        U5      nOOUR                  [        ;   a  [        UR                     nO'[        UR                  S-   S	UR                   S
35      e[        R                  " UR                  [        R                   " U5      5      nU$ )NTrg   rQ   znot a valid python identifier z$unexpected reserved python keyword `Ú`rV   Ú-zunexpected character/s "rU   )re   r   r    r-   Úisidentifierr   r.   ÚkeywordÚ	iskeywordr"   r#   ÚisdigitÚ
startswithr0   ÚBUILTIN_MATCHERSrx   ry   )r}   Úkeyword_nameÚvalue_tokenr-   Únumberr~   s         r'   Úsingle_kwargr¤   ß   s²  € Ø—8‘8œIŸO™O°D�8Ð9€LØ×Ñ×*Ñ*×,Ñ,ÜØ×Ñ˜qÑ Ø,¨\×-?Ñ-?Ð,@ÐAó
ð 	
ô ×Ò˜×+Ñ+×,Ñ,ÜØ×Ñ˜qÑ Ø2°<×3EÑ3EÐ2FÀaÐHó
ð 	
ð ‡H�HŒY�_‰_ T€HÑ*à—h‘hœy×/Ñ/Ó0Ð0€{Õ0Ø)4×):Ñ):¸1¸RÐ)@‰à—h‘hœyŸ™°t�hÐ<ˆà"×(Ñ(Ð(ˆV×1Ñ1×3Ñ3Ø× Ñ  ×%Ñ%Ø�q�r�
×"Ñ"×$Ñ$ä˜“K‰EØ×ÑÔ"2Ó2Ü$ [×%6Ñ%6Ñ7‰EäØ—‘ !Ñ#Ø*¨;×+<Ñ+<Ð*=¸QÐ?óð ô
 �+Š+�l×(Ñ(¬#¯,ª,°uÓ*=Ó
>€CØ€Jr&   c                óæ   • [        U 5      /nU R                  [        R                  5      (       a@  UR	                  [        U 5      5        U R                  [        R                  5      (       a  M@  U$ r6   )r¤   re   r   r$   Úappendr|   s     r'   r“   r“     sK   € Ü˜‹?Ð
€CØ
�(‰(”9—?‘?×
#Ñ
#Ø�
‰
”< “?Ô#ð �(‰(”9—?‘?×
#Ó
#à€Jr&   c                  ó   • \ rS rSrSS jrSrg)ÚMatcherCalli
  c               ó   • g r6   r   )r:   r•   Úkwargss      r'   Ú__call__ÚMatcherCall.__call__  s   € ÐQTr&   r   N)r•   r/   rª   ústr | int | bool | NonerA   ru   )r   r   r   r   r«   r%   r   r&   r'   r¨   r¨   
  s   † ßTr&   r¨   c                  ó>   • \ rS rSr% S\S'   S\S'   S
S jrSS jrSrg	)ÚMatcherNameAdapteri  r¨   Úmatcherr/   r•   c                ó8   • U R                  U R                  5      $ r6   ©r°   r•   r>   s    r'   Ú__bool__ÚMatcherNameAdapter.__bool__  s   € Ø�|‰|˜DŸI™IÓ&Ð&r&   c                ó<   • U R                   " U R                  40 UD6$ r6   r²   )r:   rª   s     r'   r«   ÚMatcherNameAdapter.__call__  s   € Ø�|Š|˜DŸI™IÑ0¨Ñ0Ð0r&   r   N)rA   ru   )rª   r­   rA   ru   )r   r   r   r   r2   r³   r«   r%   r   r&   r'   r¯   r¯     s   ‡ àÓØ
ƒIô'÷1r&   r¯   c                  ó@   • \ rS rSrSrS	S jrS
S jrSS jrSS jrSr	g)ÚMatcherAdapteri  zDAdapts a matcher function to a locals mapping as required by eval().c                ó   • Xl         g r6   ©r°   )r:   r°   s     r'   r;   ÚMatcherAdapter.__init__  s   € Ø�r&   c                óJ   • [        U R                  U[        [        5      S  S9$ )Nr²   )r¯   r°   rY   r�   )r:   Úkeys     r'   Ú__getitem__ÚMatcherAdapter.__getitem__   s    € Ü!¨$¯,©,¸SÄÄ\ÓARÐATÐ=UÑVÐVr&   c                ó   • [        5       er6   ©ÚNotImplementedErrorr>   s    r'   Ú__iter__ÚMatcherAdapter.__iter__#  ó   € Ü!Ó#Ð#r&   c                ó   • [        5       er6   rÁ   r>   s    r'   Ú__len__ÚMatcherAdapter.__len__&  rÅ   r&   rº   N)r°   r¨   rA   rB   )r½   r/   rA   r¯   )rA   zIterator[str])rA   r0   )
r   r   r   r   rC   r;   r¾   rÃ   rÇ   r%   r   r&   r'   r¸   r¸     s   † ÙNôôWô$÷$r&   r¸   c                  óD   • \ rS rSrSrSrSS jr\S	S j5       rS
S jr	Sr
g)r   i*  zoA compiled match expression as used by -k and -m.

The expression can be evaluated against different matchers.
©Úcodec                ó   • Xl         g r6   rÊ   )r:   rË   s     r'   r;   ÚExpression.__init__2  s   € Ø�	r&   c                óV   • [        [        U5      5      n[        USSS9n[        U5      $ )zLCompile a match expression.

:param input: The input expression - one line.
z<pytest match expression>Úeval)ÚfilenameÚmode)r   rE   Úcompiler   )r:   rL   ÚastexprrË   s       r'   rÒ   ÚExpression.compile5  s2   € ô œW U›^Ó,ˆÜ&ØØ0Øñ 
ˆô
 ˜$ÓÐr&   c           	     ó\   • [        [        U R                  S0 0[        U5      5      5      nU$ )záEvaluate 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__)ru   rÏ   rË   r¸   )r:   r°   r~   s      r'   ÚevaluateÚExpression.evaluateC  s*   € ô œ˜dŸi™i¨.¸"Ð)=¼~ÈgÓ?VÓWÓXˆØˆ
r&   N)rË   ztypes.CodeTyperA   rB   )rL   r/   rA   r   )r°   r¨   rA   ru   )r   r   r   r   rC   r1   r;   ÚclassmethodrÒ   r×   r%   r   r&   r'   r   r   *  s,   † ñð
 €Iôð ó ó ð ÷
r&   )r}   rE   rA   zast.Expression)r}   rE   rA   zast.expr)r}   rE   rA   zast.keyword)r}   rE   rA   zlist[ast.keyword])&rC   Ú
__future__r   rx   ÚdataclassesÚenumrœ   r[   ÚtypesÚtypingr   r   r   r   r   r	   r
   Ú__all__ÚEnumr   Ú	dataclassr*   Ú	Exceptionr   rE   r�   r   rz   r�   r‡   r    r¤   r“   r¨   r¯   r/   r¸   r   r   r&   r'   Ú<module>rã      s  ðñõ, #ã 
Û Û Û Û 	Û Ý Ý Ý Ý Ý Ý Ý ð Øð€ô
�—	‘	ô 
ð ×Ò˜dÑ#÷ð ó $ðô:�ô :÷T
ñ T
ðt €ô:ôôôAð( !¨5¸$Ñ?Ð ô!ôHôU�(ô Uð ×Ñ÷1ð 1ó ð1ô$�W˜SÐ"4Ð4Ñ5ô $÷ #ò #r&   