§
    öyIfî  ã                   óØ  — d 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 G d„ dej        ¦  «        Z ej        d¬¦  «         G d„ d¦  «        ¦   «         Z G d„ d
e¦  «        Z G d„ d¦  «        ZdZdedej        fd„Zdedej        fd„Zdedej        fd„Zdedej        fd„Z G d„ de	eef         ¦  «        Z G d„ d	¦  «        ZdS )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
ident:      (\w|:|\+|-|\.|\[|\]|\\|/)+

The semantics are:

- Empty expression evaluates to False.
- ident evaluates to True of False according to a provided matcher function.
- or/and/not evaluate according to the usual boolean semantics.
é    N)ÚCallable)ÚIterator)ÚMapping)ÚNoReturn)ÚOptional)ÚSequenceÚ
ExpressionÚ
ParseErrorc                   ó*   — e Zd ZdZdZdZdZdZdZdZ	dS )	Ú	TokenTypezleft parenthesiszright parenthesisÚorÚandÚnotÚ
identifierzend of inputN)
Ú__name__Ú
__module__Ú__qualname__ÚLPARENÚRPARENÚORÚANDÚNOTÚIDENTÚEOF© ó    úK/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/mark/expression.pyr   r   %   s1   € € € € € Ø€FØ €FØ	€BØ
€CØ
€CØ€EØ
€C€C€Cr   r   T)Úfrozenc                   ó2   — e Zd ZU dZeed<   eed<   eed<   dS )ÚToken)ÚtypeÚvalueÚposr!   r"   r#   N)r   r   r   Ú	__slots__r   Ú__annotations__ÚstrÚintr   r   r   r    r    /   s0   € € € € € € à(€IØ
€O€O�OØ€J€J�JØ	€H€H�H€H€Hr   r    c                   ó2   — e Zd ZdZdededdfd„Zdefd„ZdS )r
   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.
    ÚcolumnÚmessageÚreturnNc                 ó"   — || _         || _        d S ©N©r)   r*   )Úselfr)   r*   s      r   Ú__init__zParseError.__init__>   s   € ØˆŒØˆŒˆˆr   c                 ó&   — d| j         › d| j        › �S )Nz
at column z: r.   ©r/   s    r   Ú__str__zParseError.__str__B   s   € Ø9˜DœKÐ9Ð9¨4¬<Ð9Ð9Ð9r   )r   r   r   Ú__doc__r'   r&   r0   r3   r   r   r   r
   r
   7   sb   € € € € € ðð ð˜sð ¨Sð °Tð ð ð ð ð:˜ð :ð :ð :ð :ð :ð :r   c                   ó€   — e Zd ZdZdeddfd„Zdedee         fd„Zddœd	e	d
e
dee         fd„Zdee	         defd„ZdS )ÚScanner)ÚtokensÚcurrentÚinputr+   Nc                 ól   — |                       |¦  «        | _        t          | j        ¦  «        | _        d S r-   )Úlexr7   Únextr8   )r/   r9   s     r   r0   zScanner.__init__I   s(   € Ø—h’h˜u‘o”oˆŒÝ˜DœKÑ(Ô(ˆŒˆˆr   c              #   óR  K  — d}|t          |¦  «        k     �rq||         dv r|dz  }�nL||         dk    r$t          t          j        d|¦  «        V — |dz  }�n||         dk    r#t          t          j        d|¦  «        V — |dz  }nít          j        d||d …         ¦  «        }|r±|                     d¦  «        }|dk    rt          t          j        ||¦  «        V — ne|dk    rt          t          j	        ||¦  «        V — nA|d	k    rt          t          j
        ||¦  «        V — nt          t          j        ||¦  «        V — |t          |¦  «        z  }nt          |dz   d
||         › d�¦  «        ‚|t          |¦  «        k     �°qt          t          j        d|¦  «        V — d S )Nr   )ú ú	é   ú(ú)z(:?\w|:|\+|-|\.|\[|\]|\\|/)+r   r   r   zunexpected character "ú"Ú )Úlenr    r   r   r   ÚreÚmatchÚgroupr   r   r   r   r
   r   )r/   r9   r#   rG   r"   s        r   r;   zScanner.lexM   sÏ  è è € ØˆØ•C˜‘J”JÒÑØ�SŒz˜[Ð(Ð(Ø�q‘�‘Ø�s”˜sÒ"Ð"Ý�IÔ,¨c°3Ñ7Ô7Ð7Ð7Ð7Ø�q‘�‘Ø�s”˜sÒ"Ð"Ý�IÔ,¨c°3Ñ7Ô7Ð7Ð7Ð7Ø�q‘��åœÐ!@À%ÈÈÈÄ+ÑNÔN�Øð Ø!ŸKšK¨™NœN�EØ ’}�}Ý#¥I¤L°%¸Ñ=Ô=Ð=Ð=Ð=Ð=Ø %š˜Ý#¥I¤M°5¸#Ñ>Ô>Ð>Ð>Ð>Ð>Ø %š˜Ý#¥I¤M°5¸#Ñ>Ô>Ð>Ð>Ð>Ð>å#¥I¤O°U¸CÑ@Ô@Ð@Ð@Ð@Ø�3˜u™:œ:Ñ%�C�Cå$Ø˜a™Ø>°°s´Ð>Ð>Ð>ñô ð ð/ •C˜‘J”JÒÑõ6 •I”M 2 sÑ+Ô+Ð+Ð+Ð+Ð+Ð+r   F©Úrejectr!   rJ   c                ó¼   — | j         j        |u r5| j         }|j        t          j        urt	          | j        ¦  «        | _         |S |r|                      |f¦  «         d S r-   )r8   r!   r   r   r<   r7   rJ   )r/   r!   rJ   Útokens       r   ÚacceptzScanner.acceptl   s_   € ØŒ<Ô Ð$Ð$Ø”LˆEØŒz¥¤Ð.Ð.Ý# D¤KÑ0Ô0�”ØˆLØð 	!Ø�KŠK˜˜Ñ Ô Ð Øˆtr   Úexpectedc           	      ó¼   — t          | j        j        dz   d                     d                     d„ |D ¦   «         ¦  «        | j        j        j        ¦  «        ¦  «        ‚)Nr@   zexpected {}; got {}z OR c              3   ó$   K  — | ]}|j         V — Œd S r-   )r"   )Ú.0r!   s     r   ú	<genexpr>z!Scanner.reject.<locals>.<genexpr>z   s$   è è € Ð<Ð<¨4˜DœJÐ<Ð<Ð<Ð<Ð<Ð<r   )r
   r8   r#   ÚformatÚjoinr!   r"   )r/   rN   s     r   rJ   zScanner.rejectv   s]   € ÝØŒLÔ˜qÑ Ø!×(Ò(Ø—’Ð<Ð<°8Ð<Ñ<Ô<Ñ<Ô<Ø”Ô!Ô'ñô ñ
ô 
ð 	
r   )r   r   r   r$   r&   r0   r   r    r;   r   Úboolr   rM   r   r   rJ   r   r   r   r6   r6   F   sÄ   € € € € € Ø%€Ið)˜cð ) dð )ð )ð )ð )ð,˜ð , ¨%¤ð ,ð ,ð ,ð ,ð> 9>ð ð ð ˜9ð °ð À(È5Ä/ð ð ð ð ð
˜x¨	Ô2ð 
°xð 
ð 
ð 
ð 
ð 
ð 
r   r6   ú$Úsr+   c                 ó  — |                       t          j        ¦  «        rt          j        d¦  «        }n0t          | ¦  «        }|                       t          j        d¬¦  «         t          j        t          j        |¦  «        ¦  «        S )NFTrI   )rM   r   r   ÚastÚConstantÚexprÚfix_missing_locationsr	   )rW   Úrets     r   Ú
expressionr^   †   sg   € Ø‡x‚x•	”ÑÔð -Ýœ UÑ+Ô+ˆˆå�1‰gŒgˆØ	�Š•” tˆÑ,Ô,Ð,ÝÔ$¥S¤^°CÑ%8Ô%8Ñ9Ô9Ð9r   c                 ó  — t          | ¦  «        }|                      t          j        ¦  «        rVt          | ¦  «        }t	          j        t	          j        ¦   «         ||g¦  «        }|                      t          j        ¦  «        °V|S r-   )Úand_exprrM   r   r   rY   ÚBoolOpÚOr©rW   r]   Úrhss      r   r[   r[   �   sh   € Ý
�1‰+Œ+€CØ
�(Š(•9”<Ñ
 Ô
 ð /Ý�q‰kŒkˆÝŒj�œ™œ C¨ :Ñ.Ô.ˆð �(Š(•9”<Ñ
 Ô
 ð /ð €Jr   c                 ó  — t          | ¦  «        }|                      t          j        ¦  «        rVt          | ¦  «        }t	          j        t	          j        ¦   «         ||g¦  «        }|                      t          j        ¦  «        °V|S r-   )Únot_exprrM   r   r   rY   ra   ÚAndrc   s      r   r`   r`   —   sh   € Ý
�1‰+Œ+€CØ
�(Š(•9”=Ñ
!Ô
!ð 0Ý�q‰kŒkˆÝŒj�œ™œ S¨# JÑ/Ô/ˆð �(Š(•9”=Ñ
!Ô
!ð 0ð €Jr   c                 ó`  — |                       t          j        ¦  «        r3t          j        t          j        ¦   «         t          | ¦  «        ¦  «        S |                       t          j        ¦  «        r2t          | ¦  «        }|                       t          j	        d¬¦  «         |S |                       t          j
        ¦  «        }|r3t          j        t          |j        z   t          j        ¦   «         ¦  «        S |                      t          j        t          j        t          j
        f¦  «         d S )NTrI   )rM   r   r   rY   ÚUnaryOpÚNotrf   r   r[   r   r   ÚNameÚIDENT_PREFIXr"   ÚLoadrJ   )rW   r]   Úidents      r   rf   rf   Ÿ   s×   € Ø‡x‚x•	”ÑÔð 3ÝŒ{�3œ7™9œ9¥h¨q¡k¤kÑ2Ô2Ð2Ø‡x‚x•	Ô Ñ!Ô!ð Ý�1‰gŒgˆØ	�Š•Ô!¨$ˆÑ/Ô/Ð/Øˆ
Ø�HŠH•Y”_Ñ%Ô%€EØð @ÝŒx� u¤{Ñ2µC´H±J´JÑ?Ô?Ð?Ø‡H‚H�iŒm�YÔ-­y¬Ð?Ñ@Ô@Ð@Ð@Ð@r   c                   óh   — e Zd ZdZdeegef         ddfd„Zdedefd„Zde	e         fd„Z
defd	„ZdS )
ÚMatcherAdapterzDAdapts a matcher function to a locals mapping as required by eval().Úmatcherr+   Nc                 ó   — || _         d S r-   )rq   )r/   rq   s     r   r0   zMatcherAdapter.__init__¯   s   € ØˆŒˆˆr   Úkeyc                 ó`   — |                       |t          t          ¦  «        d …         ¦  «        S r-   )rq   rE   rl   )r/   rs   s     r   Ú__getitem__zMatcherAdapter.__getitem__²   s'   € Ø�|Š|˜C¥¥LÑ 1Ô 1Ð 3Ð 3Ô4Ñ5Ô5Ð5r   c                 ó   — t          ¦   «         ‚r-   ©ÚNotImplementedErrorr2   s    r   Ú__iter__zMatcherAdapter.__iter__µ   ó   € Ý!Ñ#Ô#Ð#r   c                 ó   — t          ¦   «         ‚r-   rw   r2   s    r   Ú__len__zMatcherAdapter.__len__¸   rz   r   )r   r   r   r4   r   r&   rU   r0   ru   r   ry   r'   r|   r   r   r   rp   rp   ¬   s£   € € € € € ØNÐNð ¨#¨°¨Ô 5ð ¸$ð ð ð ð ð6˜sð 6 tð 6ð 6ð 6ð 6ð$˜( 3œ-ð $ð $ð $ð $ð$˜ð $ð $ð $ð $ð $ð $r   rp   c                   ór   — e Zd ZdZdZdej        ddfd„Zede	dd fd„¦   «         Z
d	ee	gef         defd
„ZdS )r	   zwA compiled match expression as used by -k and -m.

    The expression can be evaluated against different matchers.
    ©Úcoder   r+   Nc                 ó   — || _         d S r-   r~   )r/   r   s     r   r0   zExpression.__init__Ä   s   € ØˆŒ	ˆ	ˆ	r   r9   c                 ó|   — t          t          |¦  «        ¦  «        }t          |dd¬¦  «        }t          |¦  «        S )z\Compile a match expression.

        :param input: The input expression - one line.
        z<pytest match expression>Úeval)ÚfilenameÚmode)r^   r6   Úcompiler	   )r/   r9   Úastexprr   s       r   r…   zExpression.compileÇ   sD   € õ �W U™^œ^Ñ,Ô,ˆÝ&ØØ0Øð 
ñ  
ô  
ˆõ
 ˜$ÑÔÐr   rq   c                 óP   — t          | j        di it          |¦  «        ¦  «        }|S )a	  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__)r‚   r   rp   )r/   rq   r]   s      r   ÚevaluatezExpression.evaluateÕ   s)   € õ ˜œ ^°RÐ$8½.ÈÑ:QÔ:QÑRÔRˆØˆ
r   )r   r   r   r4   r$   ÚtypesÚCodeTyper0   Úclassmethodr&   r…   r   rU   r‰   r   r   r   r	   r	   ¼   s¤   € € € € € ðð ð
 €Ið˜Uœ^ð °ð ð ð ð ð ð ˜Sð   \ð  ð  ð  ñ „[ð ð
 ¨#¨°¨Ô 5ð 
¸$ð 
ð 
ð 
ð 
ð 
ð 
r   )r4   rY   ÚdataclassesÚenumrF   rŠ   Útypingr   r   r   r   r   r   Ú__all__ÚEnumr   Ú	dataclassr    Ú	Exceptionr
   r6   rl   r	   r^   r[   r`   rf   r&   rU   rp   r   r   r   ú<module>r”      s‚  ððð ð" €
€
€
Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð Øð€ðð ð ð ð �”	ñ ô ð ð €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð:ð :ð :ð :ð :�ñ :ô :ð :ð7
ð 7
ð 7
ð 7
ð 7
ñ 7
ô 7
ð 7
ðz €ð:�'ð :˜cœnð :ð :ð :ð :ðˆGð ˜œð ð ð ð ð�ð ˜CœHð ð ð ð ð
A�ð 
A˜CœHð 
Að 
Að 
Að 
Að$ð $ð $ð $ð $�W˜S $˜YÔ'ñ $ô $ð $ð #ð #ð #ð #ð #ñ #ô #ð #ð #ð #r   