§ |<ˆj!ã óâ—dZddlZddlmZddlmZddlmZddlmZddlmZddlmZd d l m Z d d l m Z d d l m Z d d l mZd dl mZd dl mZd dl mZd dl mZd dl mZddlmZddlmZddlmZddlmZddlmZddlmZerddlmZgd¢Zeee¦«Z dddœde!deeeeeeffdee"d efd!„Z#d"ed dfd#„Z$ed$¬%¦«d&ed eee%effd'„¦«Z&ej'Gd(„d)¦«¦«Z(d*d+d&ed dfd,„Z)ej'Gd-„d.¦«¦«Z*d*d+d&ed dfd/„Z+d0e"d1e"d e fd2„Z,d*d+d&ed dfd3„Z-d&ed dfd4„Z.d&ed dfd5„Z/dS)6z=Generic mechanism for marking and selecting python functions.éN)Ú AbstractSet)Ú Collection)ÚList)ÚOptional)Ú TYPE_CHECKING)ÚUnioné)Ú Expression)Ú ParseError)ÚEMPTY_PARAMETERSET_OPTION)Úget_empty_parameterset_mark)ÚMark)ÚMARK_GEN)Ú MarkDecorator)Ú MarkGenerator)Ú ParameterSet)ÚConfig)ÚExitCode)Úhookimpl)Ú UsageError)ÚParser)ÚStashKey)ÚItem)rrrrrr ©©ÚmarksÚidÚvaluesrrÚreturncó&—tj|||dœŽS)a£Specify a parameter in `pytest.mark.parametrize`_ calls or :ref:`parametrized fixtures `. .. 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. :param id: The id to attribute to this parameter set. r)rÚparam)rrrs úg/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/_pytest/mark/__init__.pyr!r!+s€õ0 Ô ˜v¨U°rÐ :Ð :Ð :Ð:óÚparsercó0—| d¦«}| dddddd¬¦«| d dd dd d ¬¦«| d dd¬¦«| ddd¦«| td¦«dS)NÚgeneralz-kÚstoreÚkeywordÚÚ EXPRESSIONa¹Only run tests which match the given substring expression. An expression is a Python evaluatable 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/ÚmarkerszMarkers for test functionsÚlinelistz&Default marker for empty parametersets)ÚgetgroupÚ _addoptionÚ addoptionÚaddinir )r$Úgroups r"Úpytest_addoptionr:FsÒ€Ø �OŠO˜IÑ &Ô &€EØ ×ÒØ ØØ ØØð ,ð ñôðð( ×ÒØ ØØ ØØð1ð ñôðð ‡O‚OØØØ Cðñôðð  ‡M‚M�)Ð9¸:ÑFÔFÐFØ ‡M‚MÕ+Ð-UÑVÔVÐVÐVÐVr#T)ÚtryfirstÚconfigcóÚ—ddl}|jjrÚ| ¦«|j |¦«}| d¦«D]€}| dd¦«}|d}t|¦«dkr|dnd}|  d|zd¬ ¦«|  |¦«|  ¦«Œ�|  ¦«dSdS) Nrr3ú:r ér)z@pytest.mark.%s:T)Úbold) Ú_pytest.configÚoptionr3Ú _do_configurer<Úcreate_terminal_writerÚgetiniÚsplitÚlenÚwriteÚlineÚ_ensure_unconfigure)r<Ú_pytestÚtwrIÚpartsÚnameÚrests r"Úpytest_cmdline_mainrPpsê€àÐÐÐà „}Ôð Ø×ÒÑÔÐØ Œ^× 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ˆHÑ :Ô :Ð :Ø �GŠG�D‰MŒMˆMØ �GŠG‰IŒIˆIˆIØ×"Ò"Ñ$Ô$Ð$؈qà ˆ4r#cóV—eZdZUdZdZeeed<ed d„¦«Z dede fd „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. )Ú_namesrSÚitemrrcóÒ—t¦«}ddl}| ¦«D]1}t||j¦«s| |j¦«Œ2| | ¦«¦«t|dd¦«}|r| |j ¦«| d„|  ¦«D¦«¦«||¦«S)NrÚfunctionc3ó$K—|] }|jV—Œ dS©N©rN©Ú.0Úmarks r"ú z+KeywordMatcher.from_item..«s$èè€ÐFÐF¨$˜DœIÐFÐFÐFÐFÐFÐFr#) ÚsetÚpytestÚ listchainÚ isinstanceÚSessionÚaddrNÚupdateÚlistextrakeywordsÚgetattrÚ__dict__Ú iter_markers)ÚclsrTÚ mapped_namesr_ÚnodeÚ function_objs r"Ú from_itemzKeywordMatcher.from_item—sï€å‘u”uˆ ð ˆ ˆ ˆ à—N’NÑ$Ô$ð ,ð ,ˆDݘd F¤NÑ3Ô3ð ,Ø× Ò  ¤Ñ+Ô+Ð+øð ×Ò˜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#Úsubnamecóh—| ¦«}d„|jD¦«}|D] }||vrdSŒ dS)Nc3ó>K—|]}| ¦«V—ŒdSrX)Úlower)r[rNs r"r]z*KeywordMatcher.__call__..±s*èè€Ð6Ð6 $�—’‘”Ð6Ð6Ð6Ð6Ð6Ð6r#TF)rqrS)ÚselfrnÚnamesrNs r"Ú__call__zKeywordMatcher.__call__¯sM€Ø—-’-‘/”/ˆØ6Ð6¨$¬+Ð6Ñ6Ô6ˆàð ð ˆDؘ$ˆˆØ�t�tðàˆur#N)rTrrrR© Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rÚstrÚ__annotations__Ú classmethodrmÚboolrtrr#r"rRrR„sx€€€€€€ð ð ð€Ià ˜Ô ÐÐÑàð!ð!ð!ñ„[ð!ð. ð¨ððððððr#rRÚitemsz List[Item]cóx—|jj ¦«}|sdSt|d¦«}g}g}|D]Z}| t  |¦«¦«s| |¦«ŒE| |¦«Œ[|r$|j  |¬¦«||dd…<dSdS)NzWrong expression passed to '-k'©r) rBr(ÚlstripÚ_parse_expressionÚevaluaterRrmÚappendÚhookÚpytest_deselected)rr<Ú 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óV—eZdZUdZdZeeed<ed d„¦«Z dede fd „Z d S) Ú MarkMatcherzuA matcher for markers which are present. Tries to match on any marker names, attached to the given colitem. ©Úown_mark_namesr‘rTrrcóT—d„| ¦«D¦«}||¦«S)Ncó—h|] }|j’Œ SrrYrZs r"ú z(MarkMatcher.from_item..Ús€Ð@Ð@Ð@ D�d”iÐ@Ð@Ð@r#)rh)rirTÚ mark_namess r"rmzMarkMatcher.from_itemØs/€à@Ð@¨D×,=Ò,=Ñ,?Ô,?Ð@Ñ@Ô@ˆ ؈s�:‰ŒÐr#rNcó—||jvSrXr�)rrrNs r"rtzMarkMatcher.__call__Ýs€Ø�tÔ*Ð*Ð*r#N)rTrrr�rurr#r"r�r�Ísx€€€€€€ððð $€Ià Ô$Ð$Ð$Ñ$àðððñ„[ðð+˜Sð+ Tð+ð+ð+ð+ð+ð+r#r�cóT—|jj}|sdSt|d¦«}g}g}|D]Z}| t |¦«¦«r| |¦«ŒE| |¦«Œ[|r$|j |¬¦«||dd…<dSdS)NzWrong expression passed to '-m'r�) rBr0rƒr„r�rmr…r†r‡)rr<Ú matchexprr‰rŠr‹rTs r"Údeselect_by_markr™ás΀Ø” Ô&€IØ ðØˆå ˜YÐ(IÑ JÔ J€DØ€IØ€JØð$ð$ˆØ �=Š=�×.Ò.¨tÑ4Ô4Ñ 5Ô 5ð $Ø × Ò ˜TÑ "Ô "Ð "Ð "à × Ò ˜dÑ #Ô #Ð #Ð #ØðØŒ ×%Ò%¨JÐ%Ñ7Ô7Ð7؈ˆaˆaˆa‰ˆˆððr#r‰Ú exc_messagecó€— tj|¦«S#t$r}t|›d|›d|›�¦«d‚d}~wwxYw)Nz: )r Úcompiler r)r‰ršÚes r"rƒrƒósb€ðBÝÔ! $Ñ'Ô'Ð'øÝ ðBðBðBݘKÐ6Ð6¨4Ð6Ð6°1Ð6Ð6Ñ7Ô7¸TÐAøøøøðBøøøs‚– = 8¸=cóF—t||¦«t||¦«dSrX)r�r™)rr<s r"Úpytest_collection_modifyitemsrŸús(€Ý˜˜vÑ&Ô&Ð&Ý�U˜FÑ#Ô#Ð#Ð#Ð#r#cóÜ—tj|jt<|t_| t ¦«}|dvr(t d t |¦«¦«‚dS)N)ÚskipÚxfailÚfail_at_collectNr)zA{!s} must be one of skip, xfail or fail_at_collect but it is {!r})rÚ_configÚstashÚold_mark_config_keyrEr rÚformat)r<Úempty_parametersets r"Úpytest_configurer©ÿsj€Ý(0Ô(8€F„LÕ$Ñ%Ø…HÔàŸšÕ'@ÑAÔAÐàÐ!OÐOÐOÝð ß$šfÕ%>Ð@RÑSÔSñ ô ð ðPÐOr#cóZ—|j td¦«t_dSrX)r¥Úgetr¦rr¤)r<s r"Úpytest_unconfigurer¬ s#€Ø”|×'Ò'Õ(;¸TÑBÔB…HÔÐÐr#)0ryÚ dataclassesÚtypingrrrrrrÚ expressionr r Ú structuresr r rrrrrrArrrrÚ_pytest.config.argparsingrÚ _pytest.stashrÚ _pytest.nodesrÚ__all__r¦Úobjectr{r!r:ÚintrPÚ dataclassrRr�r�r™rƒrŸr©r¬rr#r"úr¸s$ðØCÐCØÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð ØÐÐÐÐÐà"Ð"Ð"Ð"Ð"Ð"Ø"Ð"Ð"Ð"Ð"Ð"Ø1Ð1Ð1Ð1Ð1Ð1Ø3Ð3Ð3Ð3Ð3Ð3ØÐÐÐÐÐØ Ð Ð Ð Ð Ð Ø%Ð%Ð%Ð%Ð%Ð%Ø%Ð%Ð%Ð%Ð%Ð%Ø$Ð$Ð$Ð$Ð$Ð$Ø!Ð!Ð!Ð!Ð!Ð!Ø#Ð#Ð#Ð#Ð#Ð#Ø#Ð#Ð#Ð#Ð#Ð#Ø%Ð%Ð%Ð%Ð%Ð%Ø,Ð,Ð,Ð,Ð,Ð,Ø"Ð"Ð"Ð"Ð"Ð"àð#Ø"Ð"Ð"Ð"Ð"Ð"ð ð ð €ð1�h˜x¨Ô/Ô0Ñ2Ô2Ðð KMØð;ð;ð;Ø ð;à �  ¨5°ÀÐ1DÔ+EÔ FÐFÔ Gð;ð �Œ ð;ðð ;ð;ð;ð;ð6'W˜Vð'W¨ð'Wð'Wð'Wð'WðT €�4ÐÑÔð ð¨8°E¸#¸x¸-Ô4HÔ+IðððñÔðð& Ôð1ð1ð1ð1ð1ñ1ô1ñÔð1ðh˜|ð°VðÀððððð( Ôð+ð+ð+ð+ð+ñ+ô+ñÔð+ð&˜Lð°&ð¸Tððððð$B˜CðB¨cðB°jðBðBðBðBð$¨ð$¸vð$È$ð$ð$ð$ð$ð  ˜Vð  ¨ð  ð  ð  ð  ðC˜vðC¨$ðCðCðCðCðCðCr#