+
    yjx                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIt^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIH t  ^ RIH!t! ^ RIH"t" ^ RIH#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI*H,t, ^ RI*H-t- ^ RI*H.t. ^ RI*H/t/ ^ RI0H1t1 ^ RI0H2t2 ^ RI3H4t4 ^ R I3H5t5 ^ R!I6H7t7 ]'       d   ^ R"IH8t8 ^ R#I9H:t: R$ R% lt;R& R' lt<R( R) lt=R* R+ lt>R, R- lt?R. R/ lt@R0 R1 ltAR2 R3 ltBR4 R5 ltCR6 R7 ltDR8 R9 ltE ! R: R;4      tF ! R< R=]G4      tH ! R> R?]I4      tJ]P                   ! R@ RA]]]L3,          4      4       tM] ! RB RC]P                  4      4       tO] ! RD RE]P                  4      4       tQRF RG ltR]P                  ! RHRI7       ! RJ RK4      4       tSRLRM/RN RO lltTR# )PzHCore 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                    V ^8  d   QhRRRR/# )   parserr   returnNone )formats   "@/var/www/html/2rare/lib/python3.14/site-packages/_pytest/main.py__annotate__r.   9   s     y yV y y    c                   V P                  R RR. ReOR7       V P                  RRR. R7       V P                  RR4      pVP                  RR	R
R^RR7       V P                  R4      pVP                  RRRRR7       V P                  RRRR7       VP                  RRR\        R^ RR7       VP                  RRRR7       VP                  R RR!R7       VP                  R"RR#R7       VP                  R$R%R&\
        R'R(R)7       VP                  R*RR+R,R-R.7       VP                  R/RR0R1R27       V P                  R3R44      pVP                  R5R6R7RR8R7       VP                  R9RR:R7       VP                  R;RR<R=R>7       VP                  R?RR<R@R>7       VP                  RARRBRCR>7       VP                  RDRERFRG\        P                  ! \        RDRH7      RIRJ7       VP                  RKRRLR+RMRN7       VP                  RORPRRQR+RRRN7       VP                  RSRRTR+RURN7       VP                  RVRW. RfORXRYRZ7       V P                  R[R\R+R]R^7       V P                  R_R`4      pVP                  RaRbRF\        RGRcRd7       RF# )gnorecursedirsz)Directory patterns to avoid for recursionargs)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maxfailz,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)r9   r<   filterwarningslinelistz_Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings.)r3   r<   z	--maxfailnumstorez'Exit after first num failures or errors)metavarr9   r3   r:   r4   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.)rB   r3   r:   r<   z--continue-on-collection-errorsFcontinue_on_collection_errorsz4Force test execution even if collection errors occur)r9   r4   r:   r<   z	--rootdirrootdirzDefine 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'.)r9   r:   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))r9   rB   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
confcutdirNdir)optnamez1Only load conftest.py's relative to specified dir)r:   r4   rB   r3   r<   z--noconftest
noconftestz Don't load any conftest.py files)r9   r:   r4   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
importmodez\Prepend/append to sys.path when importing test modules and conftest files. Default: prepend.)r4   choicesr:   r<   consider_namespace_packagesboolzEConsider namespace packages when resolving module names during import)r3   r4   r<   debugconfigz(test session debugging and configurationz
--basetempbasetempz^Base temporary directory for this test run. (Warning: this directory is removed if it exists.))r:   r4   r3   rB   r<   )	z*.eggz.*_darcsbuildCVSdistnode_modulesvenvz{arch})rR   r=   	importlib)
addinigetgroup
_addoption	addoptionintstr	functoolspartialr   validate_basetemp)r(   groups   & r-   pytest_addoptionrj   9   s   
MM3

	    MM	   OOI'FGE	;   OO-.E	OOK	   MM/   
6   
*   
   
5  
 
(   
),C   
	   OOI|4E	OO5   
OO@  
 
OO<	   
OOD	   
OOS	   
OO}nE@   
OO/   
OO#   
OO!$A   
OO2#   MM%T	   OOM+UVE	OOA  
r/   c                    V ^8  d   QhRRRR/# )r'   rJ   re   r)   r+   )r,   s   "r-   r.   r.      s      C C r/   c                   R pV '       g   \         P                  ! V4      hR R lpV! \        P                  ! 4       \        V 4      P	                  4       4      '       d   \         P                  ! V4      hV! \        P                  ! 4       P                  4       \        V 4      P                  4       4      '       d   \         P                  ! V4      hV # )zWbasetemp must not be empty, the current working directory or any parent directory of itc               $    V ^8  d   QhRRRRRR/# )r'   baser   queryr)   rV   r+   )r,   s   "r-   r.   'validate_basetemp.<locals>.__annotate__   s!     % %$ %t % %r/   c                .    W8X  d   R# WP                   9   # )z,Return whether query is an ancestor of base.T)parents)rn   ro   s   &&r-   is_ancestor&validate_basetemp.<locals>.is_ancestor   s    =$$r/   )argparseArgumentTypeErrorr   cwdabsoluteresolve)rJ   msgrs   s   &  r-   rh   rh      s    
cC ((--% 488:tDz22455((-- 488:%%'d););)=>>((--Kr/   c               $    V ^8  d   QhRRRRRR/# )r'   configr   doitz2Callable[[Config, Session], int | ExitCode | None]r)   int | ExitCoder+   )r,   s   "r-   r.   r.     s$     8 88L88r/   c           	     x	   \         P                  V 4      p\        P                  Vn        ^ p  V P                  4        ^pV P                  P                  VR7       ^pV! W4      ;'       g    ^ Vn        Rp\H        PJ                  ! TPL                  4       T^8  d(    T P                  PO                  Y"P                  R7       T PQ                  4        TP                  #   \         d    \        P                  Tn        h \         d    \        P                  Tn         L\        \        P                  3 Ed    \        P                   P"                  P%                  4       p\        P&                  p\)        TP*                  \        P                  4      '       dy   TP*                  P,                  e   TP*                  P,                  pT^8  dD   \.        P0                  P3                  TP4                   RTP*                  P6                   R24       T P                  P9                  TR7       YRn         EL\:         Ed    \        P<                  Tn        \        P                   P"                  P%                  4       p T P?                  Y@P@                  4       \)        TP*                  \B        4      '       d    \.        P0                  P3                  R4        ELn  \        P                   dd   pTP,                  e   TP,                  Tn        \.        P0                  P3                  \E        T4      PF                   RT R24        Rp? ELRp?ii ; ii ; i  \        P                   dc   pTP,                  e   TP,                  Tn        \.        P0                  P3                  \E        T4      PF                   RT R24        Rp?ELRp?ii ; i  Rp\H        PJ                  ! TPL                  4       T^8  d    T P                  PO                  Y"P                  R7       My  \        P                   db   pTP,                  e   TP,                  Tn        \.        P0                  P3                  \E        T4      PF                   RT R24        Rp?MRp?ii ; iT PQ                  4        i ; i)zSkeleton command line program.sessionNz: 
)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typenamerz   pytest_keyboard_interruptBaseExceptionINTERNAL_ERRORnotify_exceptionoption
SystemExitr3   __name__oschdir	startpathpytest_sessionfinish_ensure_unconfigure)r|   r}   r   	initstater   r   excs   &&     r-   wrap_sessionr     s    !!&)G!GI0% 	R  "IKK++G+<I!%f!6!;!;!G> 
""#>C00#0B0B 1  	""$U  	!)!5!5G 	7!)!6!6G!4>>2 		,mm11>>@G)1)=)=J'--88==++7!(!9!9Jq=JJ$$(8(8'9GMM<M<M;Nb%QRKK11'1B!+ 	R!)!8!8Gmm11>>@GR''? gmmZ88JJ$$%PQ >> C>>-),G&

  DI$6$6#7r#b!ABBC	R, >> C>>-),G&

  DI$6$6#7r#b!ABBC 
""#>C00#0B0B 1  >> C>>-),G&

  DI$6$6#7r#b!ABBC 	""$s   >C" .C"  &M# ")M M "O $M >C=M ;O >	M >M K$"?M !O $M9AMM O MM  O #O8AOO*R9&P/.R9/R%AR R9 R%%R9c                    V ^8  d   QhRRRR/# )r'   r|   r   r)   r~   r+   )r,   s   "r-   r.   r.   I  s     ' ' '> 'r/   c                "    \        V \        4      # N)r   _mainr|   s   &r-   pytest_cmdline_mainr   I  s    &&r/   c               $    V ^8  d   QhRRRRRR/# )r'   r|   r   r   r   r)   zint | ExitCode | Noner+   )r,   s   "r-   r.   r.   M  s"     
 
& 
7 
/D 
r/   c                    V P                   P                  VR7       V P                   P                  VR7       VP                  '       d   \        P
                  # VP                  ^ 8X  d   \        P                  # R# )zWDefault command line protocol for initialization, session,
running tests and reporting.r   N)r   pytest_collectionpytest_runtestlooptestsfailedr   r   testscollectedNO_TESTS_COLLECTED)r|   r   s   &&r-   r   r   M  sc     KK!!'!2
KK""7"3$$$			1	$***r/   c                    V ^8  d   QhRRRR/# )r'   r   r   r)   r*   r+   )r,   s   "r-   r.   r.   Z  s      w 4 r/   c                &    V P                  4        R # r   )perform_collectr   s   &r-   r   r   Z  s    r/   c                    V ^8  d   QhRRRR/# )r'   r   r   r)   rV   r+   )r,   s   "r-   r.   r.   ^  s       D r/   c                    V P                   '       di   V P                  P                  P                  '       gC   T P	                  R V P                   V P                   ^8w  d   R3,          4      hR3,          4      hV P                  P                  P
                  '       d   R# \        V P                  4       F  w  rV^,           \        V P                  4      8  d   V P                  V^,           ,          MRpVP                  P                  P                  W#R7       V P                  '       d   V P                  V P                  4      hV P                  '       g   K  V P	                  V P                  4      h	  R# )z%d error%s during collections TN)itemnextitem)r   r|   r   rF   Interruptedcollectonly	enumerateitemslenr   pytest_runtest_protocol
shouldfailr   
shouldstop)r   ir   r   s   &   r-   r   r   ^  s,   7>>#8#8#V#V#V!!*""7+>+>!+CCLM
 	
IKLM
 	

 ~~(((W]]++,q53w}}3E+E7==Q'400d0N..!3!344%%g&8&899 , r/   c                    V ^8  d   QhRRRR/# )r'   rJ   r   r)   rV   r+   )r,   s   "r-   r.   r.   r  s      4 D r/   c                f     V P                  R4      P                  4       #   \         d     R# i ; i)zAttempt 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/]z
pyvenv.cfgF)joinpathis_fileOSErrorrJ   s   &r-   _in_venvr   r  s1    }}\*2244 s   ! 00c               $    V ^8  d   QhRRRRRR/# )r'   collection_pathr   r|   r   r)   zbool | Noner+   )r,   s   "r-   r.   r.   |  s!     # #4 # #K #r/   c                V  a  S P                   R 8X  d   R# VP                  RS P                  R7      pT;'       g    . pVP                  R4      pV'       d   VP	                  R V 4       4       S V9   d   R# VP                  RS P                  R7      pT;'       g    . pVP                  R4      pV'       d   VP	                  R V 4       4       \
        ;QJ d    V 3R	 lV 4       F  '       g   K   RM	  R
M! V 3R	 lV 4       4      '       d   R# VP                  R4      pV'       g   \        S 4      '       d   R# S P                  4       '       dT   VP                  R4      p\
        ;QJ d    V 3R lV 4       F  '       g   K   RM	  R
M! V 3R lV 4       4      '       d   R# R# )__pycache__Tcollect_ignorer   ignorec              3  8   "   T F  p\        V4      x  K  	  R # 5ir   r   .0xs   & r-   	<genexpr>(pytest_ignore_collect.<locals>.<genexpr>  s     @ZLOOZ   collect_ignore_globignore_globc              3  8   "   T F  p\        V4      x  K  	  R # 5ir   r   r   s   & r-   r   r     s     D^LOO^r   c              3  v   <"   T F.  p\         P                   ! \        S4      \        V4      4      x  K0  	  R # 5ir   )fnmatchre   )r   globr   s   & r-   r   r     s(     
U7??3/T;;s   69FrQ   r1   c              3  <   <"   T F  p\        VS4      x  K  	  R # 5ir   r   )r   patr   s   & r-   r   r     s     M;LCz#//;Ls   N)	name_getconftest_pathlistparent	getoptionextendanyr   is_dirgetini)r   r|   ignore_paths
excludeoptignore_globsexcludegloboptallow_in_venvnorecursepatternss   f&      r-   pytest_ignore_collectr   |  sW   },//55 0 L  %%2L!!(+J@Z@@,&//O$:$: 0 L  %%2L%%m4ND^DD
s
U
Usss
U
UUU$$%<=MXo66"MM/:3M;LM333M;LMMMr/   c               $    V ^8  d   QhRRRRRR/# )r'   rJ   r   r   nodes.Collectorr)   znodes.Collector | Noner+   )r,   s   "r-   r.   r.     s$     . .
.'..r/   c                .    \         P                  WR 7      # )r   )Dirfrom_parentrJ   r   s   &&r-   pytest_collect_directoryr     s     ??6?--r/   c               $    V ^8  d   QhRRRRRR/# )r'   r   zlist[nodes.Item]r|   r   r)   r*   r+   )r,   s   "r-   r.   r.     s"      )9 6 d r/   c                Z   \        VP                  R 4      ;'       g    . 4      pV'       g   R# . p. pV  FH  pVP                  P                  V4      '       d   VP	                  V4       K7  VP	                  V4       KJ  	  V'       d#   VP
                  P                  VR7       W0R&   R# R# )deselectN)r   :NNN)tupler   nodeid
startswithr=   r   pytest_deselected)r   r|   deselect_prefixes	remaining
deselectedcolitems   &&    r-   pytest_collection_modifyitemsr    s    f..z:@@bAIJ>>$$%677g&W%	  %%J%7a r/   c                  .    ] tR tRtR R ltR R ltRtR# )FSHookProxyi  c               $    V ^8  d   QhRRRRRR/# )r'   pmr   remove_modszAbstractSet[object]r)   r*   r+   )r,   s   "r-   r.   FSHookProxy.__annotate__  s(     ' '' )' 
	'r/   c                	    Wn         W n        R # r   r  r  )selfr  r  s   &&&r-   __init__FSHookProxy.__init__  s    
 &r/   c                    V ^8  d   QhRRRR/# )r'   r   re   r)   zpluggy.HookCallerr+   )r,   s   "r-   r.   r    s       (9 r/   c                	n    V P                   P                  WP                  R 7      pW P                  V&   V# ))remove_plugins)r  subset_hook_callerr  __dict__)r  r   r   s   && r-   __getattr__FSHookProxy.__getattr__  s0    GG&&t<L<L&Mdr/   r  N)r   
__module____qualname____firstlineno__r  r  __static_attributes__r+   r/   r-   r	  r	    s    ' r/   r	  c                      ] tR tRtRtRtRtR# )r   i  z*Signals that the test run was interrupted.builtinsr+   Nr   r  r  r  __doc__r  r+   r/   r-   r   r     s
    4Jr/   r   c                      ] tR tRtRtRtR# )r   i  z"Signals a stop as failed test run.r+   Nr   r+   r/   r-   r   r     s    ,r/   r   c                  2    ] tR tRt$ RtR]R&   R R ltRtR# )	_bestrelpath_cachei  rJ   r   c                    V ^8  d   QhRRRR/# )r'   rJ   r   r)   re   r+   )r,   s   "r-   r.   _bestrelpath_cache.__annotate__  s        r/   c                	:    \        V P                  V4      pW V&   V# r   )r   rJ   )r  rJ   rs   && r-   __missing___bestrelpath_cache.__missing__  s    		4(T
r/   r+   Nr   )r   r  r  r  	__slots____annotations__r)  r  r+   r/   r-   r$  r$    s    I
J r/   r$  c                  H   a  ] tR tRtRt]R V 3R ll4       tR R ltRtV ;t	# )r   i  zCollector 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               $    V ^8  d   QhRRRRRR/# )r'   r   r   rJ   r   r)   r$   r+   )r,   s   "r-   r.   Dir.__annotate__  s(     = == 	=
 
=r/   c               $   < \         SV `  WR7      # )zThe public constructor.

:param parent: The parent collector of this Dir.
:param path: The directory's path.
:type path: pathlib.Path
)r   rJ   )superr   )clsr   rJ   	__class__s   &&$r-   r   Dir.from_parent  s     w"&"<<r/   c                   V ^8  d   QhRR/# )r'   r)   z&Iterable[nodes.Item | nodes.Collector]r+   )r,   s   "r-   r.   r/    s        ?  r/   c              #  	  "   V P                   pV P                  p\        V P                  4       EF  pVP	                  4       '       dq   \        VP                  4      pV P                  P                  VR R7      '       g   VP                  WAR7      '       d   Kl  VP                  W@R7      pVe   Vx  K  K  VP                  4       '       g   K  \        VP                  4      pV P                  P                  V4      '       g   VP                  WAR7      '       d   K  VP                  W@R7      pT Rj  xL
  EK  	  R#  L5i)T)with_parents)r   r|   r   N	file_pathr   )r|   ihookr   rJ   r   r   r   
isinitpathr   r   r   pytest_collect_file)r  r|   r:  direntryrJ   colcolss   &      r-   rH   Dir.collect  s     

		*H  HMM*||..t$.GG2242WW 44$4L?I # !!##HMM*||..t442242WW 0040M! +   s   CEA'E9E:Er+   )
r   r  r  r  r!  classmethodr   rH   r  __classcell__r3  s   @r-   r   r     s&    	 = =   r/   r   c                    a  ] tR tRt$ Rt]t]tR]R&   R]R&   R]R&   R	 V 3R
 llt]	R R l4       t
R R lt]R R l4       t]P                  R R l4       t]R R l4       t]P                  R R l4       t]R R l4       tR R lt]! RR7      R R l4       t]! RR7      R R  l4       t]tR!R"/R# R$ lltR% R& ltR' R( lt]R6R) R* ll4       t]R6R+ R, ll4       tR7R- R. lltR8R/ R0 lltR1 R2 ltR3 R4 ltR5tV ;t# )9r   i  zgThe root of the collection tree.

``Session`` collects the initial paths given as arguments to pytest.
r"   _setupstater%   _fixturemanagerr~   r   c                    V ^8  d   QhRRRR/# )r'   r|   r   r)   r*   r+   )r,   s   "r-   r.   Session.__annotate__"  s     A Av A$ Ar/   c           
     	  < \         SV `  R VP                  RRVV R R7       ^ V n        ^ V n        RV n        RV n        VP                  P                  P                  R4      V n        \        4       V n        \        4       V n        . V n        . V n        / V n        . V n        \#        VP                  4      V n        V P&                  P(                  P+                  V RR7       R# )r   N)r   rJ   fspathr   r|   r   r   FrI   r   )r   )r1  r  rootpathr   r   _shouldstop_shouldfailtracerootget	frozenset_initialpaths_initialpaths_with_parents	_notfound_initial_parts_collection_cacher   r$  _bestrelpathcacher|   pluginmanagerregister)r  r|   r3  s   &&r-   r  Session.__init__"  s     	 	
 ',',\\&&**<8
.7k;D;'FH8:GI')
2DV__2U!!**4i*@r/   c                    V ^8  d   QhRRRR/# )r'   r|   r   r)   r   r+   )r,   s   "r-   r.   rH  =  s       G r/   c                	*    V P                  VR 7      pV# )r   )_create)r2  r|   r   s   && r-   r   Session.from_config<  s    ;;f;5r/   c                   V ^8  d   QhRR/# )r'   r)   re   r+   )r,   s   "r-   r.   rH  A  s     
 
# 
r/   c                	    R V P                   P                  V P                  \        V RR4      V P                  V P
                  3,          # )z6<%s %s exitstatus=%r testsfailed=%d testscollected=%d>r   z<UNSET>)r3  r   r   getattrr   r   r  s   &r-   __repr__Session.__repr__A  sG    GNN##IID,	2K
 
 	
r/   c                   V ^8  d   QhRR/# r'   r)   
bool | strr+   )r,   s   "r-   r.   rH  K          J  r/   c                	    V P                   # r   )rL  rb  s   &r-   r   Session.shouldstopJ      r/   c                    V ^8  d   QhRRRR/# r'   r   rg  r)   r*   r+   )r,   s   "r-   r.   rH  O       ! !
 !t !r/   c                	    VR J d6   V P                   '       d$   \        P                  ! \        R4      ^R7       R# Wn         R# )FzCsession.shouldstop cannot be unset after it has been set; ignoring.
stacklevelN)rL  warningswarnr#   r  r   s   &&r-   r   rj  N  =     E>d...MMY 	  r/   c                   V ^8  d   QhRR/# rf  r+   )r,   s   "r-   r.   rH  ]  rh  r/   c                	    V P                   # r   )rM  rb  s   &r-   r   Session.shouldfail\  rk  r/   c                    V ^8  d   QhRRRR/# rm  r+   )r,   s   "r-   r.   rH  a  rn  r/   c                	    VR J d6   V P                   '       d$   \        P                  ! \        R4      ^R7       R# Wn         R# )FzCsession.shouldfail cannot be unset after it has been set; ignoring.rp  N)rM  rr  rs  r#   rt  s   &&r-   r   rx  `  ru  r/   c                   V ^8  d   QhRR/# )r'   r)   r   r+   )r,   s   "r-   r.   rH  o  s     1 14 1r/   c                B    V P                   P                  P                  # )zAThe path from which pytest was invoked.

.. versionadded:: 7.0.0
)r|   invocation_paramsrM   rb  s   &r-   r   Session.startpathn  s     {{,,000r/   c                    V ^8  d   QhRRRR/# )r'   	node_pathr   r)   re   r+   )r,   s   "r-   r.   rH  v  s     1 14 1C 1r/   c                	(    V P                   V,          # r   )rW  )r  r  s   &&r-   _node_location_to_relpath!Session._node_location_to_relpathv  s    %%i00r/   T)tryfirstc                   V ^8  d   QhRR/# )r'   r)   r*   r+   )r,   s   "r-   r.   rH  {  s     4 4T 4r/   c                	    V P                   '       d   V P                  V P                   4      hV P                  '       d   V P                  V P                  4      hR # r   )r   r   r   r   rb  s   &r-   pytest_collectstartSession.pytest_collectstartz  sA    ???++doo..???""4??33 r/   c                    V ^8  d   QhRRRR/# )r'   reportzTestReport | CollectReportr)   r*   r+   )r,   s   "r-   r.   rH    s     T T/I Td Tr/   c                	(   VP                   '       d   \        VR 4      '       gl   V ;P                  ^,          un        V P                  P	                  R4      pV'       d.   V P                  V8  d   RV P                  ,          V n        R# R# R# R# R# )wasxfailr8   zstopping after %d failuresN)failedhasattrr   r|   getvaluer   )r  r  r8   s   && r-   pytest_runtest_logreport Session.pytest_runtest_logreport  sl    ===!<!<!kk**95G4++w6">$BRBR"S 7w "==r/   r7  Fc               $    V ^8  d   QhRRRRRR/# )r'   rJ   zstr | os.PathLike[str]r7  rV   r)   r+   )r,   s   "r-   r.   rH    s(     / /$/ 	/
 
/r/   c                   \        V\        4      '       d   TM
\        V4      pV'       d   W0P                  9   # W0P                  9   # )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   rS  rR  )r  rJ   r7  path_s   &&$ r-   r;  Session.isinitpath  s<    $ #4..DJ;;;;....r/   c                    V ^8  d   QhRRRR/# )r'   rJ  zos.PathLike[str]r)   zpluggy.HookRelayr+   )r,   s   "r-   r.   rH    s      #3 8H r/   c                	8   \        V\        4      '       d   TM
\        V4      pV P                  P                  pVP	                  V4      pVP
                  P                  V4      pV'       d   \        \        W54      4      pV# V P                  P                  pV# r   )
r   r   r|   rX  _getconftestmodules_conftest_plugins
differencer   r	  r   )r  rJ  rJ   r  my_conftestmodulesr  proxys   &&     r-   gethookproxySession.gethookproxy  s    #FD11vtF|[[&&  33D9**556HI&{2'CDE  KK$$Er/   c               $    V ^8  d   QhRRRRRR/# )r'   rJ   r   
path_cachez%dict[Path, Sequence[nodes.Collector]]r)   zSequence[nodes.Collector]r+   )r,   s   "r-   r.   rH    s(       : 
#	r/   c                <   W9   d	   W!,          # VP                  4       '       d8   V P                  VP                  4      pVP                  WR7      pVe   V3MRpM<VP	                  4       '       d%   V P                  V4      pVP                  WR7      pMRpWRV&   V# )zuCreate a Collector for the given path.

`path_cache` makes it so the same Collectors are returned for the same
path.
r   r8  r+   )r   r  r   r   r   r<  )r  rJ   r  r:  r>  r?  s   &&&   r-   _collect_pathSession._collect_path  s     ##;;==%%dkk2E*/*H*H +I +C 9<sfRD\\^^%%d+E,,t,ID D4r/   c               $    V ^8  d   QhRRRRRR/# )r'   r2   Sequence[str] | NonegenitemszLiteral[True]r)   zSequence[nodes.Item]r+   )r,   s   "r-   r.   rH    s$     # #(#:G#	#r/   c                	    R # r   r+   r  r2   r  s   &&&r-   r   Session.perform_collect  s      #r/   c               $    V ^8  d   QhRRRRRR/# r'   r2   r  r  rV   r)   z&Sequence[nodes.Item | nodes.Collector]r+   )r,   s   "r-   r.   rH    s$     5 5(5:>5	/5r/   c                	    R # r   r+   r  s   &&&r-   r   r    s     25r/   c               $    V ^8  d   QhRRRRRR/# r  r+   )r,   s   "r-   r.   rH    s)     P P(P;?P	/Pr/   c                   Vf   V P                   P                  pV P                  RW4       V P                  P                  ;P                  ^,          un        V P                   P
                  p. V n        . V n        / V n        . V n	        V P                  p . p. pV F  p\        V P                   P                  P                  VV P                   P                  P                  R7      pV P                  P                  V4       VP                  VP                   4       VP                  VP                   4       VP#                  VP                   P$                  4       K  	  \'        V4      V n        \'        V4      V n        \-        V 4      p	V P.                  P1                  V	R7       V P                  P                  ;P                  ^,          un        V P                  '       dX   . p
V P                   F<  w  r{V'       d   V
P                  RV RV: R24       K(  V
P                  RV 24       K>  	  \3        V
!  hV'       g   V	P4                  pMOV	P6                  '       d>   V	P4                   F-  pV P                  P#                  V P9                  V4      4       K/  	  V P                   P:                  P=                  4        VP?                  W P                   VR7       . V n        . V n        / V n        VPA                  V R	7       V'       d   \C        V4      V n"        V#   . T n        . T n        / T n        TPA                  T R	7       i ; i)
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   )	as_pypathr  znot found: z
(no match in any of )zfound no collectors for )r   r|   r   r   )#r|   r2   rN  rO  indentr   rT  rU  rV  r   resolve_collection_argumentr}  rM   r   pyargsr=   rJ   r   rr   rQ  rR  rS  r!   r:  pytest_collectreportr   resultpassedr  rX  check_pendingr  pytest_collection_finishr   r   )r  r2   r  r   r   initialpathsinitialpaths_with_parentsargcollection_argumentreperrors
collectorsnodes   &&&          r-   r   r    s     <;;##D

$d1

!#{{ !#
8<

.	8')L46%&AKK1155"kk0077'#
 ##**+>?##$7$<$<=)001D1I1IJ)001D1I1I1Q1QR  "+<!8D.78Q.RD+"4(CJJ++3+7JJOO""a'"~~~'+~~OC!)#.DZNRST (@&FG (6 !&))

::: #



))$--*=> !+ KK%%335..[[ /   DN"$D%'D"))$)7"%e*D  DN"$D%'D"))$)7s   F1L) L) *A>L) ))Mc               $    V ^8  d   QhRRRRRR/# )r'   r  r   handle_dupesrV   r)   ztuple[CollectReport, bool]r+   )r,   s   "r-   r.   rH  /  s(        
$	r/   c                	    WP                   9   d    V'       d   V P                   V,          pVR 3# \        V4      pW0P                   V&   VR3# )TF)rV  r!   )r  r  r  r  s   &&& r-   _collect_one_nodeSession._collect_one_node/  sN    
 )))l((.C9"4(C+.""4(:r/   c                   V ^8  d   QhRR/# )r'   r)   z&Iterator[nodes.Item | nodes.Collector]r+   )r,   s   "r-   r.   rH  <  s     w( w(? w(r/   c              #  		  "   / pV P                   P                  pV P                   EF  pV P                  R V4       V P                  P                  ;P
                  ^,          un        VP                  pVP                  pVP                  pVP                  4       '       d   V'       d   Q RWE3: 24       hV.pVf@   VP                   F.  pVP                  V4      '       g    MVP                  ^ V4       K0  	  MlVP                  R4      p	\        VP                  ^4       FA  w  rV
\        V	4      8  g   VP                   W) ,          8w  d    MVP                  ^ V4       KC  	  Rp. pV . VOVO3.pV'       Ed   VP#                  4       w  rV'       g	   Vx  RpK+  \%        V\&        P(                  4      '       g   KM  \%        V\*        4      '       d:   \%        V^ ,          \,        4      '       g   Q hVP/                  V^ ,          V4      pM\        V4      ^8H  ;'       d7    \%        V^ ,          \,        4      ;'       d    V^ ,          P1                  4       '       * pV P3                  VV4      w  ppV'       g/   VP4                  '       g   VP6                  P9                  VR7       VP4                  '       g   EKM  VP:                  pRp\=        V4       EFQ  p\%        V^ ,          \,        4      '       d   VP                  V^ ,          8H  p\>        P@                  R8X  d   V'       g   \B        P                  PE                  VP                  V^ ,          4      pT;'       dQ    \B        P                  PG                  VP                  4      \B        P                  PG                  V^ ,          4      8H  pMJVPH                  V^ ,          8H  ;'       g-    VPH                  P                  R4      ^ ,          V^ ,          8H  pV'       g   EK5  VPK                  VVR	,          34       RpEKT  	  V'       d   EK  VPK                  V4       EK  V'       g<   R
PM                  \O        V4      .VO54      pV PP                  PK                  VV34       V P                  P                  ;P
                  ^,          un        EK  	  R# 5i)zprocessing argumentzinvalid arg N.FTr  win32[:   NN::))r|   rX  rU  rN  rO  r  rJ   partsmodule_namer   rr   _is_in_confcutdirinsertsplitr   r   stempopr   r   	Collectorr   r   r  r   r  r  r:  r  r  reversedr   platformr   samefileislinkr   r=   joinre   rT  )r  r  r  r  argpathnamesr  pathsrJ   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   &                        r-   rH   Session.collect<  s     =?
[[&&#'#6#6JJ,.ABJJOO""a'")..G'--E-99K ~~ EL'1A0D"EEyIE "#OOD//55LLD) , %0$5$5c$:!(!<GA3011TYYBSTVBW5WLLD)  = +0'"$'''(QD $(,
%	 "#O26/ ")U__== i11%jmT::::(66z!}jQH
 J1, 4 4&z!}d;4 4&qM113$L
 &*%;%;I|%TNC$SZZZ "<<C<H::: "zzH ,1($X.D!*Q-66#'99
1#=<<728 )+(8(8JqM(RI (1 ( ( "tyy 9#%77>>*Q-#@!A % !IIA6 H H#yys3A6*Q-G !  xT:b>$:;3703 /6 0/'..y9.!YYG'=u'=>
%%z3F&GHJJOO""a'""_ $7sY   B)S	,CS	 B'S	(S	9S	S	-S	A/S	19S	+A.S	2S	&S	>S	A/S	c                    V ^8  d   QhRRRR/# )r'   r  znodes.Item | nodes.Collectorr)   zIterator[nodes.Item]r+   )r,   s   "r-   r.   rH    s     < <9 <>R <r/   c              #  	  "   V P                  R V4       \        V\        P                  4      '       d#   VP                  P                  VR7       Vx  R# \        V\        P                  4      '       g   Q hV P                  P                  R4      pT;'       d    \        V\        P                  4      '       * pV P                  W4      w  rEV'       d   V'       g   R# VP                  '       d-   VP                   F  pV P                  V4       Rj  xL
  K  	  V'       g   VP                  P                  VR7       R# R#  L05i)r  )r   rP   Nr  )rN  r   r   Itemr:  pytest_itemcollectedr  r|   r   Filer  r  r  r  r  )r  r  rP   r  r  r  subnodes   &&     r-   r  Session.genitems  s     

:t$dEJJ''JJ+++6JdEOO4444![[223CDN . O O:dEJJ3OPL!33DGNCzzz"zzG#}}W555  *

//s/;  6s+   BE
AE
 E
4#E
EE
(!E
)rW  rV  rU  rR  rS  rT  rM  rL  r   r   r   r   rN  )..)NT)T) r   r  r  r  r!  r   r   r,  r  rA  r   rc  propertyr   setterr   r   r  r   r  r  r  r;  r  r  r   r   r  rH   r  r  rB  rC  s   @r-   r   r     sZ   
 KF##A A4  
     ! !     ! ! 1 11 t4 4 tT T 4/ #	/0"> # # 5 5Pdw(r< <r/   r   c                    V ^8  d   QhRRRR/# )r'   r  re   r)   
str | Noner+   )r,   s   "r-   r.   r.     s      s z r/   c                T    \         P                  P                  V 4      pTe    TP                  e   TP                  R8X  d   R# TP                  '       d*   \        P                  P                  TP                  4      # TP                  #   \        \        \
        3 d     R# i ; i)z]Search sys.path for the given a dotted module name, and return its file
system path if found.N	namespace)r_   util	find_specAttributeErrorImportError
ValueErrororiginsubmodule_search_locationsr   rJ   dirname)r  specs   & r-   search_pypathr    s    ~~''4 |t{{*dkk[.H		(	(	(wwt{{++{{ K4 s   B B'&B'T)frozenc                  :    ] tR tRt$ RtR]R&   R]R&   R]R&   R	tR
# )CollectionArgumenti  zA resolved collection argument.r   rJ   zSequence[str]r  r  r  r+   N)r   r  r  r  r!  r,  r  r+   r/   r-   r  r    s    )
Jr/   r  r  Fc               (    V ^8  d   QhRRRRRRRR/# )	r'   invocation_pathr   r  re   r  rV   r)   r  r+   )r,   s   "r-   r.   r.     s2     A AA #A37AAr/   c               
   \        V4      P                  R4      w  r4pVP                  R4      vrgV'       d   VR
,           V V 2VR
&   RpV'       d   \        V4      p	V	e   TpT	pW,          p
\	        V
4      p
\        V
4      '       g(   V'       d   RMRp\        VP                  VR7      4      hV'       d>   V
P                  4       '       d(   V'       d   RMRp\        VP                  VR7      4      h\        V
VVR	7      # )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})rJ   r  r  )
re   	partitionr  r  r   r   r   r,   r   r  )r  r  r  rn   squacketreststrpathr  r  pyarg_strpathrJ  rz   s   &&$         r-   r  r    s   F s8--c2DDjj&OGRyk(D62b	K%g.$!K#G&F&!Fv  H5 	
 ,--  HN 	
 ,-- r/   )Ur!  
__future__r   ru   dataclassesr   rf   r_   importlib.utilr   pathlibr   r   typingr   r   r   r   r   r	   r
   r   r   r   rr  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#   r$   _pytest.fixturesr%   rj   rh   r   r   r   r   r   r   r   r   r  r	  r   r   r   r   	dataclassre   r$  	Directoryr   r  r   r  r  r  r+   r/   r-   <module>r      s   N "       	  
                ! ( # # . % , 4 ! ( ' & ' # ) & + % / /yx28v'
(#L.$ # -Y - dCi   0 %// 0  0 f r<eoo r< r<j$ d#  $A:?A Ar/   