ó
    EñiŽ&  ã                  óD  • S r SSKJr  SSKrSSKJr  SSKJr  SSKJ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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KJr  SSKJr  SSKJr  SSK J!r!  \(       a  SSK"J#r#  / SQr$\!\S-     " 5       r%SSS.       S-S jjr&S.S jr'\" S S!9S/S" j5       r(\	RR                   " S# S$5      5       r*S0S% jr+\	RR                   " S& S'5      5       r,S0S( jr-S1S) jr.S0S* jr/S2S+ jr0S2S, jr1g)3z=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)ÚConfig)ÚExitCode)Úhookimpl)Ú
UsageError)ÚNOT_SET)ÚParser)ÚStashKey)ÚItem)r   r   r   r   r   r   r   © ©ÚmarksÚidc                ó.   • [         R                  " X US.6$ )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   Úvaluess      ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/_pytest/mark/__init__.pyr    r    1   s   € ôH ×Ò˜v°rÒ:Ð:ó    c           	     óê   • U R                  S5      nUR                  SSSSSSS9  UR                  S	SS
SSSS9  UR                  SSSS9  U R                  SSS5        U R                  [        S5        g )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).)r*   r.   Úmarkersz'Register new markers for test functionsÚlinelistz&Default marker for empty parametersets)ÚgetgroupÚ
_addoptionÚ	addoptionÚaddinir   )ÚparserÚgroups     r"   Úpytest_addoptionr:   X   sŸ   € Ø�O‰O˜IÓ&€EØ	×ÑØØØØØð,ð ñ ð( 
×ÑØØØØØð1ð ñ ð 
‡O�OØØØCð ñ ð ‡M�M�)ÐFÈ
ÔSØ
‡M�MÔ+Ð-UÕVr#   T)Útryfirstc                ó®  • SS K nU R                  R                  (       a¶  U R                  5         UR                  R                  U 5      nU R                  S5       He  nUR                  SS5      nUS   n[        U5      S:X  a  US   OSnUR                  SU S3SS	9  UR                  U5        UR                  5         Mg     U R                  5         gg )
Nr   r2   Ú:r   é   r(   z@pytest.mark.T)Úbold)Ú_pytest.configÚoptionr2   Ú_do_configureÚconfigÚcreate_terminal_writerÚgetiniÚsplitÚlenÚwriteÚlineÚ_ensure_unconfigure)rC   Ú_pytestÚtwrI   ÚpartsÚnameÚrests          r"   Úpytest_cmdline_mainrP   ‚   s´   € ãà‡}�}××Ø×ÑÔØ�^‰^×2Ñ2°6Ó:ˆØ—M‘M )Ö,ˆDØ—J‘J˜s AÓ&ˆEØ˜‘8ˆDÜ" 5›z¨Q›�5˜’8°BˆDØ�H‰H�} T F¨!Ð,°4ˆHÑ8Ø�G‰G�DŒMØ�G‰GŽIñ -ð 	×"Ñ"Ô$Øàr#   c                  óF   • \ rS rSr% SrSrS\S'   \S
S j5       rSS jr	Sr
g	)ÚKeywordMatcheré–   a±  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]rT   c                ó4  • [        5       nSS KnUR                  5        H{  n[        XCR                  5      (       a  M  [        XCR
                  5      (       a'  [        UR                  UR                  5      (       a  M`  UR                  UR                  5        M}     UR                  UR                  5       5        [        USS 5      nU(       a  UR                  UR                  5        UR                  S UR                  5        5       5        U " U5      $ )Nr   Úfunctionc              3  ó8   #   • U  H  oR                   v •  M     g 7f©N)rN   )Ú.0Úmarks     r"   Ú	<genexpr>Ú+KeywordMatcher.from_item.<locals>.<genexpr>Ä   s   é € ÐFÒ2E¨$ŸIžIÒ2Eùs   ‚)ÚsetÚpytestÚ	listchainÚ
isinstanceÚSessionÚ	DirectoryÚparentÚaddrN   ÚupdateÚlistextrakeywordsÚgetattrÚ__dict__Úiter_markers)ÚclsÚitemÚmapped_namesr^   ÚnodeÚfunction_objs         r"   Ú	from_itemÚKeywordMatcher.from_item©   sÜ   € ä“uˆó
 	à—N‘NÖ$ˆDÜ˜$§¡×/Ñ/ÙÜ˜$× 0Ñ 0×1Ñ1´jØ—‘˜VŸ^™^÷7ñ 7ñ Ø×Ñ˜TŸY™YÖ'ñ %ð 	×Ñ˜D×2Ñ2Ó4Ô5ô ˜t Z°Ó6ˆÞØ×Ñ × 5Ñ 5Ô6ð 	×ÑÑF°$×2CÑ2CÔ2EÓFÔFá�<Ó Ð r#   c               ó†   ^• U(       a  [        S5      eTR                  5       m[        U4S jU R                   5       5      $ )Nz3Keyword expressions do not support call parameters.c              3  óJ   >#   • U  H  nTUR                  5       ;   v •  M     g 7frX   )Úlower)rY   rN   Úsubnames     €r"   r[   Ú*KeywordMatcher.__call__.<locals>.<genexpr>Ì   s   øé € ÐC²{¨t�7˜dŸj™j›lÖ*²{ùs   ƒ #)r   rs   ÚanyrT   )Úselfrt   Úkwargss    ` r"   Ú__call__ÚKeywordMatcher.__call__È   s2   ø€ ÞÜÐRÓSÐSØ—-‘-“/ˆÜÔC°t·{²{ÓCÓCÐCr#   r   N)rk   r   ÚreturnrR   )rt   Ústrrx   ústr | int | bool | Noner{   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Ú__annotations__Úclassmethodro   ry   Ú__static_attributes__r   r#   r"   rR   rR   –   s,   ‡ ñð €IàÓàó!ó ð!÷<Dr#   rR   c                ór  • UR                   R                  R                  5       nU(       d  g [        US5      n/ n/ nU  HP  nUR	                  [
        R                  U5      5      (       d  UR                  U5        M?  UR                  U5        MR     U(       a  UR                  R                  US9  X@S S & g g )NzWrong expression passed to '-k'©Úitems)
rA   r'   ÚlstripÚ_parse_expressionÚevaluaterR   ro   ÚappendÚhookÚpytest_deselected)rŠ   rC   ÚkeywordexprÚexprÚ	remainingÚ
deselectedÚcolitems          r"   Údeselect_by_keywordr–   Ï   s�   € Ø—-‘-×'Ñ'×.Ñ.Ó0€KÞØä˜[Ð*KÓL€Dà€IØ€JÛˆØ�}‰}œ^×5Ñ5°gÓ>×?Ñ?Ø×Ñ˜gÖ&à×Ñ˜WÖ%ñ	 ö Ø�‰×%Ñ%¨JÐ%Ñ7Ø‰a‰ð r#   c                  óF   • \ rS rSr% SrSrS\S'   \S
S j5       rSS jr	Sr
g	)ÚMarkMatcheréã   zmA 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š   c                ó’   • [         R                  " [        5      nU H   nX#R                     R	                  U5        M"     U " U5      $ rX   )ÚcollectionsÚdefaultdictÚlistrN   rŽ   )rj   r2   Úmark_name_mappingrZ   s       r"   Úfrom_markersÚMarkMatcher.from_markersî   s>   € ä'×3Ò3´DÓ9ÐÛˆDØŸi™iÑ(×/Ñ/°Ö5ñ áÐ$Ó%Ð%r#   c               ó´   ^• U R                   R                  U/ 5      =n(       d  gU H-  m[        U4S jUR                  5        5       5      (       d  M-    g   g)NFc              3  ón   >#   • U  H*  u  pTR                   R                  U[        5      U:H  v •  M,     g 7frX   )rx   Úgetr   )rY   ÚkÚvrZ   s      €r"   r[   Ú'MarkMatcher.__call__.<locals>.<genexpr>ú   s'   øé € ÐOÂ¹¸�4—;‘;—?‘? 1¤gÓ.°!Ö3Âùs   ƒ25T)rš   r¤   ÚallrŠ   )rw   rN   rx   ÚmatchesrZ   s       @r"   ry   ÚMarkMatcher.__call__õ   sM   ø€ Ø×5Ñ5×9Ñ9¸$ÀÓCÐC�ÕCØãˆDÜÔOÀÇÁÄÓO×OÓOÙñ ð r#   r   N)r2   zIterable[Mark]r{   r˜   )rN   r|   rx   r}   r{   r~   )r   r€   r�   r‚   rƒ   r„   r…   r†   r    ry   r‡   r   r#   r"   r˜   r˜   ã   s+   ‡ ñð
 +€Ià0Ó0àó&ó ð&÷r#   r˜   c                ór  • UR                   R                  nU(       d  g [        US5      n/ n/ nU  H^  nUR                  [        R                  UR                  5       5      5      (       a  UR                  U5        MM  UR                  U5        M`     U(       a  UR                  R                  US9  X@S S & g g )NzWrong expression passed to '-m'r‰   )
rA   r/   rŒ   r�   r˜   r    ri   rŽ   r�   r�   )rŠ   rC   Ú	matchexprr’   r“   r”   rk   s          r"   Údeselect_by_markr­   ÿ   s�   € Ø—‘×&Ñ&€IÞØä˜YÐ(IÓJ€DØ€IØ€JÛˆØ�=‰=œ×1Ñ1°$×2CÑ2CÓ2EÓF×GÑGØ×Ñ˜TÖ"à×Ñ˜dÖ#ñ	 ö
 Ø�‰×%Ñ%¨JÐ%Ñ7Ø‰a‰ð r#   c           
     ó¾   •  [         R                  " U 5      $ ! [         a:  n[        U SUR                   SUR
                   SUR                   35      S eS nAff = f)Nz: z: at column )r	   ÚcompileÚSyntaxErrorr   ÚtextÚoffsetÚmsg)r’   Úexc_messageÚes      r"   rŒ   rŒ     s^   € ðÜ×!Ò! $Ó'Ð'øÜó ÜØˆm˜2˜aŸf™f˜X \°!·(±(°¸2¸a¿e¹e¸WÐEó
àð	ûðús   ‚ ˜
A¢5AÁAc                ó0   • [        X5        [        X5        g rX   )r–   r­   )rŠ   rC   s     r"   Úpytest_collection_modifyitemsr·     s   € Ü˜Ô&Ü�UÕ#r#   c                ó¾   • [         R                  U R                  [        '   U [         l        U R	                  [
        5      nUS;  a  [        [
        < SU< 35      eg )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_keyrE   r   r   )rC   Úempty_parametersets     r"   Úpytest_configurerÀ     sa   € Ü(0×(8Ñ(8€F‡L�LÔ$Ñ%Ø„HÔàŸ™Ô'@ÓAÐàÐ!OÓOÜÜ(Ñ+ð ,Ø,Ñ/ð1ó
ð 	
ð Pr#   c                óV   • U R                   R                  [        S 5      [        l        g rX   )r½   r¤   r¾   r   r¼   )rC   s    r"   Úpytest_unconfigurerÂ   ,  s   € Ø—|‘|×'Ñ'Ô(;¸TÓB„HÕr#   )r!   Úobjectr   z0MarkDecorator | Collection[MarkDecorator | Mark]r   zstr | _HiddenParam | Noner{   r   )r8   r   r{   ÚNone)rC   r   r{   zint | ExitCode | None)rŠ   z
list[Item]rC   r   r{   rÄ   )r’   r|   r´   r|   r{   r	   )rC   r   r{   rÄ   )2rƒ   Ú
__future__r   rœ   Úcollections.abcr   r   r   ÚAbstractSetÚdataclassesÚtypingr   Ú
expressionr	   Ú
structuresr
   r   r   r   r   r   r   r   r   r@   r   r   r   r   Ú_pytest.config.argparsingr   r   Ú_pytest.stashr   Ú_pytest.nodesr   Ú__all__r¾   r    r:   rP   Ú	dataclassrR   r–   r˜   r­   rŒ   r·   rÀ   rÂ   r   r#   r"   Ú<module>rÑ      s'  ðÙ Cå "ã Ý &Ý $Ý .Û Ý  å "Ý $Ý 1Ý 3Ý $Ý Ý  Ý %Ý %Ý $Ý !Ý #Ý #Ý %Ý -Ý ,Ý "ö Ý"ò€ð ˜v¨™}Ò-Ó/Ð ð
 ?AØ$(ñ$;Øð$;à;ð$;ð 	"ð$;ð õ	$;ôN'WñT 
�4Ñóó ðð& ×Ñ÷5Dð 5Dó ð5Dôpð( ×Ñ÷ð ó ðô6ô$ô$ô


õCr#   