Ë
    V.j(’  ã                  ó¶  — d 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	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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l0m1Z1 ddl0m2Z2 dd l3m4Z4 dd!l3m5Z5 dd"l6m7Z7 erdd#l8m9Z9 dd$l:m;Z; dDd%„Z<dEd&„Z=	 	 	 	 	 	 dFd'„Z>dGd(„Z?dHd*„Z@dId+„ZAdJd,„ZBdKd-„ZCdLd.„ZD	 	 	 	 	 	 dMd/„ZEdNd0„ZF G d1„ d2«      ZG G d3„ d4eH«      ZI G d5„ d6eJ«      ZKej˜                   G d7„ d8eeeMf   «      «       ZNe G d9„ d:ejž                  «      «       ZPe G d;„ d)ej¢                  «      «       ZRdOd<„ZS ej˜                  d=¬>«       G d?„ d@«      «       ZTdAdBœ	 	 	 	 	 	 	 dPdC„ZUy)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           
     óî  — | j                  dddg d¢¬«       | j                  dddg ¬«       | j                  dd	«      }|j                  d
ddddd¬«       | j                  d«      }|j                  dddd¬«       | j                  ddd¬«       |j                  dddt        ddd¬ «       |j                  d!d"d#¬«       |j                  d$d"d%¬«       |j                  d&d"d'¬«       |j                  d(d)d*t
        d+d,¬-«       |j                  d.d"d/d0d1¬2«       |j                  d3dd4d5¬6«       | j                  d7d8«      }|j                  d9d:d;d"d<¬«       |j                  d=d"d>¬«       |j                  d?dd@dA¬B«       |j                  dCdd@dD¬B«       |j                  dEddFdG¬B«       |j                  dHdId dJt        j                  t        dH¬K«      dL¬M«       |j                  dNd"dOd/dP¬Q«       |j                  dRdSd"dTd/dU¬Q«       |j                  dVd"dWd/dX¬Q«       |j                  dYdZg d[¢d\d]¬^«       | j                  d_d`d/da¬b«       | j                  dcdd«      }|j                  dedfd t        dJdg¬h«       y )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     úNC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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                óx  — d}| st        j                  |«      ‚dd„} |t        j                  «       t        | «      j	                  «       «      rt        j                  |«      ‚ |t        j                  «       j                  «       t        | «      j                  «       «      rt        j                  |«      ‚| S )NzWbasetemp must not be empty, the current working directory or any parent directory of itc                ó*   — | |k(  ry|| j                   v S )z,Return whether query is an ancestor of base.T)Úparents)ÚbaseÚquerys     rc   Úis_ancestorz&validate_basetemp.<locals>.is_ancestorý   s   € à�5Š=ØØ˜Ÿ™Ð$Ð$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Ü×(Ñ(¨Ó-Ð-ñ ”4—8‘8“:×%Ñ%Ó'¬¨d«×);Ñ);Ó)=Ô>Ü×(Ñ(¨Ó-Ð-à€Kre   c           	     ó	  — t         j                  | «      }t        j                  |_        d}	 	 | j                  «        d}| j                  j                  |¬«       d} || |«      xs d|_        d}tI        jJ                  |jL                  «       |dk\  r(	 | j                  jO                  ||j                  ¬
«       | jQ                  «        |j                  S # t        $ r t        j                  |_        ‚ t        $ r t        j                  |_        Y Œ¨t        t        j                  f$ r÷ t        j                   j"                  j%                  «       }t        j&                  }t)        |j*                  t        j                  «      rt|j*                  j,                  �|j*                  j,                  }|dk  rCt.        j0                  j3                  |j4                  › d|j*                  j6                  › d�«       | j                  j9                  |¬«       ||_        Y �Œ¶t:        $ �r t        j<                  |_        t        j                   j"                  j%                  «       }	 | j?                  || j@                  «       t)        |j*                  tB        «      r•t.        j0                  j3                  d	«       nu# t        j                  $ r_}|j,                  �|j,                  |_        t.        j0                  j3                  tE        |«      jF                  › d|› d�«       Y d}~nd}~ww xY wY �ŒËw xY w# t        j                  $ r`}|j,                  �|j,                  |_        t.        j0                  j3                  tE        |«      jF                  › d|› d�«       Y d}~�Œïd}~ww xY w# d}tI        jJ                  |jL                  «       |dk\  rž	 | j                  jO                  ||j                  ¬
«       nu# t        j                  $ r_}|j,                  �|j,                  |_        t.        j0                  j3                  tE        |«      jF                  › d|› d�«       Y d}~nd}~ww xY w| jQ                  «        w xY w)zSkeleton command line program.r   r6   ©Úsessioné   Nz: Ú
)Úexcinfoz(mainloop: caught unexpected SystemExit!
)ru   Ú
exitstatus))ÚSessionÚfrom_configr   ÚOKry   Ú_do_configureÚhookÚpytest_sessionstartr   ÚUSAGE_ERRORÚFailedÚTESTS_FAILEDÚKeyboardInterruptr   Ú	ExceptionÚ_pytestÚ_codeÚExceptionInfoÚfrom_currentÚINTERRUPTEDÚ
isinstanceÚvalueÚ
returncodeÚsysÚstderrÚwriteÚtypenamerr   Úpytest_keyboard_interruptÚBaseExceptionÚINTERNAL_ERRORÚnotify_exceptionÚoptionÚ
SystemExitr0   Ú__name__ÚosÚchdirÚ	startpathÚpytest_sessionfinishÚ_ensure_unconfigure)ÚconfigÚdoitru   Ú	initstaterx   ry   Úexcs          rc   Úwrap_sessionr¡     s˜  € ô ×!Ñ! &Ó)€GÜ!Ÿ™€GÔØ€Ið0%ð 	RØ× Ñ Ô"ØˆIØ�K‰K×+Ñ+°GÐ+Ô<ØˆIÙ!% f¨gÓ!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Ø—=‘=×+Ñ+Ð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Ø!+ˆG×Üó 	RÜ!)×!8Ñ!8ˆGÔÜ—m‘m×1Ñ1×>Ñ>Ó@ˆGðRØ×'Ñ'¨°·±Ô?ô ˜gŸm™m¬ZÔ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  Ã<L=ÄN6 ÄDL=È$N6 È'AL=É.KÊ
:L=ËL6ËAL1Ì,L=Ì1L6Ì6L=Ì9N6 Ì<L=Ì=N6 Í N3ÍAN.Î.N3Î6'RÏ'PÐRÐQ8ÐAQ3Ñ.RÑ3Q8Ñ8Rc                ó"   — t        | t        «      S ©N)r¡   Ú_main©r�   s    rc   Úpytest_cmdline_mainr¦   I  s   € Ü˜¤Ó&Ð&re   rz   c                óê   — | j                   j                  |¬«       | j                   j                  |¬«       |j                  rt        j
                  S |j                  dk(  rt        j                  S y)z[Default command line protocol for initialization, session,
    running tests and reporting.rt   r   N)r~   Úpytest_collectionÚpytest_runtestloopÚtestsfailedr   r‚   ÚtestscollectedÚNO_TESTS_COLLECTED)r�   ru   s     rc   r¤   r¤   M  s`   € ð ‡K�K×!Ñ!¨'Ð!Ô2Ø
‡K�K×"Ñ"¨7Ð"Ô3à×ÒÜ×$Ñ$Ð$Ø	×	Ñ	 1Ò	$Ü×*Ñ*Ð*Øre   c                ó$   — | j                  «        y r£   )Úperform_collectrt   s    rc   r¨   r¨   Z  s   € Ø×ÑÕre   c                ó�  — | j                   rX| j                  j                  j                  s8| j	                  d| j                   | j                   dk7  r	dfz  «      ‚dfz  «      ‚| j                  j                  j
                  ryt        | j                  «      D ]©  \  }}|dz   t        | j                  «      k  r| j                  |dz      nd }|j                  j                  j                  ||¬«       | j                  r| j                  | j                  «      ‚| j                  sŒ�| j	                  | j                  «      ‚ y)Nz%d error%s during collectionr6   ÚsÚ T)ÚitemÚnextitem)rª   r�   r•   rD   ÚInterruptedÚcollectonlyÚ	enumerateÚitemsÚlenr~   Úpytest_runtest_protocolÚ
shouldfailr�   Ú
shouldstop)ru   Úir²   r³   s       rc   r©   r©   ^  s!  € Ø×Ò 7§>¡>×#8Ñ#8×#VÒ#VØ×!Ñ!Ø*Ø×"Ñ"¨7×+>Ñ+>À!Ò+C CÐLñMó
ð 	
àIKÐLñMó
ð 	
ð
 ‡~�~×Ñ×(Ò(Øä˜WŸ]™]Ö+‰ˆˆ4Ø+,¨q©5´3°w·}±}Ó3EÒ+E�7—=‘=  Q¡Ò'È4ˆØ�‰×Ñ×0Ñ0°dÀXÐ0ÔNØ×ÒØ—.‘. ×!3Ñ!3Ó4Ð4Ø×ÓØ×%Ñ% g×&8Ñ&8Ó9Ð9ð ,ð re   c                ó¤   — 	 | j                  d«      j                  «       xs  | j                  dd«      j                  «       S # t        $ r Y y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©rH   s    rc   Ú_in_venvrÃ   r  sR   € ðà�M‰M˜,Ó'×/Ñ/Ó1ò @Ø�}‰}˜\¨9Ó5×=Ñ=Ó?ð	
øô ò Ùðús   ‚A A Á	AÁAc                ó<  ‡ — ‰ j                   dk(  ry|j                  d‰ j                  ¬«      }|xs g }|j                  d«      }|r|j	                  d„ |D «       «       ‰ |v ry|j                  d‰ j                  ¬«      }|xs g }|j                  d«      }|r|j	                  d	„ |D «       «       t        ˆ fd
„|D «       «      ry|j                  d«      }|st        ‰ «      ry‰ j                  «       r&|j                  d«      }t        ˆ fd„|D «       «      ryy )NÚ__pycache__TÚcollect_ignorerÂ   Úignorec              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr£   r   ©Ú.0Úxs     rc   Ú	<genexpr>z(pytest_ignore_collect.<locals>.<genexpr>‘  s   è ø€ Ð@±Z°œL¨ŸO±Zùó   ‚Úcollect_ignore_globÚignore_globc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr£   r   rÉ   s     rc   rÌ   z(pytest_ignore_collect.<locals>.<genexpr>œ  s   è ø€ ÐD±^°œL¨ŸO±^ùrÍ   c              3  ón   •K  — | ],  }t        j                   t        ‰«      t        |«      «      –— Œ. y ­wr£   )Úfnmatchr]   )rÊ   ÚglobÚcollection_paths     €rc   rÌ   z(pytest_ignore_collect.<locals>.<genexpr>ž  s&   øè ø€ Ð
UÉÀŒ7�?‰?œ3˜Ó/´°T³×;Éùs   ƒ25rO   r(   c              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr£   r   )rÊ   ÚpatrÔ   s     €rc   rÌ   z(pytest_ignore_collect.<locals>.<genexpr>§  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å   ‡  s$  ø€ Ø×Ñ˜}Ò,Øà×/Ñ/Ø˜×5Ñ5ð 0ó €Lð  Ò% 2€LØ×!Ñ! (Ó+€JÙØ×ÑÑ@±ZÓ@Ô@à˜,Ñ&Øà×/Ñ/Ø O×$:Ñ$:ð 0ó €Lð  Ò% 2€LØ×%Ñ% mÓ4€NÙØ×ÑÑD±^ÓDÔDä
Ó
UÉÓ
UÔUØà×$Ñ$Ð%<Ó=€MÙœX oÔ6Øà×ÑÔØ"ŸM™M¨/Ó:ÐÜÓMÑ;LÓMÔMØàre   c                ó0   — t         j                  || ¬«      S )NrÂ   )ÚDirÚfrom_parent©rH   rÙ   s     rc   Úpytest_collect_directoryrê   ­  s   € ô �?‰?˜6¨ˆ?Ó-Ð-re   c                ó   — t        |j                  d«      xs g «      }|sy g }g }| D ]@  }|j                  j                  |«      r|j	                  |«       Œ0|j	                  |«       ŒB |r"|j
                  j                  |¬«       || d d  y y )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Ø×Ñ˜gÕ&à×Ñ˜WÕ%ð	 ñ Ø�‰×%Ñ%¨JÐ%Ô7Øˆ‰a‰ð re   c                  ó(   — e Zd Z	 	 	 	 	 	 dd„Zdd„Zy)ÚFSHookProxyc                ó    — || _         || _        y r£   )ÚpmÚremove_mods)Úselfrù   rú   s      rc   Ú__init__zFSHookProxy.__init__Æ  s   € ð
 ˆŒØ&ˆÕre   c                ór   — | j                   j                  || j                  ¬«      }|| j                  |<   |S )N)Úremove_plugins)rù   Úsubset_hook_callerrú   Ú__dict__)rû   r×   rË   s      rc   Ú__getattr__zFSHookProxy.__getattr__Î  s4   € Ø�G‰G×&Ñ& t¸D×<LÑ<LÐ&ÓMˆØˆ�‰�dÑØˆre   N)rù   r   rú   zAbstractSet[object]rl   ÚNone)r×   r]   rl   zpluggy.HookCaller)r—   Ú
__module__Ú__qualname__rü   r  © re   rc   r÷   r÷   Å  s(   „ ð'àð'ð )ð'ð 
ó	'ôre   r÷   c                  ó   — e Zd ZdZdZy)r´   z*Signals that the test run was interrupted.ÚbuiltinsN©r—   r  r  Ú__doc__r  re   rc   r´   r´   Ô  s
   „ Ù4à�Jre   r´   c                  ó   — e Zd ZdZy)r�   z"Signals a stop as failed test run.Nr  r  re   rc   r�   r�   Ú  s   „ Ú,re   r�   c                  ó$   — e Zd ZU dZded<   dd„Zy)Ú_bestrelpath_cacherÂ   r   rH   c                ó<   — t        | j                  |«      }|| |<   |S r£   )r   rH   )rû   rH   Úrs      rc   Ú__missing__z_bestrelpath_cache.__missing__ä  s    € Ü˜Ÿ	™	 4Ó(ˆØˆˆT‰
Øˆre   N)rH   r   rl   r]   )r—   r  r  Ú	__slots__Ú__annotations__r  r  re   rc   r  r  Þ  s   … à€Ià
ƒJôre   r  c                  óB   ‡ — 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.
    c               ó&   •— 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Ù   rH   )Úsuperrè   )ÚclsrÙ   rH   Ú	__class__s      €rc   rè   zDir.from_parent÷  s   ø€ ô ‰wÑ"¨&°tÐ"Ó<Ð<re   c              #  ó:  K  — | j                   }| j                  }t        | j                  «      D ]å  }|j	                  «       rat        |j                  «      }| j                  j                  |d¬«      s|j                  ||¬«      rŒY|j                  || ¬«      }|€Œo|–— Œt|j                  «       sŒ…t        |j                  «      }| j                  j                  |«      s|j                  ||¬«      rŒÉ|j                  || ¬«      }|E d {  –—†  Œç y 7 Œ­w)NT©Úwith_parents)rÔ   r�   ré   ©Ú	file_pathrÙ   )r�   Úihookr   rH   rÝ   r   ru   Ú
isinitpathrå   rê   rÀ   Úpytest_collect_file)rû   r�   r  ÚdirentryrH   ÚcolÚcolss          rc   rF   zDir.collect  sö   è ø€ Ø—‘ˆð —
‘
ˆÜ §	¡	Ö*ˆHØ�‰Ô Ü˜HŸM™MÓ*�Ø—|‘|×.Ñ.¨tÀ$Ð.ÔGØ×2Ñ2À4ÐPVÐ2ÔWØ Ø×4Ñ4¸$ÀtÐ4ÓL�Ø‘?Ø“Ià×!Ñ!Õ#Ü˜HŸM™MÓ*�Ø—|‘|×.Ñ.¨tÔ4Ø×2Ñ2À4ÐPVÐ2ÔWØ Ø×0Ñ0¸4ÈÐ0ÓM�Ø—‘ñ! +ð   ús   ‚BDÂDÂ5ADÄDÄD)rÙ   únodes.CollectorrH   r   rl   r%   )rl   z&Iterable[nodes.Item | nodes.Collector])r—   r  r  r	  Úclassmethodrè   rF   Ú__classcell__©r  s   @rc   rç   rç   ê  s=   ø„ ñ	ð ð=àð=ð ð	=ð
 
ô=ó ð=÷ re   rç   c                  óä  ‡ — e Zd ZU dZeZeZded<   ded<   ded<   d ˆ fd„Zed!d	„«       Z	d"d
„Z
ed#d„«       Zej                  d$d„«       Zed#d„«       Zej                  d$d„«       Zed%d„«       Zd&d„Z ed¬«      d'd„«       Z ed¬«      d(d„«       ZeZddœ	 	 	 	 	 d)d„Zd*d„Z	 	 	 	 	 	 d+d„Ze	 d,	 	 	 	 	 d-d„«       Ze	 d,	 	 	 	 	 d.d„«       Z	 d/	 	 	 	 	 d.d„Z	 d0	 	 	 	 	 d1d„Zd2d„Zd3d„Zˆ xZS )4rz   zoThe root of the collection tree.

    ``Session`` collects the initial paths given as arguments to pytest.
    r#   Ú_setupstater&   Ú_fixturemanagerúint | ExitCodery   c           	     óÈ  •— t         ‰| �  d|j                  d d || d¬«       d| _        d| _        d| _        d| _        |j                  j                  j                  d«      | _        t        «       | _        t        «       | _        g | _        g | _        i | _        g | _        t#        |j                  «      | _        | j&                  j(                  j+                  | d¬«       y )Nr±   )r×   rH   ÚfspathrÙ   r�   ru   rî   r   FrG   ru   )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ü   zSession.__init__-  sÌ   ø€ Ü‰ÑØØ—‘ØØØØØð 	ô 	
ð ˆÔØˆÔØ',ˆÔØ',ˆÔØ—\‘\×&Ñ&×*Ñ*¨<Ó8ˆŒ
Ü.7«kˆÔÜ;D»;ˆÔ'ØFHˆŒØ8:ˆÔØGIˆÔØ')ˆŒ
ä2DÀVÇ_Á_Ó2UˆÔà�‰×!Ñ!×*Ñ*¨4°iÐ*Õ@re   c                ó*   — | j                  |¬«      }|S )Nr¥   )Ú_create)r  r�   ru   s      rc   r{   zSession.from_configG  s   € àŸ;™;¨f˜;Ó5ˆØˆre   c                ó�   — d| j                   j                  | j                  t        | dd«      | j                  | j
                  fz  S )Nz6<%s %s exitstatus=%r testsfailed=%d testscollected=%d>ry   z<UNSET>)r  r—   r×   Úgetattrrª   r«   ©rû   s    rc   Ú__repr__zSession.__repr__L  sG   € ØGØ�N‰N×#Ñ#Ø�I‰IÜ�D˜,¨	Ó2Ø×ÑØ×ÑðK
ñ 
ð 	
re   c                ó   — | j                   S r£   )r-  r?  s    rc   r»   zSession.shouldstopU  ó   € à×ÑÐre   c                ót   — |du r-| j                   r!t        j                  t        d«      d¬«       y || _         y )NFzCsession.shouldstop cannot be unset after it has been set; ignoring.rv   ©Ú
stacklevel)r-  ÚwarningsÚwarnr$   ©rû   r‹   s     rc   r»   zSession.shouldstopY  ó<   € ð �E‰>˜d×.Ò.Ü�M‰MÜØYóð õ	ð Ø ˆÕre   c                ó   — | j                   S r£   )r.  r?  s    rc   rº   zSession.shouldfailg  rB  re   c                ót   — |du r-| j                   r!t        j                  t        d«      d¬«       y || _         y )NFzCsession.shouldfail cannot be unset after it has been set; ignoring.rv   rD  )r.  rF  rG  r$   rH  s     rc   rº   zSession.shouldfailk  rI  re   c                óB   — | j                   j                  j                  S )zQThe path from which pytest was invoked.

        .. versionadded:: 7.0.0
        )r�   Úinvocation_paramsrK   r?  s    rc   rš   zSession.startpathy  s   € ð �{‰{×,Ñ,×0Ñ0Ð0re   c                ó    — | j                   |   S r£   )r8  )rû   Ú	node_paths     rc   Ú_node_location_to_relpathz!Session._node_location_to_relpath�  s   € à×%Ñ% iÑ0Ð0re   T)Útryfirstc                ó    — | j                   r| j                  | j                   «      ‚| j                  r| j                  | j                  «      ‚y r£   )rº   r�   r»   r´   r?  s    rc   Úpytest_collectstartzSession.pytest_collectstart…  s=   € à�?Š?Ø—+‘+˜dŸo™oÓ.Ð.Ø�?Š?Ø×"Ñ" 4§?¡?Ó3Ð3ð re   c                óæ   — |j                   ret        |d«      sX| xj                  dz  c_        | j                  j	                  d«      }|r%| j                  |k\  rd| j                  z  | _        y y y y y )NÚwasxfailr6   r5   zstopping after %d failures)ÚfailedÚhasattrrª   r�   Úgetvaluerº   )rû   Úreportr5   s      rc   Úpytest_runtest_logreportz Session.pytest_runtest_logreportŒ  sg   € à�=Š=¤¨°Ô!<Ø×Ò Ñ!ÕØ—k‘k×*Ñ*¨9Ó5ˆGÙ˜4×+Ñ+¨wÒ6Ø">À$×BRÑBRÑ"S�•ð 7ˆwð "=ˆ=re   Fr  c               óx   — 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   r4  r3  )rû   rH   r  Úpath_s       rc   r  zSession.isinitpath–  s=   € ô$ # 4¬Ô.‘´D¸³JˆÙØ˜D×;Ñ;Ð;Ð;à˜D×.Ñ.Ð.Ð.re   c                ó"  — t        |t        «      r|n
t        |«      }| j                  j                  }|j	                  |«      }|j
                  j                  |«      }|rt        t        ||«      «      }|S | j                  j                  }|S r£   )
rŠ   r   r�   r9  Ú_getconftestmodulesÚ_conftest_pluginsÚ
differencer   r÷   r~   )rû   r+  rH   rù   Úmy_conftestmodulesrú   Úproxys          rc   ÚgethookproxyzSession.gethookproxy®  s€   € ä# F¬DÔ1‰v´t¸F³|ˆØ�[‰[×&Ñ&ˆð  ×3Ñ3°DÓ9ÐØ×*Ñ*×5Ñ5Ð6HÓIˆáä&¤{°2°{Ó'CÓDˆEð ˆð —K‘K×$Ñ$ˆEØˆre   c                ó  — ||v r||   S |j                  «       r6| j                  |j                  «      }|j                  || ¬«      }|�|fnd}n7|j	                  «       r%| j                  |«      }|j                  || ¬«      }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é   r  r  )rÝ   rc  rÙ   rê   rÀ   r  )rû   rH   Ú
path_cacher  r   r!  s         rc   Ú_collect_pathzSession._collect_path¿  s¢   € ð �:ÑØ˜dÑ#Ð#à�;‰;Œ=Ø×%Ñ% d§k¡kÓ2ˆEØ*/×*HÑ*HØ $ð +Ió +ˆCð 9<¸¨s©fÈR‰Dà�\‰\Œ^Ø×%Ñ% dÓ+ˆEØ×,Ñ,°tÀDÐ,ÓI‰Dð ˆDàˆ
�4ÑØˆre   c                 ó   — y r£   r  ©rû   r)   Úgenitemss      rc   r®   zSession.perform_collectÞ  s   € ð  #re   c                 ó   — y r£   r  rh  s      rc   r®   zSession.perform_collectã  s   € ð 25re   c                óN  — |€| j                   j                  }| j                  d| |«       | j                  j                  xj                  dz  c_        | j                   j
                  }g | _        g | _        i | _        g | _	        | j                  }	 g }g }|D ]Â  }t        | j                   j                  j                  || j                   j                  j                  ¬«      }| j                  j                  |«       |j                  |j                   «       |j                  |j                   «       |j#                  |j                   j$                  «       ŒÄ t'        |«      | _        t'        |«      | _        t-        | «      }	| j.                  j1                  |	¬«       | j                  j                  xj                  dz  c_        | j                  rMg }
| j                  D ]4  \  }}|r|
j                  d|› d|›d�«       Œ!|
j                  d|› �«       Œ6 t3        |
Ž ‚|s|	j4                  }nG|	j6                  r;|	j4                  D ],  }| j                  j#                  | j9                  |«      «       Œ. | j                   j:                  j=                  «        |j?                  | | j                   |¬	«       g | _        g | _        i | _        |jA                  | ¬
«       |rtC        |«      | _"        |S # g | _        g | _        i | _        |jA                  | ¬
«       w xY w)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.
        r®   r6   ©Ú	as_pypath©rY  znot found: z
(no match in any of Ú)zfound no collectors for )ru   r�   r·   rt   )#r�   r)   r/  r0  Úindentr~   r5  r6  r7  r·   Úresolve_collection_argumentrM  rK   r•   Úpyargsr;   rH   rÛ   rh   r2  r3  r4  r"   r  Úpytest_collectreportr   ÚresultÚpassedri  r9  Úcheck_pendingrõ   Úpytest_collection_finishr¸   r«   )rû   r)   ri  r~   r·   ÚinitialpathsÚinitialpaths_with_parentsÚargÚcollection_argumentÚrepÚerrorsÚ
collectorsÚnodes                rc   r®   zSession.perform_collectè  s·  € ð  ˆ<Ø—;‘;×#Ñ#ˆDà�
‰
Ð$ 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Ø×.Ñ.Ø T§[¡[¸ð /ô ð  ˆDŒNØ"$ˆDÔØ%'ˆDÔ"Ø×)Ñ)°$Ð)Ô7áÜ"% e£*ˆDÔàˆøð  ˆDŒNØ"$ˆDÔØ%'ˆDÔ"Ø×)Ñ)°$Ð)Õ7ús   ÂH,K; Ë;)L$c                ó„   — || j                   v r|r| j                   |   }|dfS t        |«      }|| j                   |<   |dfS )NTF)r7  r"   )rû   r  Úhandle_dupesr|  s       rc   Ú_collect_one_nodezSession._collect_one_node:  sR   € ð
 �4×)Ñ)Ñ)©lØ×(Ñ(¨Ñ.ˆCØ˜�9Ðä" 4Ó(ˆCØ+.ˆD×"Ñ" 4Ñ(Ø˜�:Ðre   c              #  óú  K  — i }| j                   j                  }| j                  D �]Ï  }| j                  d|«       | j                  j                  xj
                  dz  c_        |j                  }|j                  }|j                  }|j                  «       r|rJ d||f›�«       ‚|g}|€7|j                  D ]'  }|j                  |«      s ny|j                  d|«       Œ) nd|j                  d«      }	t        |j                  d«      D ]:  \  }
}|
t        |	«      kD  s|j                   |	|
    k7  r n|j                  d|«       Œ< d}g }| g |¢|¢fg}|�r9|j#                  «       \  }}|s|–— d}Œt%        |t&        j(                  «      sŒ:t%        |t*        «      r+t%        |d   t,        «      sJ ‚|j/                  |d   |«      }n‘t        |«      dk(  xr( t%        |d   t,        «      xr |d   j1                  «        }| j3                  ||«      \  }}|s(|j4                  s|j6                  j9                  |¬	«       |j4                  sŒú|j:                  }d}t=        |«      D �]  }t%        |d   t,        «      r¥|j                  |d   k(  }t>        j@                  d
k(  r¸|s¶tB        j                  jE                  |j                  |d   «      }|xrL tB        j                  jG                  |j                  «      tB        j                  jG                  |d   «      k(  }n8|jH                  |d   k(  xs$ |jH                  j                  d«      d   |d   k(  }|sŒ÷|jK                  ||dd  f«       d}�Œ |s|jK                  |«       |r�Œ9|s;djM                  tO        |«      g|¢­«      }| jP                  jK                  ||f«       | j                  j                  xj
                  dz  c_        �ŒÒ y ­w)Nzprocessing argumentr6   zinvalid arg r   Ú.rv   FTrn  Úwin32Ú[ú::))r�   r9  r6  r/  r0  rp  rH   ÚpartsÚmodule_namerÝ   rh   Ú_is_in_confcutdirÚinsertÚsplitr¶   r¸   ÚstemÚpoprŠ   r   Ú	Collectorrz   r   rf  rÀ   r‚  ru  r  rs  rt  Úreversedr�   Úplatformr˜   ÚsamefileÚislinkr×   r;   Újoinr]   r5  )rû   re  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   zSession.collectG  sÅ  è ø€ ð =?ˆ
à�[‰[×&Ñ&ˆà#'×#6Õ#6ÐØ�J‰JÐ,Ð.AÔBØ�J‰J�O‰O×"Ò" aÑ'Õ"à)×.Ñ.ˆGØ'×-Ñ-ˆEØ-×9Ñ9ˆKð �~‰~ÔÙ ÐE L°'¸5Ð1AÐ0DÐ"EÓE�yà�IˆEð Ð"à#ŸOœO�DØ×/Ñ/°Ô5ÙØ—L‘L  DÕ)ñ ,ð %0×$5Ñ$5°cÓ$:Ð!Ü(¨¯©¸!Ö<‘G�A�tØœ3Ð0Ó1Ò1°T·Y±YÐBSÐUVÐTVÑBWÒ5WÙØ—L‘L  DÕ)ð  =ð +0Ð'Ø"$ÐàÐ'˜Ð' Ð'Ð(ðQˆDò Ø(,¯©«
Ñ%�	˜:ñ "Ø#’OØ26Ð/Øô " )¬U¯_©_Ô=Øô ˜i¬Ô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Ø#'§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ð !ò  ØŸ™ 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   ‚MO;Í0O;ÎA*O;c              #  ó4  K  — | j                  d|«       t        |t        j                  «      r!|j                  j                  |¬«       |–— y t        |t        j                  «      sJ ‚| j                  j                  d«      }|xr t        |t        j                  «       }| j                  ||«      \  }}|r|sy |j                  r*|j                  D ]  }| j                  |«      E d {  –—†  Œ |s|j                  j                  |¬«       y y 7 Œ&­w)Nri  )r²   rN   rn  )r/  rŠ   r   ÚItemr  Úpytest_itemcollectedr�  r�   rÚ   ÚFiler‚  ru  rt  ri  rs  )rû   r  rN   r�  r|  rŸ  Úsubnodes          rc   ri  zSession.genitemsÀ  sä   è ø€ Ø�
‰
�:˜tÔ$Ü�dœEŸJ™JÔ'Ø�J‰J×+Ñ+°Ð+Ô6Ø‹Jä˜d¤E§O¡OÔ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   ‚C-DÃ/DÃ0'D)r�   r   rl   r  )r�   r   rl   rz   )rl   r]   )rl   ú
bool | str)r‹   r©  rl   r  )rl   r   )rO  r   rl   r]   )rl   r  )rY  zTestReport | CollectReportrl   r  )rH   zstr | os.PathLike[str]r  rU   rl   rU   )r+  zos.PathLike[str]rl   zpluggy.HookRelay)rH   r   re  z%dict[Path, Sequence[nodes.Collector]]rl   zSequence[nodes.Collector])..)r)   úSequence[str] | Noneri  zLiteral[True]rl   zSequence[nodes.Item])r)   rª  ri  rU   rl   z&Sequence[nodes.Item | nodes.Collector])NT)T)r  r"  r�  rU   rl   ztuple[CollectReport, bool])rl   z&Iterator[nodes.Item | nodes.Collector])r  znodes.Item | nodes.Collectorrl   zIterator[nodes.Item])r—   r  r  r	  r´   r�   r  rü   r#  r{   r@  Úpropertyr»   Úsetterrº   rš   rP  r   rS  rZ  rs  r  rc  rf  r   r®   r‚  rF   ri  r$  r%  s   @rc   rz   rz     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                ó4  — 	 t         j                  j                  | «      }|�|j                  �|j                  dk(  ry|j                  r)t        j                  j                  |j                  «      S |j                  S # t        t        t
        f$ r Y yw xY w)zaSearch 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                  ó0   — e Zd ZU dZded<   ded<   ded<   y)	ÚCollectionArgumentzA resolved collection argument.r   rH   zSequence[str]rˆ  ú
str | Noner‰  N)r—   r  r  r	  r  r  re   rc   r»  r»  æ  s   … á)à
ƒJØÓØÔre   r»  Frl  c               ó¨  — t        |«      j                  d«      \  }}}|j                  d«      ^}}|r|d   › |› |› �|d<   d}|rt        |«      }	|	�|}|	}| |z  }
t	        |
«      }
t        |
«      s!|rdnd}t        |j                  |¬«      «      ‚|r1|
j                  «       r!|rdnd	}t        |j                  |¬«      «      ‚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"

    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})rz  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_pathrz  rm  ri   ÚsquacketÚrestÚstrpathrˆ  r‰  Úpyarg_strpathr+  rr   s               rc   rq  rq  ï  s  € ôF ˜s›8×-Ñ-¨cÓ2Ñ€Dˆ(�DØ—j‘j Ó&€O€GˆeÙØ˜R‘y�k ( ¨D¨6Ð2ˆˆb‰	Ø€KÙÜ% gÓ.ˆØÐ$Ø!ˆKØ#ˆGØ˜wÑ&€FÜ˜&Ó!€FÜ�vÔñ ñ Hà5ð 	ô
 ˜Ÿ™¨˜Ó,Ó-Ð-Ù�—‘”ñ ñ HàNð 	ô
 ˜Ÿ™¨˜Ó,Ó-Ð-ÜØØØôð re   )ra   r   rl   r  )rH   r]   rl   r]   )r�   r   rž   z2Callable[[Config, Session], int | ExitCode | None]rl   r)  )r�   r   rl   r)  )r�   r   ru   rz   rl   zint | ExitCode | None)ru   rz   rl   r  )ru   rz   rl   rU   )rH   r   rl   rU   )rÔ   r   r�   r   rl   zbool | None)rH   r   rÙ   r"  rl   znodes.Collector | None)r·   zlist[nodes.Item]r�   r   rl   r  )r‰  r]   rl   r¼  )rÁ  r   rz  r]   rm  rU   rl   r»  )Vr	  Ú
__future__r   rm   ÚdataclassesrÒ   r^   rQ   Úimportlib.utilr˜   Úpathlibr   r�   Útypingr   r   r   r   r	   r
   r   r   r   r   rF  Ú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�  rz   r¸  r»  rq  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   