§
    ÖŽ’j®'  ã                  ó<  — 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
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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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" erddl#m$Z$ g d¢Z% e"edz           ¦   «         Z&dddœdAd&„Z'dBd*„Z( ed+¬,¦  «        dCd0„¦   «         Z)e	j*         G d1„ d2¦  «        ¦   «         Z+dDd5„Z,e	j*         G d6„ d7¦  «        ¦   «         Z-dDd8„Z.dEd=„Z/dDd>„Z0dFd?„Z1dFd@„Z2dS )Gz=Generic mechanism for marking and selecting python functions.é    )ÚannotationsN)Ú
Collection)ÚIterable)ÚSet)ÚTYPE_CHECKINGé   )Ú
Expression)Ú_HiddenParam)ÚEMPTY_PARAMETERSET_OPTION)Úget_empty_parameterset_mark)ÚHIDDEN_PARAM)ÚMark)ÚMARK_GEN)ÚMarkDecorator)ÚMarkGenerator)ÚParameterSet)ÚNOTSET)ÚConfig)ÚExitCode)Úhookimpl)Ú
UsageError)ÚParser)ÚStashKey)ÚItem)r   r   r   r   r   r   r   © ©ÚmarksÚidÚvaluesÚobjectr   ú0MarkDecorator | Collection[MarkDecorator | Mark]r   ústr | _HiddenParam | NoneÚreturnr   c                ó&   — t          j        || |dœŽS )a$  Specify a parameter in `pytest.mark.parametrize`_ calls or
    :ref:`parametrized fixtures <fixture-parametrize-marks>`.

    .. code-block:: python

        @pytest.mark.parametrize(
            "test_input,expected",
            [
                ("3+5", 8),
                pytest.param("6*9", 42, marks=pytest.mark.xfail),
            ],
        )
        def test_eval(test_input, expected):
            assert eval(test_input) == expected

    :param values: Variable args of the values of the parameter set, in order.

    :param marks:
        A single mark or a list of marks to be applied to this parameter set.

        :ref:`pytest.mark.usefixtures <pytest.mark.usefixtures ref>` cannot be added via this parameter.

    :type id: str | Literal[pytest.HIDDEN_PARAM] | None
    :param id:
        The id to attribute to this parameter set.

        .. versionadded:: 8.4
            :ref:`hidden-param` means to hide the parameter set
            from the test name. Can only be used at most 1 time, as
            test names need to be unique.
    r   )r   Úparam)r   r   r   s      úCC:\Projects\DSCons\.venv\Lib\site-packages\_pytest\mark\__init__.pyr%   r%   1   s   € õH Ô˜v¨U°rÐ:Ð:Ð:Ð:ó    Úparserr   ÚNonec                ó0  — |                       d¦  «        }|                     dddddd¬¦  «         |                     d	dd
ddd¬¦  «         |                     ddd¬¦  «         |                      ddd¦  «         |                      t          d¦  «         d S )NÚgeneralz-kÚstoreÚkeywordÚ Ú
EXPRESSIONa·  Only run tests which match the given substring expression. An expression is a Python evaluable expression where all names are substring-matched against test names and their parent classes. Example: -k 'test_method or test_other' matches all test functions and classes whose name contains 'test_method' or 'test_other', while -k 'not test_method' matches those that don't contain 'test_method' in their names. -k 'not test_method and not test_other' will eliminate the matches. Additionally keywords are matched to classes and functions containing extra names in their 'extra_keyword_matches' set, as well as functions which have names assigned directly to them. The matching is case-insensitive.)ÚactionÚdestÚdefaultÚmetavarÚhelpz-mÚmarkexprÚMARKEXPRzUOnly run tests matching given mark expression. For example: -m 'mark1 and not mark2'.z	--markersÚ
store_truez4show markers (builtin, plugin and per-project ones).)r0   r4   Úmarkersz'Register new markers for test functionsÚlinelistz&Default marker for empty parametersets)ÚgetgroupÚ
_addoptionÚ	addoptionÚaddinir   )r(   Úgroups     r&   Úpytest_addoptionr?   X   sÒ   € Ø�OŠO˜IÑ&Ô&€EØ	×ÒØØØØØð,ð ñ ô ð ð( 
×ÒØØØØØð1ð ñ ô ð ð 
‡O‚OØØØCð ñ ô ð ð ‡M‚M�)ÐFÈ
ÑSÔSÐSØ
‡M‚MÕ+Ð-UÑVÔVÐVÐVÐVr'   T)ÚtryfirstÚconfigr   úint | ExitCode | Nonec                óÜ  — dd l }| j        j        rÛ|                      ¦   «          |j                             | ¦  «        }|                      d¦  «        D ]�}|                     dd¦  «        }|d         }t          |¦  «        dk    r|d         nd}| 	                    d|› d�d¬	¦  «         | 
                    |¦  «         | 
                    ¦   «          Œ‚|                      ¦   «          dS d S )
Nr   r8   ú:r   é   r.   z@pytest.mark.T)Úbold)Ú_pytest.configÚoptionr8   Ú_do_configurerA   Úcreate_terminal_writerÚgetiniÚsplitÚlenÚwriteÚlineÚ_ensure_unconfigure)rA   Ú_pytestÚtwrO   ÚpartsÚnameÚrests          r&   Úpytest_cmdline_mainrV   ‚   sð   € àÐÐÐà„}Ôð Ø×ÒÑÔÐØŒ^×2Ò2°6Ñ:Ô:ˆØ—M’M )Ñ,Ô,ð 	ð 	ˆDØ—J’J˜s AÑ&Ô&ˆEØ˜”8ˆDÝ" 5™zœz¨Qš˜�5˜”8�8°BˆDØ�HŠHÐ, TÐ,Ð,Ð,°4ˆHÑ8Ô8Ð8Ø�GŠG�D‰MŒMˆMØ�GŠG‰IŒIˆIˆIØ×"Ò"Ñ$Ô$Ð$Øˆqàˆ4r'   c                  óB   — e Zd ZU dZdZded<   edd„¦   «         Zdd„ZdS )ÚKeywordMatcheraÑ  A matcher for keywords.

    Given a list of names, matches any substring of one of these names. The
    string inclusion check is case-insensitive.

    Will match on the name of colitem, including the names of its parents.
    Only matches names of items which are either a :class:`Class` or a
    :class:`Function`.

    Additionally, matches on names in the 'extra_keyword_matches' set of
    any item, as well as names directly assigned to test functions.
    )Ú_nameszAbstractSet[str]rY   Úitemr   r#   c                ó4  — t          ¦   «         }dd l}|                     ¦   «         D ]b}t          ||j        ¦  «        rŒt          ||j        ¦  «        rt          |j        |j        ¦  «        rŒH|                     |j        ¦  «         Œc| 	                    | 
                    ¦   «         ¦  «         t          |dd ¦  «        }|r| 	                    |j        ¦  «         | 	                    d„ |                     ¦   «         D ¦   «         ¦  «          | |¦  «        S )Nr   Úfunctionc              3  ó$   K  — | ]}|j         V — Œd S ©N)rT   )Ú.0Úmarks     r&   ú	<genexpr>z+KeywordMatcher.from_item.<locals>.<genexpr>Ä   s$   è è € ÐFÐF¨$˜DœIÐFÐFÐFÐFÐFÐFr'   )ÚsetÚpytestÚ	listchainÚ
isinstanceÚSessionÚ	DirectoryÚparentÚaddrT   ÚupdateÚlistextrakeywordsÚgetattrÚ__dict__Úiter_markers)ÚclsrZ   Úmapped_namesrc   ÚnodeÚfunction_objs         r&   Ú	from_itemzKeywordMatcher.from_item©   s(  € å‘u”uˆð
 	ˆˆˆà—N’NÑ$Ô$ð 	(ð 	(ˆDÝ˜$ ¤Ñ/Ô/ð ØÝ˜$ Ô 0Ñ1Ô1ð µjØ”˜Vœ^ñ7ô 7ð ð Ø×Ò˜TœYÑ'Ô'Ð'Ð'ð 	×Ò˜D×2Ò2Ñ4Ô4Ñ5Ô5Ð5õ ˜t Z°Ñ6Ô6ˆØð 	7Ø×Ò Ô 5Ñ6Ô6Ð6ð 	×ÒÐFÐF°$×2CÒ2CÑ2EÔ2EÐFÑFÔFÑFÔFÐFàˆs�<Ñ Ô Ð r'   ÚsubnameÚstrÚkwargsústr | int | bool | NoneÚboolc               óŽ   ‡— |rt          d¦  «        ‚‰                     ¦   «         Št          ˆfd„| j        D ¦   «         ¦  «        S )Nz3Keyword expressions do not support call parameters.c              3  óD   •K  — | ]}‰|                      ¦   «         v V — Œd S r^   )Úlower)r_   rT   rt   s     €r&   ra   z*KeywordMatcher.__call__.<locals>.<genexpr>Ì   s0   øè è € ÐCÐC¨t�7˜dŸjšj™lœlÐ*ÐCÐCÐCÐCÐCÐCr'   )r   r{   ÚanyrY   )Úselfrt   rv   s    ` r&   Ú__call__zKeywordMatcher.__call__È   sM   ø€ Øð 	TÝÐRÑSÔSÐSØ—-’-‘/”/ˆÝÐCÐCÐCÐC°t´{ÐCÑCÔCÑCÔCÐCr'   N)rZ   r   r#   rX   )rt   ru   rv   rw   r#   rx   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__Úclassmethodrs   r~   r   r'   r&   rX   rX   –   sk   € € € € € € ðð ð €IàÐÐÑàð!ð !ð !ñ „[ð!ð<Dð Dð Dð Dð Dð Dr'   rX   Úitemsú
list[Item]c                óx  — |j         j                             ¦   «         }|sd S t          |d¦  «        }g }g }| D ]Z}|                     t
                               |¦  «        ¦  «        s|                     |¦  «         ŒE|                     |¦  «         Œ[|r$|j         	                    |¬¦  «         || d d …<   d S d S )NzWrong expression passed to '-k'©r†   )
rH   r-   ÚlstripÚ_parse_expressionÚevaluaterX   rs   ÚappendÚhookÚpytest_deselected)r†   rA   ÚkeywordexprÚexprÚ	remainingÚ
deselectedÚcolitems          r&   Údeselect_by_keywordr•   Ï   sÚ   € Ø”-Ô'×.Ò.Ñ0Ô0€KØð Øˆå˜[Ð*KÑLÔL€Dà€IØ€JØð &ð &ˆØ�}Š}�^×5Ò5°gÑ>Ô>Ñ?Ô?ð 	&Ø×Ò˜gÑ&Ô&Ð&Ð&à×Ò˜WÑ%Ô%Ð%Ð%àð ØŒ×%Ò%¨JÐ%Ñ7Ô7Ð7Øˆˆaˆaˆa‰ˆˆðð r'   c                  óB   — e Zd ZU dZdZded<   edd„¦   «         Zdd„ZdS )ÚMarkMatcherzuA matcher for markers which are present.

    Tries to match on any marker names, attached to the given colitem.
    )Úown_mark_name_mappingzdict[str, list[Mark]]r˜   r8   úIterable[Mark]r#   c                ó”   — t          j        t          ¦  «        }|D ]"}||j                                      |¦  «         Œ# | |¦  «        S r^   )ÚcollectionsÚdefaultdictÚlistrT   r�   )ro   r8   Úmark_name_mappingr`   s       r&   Úfrom_markerszMarkMatcher.from_markersî   sQ   € å'Ô3µDÑ9Ô9ÐØð 	6ð 	6ˆDØ˜dœiÔ(×/Ò/°Ñ5Ô5Ð5Ð5ØˆsÐ$Ñ%Ô%Ð%r'   rT   ru   rv   rw   rx   c               ó°   ‡— | j                              |g ¦  «        x}sdS |D ]2Št          ˆfd„|                     ¦   «         D ¦   «         ¦  «        r dS Œ3dS )NFc              3  óf   •K  — | ]+\  }}‰j                              |t          ¦  «        |k    V — Œ,d S r^   )rv   Úgetr   )r_   ÚkÚvr`   s      €r&   ra   z'MarkMatcher.__call__.<locals>.<genexpr>ú   s<   øè è € ÐNÐN±t°q¸!�4”;—?’? 1¥fÑ-Ô-°Ò2ÐNÐNÐNÐNÐNÐNr'   T)r˜   r¢   Úallr†   )r}   rT   rv   Úmatchesr`   s       @r&   r~   zMarkMatcher.__call__õ   su   ø€ ØÔ5×9Ò9¸$ÀÑCÔCÐC�ð 	Ø�5àð 	ð 	ˆDÝÐNÐNÐNÐN¸v¿|º|¹~¼~ÐNÑNÔNÑNÔNð Ø�t�tðàˆur'   N)r8   r™   r#   r—   )rT   ru   rv   rw   r#   rx   )	r   r€   r�   r‚   rƒ   r„   r…   rŸ   r~   r   r'   r&   r—   r—   ã   se   € € € € € € ðð ð
 +€Ià0Ð0Ð0Ñ0àð&ð &ð &ñ „[ð&ðð ð ð ð ð r'   r—   c                óx  — |j         j        }|sd S t          |d¦  «        }g }g }| D ]l}|                     t                               |                     ¦   «         ¦  «        ¦  «        r|                     |¦  «         ŒW|                     |¦  «         Œm|r$|j         	                    |¬¦  «         || d d …<   d S d S )NzWrong expression passed to '-m'r‰   )
rH   r5   r‹   rŒ   r—   rŸ   rn   r�   rŽ   r�   )r†   rA   Ú	matchexprr‘   r’   r“   rZ   s          r&   Údeselect_by_markr©   ÿ   sÚ   € Ø”Ô&€IØð Øˆå˜YÐ(IÑJÔJ€DØ€IØ€JØð $ð $ˆØ�=Š=�×1Ò1°$×2CÒ2CÑ2EÔ2EÑFÔFÑGÔGð 	$Ø×Ò˜TÑ"Ô"Ð"Ð"à×Ò˜dÑ#Ô#Ð#Ð#Øð ØŒ×%Ò%¨JÐ%Ñ7Ô7Ð7Øˆˆaˆaˆa‰ˆˆðð r'   r‘   ru   Úexc_messager	   c           
     ó¤   — 	 t          j        | ¦  «        S # t          $ r/}t          |› d|j        › d|j        › d|j        › �¦  «        d ‚d }~ww xY w)Nz: z: at column )r	   ÚcompileÚSyntaxErrorr   ÚtextÚoffsetÚmsg)r‘   rª   Úes      r&   r‹   r‹     ss   € ðÝÔ! $Ñ'Ô'Ð'øÝð ð ð ÝØÐEÐE˜aœfÐEÐE°!´(ÐEÐE¸a¼eÐEÐEñ
ô 
àð	øøøøðøøøs   ‚ –
A *A
Á
Ac                óF   — t          | |¦  «         t          | |¦  «         d S r^   )r•   r©   )r†   rA   s     r&   Úpytest_collection_modifyitemsr³     s(   € Ý˜˜vÑ&Ô&Ð&Ý�U˜FÑ#Ô#Ð#Ð#Ð#r'   c                ó¾   — t           j        | j        t          <   | t           _        |                      t
          ¦  «        }|dvrt          t
          ›d|›�¦  «        ‚d S )N)ÚskipÚxfailÚfail_at_collectNr.   z9 must be one of skip, xfail or fail_at_collect but it is )r   Ú_configÚstashÚold_mark_config_keyrK   r   r   )rA   Úempty_parametersets     r&   Úpytest_configurer¼     sn   € Ý(0Ô(8€F„LÕ$Ñ%Ø…HÔàŸšÕ'@ÑAÔAÐàÐ!OÐOÐOÝÝ(ð 1ð 1Ø,ð1ð 1ñ
ô 
ð 	
ð PÐOr'   c                óZ   — | j                              t          d ¦  «        t          _        d S r^   )r¹   r¢   rº   r   r¸   )rA   s    r&   Úpytest_unconfigurer¾   ,  s#   € Ø”|×'Ò'Õ(;¸TÑBÔB…HÔÐÐr'   )r   r    r   r!   r   r"   r#   r   )r(   r   r#   r)   )rA   r   r#   rB   )r†   r‡   rA   r   r#   r)   )r‘   ru   rª   ru   r#   r	   )rA   r   r#   r)   )3r‚   Ú
__future__r   r›   Úcollections.abcr   r   r   ÚAbstractSetÚdataclassesÚtypingr   Ú
expressionr	   Ú
structuresr
   r   r   r   r   r   r   r   r   Ú_pytest.compatr   rG   r   r   r   r   Ú_pytest.config.argparsingr   Ú_pytest.stashr   Ú_pytest.nodesr   Ú__all__rº   r%   r?   rV   Ú	dataclassrX   r•   r—   r©   r‹   r³   r¼   r¾   r   r'   r&   ú<module>rÌ      se  ðØ CÐ Cà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø $Ð $Ð $Ð $Ð $Ð $Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø %Ð %Ð %Ð %Ð %Ð %Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "ð ð #Ø"Ð"Ð"Ð"Ð"Ð"ðð ð €ð .�h˜v¨™}Ô-Ñ/Ô/Ð ð
 ?AØ$(ð$;ð $;ð $;ð $;ð $;ð $;ðN'Wð 'Wð 'Wð 'WðT 
€�4ÐÑÔðð ð ñ Ôðð& Ôð5Dð 5Dð 5Dð 5Dð 5Dñ 5Dô 5Dñ Ôð5Dðpð ð ð ð( Ôðð ð ð ð ñ ô ñ Ôðð6ð ð ð ð$ð ð ð ð$ð $ð $ð $ð


ð 

ð 

ð 

ðCð Cð Cð Cð Cð Cr'   