ó
    áÅŸg(’  ã                  óÖ  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	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rSSK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K0J1r1  SSK0J2r2  SS K3J4r4  SS!K3J5r5  SS"K6J7r7  \(       a  SS#K8J9r9  SS$K:J;r;  SDS% jr<SES& jr=      SFS' jr>SGS( jr?SHS* jr@SIS+ jrASJS, jrBSKS- jrCSLS. jrD      SMS/ jrESNS0 jrF " S1 S25      rG " S3 S4\H5      rI " S5 S6\J5      rK\R˜                   " S7 S8\\\M4   5      5       rN\ " S9 S:\Rž                  5      5       rP\ " S; S)\R¢                  5      5       rRSOS< jrS\R˜                  " S=S>9 " S? S@5      5       rTSASB.       SPSC jjrUg)QzHCore implementation of the testing process: init, session, runtest loop.é    )ÚannotationsN)ÚPath)ÚAbstractSet)ÚCallable)ÚDict)Úfinal)ÚIterable)ÚIterator)ÚLiteral)Úoverload)ÚSequence)ÚTYPE_CHECKING)Únodes)ÚConfig)Údirectory_arg)ÚExitCode)Úhookimpl)ÚPytestPluginManager)Ú
UsageError)ÚParser)ÚPathAwareHookProxy)Úexit©Úabsolutepath)Úbestrelpath©Ú
fnmatch_ex)Úsafe_exists)Úscandir)ÚCollectReport)Ú
TestReport)Úcollect_one_node)Ú
SetupState)ÚPytestWarning)ÚSelf)ÚFixtureManagerc                óZ  • U R                  SSS/ SQS9  U R                  SSS/ S9  U R                  SS	5      nUR                  S
SSSSSS9  U R                  S5      nUR                  SSSSS9  U R                  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%S9  UR                  S&S"S'S9  UR                  S(S)S*[
        S+S,S-9  UR                  S.S"S/S0S1S29  UR                  S3SS4S5S69  U R                  S7S85      nUR                  S9S:S;S"S<S9  UR                  S=S"S>S9  UR                  S?SS@SASB9  UR                  SCSS@SDSB9  UR                  SESSFSGSB9  UR                  SHSIS SJ[        R                  " [        SHSK9SLSM9  UR                  SNS"SOS/SPSQ9  UR                  SRSSS"STS/SUSQ9  UR                  SVS"SWS/SXSQ9  UR                  SYSZ/ S[QS\S]S^9  U R                  S_S`S/SaSb9  U R                  ScSd5      nUR                  SeSfS [        SJSgSh9  g )iNÚnorecursedirsz)Directory patterns to avoid for recursionÚargs)	z*.eggz.*Ú_darcsÚbuildÚCVSÚdistÚnode_modulesÚvenvz{arch})ÚtypeÚdefaultÚ	testpathszZDirectories to search for tests when no files or directories are given on the command lineÚgeneralzRunning and selection optionsz-xz--exitfirstÚstore_constÚmaxfailé   z,Exit instantly on first error or failed test)ÚactionÚdestÚconstÚhelpzpytest-warningsz-Wz--pythonwarningsÚappendz<Set which warnings to report, see -W option of Python itself)r7   r:   ÚfilterwarningsÚlinelistz_Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings.)r0   r:   z	--maxfailÚnumÚstorer   z'Exit after first num failures or errors)Úmetavarr7   r0   r8   r1   r:   z--strict-configÚ
store_truezbAny warnings encountered while parsing the `pytest` section of the configuration file raise errorsz--strict-markerszVMarkers not registered in the `markers` section of the configuration file raise errorsz--strictz&(Deprecated) alias to --strict-markersz-cz--config-fileÚFILEÚinifilenamezcLoad configuration from `FILE` instead of trying to locate one of the implicit configuration files.)r@   r0   r8   r:   z--continue-on-collection-errorsFÚcontinue_on_collection_errorsz4Force test execution even if collection errors occur)r7   r1   r8   r:   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'.)r7   r8   r:   ÚcollectÚ
collectionz--collectonlyz--collect-onlyz--coz&Only collect tests, don't execute themz--pyargsz1Try to interpret all arguments as Python packagesz--ignoreÚpathz-Ignore path during collection (multi-allowed))r7   r@   r:   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)r8   r1   r@   r0   r:   z--noconftestÚ
noconftestz Don't load any conftest.py files)r7   r8   r1   r:   z--keepduplicatesz--keep-duplicatesÚkeepduplicateszKeep duplicate testsz--collect-in-virtualenvÚcollect_in_virtualenvz2Don't ignore tests in a local virtualenv directoryz--import-modeÚprepend)rP   r;   Ú	importlibÚ
importmodez\Prepend/append to sys.path when importing test modules and conftest files. Default: prepend.)r1   Úchoicesr8   r:   Úconsider_namespace_packagesÚboolzEConsider namespace packages when resolving module names during import)r0   r1   r:   Údebugconfigz(test session debugging and configurationz
--basetempÚbasetempz^Base temporary directory for this test run. (Warning: this directory is removed if it exists.))r8   r1   r0   r@   r:   )
ÚaddiniÚgetgroupÚ
_addoptionÚ	addoptionÚintÚstrÚ	functoolsÚpartialr   Úvalidate_basetemp)ÚparserÚgroups     ÚM/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/_pytest/main.pyÚpytest_addoptionrd   9   s€  € Ø
‡M�MØØ3Øò

ð	 ñ ð  ‡M�MØð	àØð ñ ð �O‰O˜IÐ'FÓG€EØ	×ÑØØØØØØ;ð ñ ð �O‰OÐ-Ó.€EØ	‡O�OØØØØKð	 ñ ð ‡M�MØØð/ð ñ ð 
×ÑØØØÜØØØ6ð ñ ð 
×ÑØØð*ð ñ ð 
×ÑØØðð ñ ð 
×ÑØØØ5ð ñ ð
 
×ÑØØØÜØð(ð ñ ð 
×ÑØ)ØØØ,ØCð ñ ð 
×ÑØØØðð	 ñ ð �O‰O˜I |Ó4€EØ	‡O�OØØØØØ5ð ñ ð 
‡O�OØØØ@ð ñ ð
 
‡O�OØØØØ<ð	 ñ ð 
‡O�OØØØØDð	 ñ ð 
‡O�OØØØØSð	 ñ ð 
‡O�OØØØØÜ×Òœ}°nÑEØ@ð ñ ð 
‡O�OØØØØØ/ð ñ ð 
‡O�OØØØØØØ#ð ñ ð 
‡O�OØ!ØØ$ØØAð ñ ð 
‡O�OØØÚ2Øð#ð ñ ð ‡M�MØ%ØØØTð	 ñ ð �O‰O˜MÐ+UÓV€EØ	‡O�OØØØÜØðAð ò 
ó    c                ó¢  • SnU (       d  [         R                  " U5      eSS jnU" [        R                  " 5       [        U 5      R	                  5       5      (       a  [         R                  " U5      eU" [        R                  " 5       R                  5       [        U 5      R                  5       5      (       a  [         R                  " U5      eU $ )NzWbasetemp must not be empty, the current working directory or any parent directory of itc                ó*   • X:X  a  gXR                   ;   $ )z,Return whether query is an ancestor of base.T)Úparents)ÚbaseÚquerys     rc   Úis_ancestorÚ&validate_basetemp.<locals>.is_ancestorý   s   € à‹=ØØŸ™Ñ$Ð$re   )ri   r   rj   r   ÚreturnrU   )ÚargparseÚArgumentTypeErrorr   ÚcwdÚabsoluteÚresolve)rH   Úmsgrk   s      rc   r`   r`   õ   s–   € à
c€Cö Ü×(Ò(¨Ó-Ð-ô%ñ ”4—8’8“:œt D›z×2Ñ2Ó4×5Ñ5Ü×(Ò(¨Ó-Ð-ñ ”4—8’8“:×%Ñ%Ó'¬¨d«×);Ñ);Ó)=×>Ñ>Ü×(Ò(¨Ó-Ð-à€Kre   c           	     ó<	  • [         R                  U 5      n[        R                  Ul        Sn  U R                  5         SnU R                  R                  US9  SnU" X5      =(       d    SUl        Sn[H        RJ                  " URL                  5        US:¼  a$   U R                  RO                  X"R                  S
9  U RQ                  5         UR                  $ ! [         a    [        R                  Ul        e [         a    [        R                  Ul         N¨[        [        R                  4 aú    [        R                   R"                  R%                  5       n[        R&                  n[)        UR*                  [        R                  5      (       av  UR*                  R,                  b  UR*                  R,                  nUS:  aC  [.        R0                  R3                  UR4                   SUR*                  R6                   S35        U R                  R9                  US9  XRl         GNº[:         Ga    [        R<                  Ul        [        R                   R"                  R%                  5       n U R?                  X@R@                  5        [)        UR*                  [B        5      (       a  [.        R0                  R3                  S	5         GN^! [        R                   ab  nUR,                  b  UR,                  Ul        [.        R0                  R3                  [E        U5      RF                   SU S35         SnA GNÏSnAff = ff = f! [        R                   aa  nUR,                  b  UR,                  Ul        [.        R0                  R3                  [E        U5      RF                   SU S35         SnAGNÿSnAff = f! Sn[H        RJ                  " URL                  5        US:¼  aœ   U R                  RO                  X"R                  S
9  Ow! [        R                   a`  nUR,                  b  UR,                  Ul        [.        R0                  R3                  [E        U5      RF                   SU S35         SnAOSnAff = fU RQ                  5         f = f)zSkeleton command line program.r   r6   ©Úsessioné   Nz: Ú
)Úexcinfoz(mainloop: caught unexpected SystemExit!
)rv   Ú
exitstatus))ÚSessionÚfrom_configr   ÚOKrz   Ú_do_configureÚhookÚpytest_sessionstartr   ÚUSAGE_ERRORÚFailedÚTESTS_FAILEDÚKeyboardInterruptr   Ú	ExceptionÚ_pytestÚ_codeÚExceptionInfoÚfrom_currentÚINTERRUPTEDÚ
isinstanceÚvalueÚ
returncodeÚsysÚstderrÚwriteÚtypenamers   Úpytest_keyboard_interruptÚBaseExceptionÚINTERNAL_ERRORÚnotify_exceptionÚoptionÚ
SystemExitr0   Ú__name__ÚosÚchdirÚ	startpathÚpytest_sessionfinishÚ_ensure_unconfigure)ÚconfigÚdoitrv   Ú	initstatery   rz   Úexcs          rc   Úwrap_sessionr¢     s”  € ô ×!Ñ! &Ó)€GÜ!Ÿ™€GÔØ€Ið0%ð 	RØ× Ñ Ô"ØˆIØ�K‰K×+Ñ+°GÐ+Ñ<ØˆIÙ!% fÓ!6×!;¸!ˆGÔð> ˆÜ
�Š�×"Ñ"Ô#Ø˜‹>ðCØ—‘×0Ñ0Ø#×0BÑ0Bð 1ñ ð 	×"Ñ"Ô$Ø×ÑÐøôU ó 	Ü!)×!5Ñ!5ˆGÔØÜó 	7Ü!)×!6Ñ!6ˆGÖÜ!¤4§>¡>Ð2ó 		,Ü—m‘m×1Ñ1×>Ñ>Ó@ˆGÜ)1×)=Ñ)=ˆJÜ˜'Ÿ-™-¬¯©×8Ñ8Ø—=‘=×+Ñ+Ñ7Ø!(§¡×!9Ñ!9�JØ˜q“=Ü—J‘J×$Ñ$¨×(8Ñ(8Ð'9¸¸G¿M¹M×<MÑ<MÐ;NÈbÐ%QÔRØ�K‰K×1Ñ1¸'Ð1ÑBØ!+×Üô 	RÜ!)×!8Ñ!8ˆGÔÜ—m‘m×1Ñ1×>Ñ>Ó@ˆGðRØ×'Ñ'¨·±Ô?ô ˜gŸm™m¬Z×8Ñ8Ü—J‘J×$Ñ$Ð%PÔQûô —>‘>ó CØ—>‘>Ñ-Ø),¯©�GÔ&Ü—
‘
× Ñ ¤D¨£I×$6Ñ$6Ð#7°r¸#¸¸bÐ!A×BÓBûðCúð	Rûô, —>‘>ó CØ—>‘>Ñ-Ø),¯©�GÔ&Ü—
‘
× Ñ ¤D¨£I×$6Ñ$6Ð#7°r¸#¸¸bÐ!A×BÒBûðCûð ˆÜ
�Š�×"Ñ"Ô#Ø˜‹>ðCØ—‘×0Ñ0Ø#×0BÑ0Bð 1ò øô —>‘>ó CØ—>‘>Ñ-Ø),¯©�GÔ&Ü—
‘
× Ñ ¤D¨£I×$6Ñ$6Ð#7°r¸#¸¸bÐ!A×BÑBûðCúð 	×"Ñ"Õ$ús­   ¯AC Â#M Ã>M
ÄO ÄDM
È)O È,AM
É4KÊ>M
ËO ËMË$AMÌ:M
Ì>O ÍMÍM
Í
O ÍOÍ!AN=Î=OÏ)RÏ/#PÐRÐRÐ'ARÑ=RÒRÒRc                ó"   • [        U [        5      $ ©N)r¢   Ú_main©rž   s    rc   Úpytest_cmdline_mainr§   I  s   € Ü˜¤Ó&Ð&re   r{   c                óê   • U R                   R                  US9  U R                   R                  US9  UR                  (       a  [        R
                  $ UR                  S:X  a  [        R                  $ g)zWDefault command line protocol for initialization, session,
running tests and reporting.ru   r   N)r   Úpytest_collectionÚpytest_runtestloopÚtestsfailedr   rƒ   ÚtestscollectedÚNO_TESTS_COLLECTED)rž   rv   s     rc   r¥   r¥   M  s`   € ð ‡K�K×!Ñ!¨'Ð!Ñ2Ø
‡K�K×"Ñ"¨7Ð"Ñ3à××Ü×$Ñ$Ð$Ø	×	Ñ	 1Ó	$Ü×*Ñ*Ð*Øre   c                ó$   • U R                  5         g r¤   )Úperform_collectru   s    rc   r©   r©   Z  s   € Ø×ÑÕre   c                óÀ  • U R                   (       a^  U R                  R                  R                  (       d9  U R	                  SU R                   U R                   S:w  a	  S4-  5      eS4-  5      eU R                  R                  R
                  (       a  g[        U R                  5       H°  u  pUS-   [        U R                  5      :  a  U R                  US-      OS nUR                  R                  R                  X#S9  U R                  (       a  U R                  U R                  5      eU R                  (       d  M—  U R	                  U R                  5      e   g)Nz%d error%s during collectionr6   ÚsÚ T)ÚitemÚnextitem)r«   rž   r–   rD   ÚInterruptedÚcollectonlyÚ	enumerateÚitemsÚlenr   Úpytest_runtest_protocolÚ
shouldfailr‚   Ú
shouldstop)rv   Úir³   r´   s       rc   rª   rª   ^  s   € Ø×× 7§>¡>×#8Ñ#8×#V×#VØ×!Ñ!Ø*Ø×"Ñ"¨7×+>Ñ+>À!Ó+C CÐLñMó
ð 	
àIKÐLñMó
ð 	
ð
 ‡~�~×Ñ×(×(Øä˜WŸ]™]Ö+‰ˆØ+,¨q©5´3°w·}±}Ó3EÓ+E�7—=‘=  Q¡Ò'È4ˆØ�‰×Ñ×0Ñ0°dÐ0ÑNØ××Ø—.‘. ×!3Ñ!3Ó4Ð4Ø××ÑØ×%Ñ% g×&8Ñ&8Ó9Ð9ñ ,ð re   c                ó°   •  U R                  S5      R                  5       =(       d     U R                  SS5      R                  5       $ ! [         a     gf = f)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©rH   s    rc   Ú_in_venvrÄ   r  sR   € ðà�M‰M˜,Ó'×/Ñ/Ó1÷ @Ø�}‰}˜\¨9Ó5×=Ñ=Ó?ð	
øô ó Ùðús   ‚AA Á
AÁAc                ó”  ^ • T R                   S:X  a  gUR                  ST R                  S9nU=(       d    / nUR                  S5      nU(       a  UR	                  S U 5       5        T U;   a  gUR                  ST R                  S9nU=(       d    / nUR                  S5      nU(       a  UR	                  S	 U 5       5        [        U 4S
 jU 5       5      (       a  gUR                  S5      nU(       d  [        T 5      (       a  gT R                  5       (       a,  UR                  S5      n[        U 4S jU 5       5      (       a  gg )NÚ__pycache__TÚcollect_ignorerÃ   Úignorec              3  ó6   #   • U H  n[        U5      v •  M     g 7fr¤   r   ©Ú.0Úxs     rc   Ú	<genexpr>Ú(pytest_ignore_collect.<locals>.<genexpr>‘  s   é € Ð@±Z°œL¨ŸO˜O²Zùó   ‚Úcollect_ignore_globÚignore_globc              3  ó6   #   • U H  n[        U5      v •  M     g 7fr¤   r   rÊ   s     rc   rÍ   rÎ   œ  s   é € ÐD±^°œL¨ŸO˜O²^ùrÏ   c              3  ót   >#   • U H.  n[         R                   " [        T5      [        U5      5      v •  M0     g 7fr¤   )Úfnmatchr]   )rË   ÚglobÚcollection_paths     €rc   rÍ   rÎ   ž  s(   øé € Ð
UÉÀŒ7�?Š?œ3˜Ó/´°T³×;Ð;Êùs   ƒ58rO   r(   c              3  ó:   >#   • U H  n[        UT5      v •  M     g 7fr¤   r   )rË   ÚpatrÖ   s     €rc   rÍ   rÎ   §  s   øé € ÐMÑ;L°CŒz˜#˜×/Ð/Ò;Lùs   ƒ)	ÚnameÚ_getconftest_pathlistÚparentÚ	getoptionÚextendÚanyrÄ   Úis_dirÚgetini)rÖ   rž   Úignore_pathsÚ
excludeoptÚignore_globsÚexcludegloboptÚallow_in_venvÚnorecursepatternss   `       rc   Úpytest_ignore_collectrç   ‡  s0  ø€ Ø×Ñ˜}Ó,Øà×/Ñ/Ø˜×5Ñ5ð 0ð €Lð  ×% 2€LØ×!Ñ! (Ó+€JÞØ×ÑÑ@±ZÓ@Ô@à˜,Ó&Øà×/Ñ/Ø O×$:Ñ$:ð 0ð €Lð  ×% 2€LØ×%Ñ% mÓ4€NÞØ×ÑÑD±^ÓDÔDä
Ô
UÉÓ
U×UÑUØà×$Ñ$Ð%<Ó=€MÞœX o×6Ñ6Øà×Ñ×ÑØ"ŸM™M¨/Ó:ÐÜÔMÑ;LÓM×MÑMØàre   c                ó(   • [         R                  XS9$ )NrÃ   )ÚDirÚfrom_parent©rH   rÛ   s     rc   Úpytest_collect_directoryrì   ­  s   € ô �?‰?˜6ˆ?Ð-Ð-re   c                óF  • [        UR                  S5      =(       d    / 5      nU(       d  g / n/ nU  HG  nUR                  R                  U5      (       a  UR	                  U5        M6  UR	                  U5        MI     U(       a  UR
                  R                  US9  X0S S & g g )NÚdeselect)r¸   )ÚtuplerÜ   ÚnodeidÚ
startswithr;   r   Úpytest_deselected)r¸   rž   Údeselect_prefixesÚ	remainingÚ
deselectedÚcolitems         rc   Úpytest_collection_modifyitemsr÷   ³  s�   € Ü˜f×.Ñ.¨zÓ:×@¸bÓAÐÞØà€IØ€JÛˆØ�>‰>×$Ñ$Ð%6×7Ñ7Ø×Ñ˜gÖ&à×Ñ˜WÖ%ñ	 ö Ø�‰×%Ñ%¨JÐ%Ñ7Ø‰a‰ð re   c                  ó4   • \ rS rSr      SS jrSS jrSrg)ÚFSHookProxyiÅ  c                ó   • Xl         X l        g r¤   ©ÚpmÚremove_mods)Úselfrü   rý   s      rc   Ú__init__ÚFSHookProxy.__init__Æ  s   € ð
 ŒØ&Õre   c                óh   • U R                   R                  XR                  S9nX R                  U'   U$ )N)Úremove_plugins)rü   Úsubset_hook_callerrý   Ú__dict__)rþ   rÙ   rÌ   s      rc   Ú__getattr__ÚFSHookProxy.__getattr__Î  s0   € Ø�G‰G×&Ñ& t×<LÑ<LÐ&ÐMˆØ�‰�dÑØˆre   rû   N)rü   r   rý   zAbstractSet[object]rm   ÚNone)rÙ   r]   rm   zpluggy.HookCaller)r˜   Ú
__module__Ú__qualname__Ú__firstlineno__rÿ   r  Ú__static_attributes__© re   rc   rù   rù   Å  s(   † ð'àð'ð )ð'ð 
ô	'÷re   rù   c                  ó   • \ rS rSrSrSrSrg)rµ   iÔ  z*Signals that the test run was interrupted.Úbuiltinsr  N©r˜   r  r	  r
  Ú__doc__r  r  re   rc   rµ   rµ   Ô  s
   † Ù4àƒJre   rµ   c                  ó   • \ rS rSrSrSrg)r‚   iÚ  z"Signals a stop as failed test run.r  Nr  r  re   rc   r‚   r‚   Ú  s   † Ü,re   r‚   c                  ó.   • \ rS rSr% SrS\S'   SS jrSrg)	Ú_bestrelpath_cacheiÞ  rÃ   r   rH   c                ó:   • [        U R                  U5      nX U'   U$ r¤   )r   rH   )rþ   rH   Úrs      rc   Ú__missing__Ú_bestrelpath_cache.__missing__ä  s   € Ü˜Ÿ	™	 4Ó(ˆØˆT‰
Øˆre   r  N)rH   r   rm   r]   )r˜   r  r	  r
  Ú	__slots__Ú__annotations__r  r  r  re   rc   r  r  Þ  s   ‡ à€Ià
ƒJ÷re   r  c                  óP   ^ • \ rS rSrSr\      SU 4S jj5       rSS jrSrU =r	$ )ré   iê  zú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.
c               ó   >• [         TU ]  XS9$ )z†The public constructor.

:param parent: The parent collector of this Dir.
:param path: The directory's path.
:type path: pathlib.Path
)rÛ   rH   )Úsuperrê   )ÚclsrÛ   rH   Ú	__class__s      €rc   rê   ÚDir.from_parent÷  s   ø€ ô ‰wÑ"¨&Ð"Ð<Ð<re   c              #  ó`  #   • U R                   nU R                  n[        U R                  5       H÷  nUR	                  5       (       ad  [        UR                  5      nU R                  R                  USS9(       d  UR                  XAS9(       a  Mb  UR                  X@S9nUb  Uv •  Mz  M|  UR                  5       (       d  M“  [        UR                  5      nU R                  R                  U5      (       d  UR                  XAS9(       a  MÞ  UR                  X@S9nU S h  v•N   Mù     g  N	7f)NT©Úwith_parents)rÖ   rž   rë   ©Ú	file_pathrÛ   )rž   Úihookr   rH   rß   r   rv   Ú
isinitpathrç   rì   rÁ   Úpytest_collect_file)rþ   rž   r%  ÚdirentryrH   ÚcolÚcolss          rc   rF   ÚDir.collect  sû   é € Ø—‘ˆð —
‘
ˆÜ §	¡	Ö*ˆHØ�‰× Ñ Ü˜HŸM™MÓ*�Ø—|‘|×.Ñ.¨tÀ$Ð.ÖGØ×2Ñ2À4Ð2ÖWÙ Ø×4Ñ4¸$Ð4ÐL�Ø‘?Ø”Iñ #ð ×!Ñ!×#Ó#Ü˜HŸM™MÓ*�Ø—|‘|×.Ñ.¨t×4Ñ4Ø×2Ñ2À4Ð2ÖWÙ Ø×0Ñ0¸4Ð0ÐM�Ø—’ò! +ñ   ùs   ‚B=D.ÃAD.Ä"D,Ä#
D.r  )rÛ   únodes.CollectorrH   r   rm   r%   )rm   z&Iterable[nodes.Item | nodes.Collector])
r˜   r  r	  r
  r  Úclassmethodrê   rF   r  Ú__classcell__©r  s   @rc   ré   ré   ê  sB   ø† ñ	ð ð=àð=ð ð	=ð
 
ö=ó ð=÷ ò  re   ré   c                  ó  ^ • \ rS rSr% Sr\r\rS\S'   S\S'   S\S'   S"U 4S	 jjr\	S#S
 j5       r
S$S jr\S%S j5       r\R                  S&S j5       r\S%S j5       r\R                  S&S j5       r\S'S j5       rS(S jr\" SS9S)S j5       r\" SS9S*S j5       r\rSS.     S+S jjrS,S jr      S-S jr\ S.     S/S jj5       r\ S.     S0S jj5       r S1     S0S jjr S2     S3S jjrS4S jrS5S  jrS!rU =r$ )6r{   i  zgThe root of the collection tree.

``Session`` collects the initial paths given as arguments to pytest.
r#   Ú_setupstater&   Ú_fixturemanagerúint | ExitCoderz   c           
     ó¼  >• [         TU ]  SUR                  S S UU SS9  SU l        SU l        SU l        SU l        UR                  R                  R                  S5      U l        [        5       U l        [        5       U l        / U l        / U l        0 U l        / U l        [#        UR                  5      U l        U R&                  R(                  R+                  U SS9  g )Nr²   )rÙ   rH   ÚfspathrÛ   rž   rv   rð   r   FrG   rv   )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     €rc   rÿ   ÚSession.__init__-  sÌ   ø€ Ü‰ÑØØ—‘ØØØØØð 	ñ 	
ð ˆÔØˆÔØ',ˆÔØ',ˆÔØ—\‘\×&Ñ&×*Ñ*¨<Ó8ˆŒ
Ü.7«kˆÔÜ;D»;ˆÔ'ØFHˆŒØ8:ˆÔØGIˆÔØ')ˆŒ
ä2DÀVÇ_Á_Ó2UˆÔà�‰×!Ñ!×*Ñ*¨4°iÐ*Ò@re   c                ó$   • U R                  US9nU$ )Nr¦   )Ú_create)r  rž   rv   s      rc   r|   ÚSession.from_configG  s   € àŸ;™;¨f˜;Ð5ˆØˆre   c                ó�   • SU R                   R                  U R                  [        U SS5      U R                  U R
                  4-  $ )Nz6<%s %s exitstatus=%r testsfailed=%d testscollected=%d>rz   z<UNSET>)r  r˜   rÙ   Úgetattrr«   r¬   ©rþ   s    rc   Ú__repr__ÚSession.__repr__L  sG   € ØGØ�N‰N×#Ñ#Ø�I‰IÜ�D˜,¨	Ó2Ø×ÑØ×ÑðK
ñ 
ð 	
re   c                ó   • U R                   $ r¤   )r7  rK  s    rc   r¼   ÚSession.shouldstopU  ó   € à×ÑÐre   c                óz   • USL a0  U R                   (       a  [        R                  " [        S5      SS9  g Xl         g )NFzCsession.shouldstop cannot be unset after it has been set; ignoring.rw   ©Ú
stacklevel)r7  ÚwarningsÚwarnr$   ©rþ   rŒ   s     rc   r¼   rO  Y  ó:   € ð �EŠ>˜d×.×.Ü�MŠMÜØYóð ò	ð Ø Õre   c                ó   • U R                   $ r¤   )r8  rK  s    rc   r»   ÚSession.shouldfailg  rP  re   c                óz   • USL a0  U R                   (       a  [        R                  " [        S5      SS9  g Xl         g )NFzCsession.shouldfail cannot be unset after it has been set; ignoring.rw   rR  )r8  rT  rU  r$   rV  s     rc   r»   rY  k  rW  re   c                óB   • U R                   R                  R                  $ )zAThe path from which pytest was invoked.

.. versionadded:: 7.0.0
)rž   Úinvocation_paramsrK   rK  s    rc   r›   ÚSession.startpathy  s   € ð �{‰{×,Ñ,×0Ñ0Ð0re   c                ó    • U R                   U   $ r¤   )rB  )rþ   Ú	node_paths     rc   Ú_node_location_to_relpathÚ!Session._node_location_to_relpath�  s   € à×%Ñ% iÑ0Ð0re   T)Útryfirstc                ó´   • U R                   (       a  U R                  U R                   5      eU R                  (       a  U R                  U R                  5      eg r¤   )r»   r‚   r¼   rµ   rK  s    rc   Úpytest_collectstartÚSession.pytest_collectstart…  s=   € à�?�?Ø—+‘+˜dŸo™oÓ.Ð.Ø�?�?Ø×"Ñ" 4§?¡?Ó3Ð3ð re   c                ó  • UR                   (       ap  [        US5      (       d^  U =R                  S-  sl        U R                  R	                  S5      nU(       a&  U R                  U:¼  a  SU R                  -  U l        g g g g g )NÚwasxfailr6   r5   zstopping after %d failures)ÚfailedÚhasattrr«   rž   Úgetvaluer»   )rþ   Úreportr5   s      rc   Úpytest_runtest_logreportÚ Session.pytest_runtest_logreportŒ  sj   € à�=�=¤¨°×!<Ñ!<Ø×Ò Ñ!ÕØ—k‘k×*Ñ*¨9Ó5ˆGÞ˜4×+Ñ+¨wÓ6Ø">À$×BRÑBRÑ"S�•ð 7ˆwð "=ˆ=re   Fr!  c               óŒ   • [        U[        5      (       a  UO
[        U5      nU(       a  X0R                  ;   $ X0R                  ;   $ )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   r>  r=  )rþ   rH   r"  Úpath_s       rc   r&  ÚSession.isinitpath–  s<   € ô$ # 4¬×.Ñ.‘´D¸³JˆÞØ×;Ñ;Ñ;Ð;à×.Ñ.Ñ.Ð.re   c                ó4  • [        U[        5      (       a  UO
[        U5      nU R                  R                  nUR	                  U5      nUR
                  R                  U5      nU(       a  [        [        X55      5      nU$ U R                  R                  nU$ r¤   )
r‹   r   rž   rC  Ú_getconftestmodulesÚ_conftest_pluginsÚ
differencer   rù   r   )rþ   r5  rH   rü   Úmy_conftestmodulesrý   Úproxys          rc   ÚgethookproxyÚSession.gethookproxy®  s�   € ä# F¬D×1Ñ1‰v´t¸F³|ˆØ�[‰[×&Ñ&ˆð  ×3Ñ3°DÓ9ÐØ×*Ñ*×5Ñ5Ð6HÓIˆæä&¤{°2Ó'CÓDˆEð ˆð —K‘K×$Ñ$ˆEØˆre   c                ó   • X;   a  X!   $ UR                  5       (       a3  U R                  UR                  5      nUR                  XS9nUb  U4OSnO8UR	                  5       (       a!  U R                  U5      nUR                  XS9nOSnXRU'   U$ )zuCreate a Collector for the given path.

`path_cache` makes it so the same Collectors are returned for the same
path.
rë   r  r#  )rß   rw  rÛ   rì   rÁ   r'  )rþ   rH   Ú
path_cacher%  r)  r*  s         rc   Ú_collect_pathÚSession._collect_path¿  sœ   € ð ÓØÑ#Ð#à�;‰;�=‰=Ø×%Ñ% d§k¡kÓ2ˆEØ*/×*HÑ*HØð +Ið +ˆCð 9<¹¨s©fÈR‰Dà�\‰\�^‰^Ø×%Ñ% dÓ+ˆEØ×,Ñ,°tÐ,ÐI‰Dð ˆDà�4ÑØˆre   c                ó   • g r¤   r  ©rþ   r)   Úgenitemss      rc   r¯   ÚSession.perform_collectÞ  s   € ð  #re   c                ó   • g r¤   r  r~  s      rc   r¯   r€  ã  s   € ð 25re   c                ón  • Uc  U R                   R                  nU R                  SX5        U R                  R                  =R                  S-  sl        U R                   R
                  n/ U l        / U l        0 U l        / U l	        U R                  n / n/ nU HÀ  n[        U R                   R                  R                  UU R                   R                  R                  S9nU R                  R                  U5        UR                  UR                   5        UR                  UR                   5        UR#                  UR                   R$                  5        MÂ     ['        U5      U l        ['        U5      U l        [-        U 5      n	U R.                  R1                  U	S9  U R                  R                  =R                  S-  sl        U R                  (       aU  / n
U R                   H;  u  p{U(       a  U
R                  SU SU< S35        M'  U
R                  SU 35        M=     [3        U
6 eU(       d  U	R4                  nONU	R6                  (       a=  U	R4                   H-  nU R                  R#                  U R9                  U5      5        M/     U R                   R:                  R=                  5         UR?                  X R                   US	9  / U l        / U l        0 U l        URA                  U S
9  U(       a  [C        U5      U l"        U$ ! / U l        / U l        0 U l        URA                  U S
9  f = f)a3  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.
r¯   r6   ©Ú	as_pypath©rk  znot found: z
(no match in any of Ú)zfound no collectors for )rv   rž   r¸   ru   )#rž   r)   r9  r:  Úindentr   r?  r@  rA  r¸   Úresolve_collection_argumentr\  rK   r–   Úpyargsr;   rH   rÝ   rh   r<  r=  r>  r"   r%  Úpytest_collectreportr   ÚresultÚpassedr  rC  Úcheck_pendingr÷   Úpytest_collection_finishr¹   r¬   )rþ   r)   r  r   r¸   ÚinitialpathsÚinitialpaths_with_parentsÚargÚcollection_argumentÚrepÚerrorsÚ
collectorsÚnodes                rc   r¯   r€  è  s±  € ð  ‰<Ø—;‘;×#Ñ#ˆDà�
‰
Ð$ dÔ1Ø�
‰
�‰×Ò !Ñ#Õà�{‰{×ÑˆàˆŒØ ˆÔØ!#ˆÔØˆŒ
Ø8<¿
¹
ˆð.	8Ø')ˆLØ46Ð%Û�Ü&AØ—K‘K×1Ñ1×5Ñ5ØØ"Ÿk™k×0Ñ0×7Ñ7ñ'Ð#ð
 ×#Ñ#×*Ñ*Ð+>Ô?Ø×#Ñ#Ð$7×$<Ñ$<Ô=Ø)×0Ñ0Ð1D×1IÑ1IÔJØ)×0Ñ0Ð1D×1IÑ1I×1QÑ1QÖRñ ô "+¨<Ó!8ˆDÔÜ.7Ð8QÓ.RˆDÔ+ä" 4Ó(ˆCØ�J‰J×+Ñ+°3Ð+Ñ7Ø�J‰J�O‰O×"Ò" aÑ'Õ"Ø�~�~Ø�Ø'+§~¤~‘O�CÞ!ØŸ™Ø)¨#¨Ð.DÀZÁNÐRSÐTöð Ÿ™Ð(@ÀÀÐ&FÖGñ (6ô ! &Ð)Ð)æØŸ
™
‘à—:—:Ø #§
¤
˜ØŸ
™
×)Ñ)¨$¯-©-¸Ó*=Ö>ñ !+ð �K‰K×%Ñ%×3Ñ3Ô5Ø×.Ñ.Ø§[¡[¸ð /ñ ð  ˆDŒNØ"$ˆDÔØ%'ˆDÔ"Ø×)Ñ)°$Ð)Ñ7æÜ"% e£*ˆDÔàˆøð  ˆDŒNØ"$ˆDÔØ%'ˆDÔ"Ø×)Ñ)°$Ð)Ò7ús   ÂH=L Ì&L4c                óŽ   • XR                   ;   a  U(       a  U R                   U   nUS4$ [        U5      nX0R                   U'   US4$ )NTF)rA  r"   )rþ   r–  Úhandle_dupesr“  s       rc   Ú_collect_one_nodeÚSession._collect_one_node:  sN   € ð
 ×)Ñ)Ó)®lØ×(Ñ(¨Ñ.ˆCØ˜�9Ðä" 4Ó(ˆCØ+.×"Ñ" 4Ñ(Ø˜�:Ðre   c              #  óî  #   • 0 nU R                   R                  nU R                   GHH  nU R                  SU5        U R                  R                  =R
                  S-  sl        UR                  nUR                  nUR                  nUR                  5       (       a  U(       a   SXE4< 35       eU/nUc>  UR                   H-  nUR                  U5      (       d    O}UR                  SU5        M/     OfUR                  S5      n	[        UR                  S5       H;  u  p¨U
[        U	5      :”  d  UR                   Xš*    :w  a    OUR                  SU5        M=     Sn/ nU / UQUQ4/nU(       Ga“  UR#                  5       u  pïU(       d  Uv •  SnM)  [%        U[&        R(                  5      (       d  MJ  [%        U[*        5      (       a0  [%        US   [,        5      (       d   eUR/                  US   U5      nO­[        U5      S:H  =(       a-    [%        US   [,        5      =(       a    US   R1                  5       (       + nU R3                  UU5      u  nnU(       d*  UR4                  (       d  UR6                  R9                  US	9  UR4                  (       d  GM0  UR:                  nSn[=        U5       GH+  n[%        US   [,        5      (       a°  UR                  US   :H  n[>        R@                  S
:X  a‰  U(       d‚  [B        R                  RE                  UR                  US   5      nU=(       aL    [B        R                  RG                  UR                  5      [B        R                  RG                  US   5      :H  nO=URH                  US   :H  =(       d$    URH                  R                  S5      S   US   :H  nU(       d  GM  URK                  UUSS  45        SnGM.     U(       d  URK                  U5        U(       a  GM“  U(       d;  SRM                  [O        U5      /UQ75      nU RP                  RK                  UU45        U R                  R                  =R
                  S-  sl        GMK     g 7f)Nzprocessing argumentr6   zinvalid arg r   Ú.rw   FTr…  Úwin32Ú[ú::))rž   rC  r@  r9  r:  r‡  rH   ÚpartsÚmodule_namerß   rh   Ú_is_in_confcutdirÚinsertÚsplitr·   r¹   ÚstemÚpopr‹   r   Ú	Collectorr{   r   r{  rÁ   r™  rŒ  r%  rŠ  r‹  ÚreversedrŽ   Úplatformr™   ÚsamefileÚislinkrÙ   r;   Újoinr]   r?  )rþ   rz  rü   r’  ÚargpathÚnamesr¡  ÚpathsrH   Úmodule_name_partsr½   Úany_matched_in_initial_partÚnotfound_collectorsÚworkÚ	matchnodeÚ
matchpartsÚsubnodesr˜  r“  Ú	duplicateÚany_matched_in_collectorr–  Úis_matchÚ	same_fileÚ
report_args                            rc   rF   ÚSession.collectG  sÕ  é € ð =?ˆ
à�[‰[×&Ñ&ˆà#'×#6Õ#6ÐØ�J‰JÐ,Ð.AÔBØ�J‰J�O‰O×"Ò" aÑ'Õ"à)×.Ñ.ˆGØ'×-Ñ-ˆEØ-×9Ñ9ˆKð �~‰~×ÑÞ ÐE L°'Ð1AÑ0DÐ"EÓE�yà�IˆEð Ñ"à#ŸOœO�DØ×/Ñ/°×5Ñ5ÙØ—L‘L  DÖ)ò ,ð %0×$5Ñ$5°cÓ$:Ð!Ü(¨¯©¸!Ö<‘G�AØœ3Ð0Ó1Ó1°T·Y±YÐBSÐTVÑBWÓ5WÙØ—L‘L  DÖ)ñ  =ð +0Ð'Ø"$ÐàÐ'˜Ð' Ð'Ð(ðQˆD÷ Ø(,¯©«
Ñ%�	ö "Ø#’OØ26Ð/Ùô " )¬U¯_©_×=Ñ=Ùô ˜i¬×1Ñ1Ü% j°¡m´T×:Ñ:Ð:Ð:Ø(×6Ñ6°zÀ!±}ÀjÓQ‘Hô
 ˜J›¨1Ñ,÷ 4Ü& z°!¡}´dÓ;÷4à& q™M×1Ñ1Ó3ô$�Lð
 &*×%;Ñ%;¸IÀ|Ó%T‘N�C˜Þ$¨S¯Z¯Zð "Ÿ™×<Ñ<ÀCÐ<ÑHØŸ:Ÿ:Ú Ø"Ÿz™z�Hð ,1Ð(Ü$ X×.�Dä! *¨Q¡-´×6Ñ6Ø#'§9¡9°
¸1±Ñ#=˜ÜŸ<™<¨7Ó2¾8ô )+¯©×(8Ñ(8¸¿¹ÀJÈqÁMÓ(R˜Ið (1÷ (Ü "§¡§¡¨t¯y©yÓ 9Ü#%§7¡7§>¡>°*¸Q±-Ó#@ñ!Að %øð !ŸI™I¨°A©Ñ6÷ HØ#Ÿy™yŸ™¨sÓ3°AÑ6¸*ÀQ¹-ÑGð !÷  ‘xØŸ™ T¨:°a°b¨>Ð$:Ô;Ø37Ó0ñ3 /ö6 0Ø'×.Ñ.¨yÔ9÷I ‘$öL /Ø!ŸY™Y¬¨G«Ð'=°uÑ'=Ó>�
Ø—‘×%Ñ% zÐ3FÐ&GÔHà�J‰J�O‰O×"Ò" aÑ'×"Ð"ò_ $7ùs   ‚N>Q5Ï<Q5ÐA1Q5c              #  óv  #   • U R                  SU5        [        U[        R                  5      (       a  UR                  R                  US9  Uv •  g [        U[        R                  5      (       d   eU R                  R                  S5      nU=(       a    [        U[        R                  5      (       + nU R                  X5      u  pEU(       a  U(       d  g UR                  (       a,  UR                   H  nU R                  U5       S h  v•N   M     U(       d  UR                  R                  US9  g g  N*7f)Nr  )r³   rN   r…  )r9  r‹   r   ÚItemr%  Úpytest_itemcollectedr§  rž   rÜ   ÚFiler™  rŒ  r‹  r  rŠ  )rþ   r–  rN   r˜  r“  r·  Úsubnodes          rc   r  ÚSession.genitemsÀ  så   é € Ø�
‰
�:˜tÔ$Ü�dœEŸJ™J×'Ñ'Ø�J‰J×+Ñ+°Ð+Ñ6Ø‹Jä˜d¤E§O¡O×4Ñ4Ð4Ð4Ø!Ÿ[™[×2Ñ2Ð3CÓDˆNà .× O´:¸dÄEÇJÁJÓ3OÔPˆLØ!×3Ñ3°DÓG‰NˆCÞ¦ØØ�z�zØ"Ÿzœz�GØ#Ÿ}™}¨WÓ5×5Ò5ñ  *æØ—
‘
×/Ñ/°sÐ/Ò;ð ñ 6ùs   ‚D
D9ÄD7Ä+D9)rB  rA  r@  r=  r>  r?  r8  r7  r¸   r»   r¬   r«   r9  )rž   r   rm   r  )rž   r   rm   r{   )rm   r]   )rm   ú
bool | str)rŒ   rÃ  rm   r  )rm   r   )r_  r   rm   r]   )rm   r  )rk  zTestReport | CollectReportrm   r  )rH   zstr | os.PathLike[str]r"  rU   rm   rU   )r5  zos.PathLike[str]rm   zpluggy.HookRelay)rH   r   rz  z%dict[Path, Sequence[nodes.Collector]]rm   zSequence[nodes.Collector])..)r)   úSequence[str] | Noner  zLiteral[True]rm   zSequence[nodes.Item])r)   rÄ  r  rU   rm   z&Sequence[nodes.Item | nodes.Collector])NT)T)r–  r,  r˜  rU   rm   ztuple[CollectReport, bool])rm   z&Iterator[nodes.Item | nodes.Collector])r–  znodes.Item | nodes.Collectorrm   zIterator[nodes.Item]) r˜   r  r	  r
  r  rµ   r‚   r  rÿ   r-  r|   rL  Úpropertyr¼   Úsetterr»   r›   r`  r   rd  rl  rŠ  r&  rw  r{  r   r¯   r™  rF   r  r  r.  r/  s   @rc   r{   r{     s   ø‡ ñð
 €KØ€FàÓà#Ó#ØÓ÷Að4 óó ðô
ð ó ó ð ð ×Ñó!ó ð!ð ó ó ð ð ×Ñó!ó ð!ð ó1ó ð1ô1ñ �tÑó4ó ð4ñ �tÑóTó ðTð 4Ðð #ñ	/à$ð/ð ð	/ð
 
õ/ô0ð"àðð :ðð 
#ô	ð> àJMð#Ø(ð#Ø:Gð#à	ô#ó ð#ð àADð5Ø(ð5Ø:>ð5à	/ô5ó ð5ð
 CGðPØ(ðPØ;?ðPà	/õPðj "ðàðð ðð 
$õ	ôw(÷r<ò <re   c                óF  •  [         R                  R                  U 5      nUb  UR                  b  UR                  S:X  a  gUR                  (       a)  [        R                  R                  UR                  5      $ UR                  $ ! [        [        [
        4 a     gf = f)z]Search sys.path for the given a dotted module name, and return its file
system path if found.NÚ	namespace)rQ   ÚutilÚ	find_specÚAttributeErrorÚImportErrorÚ
ValueErrorÚoriginÚsubmodule_search_locationsr™   rH   Údirname)r¡  Úspecs     rc   Úsearch_pypathrÒ  Ô  s~   € ðÜ�~‰~×'Ñ'¨Ó4ˆð �|�t—{‘{Ñ*¨d¯k©k¸[Ó.HØØ	×	(×	(Ü�w‰w�‰˜tŸ{™{Ó+Ð+à�{‰{Ðøô œK¬Ð4ó Ùðús   ‚B ÂB ÂB T)Úfrozenc                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)ÚCollectionArgumentiæ  zA resolved collection argument.r   rH   zSequence[str]r   ú
str | Noner¡  r  N)r˜   r  r	  r
  r  r  r  r  re   rc   rÕ  rÕ  æ  s   ‡ á)à
ƒJØÓØÖre   rÕ  Frƒ  c               óØ  • [        U5      R                  S5      u  p4nUR                  S5      tpgU(       a  US    U U 3US'   SnU(       a  [        U5      n	U	b  UnU	nX-  n
[	        U
5      n
[        U
5      (       d#  U(       a  SOSn[        UR                  US95      eU(       a8  U
R                  5       (       a#  U(       a  SOS	n[        UR                  US95      e[        U
UUS
9$ )ak  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"

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"],
        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Ÿ  éÿÿÿÿNz9module 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})rH   r   r¡  )
r]   Ú	partitionr¤  rÒ  r   r   r   Úformatrß   rÕ  )Úinvocation_pathr‘  r„  ri   ÚsquacketÚrestÚstrpathr   r¡  Úpyarg_strpathr5  rs   s               rc   rˆ  rˆ  ï  s  € ôF ˜s›8×-Ñ-¨cÓ2Ñ€D�DØ—j‘j Ó&€O€GÞØ˜R‘y�k ( ¨D¨6Ð2ˆˆb‰	Ø€KÞÜ% gÓ.ˆØÑ$Ø!ˆKØ#ˆGØÑ&€FÜ˜&Ó!€FÜ�v×Ñö ñ Hà5ð 	ô
 ˜Ÿ™¨˜Ð,Ó-Ð-Þ�—‘—‘ö ñ HàNð 	ô
 ˜Ÿ™¨˜Ð,Ó-Ð-ÜØØØñð re   )ra   r   rm   r  )rH   r]   rm   r]   )rž   r   rŸ   z2Callable[[Config, Session], int | ExitCode | None]rm   r3  )rž   r   rm   r3  )rž   r   rv   r{   rm   zint | ExitCode | None)rv   r{   rm   r  )rv   r{   rm   rU   )rH   r   rm   rU   )rÖ   r   rž   r   rm   zbool | None)rH   r   rÛ   r,  rm   znodes.Collector | None)r¸   zlist[nodes.Item]rž   r   rm   r  )r¡  r]   rm   rÖ  )rÛ  r   r‘  r]   r„  rU   rm   rÕ  )Vr  Ú
__future__r   rn   ÚdataclassesrÔ   r^   rQ   Úimportlib.utilr™   Úpathlibr   rŽ   Útypingr   r   r   r   r	   r
   r   r   r   r   rT  Úpluggyr†   r   Ú_pytest._codeÚ_pytest.configr   r   r   r   r   r   Ú_pytest.config.argparsingr   Ú_pytest.config.compatr   Ú_pytest.outcomesr   Ú_pytest.pathlibr   r   r   r   r   Ú_pytest.reportsr    r!   Ú_pytest.runnerr"   r#   Ú_pytest.warning_typesr$   Útyping_extensionsr%   Ú_pytest.fixturesr&   rd   r`   r¢   r§   r¥   r©   rª   rÄ   rç   rì   r÷   rù   r„   rµ   r…   r‚   Ú	dataclassr]   r  Ú	Directoryré   r§  r{   rÒ  rÕ  rˆ  r  re   rc   Ú<module>ró     sç  ðÙ Nå "ã Û Û Û Û Û Û 	Ý Û 
Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Û ã å Û Ý !Ý (Ý #Ý #Ý .Ý %Ý ,Ý 4Ý !Ý (Ý 'Ý &Ý 'Ý #Ý )Ý &Ý +Ý %Ý /ö Ý&å/ôyôxð28Øð8ØLð8àô8ôv'ô
ôôô(ô*#ðL.Ø
ð.Ø'ð.àô.ô÷$ñ ôÐ#ô ô-ˆYô -ð ×Ñô˜˜d C˜i™ó ó ðð ô0 ˆ%�/‰/ó 0 ó ð0 ðf ôr<ˆe�o‰oó r<ó ðr<ôjð$ ×Ò˜dÑ#÷ð ó $ðð ;@ñAØðAØ #ðAØ37ðAàöAre   