Ë
    •Kêj¦-  ã                  ó  — U d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddgZdZded<    G d„ de	j.                  «      Z ej2                  d¬«       G d„ d«      «       Z G d„ d«      ZdZd)d„Zd*d„Zd*d„Zd*d„Z dddd œZ!d+d!„Z"d,d"„Z# G d#„ de«      Z$ej2                   G d$„ d%«      «       Z% G d&„ d'ee&e%f   «      Z'e G d(„ d«      «       Z(y)-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.
- ident with parentheses and keyword arguments evaluates to True or False according to a provided matcher function.
- or/and/not evaluate according to the usual boolean semantics.
é    )ÚannotationsN)ÚIterator)ÚMapping)ÚSequence)ÚFinal)Úfinal)ÚLiteral)ÚNoReturn)Úoverload)ÚProtocolÚ
ExpressionÚExpressionMatcherú<pytest match expression>r   Ú	FILE_NAMEc                  ó4   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)Ú	TokenTypezleft parenthesiszright parenthesisÚorÚandÚnotÚ
identifierzend of inputú=zstring literalú,N)Ú__name__Ú
__module__Ú__qualname__ÚLPARENÚRPARENÚORÚANDÚNOTÚIDENTÚEOFÚEQUALÚSTRINGÚCOMMA© ó    ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/_pytest/mark/expression.pyr   r   3   s4   „ Ø€FØ €FØ	€BØ
€CØ
€CØ€EØ
€CØ€EØ€FØ�Er'   r   T)Úfrozenc                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚToken)ÚposÚtypeÚvaluer   r-   Ústrr.   Úintr,   N)r   r   r   Ú	__slots__Ú__annotations__r&   r'   r(   r+   r+   @   s   … à(€IØ
ƒOØƒJØ	„Hr'   r+   c                  ój   — e Zd ZdZdd„Zdd„Zedd„«       Zeddœ	 	 	 	 	 dd„«       Zddœdd„Zdd	„Zy
)ÚScanner)ÚcurrentÚidentsÚinputÚtokensc                ó�   — || _         t        «       | _        | j                  |«      | _        t        | j                  «      | _        y ©N)r7   Úsetr6   Úlexr8   Únextr5   )Úselfr7   s     r(   Ú__init__zScanner.__init__K   s1   € ØˆŒ
Ü #£ˆŒØ—h‘h˜u“oˆŒÜ˜DŸK™KÓ(ˆ�r'   c              #  ó  K  — d}|t        |«      k  �rO||   dv r|dz  }�n1||   dk(  r$t        t        j                  d|«      –— |dz  }�n||   dk(  r$t        t        j                  d|«      –— |dz  }�nÙ||   dk(  r$t        t        j
                  d|«      –— |dz  }�n­||   dk(  r$t        t        j                  d|«      –— |dz  }�n�||   x}dv r™|j                  ||dz   «      }|d	k(  rt        d
|› d�t        d|dz   |f«      ‚|||dz    }|j                  d«      x}d	k7  rt        dt        d||z   dz   |f«      ‚t        t        j                  ||«      –— |t        |«      z  }nßt        j                  d||d  «      }|r¦|j                  d«      }|dk(  rt        t        j                  ||«      –— nc|dk(  rt        t        j                  ||«      –— n@|dk(  rt        t        j                   ||«      –— nt        t        j"                  ||«      –— |t        |«      z  }nt        d||   › d�t        d|dz   |f«      ‚|t        |«      k  r�ŒOt        t        j$                  d|«      –— y ­w)Nr   )ú ú	é   ú(ú)r   r   )ú'ú"éÿÿÿÿzclosing quote "z" is missingú\z4escaping with "\" not supported in marker expressionz(:?\w|:|\+|-|\.|\[|\]|\\|/)+r   r   r   zunexpected character "rG   Ú )Úlenr+   r   r   r   r#   r%   ÚfindÚSyntaxErrorr   r$   ÚreÚmatchÚgroupr   r   r    r!   r"   )r>   r7   r,   Ú
quote_charÚend_quote_posr.   Úbackslash_posrO   s           r(   r<   zScanner.lexQ   s‚  è ø€ ØˆØ”C˜“JÓØ�S‰z˜[Ñ(Ø�q‘’Ø�s‘˜sÒ"ÜœI×,Ñ,¨c°3Ó7Ò7Ø�q‘’Ø�s‘˜sÒ"ÜœI×,Ñ,¨c°3Ó7Ò7Ø�q‘’Ø�s‘˜sÒ"ÜœIŸO™O¨S°#Ó6Ò6Ø�q‘’Ø�s‘˜sÒ"ÜœIŸO™O¨S°#Ó6Ò6Ø�q‘’Ø % c¡
Ð*�*¨zÑ9Ø %§
¡
¨:°s¸Q±wÓ ?�Ø  BÒ&Ü%Ø)¨*¨°\ÐBÜ" A s¨Q¡w°Ð6óð ð ˜c M°AÑ$5Ð6�Ø%*§Z¡Z°Ó%5Ð5�M¸"Ò<Ü%ØOÜ" A s¨]Ñ':¸QÑ'>ÀÐFóð ô œI×,Ñ,¨e°SÓ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¸CÓ@Ò@Øœ3˜u›:Ñ%‘Cä%Ø0°°s±°¸AÐ>Ü" A s¨Q¡w°Ð6óð ðY ”C˜“JÔô` ”I—M‘M 2 sÓ+Ó+ùs   ‚IJÉ#Jc                ó   — y r:   r&   ©r>   r-   Úrejects      r(   ÚacceptzScanner.accept…   s   € ØJMr'   F©rV   c                ó   — y r:   r&   rU   s      r(   rW   zScanner.acceptˆ   s   € ð r'   c               óä   — | j                   j                  |u rD| j                   }|j                  t        j                  urt	        | j
                  «      | _         |S |r| j                  |f«       y r:   )r5   r-   r   r"   r=   r8   rV   )r>   r-   rV   Útokens       r(   rW   zScanner.accept�   sV   € Ø�<‰<×Ñ Ñ$Ø—L‘LˆEØ�z‰z¤§¡Ñ.Ü# D§K¡KÓ0�”ØˆLÙØ�K‰K˜˜Ô Ør'   c                óô   — t        dj                  dj                  d„ |D «       «      | j                  j                  j
                  «      t        d| j                  j                  dz   | j                  f«      ‚)Nzexpected {}; got {}z OR c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr:   )r.   )Ú.0r-   s     r(   ú	<genexpr>z!Scanner.reject.<locals>.<genexpr>š   s   è ø€ Ò<¨4˜DŸJ�JÑ<ùs   ‚rC   )	rM   ÚformatÚjoinr5   r-   r.   r   r,   r7   )r>   Úexpecteds     r(   rV   zScanner.reject—   sc   € ÜØ!×(Ñ(Ø—‘Ñ<°8Ô<Ó<Ø—‘×!Ñ!×'Ñ'óô ˜˜4Ÿ<™<×+Ñ+¨aÑ/°·±Ð<ó
ð 	
r'   N)r7   r/   ÚreturnÚNone)r7   r/   rc   zIterator[Token])r-   r   rV   zLiteral[True]rc   r+   )r-   r   rV   zLiteral[False]rc   úToken | None)r-   r   rV   Úboolrc   re   )rb   zSequence[TokenType]rc   r
   )	r   r   r   r1   r?   r<   r   rW   rV   r&   r'   r(   r4   r4   H   s^   „ Ø8€Ió)ó2,ðh ÚMó ØMàà;@ñØðØ*8ðà	òó ðð 9>õ ô
r'   r4   ú$c                ó>  — | j                  t        j                  «      rt        j                  d«      }n,t        | «      }| j                  t        j                  d¬«       t        j                  t        j                  |«      «      t        | j                  «      fS )NFTrX   )
rW   r   r"   ÚastÚConstantÚexprÚfix_missing_locationsr   Ú	frozensetr6   ©ÚsÚrets     r(   Ú
expressionrq   §   se   € Ø‡x�x”	—‘ÔÜŸ™ UÓ+‰ä�1‹gˆØ	�‰”—‘ tˆÔ,Ü×$Ñ$¤S§^¡^°CÓ%8Ó9¼9ÀQÇXÁXÓ;NÐNÐNr'   c                ó  — t        | «      }| j                  t        j                  «      rUt        | «      }t	        j
                  t	        j                  «       ||g«      }| j                  t        j                  «      rŒU|S r:   )Úand_exprrW   r   r   ri   ÚBoolOpÚOr©ro   rp   Úrhss      r(   rk   rk   °   sW   € Ü
�1‹+€CØ
�(‰(”9—<‘<Ô
 Ü�q‹kˆÜ�j‰jœŸ™› C¨ :Ó.ˆð �(‰(”9—<‘<Õ
 ð €Jr'   c                ó  — t        | «      }| j                  t        j                  «      rUt        | «      }t	        j
                  t	        j                  «       ||g«      }| j                  t        j                  «      rŒU|S r:   )Únot_exprrW   r   r   ri   rt   ÚAndrv   s      r(   rs   rs   ¸   sW   € Ü
�1‹+€CØ
�(‰(”9—=‘=Ô
!Ü�q‹kˆÜ�j‰jœŸ™› S¨# JÓ/ˆð �(‰(”9—=‘=Õ
!ð €Jr'   c                ó†  — | j                  t        j                  «      r1t        j                  t        j
                  «       t        | «      «      S | j                  t        j                  «      r.t        | «      }| j                  t        j                  d¬«       |S | j                  t        j                  «      }|rÅ| j                  j                  |j                  «       t        j                  t        |j                  z   t        j                   «       «      }| j                  t        j                  «      rDt        j"                  |g t%        | «      ¬«      }| j                  t        j                  d¬«       |S |}|S | j'                  t        j                  t        j                  t        j                  f«       y )NTrX   )ÚfuncÚargsÚkeywords)rW   r   r    ri   ÚUnaryOpÚNotry   r   rk   r   r!   r6   Úaddr.   ÚNameÚIDENT_PREFIXÚLoadÚCallÚ
all_kwargsrV   )ro   rp   ÚidentÚnames       r(   ry   ry   À   s  € Ø‡x�x”	—‘ÔÜ�{‰{œ3Ÿ7™7›9¤h¨q£kÓ2Ð2Ø‡x�x”	× Ñ Ô!Ü�1‹gˆØ	�‰”×!Ñ!¨$ˆÔ/Øˆ
Ø�H‰H”Y—_‘_Ó%€EÙØ	�‰�‰�U—[‘[Ô!Ü�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ÚFalserd   c                ó>  — | j                  t        j                  d¬«      }|j                  j	                  «       s8t        d|j                  › �t        d|j                  dz   | j                  f«      ‚t        j                  |j                  «      r9t        d|j                  › d�t        d|j                  dz   | j                  f«      ‚| j                  t        j                  d¬«       | j                  t        j                  «      x}r|j                  dd }nÌ| j                  t        j                  d¬«      }|j                  x}j                  «       s$|j                  d«      r|dd  j                  «       rt        |«      }n_|j                  t         v rt         |j                     }n9t        d	|j                  › d
�t        d|j                  dz   | j                  f«      ‚t#        j                  |j                  t#        j$                  |«      «      }|S )NTrX   znot a valid python identifier rC   z$unexpected reserved python keyword `ú`rH   ú-zunexpected character/s "rG   )rW   r   r!   r.   ÚisidentifierrM   r   r,   r7   ÚkeywordÚ	iskeywordr#   r$   ÚisdigitÚ
startswithr0   ÚBUILTIN_MATCHERSri   rj   )ro   Úkeyword_nameÚvalue_tokenr.   Únumberrp   s         r(   Úsingle_kwargr—   Ø   sÉ  € Ø—8‘8œIŸO™O°D�8Ó9€LØ×Ñ×*Ñ*Ô,ÜØ,¨\×-?Ñ-?Ð,@ÐAÜ˜˜<×+Ñ+¨aÑ/°·±Ð9ó
ð 	
ô ×Ñ˜×+Ñ+Ô,ÜØ2°<×3EÑ3EÐ2FÀaÐHÜ˜˜<×+Ñ+¨aÑ/°·±Ð9ó
ð 	
ð ‡H�HŒY�_‰_ T€HÔ*à—h‘hœy×/Ñ/Ó0Ð0€{Ð0Ø)4×):Ñ):¸1¸RÐ)@‰à—h‘hœyŸ™°t�hÓ<ˆØ!×'Ñ'Ð'ˆF×0Ñ0Ô2Ø×Ñ˜cÔ" v¨a¨b z×'9Ñ'9Ô';ä˜“K‰EØ×ÑÔ"2Ñ2Ü$ [×%6Ñ%6Ñ7‰EäØ*¨;×+<Ñ+<Ð*=¸QÐ?Ü˜A˜{Ÿ™°Ñ2°A·G±GÐ<óð ô
 �+‰+�l×(Ñ(¬#¯,©,°uÓ*=Ó
>€CØ€Jr'   c                óÐ   — t        | «      g}| j                  t        j                  «      r:|j	                  t        | «      «       | j                  t        j                  «      rŒ:|S r:   )r—   rW   r   r%   Úappendrn   s     r(   r†   r†   ú   sE   € Ü˜‹?Ð
€CØ
�(‰(”9—?‘?Ô
#Ø�
‰
”< “?Ô#ð �(‰(”9—?‘?Õ
#à€Jr'   c                  ó   — e Zd ZdZdd„Zy)r   aC  A callable which, given an identifier and optional kwargs, should return
    whether it matches in an :class:`Expression` evaluation.

    Should be prepared to handle arbitrary strings as input.

    If no kwargs are provided, the expression of the form `foo`.
    If kwargs are provided, the expression is of the form `foo(1, b=True, "s")`.

    If the expression is not supported (e.g. don't want to accept the kwargs
    syntax variant), should raise :class:`~pytest.UsageError`.

    Example::

        def matcher(name: str, /, **kwargs: str | int | bool | None) -> bool:
            # Match `cat`.
            if name == "cat" and not kwargs:
                return True
            # Match `dog(barks=True)`.
            if name == "dog" and kwargs == {"barks": False}:
                return True
            return False
    c                ó   — y r:   r&   )r>   rˆ   Úkwargss      r(   Ú__call__zExpressionMatcher.__call__  s   � r'   N)rˆ   r/   rœ   ústr | int | bool | Nonerc   rf   )r   r   r   Ú__doc__r�   r&   r'   r(   r   r     s   „ ñô. Ur'   c                  ó2   — e Zd ZU ded<   ded<   dd„Zd	d„Zy)
ÚMatcherNameAdapterr   Úmatcherr/   rˆ   c                ó8   — | j                  | j                  «      S r:   ©r¢   rˆ   ©r>   s    r(   Ú__bool__zMatcherNameAdapter.__bool__!  s   € Ø�|‰|˜DŸI™IÓ&Ð&r'   c                ó<   —  | j                   | j                  fi |¤ŽS r:   r¤   )r>   rœ   s     r(   r�   zMatcherNameAdapter.__call__$  s   € Øˆt�|‰|˜DŸI™IÑ0¨Ñ0Ð0r'   N)rc   rf   )rœ   rž   rc   rf   )r   r   r   r2   r¦   r�   r&   r'   r(   r¡   r¡     s   … àÓØ
ƒIó'ô1r'   r¡   c                  ó0   — e Zd ZdZdd„Zdd„Zd	d„Zd
d„Zy)ÚMatcherAdapterzDAdapts a matcher function to a locals mapping as required by eval().c                ó   — || _         y r:   )r¢   ©r>   r¢   s     r(   r?   zMatcherAdapter.__init__+  s	   € Øˆ�r'   c                óP   — t        | j                  |t        t        «      d  ¬«      S )Nr¤   )r¡   r¢   rK   rƒ   )r>   Úkeys     r(   Ú__getitem__zMatcherAdapter.__getitem__.  s    € Ü!¨$¯,©,¸SÄÄ\ÓARÐATÐ=UÔVÐVr'   c                ó   — t        «       ‚r:   ©ÚNotImplementedErrorr¥   s    r(   Ú__iter__zMatcherAdapter.__iter__1  ó   € Ü!Ó#Ð#r'   c                ó   — t        «       ‚r:   r°   r¥   s    r(   Ú__len__zMatcherAdapter.__len__4  r³   r'   N)r¢   r   rc   rd   )r­   r/   rc   r¡   )rc   zIterator[str])rc   r0   )r   r   r   rŸ   r?   r®   r²   rµ   r&   r'   r(   r©   r©   (  s   „ ÙNóóWó$ô$r'   r©   c                  óN   — e Zd ZdZdZ	 	 	 	 	 	 	 	 dd„Zed	d„«       Zd
d„Zdd„Z	y)r   zwA compiled match expression as used by -k and -m.

    The expression can be evaluated against different matchers.
    )Ú_codeÚ_identsr7   c                ó.   — || _         || _        || _        y r:   )r7   r·   r¸   )r>   r7   Úcoder6   s       r(   r?   zExpression.__init__A  s   € ð "ˆŒ
Ø ˆŒ
à$ˆ�r'   c                óf   — t        t        |«      «      \  }}t        |dd¬«      }t        |||«      S )zšCompile a match expression.

        :param input: The input expression - one line.

        :raises SyntaxError: If the expression is malformed.
        r   Úeval)ÚfilenameÚmode)rq   r4   Úcompiler   )Úclsr7   Úastexprr6   rº   s        r(   r¿   zExpression.compileJ  s:   € ô %¤W¨U£^Ó4‰ˆ�ÜØØ0Øô
ˆô
 ˜%  vÓ.Ð.r'   c                ó   — | j                   S )zAReturn the set of all identifiers which appear in the expression.)r¸   r¥   s    r(   r6   zExpression.identsZ  s   € à�|‰|Ðr'   c           	     óX   — t        t        | j                  di it        |«      «      «      S )a´  Evaluate the match expression.

        :param matcher:
            A callback which determines whether an identifier matches or not.
            See the :class:`ExpressionMatcher` protocol for details and example.

        :returns: Whether the expression matches or not.

        :raises UsageError:
            If the matcher doesn't support the expression. Cannot happen if the
            matcher supports all expressions.
        Ú__builtins__)rf   r¼   r·   r©   r«   s     r(   ÚevaluatezExpression.evaluate^  s&   € ô ”D˜Ÿ™ n°bÐ%9¼>È'Ó;RÓSÓTÐTr'   N)r7   r/   rº   ztypes.CodeTyper6   úfrozenset[str]rc   rd   )r7   r/   rc   r   )rc   rÆ   )r¢   r   rc   rf   )
r   r   r   rŸ   r1   r?   Úclassmethodr¿   r6   rÅ   r&   r'   r(   r   r   8  sR   „ ñð
 .€Ið%Øð%Ø .ð%Ø8Fð%à	ó%ð ò/ó ð/óôUr'   )ro   r4   rc   z%tuple[ast.Expression, frozenset[str]])ro   r4   rc   zast.expr)ro   r4   rc   zast.keyword)ro   r4   rc   zlist[ast.keyword]))rŸ   Ú
__future__r   ri   Úcollections.abcr   r   r   ÚdataclassesÚenumr�   rN   ÚtypesÚtypingr   r   r	   r
   r   r   Ú__all__r   r2   ÚEnumr   Ú	dataclassr+   r4   rƒ   rq   rk   rs   ry   r“   r—   r†   r   r¡   r/   r©   r   r&   r'   r(   ú<module>rÑ      s1  ðòõ, #ã 
Ý $Ý #Ý $Û Û Û Û 	Û Ý Ý Ý Ý Ý Ý ð Øð€ð /€	ˆ5Ó .ô
�—	‘	ô 
ð €×Ñ˜dÔ#÷ð ó $ð÷V
ñ V
ðx €óOóóóAð* !¨5¸$Ñ?Ð óóDôU˜ô Uð6 ×Ñ÷1ð 1ó ð1ô$�W˜SÐ"4Ð4Ñ5ô $ð  ÷2Uð 2Uó ñ2Ur'   