§
    s
Ê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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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Zddl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*m0Z0 ddl1m2Z2 ddl1m3Z3 dd l4m5Z5 dd!l4m6Z6 dd"l7m8Z8 erdd#l9m:Z: dd$l;m<Z< did)„Z=djd,„Z>dkd2„Z?dld3„Z@dmd7„ZAdnd8„ZBdod:„ZCdpd<„ZDdqd?„ZEdrdC„ZFdsdF„ZG G dG„ dH¦  «        ZH G dI„ dJeI¦  «        ZJ G dK„ dLeK¦  «        ZLejM         G dM„ dNeNeeOf         ¦  «        ¦   «         ZPe G dO„ dPejQ        ¦  «        ¦   «         ZRe G dQ„ d5ejS        ¦  «        ¦   «         ZTdRdSœdtdW„ZU ejM        dX¬Y¦  «         G dZ„ d[¦  «        ¦   «         ZVdRdRd\œdudb„ZWdvdd„ZXdwdh„ZYdS )xzHCore implementation of the testing process: init, session, runtest loop.é    )ÚannotationsN)ÚCallable)ÚIterable)ÚIterator)ÚSequence)ÚSet)ÚPath)Úfinal)ÚLiteral)Úoverload)ÚTYPE_CHECKING)Únodes)ÚConfig)Údirectory_arg)ÚExitCode)Úhookimpl)ÚPytestPluginManager)Ú
UsageError)ÚOverrideIniAction)ÚParser)Úexit©Úabsolutepath)Úbestrelpath©Ú
fnmatch_ex)Úsafe_exists)Úsamefile_nofollow)Úscandir)ÚCollectReport)Ú
TestReport)Úcollect_one_node)Ú
SetupState)ÚPytestWarning)ÚSelf)ÚFixtureManagerÚparserr   ÚreturnÚNonec           
     ó6  — |                       d¦  «        }|                     dddddd¬¦  «         |                     d	d
dt          ddd¬¦  «         |                     dt          ddd¬¦  «         |                     dt          ddd¬¦  «         |                     dt          ddd¬¦  «         |                      dddd ¬¦  «         |                      dddd ¬¦  «         |                      dddd¬¦  «         |                       d ¦  «        }|                     d!d"d#d$¬%¦  «         |                     d&dt          d d
d'd(¬)¦  «         |                      d*d+d,¬-¦  «         |                      d'd(¬.¦  «         |                       d/d0¦  «        }|                     d1d2d3d4d5¬%¦  «         |                     d6d4d7¬%¦  «         |                     d8d#d9d:¬;¦  «         |                     d<d#d9d=¬;¦  «         |                     d>d#d?d@¬;¦  «         |                     dAdBd dCt          j        t          dA¬D¦  «        dE¬F¦  «         |                     dGd4dHddI¬J¦  «         |                     dKdLd4dMddN¬J¦  «         |                     dOd4dPddQ¬J¦  «         |                     dRd4ddSdT¬U¦  «         |                     dVdWg dX¢dYdZ¬[¦  «         |                      d\d]d^g d_¢¬¦  «         |                      d`dad^g ¬¦  «         |                      dbdcddd¬¦  «         |                      dedddf¬g¦  «         |                       dhdi¦  «        }|                     djdkdlt          dmdn¬o¦  «         |                     dpddqdr¬s¦  «         |                     dtdud t          dCdv¬w¦  «         d S )xNÚgeneralz-xz--exitfirstÚstore_constÚmaxfailé   z,Exit instantly on first error or failed test)ÚactionÚdestÚconstÚhelpz	--maxfailÚnumÚstorer   z'Exit after first num failures or errors)Úmetavarr/   Útyper0   Údefaultr2   z--strict-configÚstrict_configÚtruez Enables the strict_config option)r/   Ú
ini_optionÚ	ini_valuer2   z--strict-markersÚstrict_markersz!Enables the strict_markers optionz--strictÚstrictzEnables the strict optionzbAny warnings encountered while parsing the `pytest` section of the configuration file raise errorsÚbool)r6   r7   zVMarkers not registered in the `markers` section of the configuration file raise errorszrEnables all strictness options, currently: strict_config, strict_markers, strict_xfail, strict_parametrization_idsFzpytest-warningsz-Wz--pythonwarningsÚappendz<Set which warnings to report, see -W option of Python itself)r/   r2   z--max-warningsÚmax_warningszSExit with error if all tests pass but the number of warnings exceeds this threshold)r/   r6   r7   r5   r0   r2   ÚfilterwarningsÚlinelistz_Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings.)r6   r2   )r2   ÚcollectÚ
collectionz--collectonlyz--collect-onlyz--coÚ
store_truez&Only collect tests, don't execute themz--pyargsz1Try to interpret all arguments as Python packagesz--ignoreÚpathz-Ignore path during collection (multi-allowed))r/   r5   r2   z--ignore-globz5Ignore path pattern during collection (multi-allowed)z
--deselectÚnodeid_prefixzDDeselect item (via node id prefix) during collection (multi-allowed)z--confcutdirÚ
confcutdirÚdir)Úoptnamez1Only load conftest.py's relative to specified dir)r0   r7   r5   r6   r2   z--noconftestÚ
noconftestz Don't load any conftest.py files)r/   r0   r7   r2   z--keepduplicatesz--keep-duplicatesÚkeepduplicateszKeep duplicate testsz--collect-in-virtualenvÚcollect_in_virtualenvz2Don't ignore tests in a local virtualenv directoryz--continue-on-collection-errorsÚcontinue_on_collection_errorsz4Force test execution even if collection errors occur)r/   r7   r0   r2   z--import-modeÚprepend)rO   r?   Ú	importlibÚ
importmodez\Prepend/append to sys.path when importing test modules and conftest files. Default: prepend.)r7   Úchoicesr0   r2   Únorecursedirsz)Directory patterns to avoid for recursionÚargs)	z*.eggz.*Ú_darcsÚbuildÚCVSÚdistÚnode_modulesÚvenvz{arch}Ú	testpathszZDirectories to search for tests when no files or directories are given on the command lineÚcollect_imported_testsz@Whether to collect tests in imported modules outside `testpaths`TÚconsider_namespace_packageszEConsider namespace packages when resolving module names during import)r6   r7   r2   Údebugconfigz(test session debugging and configurationz-cz--config-fileÚFILEÚinifilenamezcLoad configuration from `FILE` instead of trying to locate one of the implicit configuration files.)r5   r6   r0   r2   z	--rootdirÚrootdirz¶Define root directory for tests. Can be relative path: 'root_dir', './root_dir', 'root_dir/another_dir/'; absolute path: '/home/user/root_dir'; path with variables: '$HOME/root_dir'.)r/   r0   r2   z
--basetempÚbasetempz^Base temporary directory for this test run. (Warning: this directory is removed if it exists.))r0   r7   r6   r5   r2   )ÚgetgroupÚ
_addoptionÚ	addoptionÚintr   ÚaddiniÚ	functoolsÚpartialr   ÚstrÚvalidate_basetemp)r'   Úgroups     ú<C:\Projects\Muse2API\.venv\Lib\site-packages\_pytest/main.pyÚpytest_addoptionrn   9   s˜  € Ø�OŠO˜IÑ&Ô&€EØ	×ÒØØØØØØ;ð ñ ô ð ð 
‡O‚OØØØÝØØØ6ð ñ ô ð ð 
‡O‚OØÝ Ø"ØØ/ð ñ ô ð ð 
‡O‚OØÝ Ø#ØØ0ð ñ ô ð ð 
‡O‚OØÝ ØØØ(ð ñ ô ð ð ‡M‚MØð	*ààð ñ ô ð ð ‡M‚MØð	ààð ñ ô ð ð ‡M‚MØð	RàØð ñ ô ð ð �OŠOÐ-Ñ.Ô.€EØ	‡O‚OØØØØKð	 ñ ô ð ð 
‡O‚OØØÝØØØØbð ñ ô ð ð ‡M‚MØØð/ð ñ ô ð ð ‡M‚MØØbð ñ ô ð ð
 �OŠO˜I |Ñ4Ô4€EØ	‡O‚OØØØØØ5ð ñ ô ð ð 
‡O‚OØØØ@ð ñ ô ð ð
 
‡O‚OØØØØ<ð	 ñ ô ð ð 
‡O‚OØØØØDð	 ñ ô ð ð 
‡O‚OØØØØSð	 ñ ô ð ð 
‡O‚OØØØØÝÔ�}°nÐEÑEÔEØ@ð ñ ô ð ð 
‡O‚OØØØØØ/ð ñ ô ð ð 
‡O‚OØØØØØØ#ð ñ ô ð ð 
‡O‚OØ!ØØ$ØØAð ñ ô ð ð 
‡O‚OØ)ØØØ,ØCð ñ ô ð ð 
‡O‚OØØØ2Ð2Ð2Øð#ð ñ ô ð ð ‡M‚MØØ3Øð

ð 

ð 

ð	 ñ ô ð ð  ‡M‚MØð	àØð ñ ô ð ð ‡M‚MØ ØJØØð	 ñ ô ð ð ‡M‚MØ%ØØØTð	 ñ ô ð ð �OŠO˜MÐ+UÑVÔV€EØ	×ÒØØØÝØð(ð ñ ô ð ð 
‡O‚OØØØðð	 ñ ô ð ð 
‡O‚OØØØÝØðAð ñ 
ô 
ð 
ð 
ð 
ó    rF   rj   c                ó¢  — d}| st          j        |¦  «        ‚dd„} |t          j        ¦   «         t          | ¦  «                             ¦   «         ¦  «        rt          j        |¦  «        ‚ |t          j        ¦   «                              ¦   «         t          | ¦  «                             ¦   «         ¦  «        rt          j        |¦  «        ‚| S )	NzWbasetemp must not be empty, the current working directory or any parent directory of itÚbaser	   Úqueryr(   r>   c                ó$   — | |k    rdS || j         v S )z,Return whether query is an ancestor of base.T)Úparents)rq   rr   s     rm   Úis_ancestorz&validate_basetemp.<locals>.is_ancestor,  s   € à�5Š=ˆ=Ø�4Ø˜œÐ$Ð$ro   )rq   r	   rr   r	   r(   r>   )ÚargparseÚArgumentTypeErrorr	   ÚcwdÚabsoluteÚresolve)rF   Úmsgru   s      rm   rk   rk   $  sÅ   € à
c€Cð ð .ÝÔ(¨Ñ-Ô-Ð-ð%ð %ð %ð %ð €{•4”8‘:”:�t D™zœz×2Ò2Ñ4Ô4Ñ5Ô5ð .ÝÔ(¨Ñ-Ô-Ð-ð €{•4”8‘:”:×%Ò%Ñ'Ô'­¨d©¬×);Ò);Ñ)=Ô)=Ñ>Ô>ð .ÝÔ(¨Ñ-Ô-Ð-à€Kro   Úconfigr   Údoitú2Callable[[Config, Session], int | ExitCode | None]úint | ExitCodec           	     ó$  — t                                | ¦  «        }t          j        |_        d}	 	 |                      ¦   «          d}| j                             |¬¦  «         d} || |¦  «        pd|_        �n# t          $ r t          j	        |_        ‚ t          $ r t          j        |_        Y �nØt          t          j        f$ rÅ t          j        j                             ¦   «         }t          j        }t)          |j        t          j        ¦  «        rR|j        j        �|j        j        }|dk     r4t.          j                             |j        › d|j        j        › d�¦  «         | j                             |¬¦  «         ||_        Y nÿt:          $ ró t          j        |_        t          j        j                             ¦   «         }	 |                      || j         ¦  «         t)          |j        tB          ¦  «        rt.          j                             d	¦  «         nf# t          j        $ rT}|j        �|j        |_        t.          j                             tE          |¦  «        j#        › d|› d�¦  «         Y d}~nd}~ww xY wY nw xY wd}tI          j%        |j&        ¦  «         |dk    r‰	 | j         '                    ||j        ¬
¦  «         nf# t          j        $ rT}|j        �|j        |_        t.          j                             tE          |¦  «        j#        › d|› d�¦  «         Y d}~nd}~ww xY w|  (                    ¦   «          nÃ# d}tI          j%        |j&        ¦  «         |dk    r‰	 | j         '                    ||j        ¬
¦  «         nf# t          j        $ rT}|j        �|j        |_        t.          j                             tE          |¦  «        j#        › d|› d�¦  «         Y d}~nd}~ww xY w|  (                    ¦   «          w xY w|j        S )zSkeleton command line program.r   r.   ©Úsessioné   Nz: ú
)Úexcinfoz(mainloop: caught unexpected SystemExit!
)r‚   Ú
exitstatus))ÚSessionÚfrom_configr   ÚOKr†   Ú_do_configureÚhookÚpytest_sessionstartr   ÚUSAGE_ERRORÚFailedÚTESTS_FAILEDÚKeyboardInterruptr   Ú	ExceptionÚ_pytestÚ_codeÚExceptionInfoÚfrom_currentÚINTERRUPTEDÚ
isinstanceÚvalueÚ
returncodeÚsysÚstderrÚwriteÚtypenamer{   Úpytest_keyboard_interruptÚBaseExceptionÚINTERNAL_ERRORÚnotify_exceptionÚoptionÚ
SystemExitr6   Ú__name__ÚosÚchdirÚ	startpathÚpytest_sessionfinishÚ_ensure_unconfigure)r|   r}   r‚   Ú	initstater…   r†   Úexcs          rm   Úwrap_sessionr¬   =  sc  € õ ×!Ò! &Ñ)Ô)€GÝ!œ€GÔØ€Ið0%ð 	RØ× Ò Ñ"Ô"Ð"ØˆIØŒK×+Ò+°GÐ+Ñ<Ô<Ð<ØˆIØ!%  f¨gÑ!6Ô!6Ð!;¸!ˆGÔÑøÝð 	ð 	ð 	Ý!)Ô!5ˆGÔØÝð 	7ð 	7ð 	7Ý!)Ô!6ˆGÔÐÑÝ!¥4¤>Ð2ð 		,ð 		,ð 		,Ý”mÔ1×>Ò>Ñ@Ô@ˆGÝ)1Ô)=ˆJÝ˜'œ-­¬Ñ8Ô8ð SØ”=Ô+Ð7Ø!(¤Ô!9�JØ˜q’=�=Ý”J×$Ò$¨Ô(8Ð%QÐ%Q¸G¼MÔ<MÐ%QÐ%QÐ%QÑRÔRÐRØŒK×1Ò1¸'Ð1ÑBÔBÐBØ!+ˆGÔÐÐÝð 	Rð 	Rð 	RÝ!)Ô!8ˆGÔÝ”mÔ1×>Ò>Ñ@Ô@ˆGðRØ×'Ò'¨°´Ñ?Ô?Ð?õ ˜gœm­ZÑ8Ô8ð RÝ”J×$Ò$Ð%PÑQÔQÐQøøõ ”>ð Cð Cð CØ”>Ð-Ø),¬�GÔ&Ý”
× Ò ¥D¨¡I¤IÔ$6Ð!AÐ!A¸#Ð!AÐ!AÐ!AÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøøøð	Røøøð ˆÝ
Œ�Ô"Ñ#Ô#Ð#Ø˜Š>ˆ>ðCØ”×0Ò0Ø#°Ô0Bð 1ñ ô ð ð øõ ”>ð Cð Cð CØ”>Ð-Ø),¬�GÔ&Ý”
× Ò ¥D¨¡I¤IÔ$6Ð!AÐ!A¸#Ð!AÐ!AÐ!AÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøð 	×"Ò"Ñ$Ô$Ð$Ð$øð ˆÝ
Œ�Ô"Ñ#Ô#Ð#Ø˜Š>ˆ>ðCØ”×0Ò0Ø#°Ô0Bð 1ñ ô ð ð øõ ”>ð Cð Cð CØ”>Ð-Ø),¬�GÔ&Ý”
× Ò ¥D¨¡I¤IÔ$6Ð!AÐ!A¸#Ð!AÐ!AÐ!AÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøð 	×"Ò"Ñ$Ô$Ð$Ð$øøøØÔÐs²   °AA8 Á6M Á86JÂ.M Â1CJÆM Æ
=JÇHÇ#:JÈJ È,A
I;É6JÉ;J Ê JÊM ÊJÊM Ê+!K ËL0ËA
L+Ì+L0Í"PÍ+!NÎPÎO0ÎA
O+Ï&PÏ+O0Ï0Pc                ó,   — t          | t          ¦  «        S ©N)r¬   Ú_main©r|   s    rm   Úpytest_cmdline_mainr±   x  s   € Ý˜¥Ñ&Ô&Ð&ro   r‚   r‡   úint | ExitCode | Nonec                óÆ   — | j                              |¬¦  «         | j                              |¬¦  «         |j        rt          j        S |j        dk    rt          j        S dS )z[Default command line protocol for initialization, session,
    running tests and reporting.r�   r   N)r‹   Úpytest_collectionÚpytest_runtestloopÚtestsfailedr   r�   ÚtestscollectedÚNO_TESTS_COLLECTED)r|   r‚   s     rm   r¯   r¯   |  sf   € ð „K×!Ò!¨'Ð!Ñ2Ô2Ð2Ø
„K×"Ò"¨7Ð"Ñ3Ô3Ð3àÔð +ÝÔ$Ð$Ø	Ô	 1Ò	$Ð	$ÝÔ*Ð*Øˆ4ro   c                ó.   — |                       ¦   «          d S r®   )Úperform_collectr�   s    rm   r´   r´   ‰  s   € Ø×ÒÑÔÐÐÐro   r>   c                ó
  — | j         r>| j        j        j        s-|                      | j         › d| j         dk    rdnd› d�¦  «        ‚| j        j        j        rdS t          | j        ¦  «        D ]•\  }}|dz   t          | j        ¦  «        k     r| j        |dz            nd }|j        j	         
                    ||¬¦  «         | j        r|                      | j        ¦  «        ‚| j        r|                      | j        ¦  «        ‚Œ–dS )Nz errorr.   ÚsÚ z during collectionT)ÚitemÚnextitem)r¶   r|   r¢   rN   ÚInterruptedÚcollectonlyÚ	enumerateÚitemsÚlenr‹   Úpytest_runtest_protocolÚ
shouldfailrŽ   Ú
shouldstop)r‚   Úir¾   r¿   s       rm   rµ   rµ   �  s'  € ØÔð 
 7¤>Ô#8Ô#Vð 
Ø×!Ò!ØÔ"ÐeÐe°Ô1DÈÒ1IÐ1I¨#¨#ÈrÐeÐeÐeñ
ô 
ð 	
ð „~ÔÔ(ð Øˆtå˜Wœ]Ñ+Ô+ð :ð :‰ˆˆ4Ø+,¨q©5µ3°w´}Ñ3EÔ3EÒ+EÐ+E�7”=  Q¡Ô'Ð'È4ˆØŒÔ×0Ò0°dÀXÐ0ÑNÔNÐNØÔð 	5Ø—.’. Ô!3Ñ4Ô4Ð4ØÔð 	:Ø×%Ò% gÔ&8Ñ9Ô9Ð9ð	:àˆ4ro   r	   c                óÄ   — 	 |                       d¦  «                             ¦   «         p'|                       dd¦  «                             ¦   «         S # t          $ r Y dS w xY w)añ  Attempt to detect if ``path`` is the root of a Virtual Environment by
    checking for the existence of the pyvenv.cfg file.

    [https://peps.python.org/pep-0405/]

    For regression protection we also check for conda environments that do not include pyenv.cfg yet --
    https://github.com/conda/conda/issues/13337 is the conda issue tracking adding pyenv.cfg.

    Checking for the `conda-meta/history` file per https://github.com/pytest-dev/pytest/issues/12652#issuecomment-2246336902.

    z
pyvenv.cfgz
conda-metaÚhistoryF)ÚjoinpathÚis_fileÚOSError©rF   s    rm   Ú_in_venvrÏ      sn   € ðà�MŠM˜,Ñ'Ô'×/Ò/Ñ1Ô1ð @Ø�}Š}˜\¨9Ñ5Ô5×=Ò=Ñ?Ô?ð	
øõ ð ð ð Øˆuˆuðøøøs   ‚AA Á
AÁAÚcollection_pathúbool | Nonec                óœ  ‡ — ‰ j         dk    rdS |                     d‰ j        ¬¦  «        }|pg }|                     d¦  «        }|r|                     d„ |D ¦   «         ¦  «         ‰ |v rdS |                     d‰ j        ¬¦  «        }|pg }|                     d¦  «        }|r|                     d	„ |D ¦   «         ¦  «         t          ˆ fd
„|D ¦   «         ¦  «        rdS |                     d¦  «        }|st          ‰ ¦  «        rdS ‰                      ¦   «         r2|                     d¦  «        }t          ˆ fd„|D ¦   «         ¦  «        rdS d S )NÚ__pycache__TÚcollect_ignorerÎ   Úignorec              3  ó4   K  — | ]}t          |¦  «        V — Œd S r®   r   ©Ú.0Úxs     rm   ú	<genexpr>z(pytest_ignore_collect.<locals>.<genexpr>¿  s(   è è € Ð@Ð@°�L¨™OœOÐ@Ð@Ð@Ð@Ð@Ð@ro   Úcollect_ignore_globÚignore_globc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r®   r   r×   s     rm   rÚ   z(pytest_ignore_collect.<locals>.<genexpr>Ê  s(   è è € ÐDÐD°�L¨™OœOÐDÐDÐDÐDÐDÐDro   c              3  óv   •K  — | ]3}t          j         t          ‰¦  «        t          |¦  «        ¦  «        V — Œ4d S r®   )Úfnmatchrj   )rØ   ÚglobrÐ   s     €rm   rÚ   z(pytest_ignore_collect.<locals>.<genexpr>Ì  s=   øè è € Ð
UÐ
UÀ�7Œ?�3˜Ñ/Ô/µ°T±´Ñ;Ô;Ð
UÐ
UÐ
UÐ
UÐ
UÐ
Uro   rM   rS   c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S r®   r   )rØ   ÚpatrÐ   s     €rm   rÚ   z(pytest_ignore_collect.<locals>.<genexpr>Õ  s-   øè è € ÐMÐM°C�z˜#˜Ñ/Ô/ÐMÐMÐMÐMÐMÐMro   )	ÚnameÚ_getconftest_pathlistÚparentÚ	getoptionÚextendÚanyrÏ   Úis_dirÚgetini)rÐ   r|   Úignore_pathsÚ
excludeoptÚignore_globsÚexcludegloboptÚallow_in_venvÚnorecursepatternss   `       rm   Úpytest_ignore_collectrñ   µ  s°  ø€ ØÔ˜}Ò,Ð,Øˆtà×/Ò/Ø˜Ô5ð 0ñ ô €Lð  Ð% 2€LØ×!Ò! (Ñ+Ô+€JØð AØ×ÒÐ@Ð@°ZÐ@Ñ@Ô@Ñ@Ô@Ð@à˜,Ð&Ð&Øˆtà×/Ò/Ø OÔ$:ð 0ñ ô €Lð  Ð% 2€LØ×%Ò% mÑ4Ô4€NØð EØ×ÒÐDÐD°^ÐDÑDÔDÑDÔDÐDå
Ð
UÐ
UÐ
UÐ
UÈÐ
UÑ
UÔ
UÑUÔUð Øˆtà×$Ò$Ð%<Ñ=Ô=€MØð �X oÑ6Ô6ð Øˆtà×ÒÑÔð Ø"ŸMšM¨/Ñ:Ô:ÐÝÐMÐMÐMÐMÐ;LÐMÑMÔMÑMÔMð 	Ø�4àˆ4ro   rå   únodes.Collectorúnodes.Collector | Nonec                ó:   — t                                || ¬¦  «        S )NrÎ   )ÚDirÚfrom_parent©rF   rå   s     rm   Úpytest_collect_directoryrø   Û  s   € õ �?Š?˜6¨ˆ?Ñ-Ô-Ð-ro   rÃ   úlist[nodes.Item]c                ó>  — t          |                     d¦  «        pg ¦  «        }|sd S g }g }| D ]G}|j                             |¦  «        r|                     |¦  «         Œ2|                     |¦  «         ŒH|r$|j                             |¬¦  «         || d d …<   d S d S )NÚdeselect)rÃ   )Útupleræ   ÚnodeidÚ
startswithr?   r‹   Úpytest_deselected)rÃ   r|   Údeselect_prefixesÚ	remainingÚ
deselectedÚcolitems         rm   Úpytest_collection_modifyitemsr  á  sÌ   € Ý˜f×.Ò.¨zÑ:Ô:Ð@¸bÑAÔAÐØð Øˆà€IØ€JØð &ð &ˆØŒ>×$Ò$Ð%6Ñ7Ô7ð 	&Ø×Ò˜gÑ&Ô&Ð&Ð&à×Ò˜WÑ%Ô%Ð%Ð%àð ØŒ×%Ò%¨JÐ%Ñ7Ô7Ð7Øˆˆaˆaˆa‰ˆˆðð ro   c                  ó   — e Zd Zdd„Zdd„ZdS )ÚFSHookProxyÚpmr   Úremove_modsúAbstractSet[object]r(   r)   c                ó"   — || _         || _        d S r®   )r  r  )Úselfr  r  s      rm   Ú__init__zFSHookProxy.__init__ô  s   € ð
 ˆŒØ&ˆÔÐÐro   rã   rj   úpluggy.HookCallerc                ó\   — | j                              || j        ¬¦  «        }|| j        |<   |S )N)Úremove_plugins)r  Úsubset_hook_callerr  Ú__dict__)r  rã   rÙ   s      rm   Ú__getattr__zFSHookProxy.__getattr__ü  s0   € ØŒG×&Ò& t¸DÔ<LÐ&ÑMÔMˆØˆŒ�dÑØˆro   N)r  r   r  r	  r(   r)   )rã   rj   r(   r  )r¤   Ú
__module__Ú__qualname__r  r  © ro   rm   r  r  ó  s<   € € € € € ð'ð 'ð 'ð 'ðð ð ð ð ð ro   r  c                  ó   — e Zd ZdZdZdS )rÀ   z*Signals that the test run was interrupted.ÚbuiltinsN©r¤   r  r  Ú__doc__r  ro   rm   rÀ   rÀ     s   € € € € € Ø4Ð4à€J€J€Jro   rÀ   c                  ó   — e Zd ZdZdS )rŽ   z"Signals a stop as failed test run.Nr  r  ro   rm   rŽ   rŽ     s   € € € € € Ø,Ð,Ð,Ð,ro   rŽ   c                  ó&   — e Zd ZU dZded<   dd„ZdS )	Ú_bestrelpath_cacherÎ   r	   rF   r(   rj   c                ó:   — t          | j        |¦  «        }|| |<   |S r®   )r   rF   )r  rF   Úrs      rm   Ú__missing__z_bestrelpath_cache.__missing__  s!   € Ý˜œ	 4Ñ(Ô(ˆØˆˆT‰
Øˆro   N)rF   r	   r(   rj   )r¤   r  r  Ú	__slots__Ú__annotations__r  r  ro   rm   r  r    s8   € € € € € € à€Ià€J€J�Jðð ð ð ð ð ro   r  c                  ó<   ‡ — e Zd ZdZedˆ fd„¦   «         Zdd
„Zˆ xZS )rõ   a  Collector of files in a file system directory.

    .. versionadded:: 8.0

    .. note::

        Python directories with an `__init__.py` file are instead collected by
        :class:`~pytest.Package` by default. Both are :class:`~pytest.Directory`
        collectors.
    rå   rò   rF   r	   r(   r%   c               óJ   •— t          ¦   «                              ||¬¦  «        S )z¦The public constructor.

        :param parent: The parent collector of this Dir.
        :param path: The directory's path.
        :type path: pathlib.Path
        )rå   rF   )Úsuperrö   )Úclsrå   rF   Ú	__class__s      €rm   rö   zDir.from_parent%  s"   ø€ õ ‰wŒw×"Ò"¨&°tÐ"Ñ<Ô<Ð<ro   ú&Iterable[nodes.Item | nodes.Collector]c              #  ó:  K  — | j         }| j        }t          | j        ¦  «        D ]õ}|                     ¦   «         rft          |j        ¦  «        }| j                             |d¬¦  «        s|                     ||¬¦  «        rŒ^| 	                    || ¬¦  «        }|�|V — Œ|| 
                    ¦   «         ret          |j        ¦  «        }| j                             |¦  «        s|                     ||¬¦  «        rŒÖ|                     || ¬¦  «        }|E d {V —† Œöd S )NT©Úwith_parents)rÐ   r|   r÷   ©Ú	file_pathrå   )r|   Úihookr   rF   ré   r	   r‚   Ú
isinitpathrñ   rø   rÌ   Úpytest_collect_file)r  r|   r-  ÚdirentryrF   ÚcolÚcolss          rm   rC   zDir.collect4  sA  è è € Ø”ˆð ”
ˆÝ ¤	Ñ*Ô*ð 	 ð 	 ˆHØ�ŠÑ Ô ð  Ý˜HœMÑ*Ô*�Ø”|×.Ò.¨tÀ$Ð.ÑGÔGð !Ø×2Ò2À4ÐPVÐ2ÑWÔWð !Ø Ø×4Ò4¸$ÀtÐ4ÑLÔL�Ø�?Ø�I�I�Iøà×!Ò!Ñ#Ô#ð  Ý˜HœMÑ*Ô*�Ø”|×.Ò.¨tÑ4Ô4ð !Ø×2Ò2À4ÐPVÐ2ÑWÔWð !Ø Ø×0Ò0¸4ÈÐ0ÑMÔM�Ø�������øð!	 ð 	 ro   )rå   rò   rF   r	   r(   r%   )r(   r'  )r¤   r  r  r  Úclassmethodrö   rC   Ú__classcell__©r&  s   @rm   rõ   rõ     sg   ø€ € € € € ð	ð 	ð ð=ð =ð =ð =ð =ñ „[ð=ð ð  ð  ð  ð  ð  ð  ð  ro   rõ   c                  óÚ  ‡ — e Zd ZU dZeZeZded<   ded<   ded<   dDˆ fd„ZedEd„¦   «         Z	dFd„Z
edGd„¦   «         Zej        dHd„¦   «         ZedGd„¦   «         Zej        dHd„¦   «         ZedId„¦   «         ZdJd„Z ed¬¦  «        dKd„¦   «         Z ed¬¦  «        dLd„¦   «         ZeZd d!œdMd&„ZdNd*„ZdOd.„Ze	 dPdQd5„¦   «         Ze	 dPdRd7„¦   «         Z	 dSdRd9„Z	 dTdUd>„ZdVd@„ZdWdC„Zˆ xZS )Xr‡   zoThe root of the collection tree.

    ``Session`` collects the initial paths given as arguments to pytest.
    r#   Ú_setupstater&   Ú_fixturemanagerr   r†   r|   r   r(   r)   c           	     óÚ  •— t          ¦   «                              d|j        d d || d¬¦  «         d| _        d| _        d| _        d| _        |j        j         	                    d¦  «        | _        t          ¦   «         | _        t          ¦   «         | _        g | _        g | _        i | _        g | _        t#          |j        ¦  «        | _        | j        j                             | d¬¦  «         d S )Nr½   )rã   rF   Úfspathrå   r|   r‚   rý   r   FrD   r‚   )rã   )r$  r  Úrootpathr¶   r·   Ú_shouldstopÚ_shouldfailÚtraceÚrootÚgetÚ	frozensetÚ_initialpathsÚ_initialpaths_with_parentsÚ	_notfoundÚ_initial_partsÚ_collection_cacherÃ   r  Ú_bestrelpathcacher|   ÚpluginmanagerÚregister)r  r|   r&  s     €rm   r  zSession.__init__[  sã   ø€ Ý‰Œ×ÒØØ”ØØØØØð 	ñ 	
ô 	
ð 	
ð ˆÔØˆÔØ',ˆÔØ',ˆÔØ”\Ô&×*Ò*¨<Ñ8Ô8ˆŒ
Ý.7©k¬kˆÔÝ;D¹;¼;ˆÔ'ØFHˆŒØ8:ˆÔØGIˆÔØ')ˆŒ
å2DÀVÄ_Ñ2UÔ2UˆÔàŒÔ!×*Ò*¨4°iÐ*Ñ@Ô@Ð@Ð@Ð@ro   c                ó2   — |                       |¬¦  «        }|S )Nr°   )Ú_create)r%  r|   r‚   s      rm   rˆ   zSession.from_configu  s   € àŸ;š;¨f˜;Ñ5Ô5ˆØˆro   rj   c           	     óv   — d| j         j        › d| j        › d| j        › d| j        › d�	t          | dd¦  «        z  S )Nú<ú z exitstatus=%r testsfailed=z testscollected=ú>r†   z<UNSET>)r&  r¤   rã   r¶   r·   Úgetattr©r  s    rm   Ú__repr__zSession.__repr__z  sh   € ð5�”Ô'ð 5ð 5¨$¬)ð 5ð 5àÔ+ð5ð 5ð #Ô1ð5ð 5ð 5õ �D˜,¨	Ñ2Ô2ñ3ð 	3ro   ú
bool | strc                ó   — | j         S r®   )r<  rQ  s    rm   rÇ   zSession.shouldstop‚  ó   € àÔÐro   r˜   c                ót   — |du r,| j         r%t          j        t          d¦  «        d¬¦  «         d S || _         d S )NFzCsession.shouldstop cannot be unset after it has been set; ignoring.rƒ   ©Ú
stacklevel)r<  ÚwarningsÚwarnr$   ©r  r˜   s     rm   rÇ   zSession.shouldstop†  óW   € ð �Eˆ>ˆ>˜dÔ.ˆ>ÝŒMÝØYñô ð ð	ñ ô ð ð ˆFØ ˆÔÐÐro   c                ó   — | j         S r®   )r=  rQ  s    rm   rÆ   zSession.shouldfail”  rU  ro   c                ót   — |du r,| j         r%t          j        t          d¦  «        d¬¦  «         d S || _         d S )NFzCsession.shouldfail cannot be unset after it has been set; ignoring.rƒ   rW  )r=  rY  rZ  r$   r[  s     rm   rÆ   zSession.shouldfail˜  r\  ro   r	   c                ó$   — | j         j        j        S )zQThe path from which pytest was invoked.

        .. versionadded:: 7.0.0
        )r|   Úinvocation_paramsrI   rQ  s    rm   r§   zSession.startpath¦  s   € ð Œ{Ô,Ô0Ð0ro   Ú	node_pathc                ó   — | j         |         S r®   )rG  )r  ra  s     rm   Ú_node_location_to_relpathz!Session._node_location_to_relpath®  s   € àÔ% iÔ0Ð0ro   T)Útryfirstc                óŠ   — | j         r|                      | j         ¦  «        ‚| j        r|                      | j        ¦  «        ‚d S r®   )rÆ   rŽ   rÇ   rÀ   rQ  s    rm   Úpytest_collectstartzSession.pytest_collectstart²  sJ   € àŒ?ð 	/Ø—+’+˜dœoÑ.Ô.Ð.ØŒ?ð 	4Ø×"Ò" 4¤?Ñ3Ô3Ð3ð	4ð 	4ro   ÚreportúTestReport | CollectReportc                óÒ   — |j         rYt          |d¦  «        sK| xj        dz  c_        | j                             d¦  «        }|r!| j        |k    rd| j        › d�| _        d S d S d S d S d S )NÚwasxfailr.   r-   zstopping after z	 failures)ÚfailedÚhasattrr¶   r|   ÚgetvaluerÆ   )r  rg  r-   s      rm   Úpytest_runtest_logreportz Session.pytest_runtest_logreport¹  s¡   € àŒ=ð 	P¥¨°Ñ!<Ô!<ð 	PØÐÔ Ñ!ÐÔØ”k×*Ò*¨9Ñ5Ô5ˆGØð P˜4Ô+¨wÒ6Ð6Ø"O°DÔ4DÐ"OÐ"OÐ"O�”��ð		Pð 	Pð 	Pð 	PðPð PÐ6Ð6ro   Fr)  rF   ústr | os.PathLike[str]r*  r>   c               óv   — t          |t          ¦  «        r|nt          |¦  «        }|r	|| j        v S || j        v S )a>  Is path an initial path?

        An initial path is a path explicitly given to pytest on the command
        line.

        :param with_parents:
            If set, also return True if the path is a parent of an initial path.

        .. versionchanged:: 8.0
            Added the ``with_parents`` parameter.
        )r—   r	   rC  rB  )r  rF   r*  Úpath_s       rm   r.  zSession.isinitpathÃ  sF   € õ$ # 4­Ñ.Ô.Ð>��µD¸±J´JˆØð 	/Ø˜DÔ;Ð;Ð;à˜DÔ.Ð.Ð.ro   r:  úos.PathLike[str]úpluggy.HookRelayc                ó  — t          |t          ¦  «        r|nt          |¦  «        }| j        j        }|                     |¦  «        }|j                             |¦  «        }|rt          ||¦  «        }n| j        j        }|S r®   )	r—   r	   r|   rH  Ú_getconftestmodulesÚ_conftest_pluginsÚ
differencer  r‹   )r  r:  rF   r  Úmy_conftestmodulesr  Úproxys          rm   ÚgethookproxyzSession.gethookproxyÛ  s�   € å# F­DÑ1Ô1ÐCˆvˆvµt¸F±|´|ˆØŒ[Ô&ˆð  ×3Ò3°DÑ9Ô9ÐØÔ*×5Ò5Ð6HÑIÔIˆàð 	%å  KÑ0Ô0ˆEˆEð ”KÔ$ˆEØˆro   Ú
path_cacheú%dict[Path, Sequence[nodes.Collector]]úSequence[nodes.Collector]c                óH  — ||v r||         S |                      ¦   «         r9|                      |j        ¦  «        }|                     || ¬¦  «        }|�|fnd}nC|                     ¦   «         r-|                      |¦  «        }|                     || ¬¦  «        }nd}|||<   |S )z�Create a Collector for the given path.

        `path_cache` makes it so the same Collectors are returned for the same
        path.
        r÷   Nr  r+  )ré   rz  rå   rø   rÌ   r/  )r  rF   r{  r-  r1  r2  s         rm   Ú_collect_pathzSession._collect_pathì  sÅ   € ð �:ÐÐØ˜dÔ#Ð#à�;Š;‰=Œ=ð 	Ø×%Ò% d¤kÑ2Ô2ˆEØ*/×*HÒ*HØ $ð +Iñ +ô +ˆCð 9<¸¨s¨f¨fÈRˆDˆDà�\Š\‰^Œ^ð 	Ø×%Ò% dÑ+Ô+ˆEØ×,Ò,°tÀDÐ,ÑIÔIˆDˆDð ˆDàˆ
�4ÑØˆro   .rT   úSequence[str] | NoneÚgenitemsúLiteral[True]úSequence[nodes.Item]c                ó   — d S r®   r  ©r  rT   r�  s      rm   rº   zSession.perform_collect  s	   € ð  #˜sro   ú&Sequence[nodes.Item | nodes.Collector]c                ó   — d S r®   r  r…  s      rm   rº   zSession.perform_collect  s	   € ð 25°ro   Nc                óð  ‡ ‡— |€‰ j         j        }‰                      d‰ |¦  «         ‰ j        j        xj        dz  c_        ‰ j         j        }g ‰ _        g ‰ _        i ‰ _        g ‰ _	        ‰ j	        }‰ j          
                    d¦  «        Š	 g }g }ˆˆ fd„t          |¦  «        D ¦   «         }‰ j                              d¦  «        st          |¦  «        ‰ _        n|‰ _        ‰ j        D ]U}|                     |j        ¦  «         |                     |j        ¦  «         |                     |j        j        ¦  «         ŒVt%          |¦  «        ‰ _        t%          |¦  «        ‰ _        t+          ‰ ¦  «        }	‰ j                             |	¬¦  «         ‰ j        j        xj        dz  c_        ‰ j        rOg }
‰ j        D ]<\  }}|r|
                     d|› d	|›d
�¦  «         Œ$|
                     d|› �¦  «         Œ=t1          |
Ž ‚|s|	j        }n>|	j        r7|	j        D ]/}‰ j	                             ‰                      |¦  «        ¦  «         Œ0‰ j         j                             ¦   «          |                     ‰ ‰ j         |¬¦  «         g ‰ _        g ‰ _        i ‰ _        |                     ‰ ¬¦  «         n0# g ‰ _        g ‰ _        i ‰ _        |                     ‰ ¬¦  «         w xY w|rtA          |¦  «        ‰ _!        |S )aƒ  Perform the collection phase for this session.

        This is called by the default :hook:`pytest_collection` hook
        implementation; see the documentation of this hook for more details.
        For testing purposes, it may also be called directly on a fresh
        ``Session``.

        This function normally recursively expands any collectors collected
        from the session to their items, and only items are returned. For
        testing purposes, this may be suppressed by passing ``genitems=False``,
        in which case the return value contains these collectors unexpanded,
        and ``session.items`` is empty.
        Nrº   r.   r]   c           	     óz   •— g | ]7\  }}t          ‰j        j        j        ||‰j        j        j        ‰¬ ¦  «        ‘Œ8S )©Ú	as_pypathr]   )Úresolve_collection_argumentr|   r`  rI   r¢   Úpyargs)rØ   rÈ   Úargr]   r  s      €€rm   ú
<listcomp>z+Session.perform_collect.<locals>.<listcomp>9  s]   ø€ ð 	ð 	ð 	ñ �A�sõ ,Ø”KÔ1Ô5ØØØ"œkÔ0Ô7Ø0Kðñ ô ð	ð 	ð 	ro   rL   ©rg  znot found: z
(no match in any of ú)zfound no collectors for )r‚   r|   rÃ   r�   )"r|   rT   r>  r?  Úindentr‹   rD  rE  rF  rÃ   rê   rÂ   ræ   Únormalize_collection_argumentsr?   rF   rç   rt   rA  rB  rC  r"   r-  Úpytest_collectreportr   ÚresultÚpassedr�  rH  Úcheck_pendingr  Úpytest_collection_finishrÄ   r·   )r  rT   r�  r‹   rÃ   ÚinitialpathsÚinitialpaths_with_parentsÚcollection_argsÚcollection_argumentÚrepÚerrorsrŽ  Ú
collectorsÚnoder]   s   `             @rm   rº   zSession.perform_collect  si  øø€ ð  ˆ<Ø”;Ô#ˆDà�
Š
Ð$ d¨DÑ1Ô1Ð1ØŒ
ŒÐÔ !Ñ#ÐÔàŒ{ÔˆàˆŒØ ˆÔØ!#ˆÔØˆŒ
Ø8<¼
ˆØ,0¬K×,>Ò,>Ø)ñ-
ô -
Ð#ð:	8Ø')ˆLØ46Ð%ð	ð 	ð 	ð 	ð 	õ (¨™oœoð	ñ 	ô 	ˆOð ”;×(Ò(Ð)9Ñ:Ô:ð 6å&DÀ_Ñ&UÔ&U�Ô#Ð#à&5�Ô#à'+Ô':ð Sð SÐ#Ø×#Ò#Ð$7Ô$<Ñ=Ô=Ð=Ø)×0Ò0Ð1DÔ1IÑJÔJÐJØ)×0Ò0Ð1DÔ1IÔ1QÑRÔRÐRÐRÝ!*¨<Ñ!8Ô!8ˆDÔÝ.7Ð8QÑ.RÔ.RˆDÔ+å" 4Ñ(Ô(ˆCØŒJ×+Ò+°3Ð+Ñ7Ô7Ð7ØŒJŒOÐ"Ô" aÑ'Ð"Ô"ØŒ~ð 
*Ø�Ø'+¤~ð Hð H‘O�C˜Ø!ð HØŸšØT¨#ÐTÐTÀZÐTÐTÐTñô ð ð ð ŸšÐ&FÀÐ&FÐ&FÑGÔGÐGÐGå  &Ð)Ð)àð ?Øœ
��à”:ð ?Ø #¤
ð ?ð ?˜Øœ
×)Ò)¨$¯-ª-¸Ñ*=Ô*=Ñ>Ô>Ð>Ð>àŒKÔ%×3Ò3Ñ5Ô5Ð5Ø×.Ò.Ø T¤[¸ð /ñ ô ð ð  ˆDŒNØ"$ˆDÔØ%'ˆDÔ"Ø×)Ò)°$Ð)Ñ7Ô7Ð7Ð7øð  ˆDŒNØ"$ˆDÔØ%'ˆDÔ"Ø×)Ò)°$Ð)Ñ7Ô7Ð7Ð7øøøàð 	-Ý"% e¡*¤*ˆDÔàˆs   ÂG8J0 Ê0-Kr   rò   Úhandle_dupesútuple[CollectReport, bool]c                ót   — || j         v r|r| j         |         }|dfS t          |¦  «        }|| j         |<   |dfS )NTF)rF  r"   )r  r   r¡  r�  s       rm   Ú_collect_one_nodezSession._collect_one_nodev  sR   € ð
 �4Ô)Ð)Ð)¨lÐ)ØÔ(¨Ô.ˆCØ˜�9Ðå" 4Ñ(Ô(ˆCØ+.ˆDÔ" 4Ñ(Ø˜�:Ðro   ú&Iterator[nodes.Item | nodes.Collector]c              #  ó²  K  — i }| j         j        }| j        D �]½}|                      d|¦  «         | j        j        xj        dz  c_        |j        }|j        }|j        }|j	        }| 
                    ¦   «         r|rJ d||f›�¦   «         ‚|g}|€8|j        D ]/}	|                     |	¦  «        s n|                     d|	¦  «         Œ0nm|                     d¦  «        }
t          |j        d¦  «        D ]B\  }}	|t!          |
¦  «        k    s|	j        |
|          k    r n|                     d|	¦  «         ŒCd}g }| g |¢|¢fg}|�r1|                     ¦   «         \  }}|s|V — d}Œ#t'          |t(          j        ¦  «        sŒ>t'          |t,          ¦  «        r:t'          |d         t.          ¦  «        sJ ‚|                     |d         |¦  «        }n–t!          |¦  «        dk    o4t'          |d         t.          ¦  «        o|d                              ¦   «          }|                      ||¦  «        \  }}|s"|j        s|j                             |¬	¦  «         |j        s�Œ|j        }d}t?          |¦  «        D ]å}t'          |d         t.          ¦  «        r?|j        |d         k    }t@          j!        d
k    r|stE          |j        |d         ¦  «        }nft!          |¦  «        dk    rB|�|j#        |d         |z   k    }n<|j#                             d¦  «        d         |d         k    }n|j#        |d         k    }|r!| $                    ||dd …         f¦  «         d}Œæ|s| $                    |¦  «         |�°1|sBd %                    tM          |¦  «        g|¢R ¦  «        }| j'         $                    ||f¦  «         | j        j        xj        dz  c_        �Œ¿d S )Nzprocessing argumentr.   zinvalid arg r   ú.rƒ   FTr�  Úwin32ú[ú::)(r|   rH  rE  r>  r?  r’  rF   ÚpartsÚparametrizationÚmodule_nameré   rt   Ú_is_in_confcutdirÚinsertÚsplitrÂ   rÄ   ÚstemÚpopr—   r   Ú	Collectorr‡   r	   r  rÌ   r¤  r–  r-  r”  r•  Úreversedrš   Úplatformr   rã   r?   Újoinrj   rD  )r  r{  r  rœ  ÚargpathÚnamesr¬  r­  ÚpathsrF   Úmodule_name_partsrÈ   Úany_matched_in_initial_partÚnotfound_collectorsÚworkÚ	matchnodeÚ
matchpartsÚsubnodesr¡  r�  Ú	duplicateÚany_matched_in_collectorr   Úis_matchÚ
report_args                            rm   rC   zSession.collectƒ  s‚  è è € ð =?ˆ
àŒ[Ô&ˆà#'Ô#6ð r	(ñ r	(ÐØ�JŠJÐ,Ð.AÑBÔBÐBØŒJŒOÐ"Ô" aÑ'Ð"Ô"à)Ô.ˆGØ'Ô-ˆEØ1ÔAˆOØ-Ô9ˆKð �~Š~ÑÔð FØ ÐEÐEÐ"E°'¸5Ð1AÐ"EÐ"EÑEÔE�yà�IˆEð Ð"à#œOð *ð *�DØ×/Ò/°Ñ5Ô5ð Ø˜Ø—L’L  DÑ)Ô)Ð)Ð)øð %0×$5Ò$5°cÑ$:Ô$:Ð!Ý(¨¬¸!Ñ<Ô<ð *ð *‘G�A�tØ�3Ð0Ñ1Ô1Ò1Ð1°T´YÐBSÐUVÐTVÔBWÒ5WÐ5WØ˜Ø—L’L  DÑ)Ô)Ð)Ð)ð +0Ð'Ø"$ÐàÐ'˜Ð' Ð'Ð(ðQˆDð ñ F:Ø(,¯ª©
¬
Ñ%�	˜:ð "ð Ø#�O�O�OØ26Ð/Øõ " )­U¬_Ñ=Ô=ð Øõ ˜i­Ñ1Ô1ð *Ý% j°¤mµTÑ:Ô:Ð:Ð:Ð:Ø(×6Ò6°zÀ!´}ÀjÑQÔQ�H�Hõ
 ˜J™œ¨1Ò,ð 4Ý& z°!¤}µdÑ;Ô;ð4à& qœM×1Ò1Ñ3Ô3ð$�Lð
 &*×%;Ò%;¸IÀ|Ñ%TÔ%T‘N�C˜Ø$ð I¨S¬Zð Ið "œ×<Ò<ÀCÐ<ÑHÔHÐHØœ:ð !Ù Ø"œz�Hð ,1Ð(Ý$ XÑ.Ô.ð 8ð 8�Då! *¨Q¤-µÑ6Ô6ð BØ#'¤9°
¸1´Ò#=˜Ýœ<¨7Ò2Ð2¸8Ð2õ
 (9¸¼ÀJÈqÄMÑ'RÔ'R˜Høõ ˜z™?œ?¨aÒ/Ð/à.Ð:à+/¬9¸
À1¼ÈÑ8WÒ+W  ð
 ,0¬9¯?ª?¸3Ñ+?Ô+?ÀÔ+BÀjÐQRÄmÒ+S  à'+¤y°J¸q´MÒ'A˜HØð 8ØŸš T¨:°a°b°b¬>Ð$:Ñ;Ô;Ð;Ø37Ð0øà/ð :Ø'×.Ò.¨yÑ9Ô9Ð9ðM ñ F:ðP /ð IØ!ŸYšY­¨G©¬Ð'=°uÐ'=Ð'=Ñ>Ô>�
Ø”×%Ò% zÐ3FÐ&GÑHÔHÐHàŒJŒOÐ"Ô" aÑ'Ð"Ô"Ñ"ðer	(ð r	(ro   únodes.Item | nodes.CollectorúIterator[nodes.Item]c              #  óâ  K  — |                       d|¦  «         t          |t          j        ¦  «        r!|j                             |¬¦  «         |V — d S t          |t          j        ¦  «        sJ ‚t          |t          j        ¦  «         }|                      ||¦  «        \  }}|j	        r%|j
        D ]}|                      |¦  «        E d {V —† Œ|s|j                             |¬¦  «         d S d S )Nr�  )r¾   r�  )r>  r—   r   ÚItemr-  Úpytest_itemcollectedr³  ÚFiler¤  r–  r•  r�  r”  )r  r   r¡  r�  rÁ  Úsubnodes         rm   r�  zSession.genitemsÿ  s  è è € Ø�
Š
�:˜tÑ$Ô$Ð$Ý�d�EœJÑ'Ô'ð 	<ØŒJ×+Ò+°Ð+Ñ6Ô6Ð6ØˆJˆJˆJˆJˆJå˜d¥E¤OÑ4Ô4Ð4Ð4Ð4å)¨$µ´
Ñ;Ô;Ð;ˆLØ!×3Ò3°D¸,ÑGÔG‰NˆC�ØŒzð 6Ø"œzð 6ð 6�GØ#Ÿ}š}¨WÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Øð <Ø”
×/Ò/°sÐ/Ñ;Ô;Ð;Ð;Ð;ð<ð <ro   )r|   r   r(   r)   )r|   r   r(   r‡   )r(   rj   )r(   rS  )r˜   rS  r(   r)   )r(   r	   )ra  r	   r(   rj   )r(   r)   )rg  rh  r(   r)   )rF   ro  r*  r>   r(   r>   )r:  rr  r(   rs  )rF   r	   r{  r|  r(   r}  )..)rT   r€  r�  r‚  r(   rƒ  )rT   r€  r�  r>   r(   r†  )NT)T)r   rò   r¡  r>   r(   r¢  )r(   r¥  )r   rÅ  r(   rÆ  )r¤   r  r  r  rÀ   rŽ   r!  r  r3  rˆ   rR  ÚpropertyrÇ   ÚsetterrÆ   r§   rc  r   rf  rn  r”  r.  rz  r  r   rº   r¤  rC   r�  r4  r5  s   @rm   r‡   r‡   L  sã  ø€ € € € € € ðð ð
 €KØ€FàÐÐÑà#Ð#Ð#Ñ#ØÐÐÑðAð Að Að Að Að Að4 ðð ð ñ „[ðð3ð 3ð 3ð 3ð ð ð  ð  ñ „Xð ð Ôð!ð !ð !ñ Ôð!ð ð ð  ð  ñ „Xð ð Ôð!ð !ð !ñ Ôð!ð ð1ð 1ð 1ñ „Xð1ð1ð 1ð 1ð 1ð €X�tÐÑÔð4ð 4ð 4ñ Ôð4ð €X�tÐÑÔðPð Pð Pñ ÔðPð 4Ðð #ð	/ð /ð /ð /ð /ð /ð0ð ð ð ð"ð ð ð ð> àJMð#ð #ð #ð #ñ „Xð#ð àADð5ð 5ð 5ð 5ñ „Xð5ð
 CGð_ð _ð _ð _ð _ðH "ðð ð ð ð ðz(ð z(ð z(ð z(ðx<ð <ð <ð <ð <ð <ð <ð <ro   F©r]   r­  r]   ú
str | Nonec               óL  — 	 t           j                             | ¦  «        }n# t          t          t
          f$ r Y dS w xY w|€dS |j        �t          |j        ¦  «        dk    r|j        S |r|j        d         S |j        €dS t          j
                             |j        ¦  «        S )zaSearch sys.path for the given a dotted module name, and return its file
    system path if found.Nr   )rP   ÚutilÚ	find_specÚAttributeErrorÚImportErrorÚ
ValueErrorÚsubmodule_search_locationsrÄ   Úoriginr¥   rF   Údirname)r­  r]   Úspecs      rm   Úsearch_pypathrÚ    s»   € ð
ÝŒ~×'Ò'¨Ñ4Ô4ˆˆøõ �K­Ð4ð ð ð Øˆtˆtðøøøð €|Øˆtð 	Ô'Ð/ÝˆtÔ.Ñ/Ô/°1Ò4Ð4ð Œ{Ðà"ð 2ð Ô.¨qÔ1Ð1à„{ÐàˆtåŒ7�?Š?˜4œ;Ñ'Ô'Ð's   ‚" ¢=¼=T)Úfrozenc                  óF   — e Zd ZU dZded<   ded<   ded<   ded<   d	ed
<   dS )ÚCollectionArgumentzA resolved collection argument.r	   rF   zSequence[str]r«  rÏ  r¬  r­  rf   Úoriginal_indexN)r¤   r  r  r  r!  r  ro   rm   rÝ  rÝ  4  sQ   € € € € € € à)Ð)à€J€J�JØÐÐÑØÐÐÑØÐÐÑØÐÐÑÐÐro   rÝ  rŠ  Úinvocation_pathrŽ  Ú	arg_indexrf   r‹  c               ó  — |                      d¦  «        \  }}}|                     d¦  «        ^}}	|r|	st          d|› �¦  «        ‚|r|› |› �nd}
d}|rt          ||¬¦  «        }|�|}|}| |z  }t	          |¦  «        }t          |¦  «        s)|rdnd}t          |                     |¬¦  «        ¦  «        ‚|	r=|                     ¦   «         r)|rd	nd
}t          |                     |¬¦  «        ¦  «        ‚t          ||	|
||¬¦  «        S )aí  Parse path arguments optionally containing selection parts and return (fspath, names).

    Command-line arguments can point to files and/or directories, and optionally contain
    parts for specific tests selection, for example:

        "pkg/tests/test_foo.py::TestClass::test_foo"

    This function ensures the path exists, and returns a resolved `CollectionArgument`:

        CollectionArgument(
            path=Path("/full/path/to/pkg/tests/test_foo.py"),
            parts=["TestClass", "test_foo"],
            module_name=None,
        )

    When as_pypath is True, expects that the command-line argument actually contains
    module paths instead of file-system paths:

        "pkg.tests.test_foo::TestClass::test_foo[a,b]"

    In which case we search sys.path for a matching module, and then return the *path* to the
    found module, which may look like this:

        CollectionArgument(
            path=Path("/home/u/myvenv/lib/site-packages/pkg/tests/test_foo.py"),
            parts=["TestClass", "test_foo"],
            parametrization="[a,b]",
            module_name="pkg.tests.test_foo",
        )

    If the path doesn't exist, raise UsageError.
    If the path is a directory and selection parts are present, raise UsageError.
    r©  rª  z(path cannot contain [] parametrization: NrÎ  z9module or package not found: {arg} (missing __init__.py?)z"file or directory not found: {arg}©rŽ  z9package argument cannot contain :: selection parts: {arg}z;directory argument cannot contain :: selection parts: {arg})rF   r«  r¬  r­  rÞ  )	Ú	partitionr°  r   rÚ  r   r   Úformatré   rÝ  )rß  rŽ  rà  r‹  r]   rq   ÚsquacketÚrestÚstrpathr«  r¬  r­  Úpyarg_strpathr:  r{   s                  rm   rŒ  rŒ  ?  s~  € ðR Ÿ=š=¨Ñ-Ô-Ñ€Dˆ(�DØ—j’j Ñ&Ô&€O€GˆeØð K˜ð KÝÐIÀCÐIÐIÑJÔJÐJØ-5Ð?˜Ð) 4Ð)Ð)Ð)¸4€OØ€KØð $Ý%ØÐ1Lð
ñ 
ô 
ˆð Ð$Ø!ˆKØ#ˆGØ˜wÑ&€FÝ˜&Ñ!Ô!€FÝ�vÑÔð .ð ð6ÐGÐGà5ð 	õ
 ˜Ÿš¨˜Ñ,Ô,Ñ-Ô-Ð-Øð .�—’‘”ð .ð ðOÐGÐGàNð 	õ
 ˜Ÿš¨˜Ñ,Ô,Ñ-Ô-Ð-ÝØØØ'ØØ ðñ ô ð ro   Úbyc                óT  — |j         | j         k    r(|j        s| j                              |j         ¦  «        S dS t          |j        ¦  «        t          | j        ¦  «        k    s*| j        dt          |j        ¦  «        …         |j        k    rdS |j        �|j        | j        k    rdS dS )z/Check if `arg` is subsumed (contained) by `by`.FNT)rF   r«  Úis_relative_torÄ   r¬  )rŽ  ré  s     rm   Ú"is_collection_argument_subsumed_byrì  Ž  s¢   € ð
 
„w�#”(ÒÐð Œxð 	4Ø”8×*Ò*¨2¬7Ñ3Ô3Ð3Øˆuõ ˆ2Œ8�}„}•s˜3œ9‘~”~Ò%Ð%¨¬°?µS¸¼±]´]°?Ô)CÀrÄxÒ)OÐ)OØˆuð
 
ÔÐ%¨"Ô*<ÀÔ@SÒ*SÐ*SØˆuØˆ4ro   r›  úSequence[CollectionArgument]úlist[CollectionArgument]c                ó¼   — t          | d„ ¬¦  «        }g }d}|D ]+}|�t          ||¦  «        s|                     |¦  «         |}Œ,|                     d„ ¬¦  «         |S )a  Normalize collection arguments to eliminate overlapping paths and parts.

    Detects when collection arguments overlap in either paths or parts and only
    keeps the shorter prefix, or the earliest argument if duplicate, preserving
    order. The result is prefix-free.
    c                ó.   — | j         | j        | j        pdfS )Nr½   )rF   r«  r¬  râ  s    rm   ú<lambda>z0normalize_collection_arguments.<locals>.<lambda>¶  s   € ˜œ 3¤9¨cÔ.AÐ.GÀRÐH€ ro   )ÚkeyNc                ó   — | j         S r®   )rÞ  râ  s    rm   rñ  z0normalize_collection_arguments.<locals>.<lambda>¾  s	   €  CÔ$6€ ro   )Úsortedrì  r?   Úsort)r›  Úcollection_args_sortedÚ
normalizedÚ	last_keptrŽ  s        rm   r“  r“  ¦  s‹   € õ $ØØHÐHðñ ô Ðð ,.€JØ€IØ%ð ð ˆØÐÕ$FÀsÈIÑ$VÔ$VÐØ×Ò˜cÑ"Ô"Ð"ØˆIøØ‡O‚OÐ6Ð6€OÑ7Ô7Ð7ØÐro   )r'   r   r(   r)   )rF   rj   r(   rj   )r|   r   r}   r~   r(   r   )r|   r   r(   r   )r|   r   r‚   r‡   r(   r²   )r‚   r‡   r(   r)   )r‚   r‡   r(   r>   )rF   r	   r(   r>   )rÐ   r	   r|   r   r(   rÑ   )rF   r	   rå   rò   r(   ró   )rÃ   rù   r|   r   r(   r)   )r­  rj   r]   r>   r(   rÏ  )rß  r	   rŽ  rj   rà  rf   r‹  r>   r]   r>   r(   rÝ  )rŽ  rÝ  ré  rÝ  r(   r>   )r›  rí  r(   rî  )Zr  Ú
__future__r   rv   Úcollections.abcr   r   r   r   r   ÚAbstractSetÚdataclassesrß   rh   rP   Úimportlib.utilr¥   Úpathlibr	   rš   Útypingr
   r   r   r   rY  Úpluggyr’   r   Ú_pytest._codeÚ_pytest.configr   r   r   r   r   r   Ú_pytest.config.argparsingr   r   Ú_pytest.outcomesr   Ú_pytest.pathlibr   r   r   r   r   r   Ú_pytest.reportsr    r!   Ú_pytest.runnerr"   r#   Ú_pytest.warning_typesr$   Útyping_extensionsr%   Ú_pytest.fixturesr&   rn   rk   r¬   r±   r¯   r´   rµ   rÏ   rñ   rø   r  r  r�   rÀ   r‘   rŽ   Ú	dataclassÚdictrj   r  Ú	Directoryrõ   r³  r‡   rÚ  rÝ  rŒ  rì  r“  r  ro   rm   ú<module>r     sÐ  ðØ NÐ Nà "Ð "Ð "Ð "Ð "Ð "à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€à €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø (Ð (Ð (Ð (Ð (Ð (Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ø %Ð %Ð %Ð %Ð %Ð %Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø !Ð !Ð !Ð !Ð !Ð !Ø (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -Ø #Ð #Ð #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &Ø +Ð +Ð +Ð +Ð +Ð +Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /ð ð 0Ø&Ð&Ð&Ð&Ð&Ð&à/Ð/Ð/Ð/Ð/Ð/ðhð hð hð hðVð ð ð ð28ð 8ð 8ð 8ðv'ð 'ð 'ð 'ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð&ð ð ð ð*#ð #ð #ð #ðL.ð .ð .ð .ðð ð ð ð$ð ð ð ð ñ ô ð ðð ð ð ð Ð#ñ ô ð ð-ð -ð -ð -ð -ˆYñ -ô -ð -ð Ôðð ð ð ð ˜˜d C˜iœñ ô ñ Ôðð ð0 ð 0 ð 0 ð 0 ð 0 ˆ%Œ/ñ 0 ô 0 ñ „ð0 ðf ð@<ð @<ð @<ð @<ð @<ˆeŒoñ @<ô @<ñ „ð@<ðH >Cð!(ð !(ð !(ð !(ð !(ð !(ðH €Ô˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð Ø(-ðLð Lð Lð Lð Lð Lð^ð ð ð ð0ð ð ð ð ð ro   