
    	h                     @   d 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
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ZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl*m,Z, ddl*m-Z- ddl*m.Z. dd l*m/Z/ dd!l0m1Z1 dd"l0m2Z2 dd#l3m4Z4 dd$l3m5Z5 erdd%l6m7Z7 d&e%d'dfd(Z8d)e9d'e9fd*Z:d+ed,eed-geee;e f                  f         d'ee;e f         fd.Z<d+ed'ee;e f         fd/Z=d+ed0d-d'eee;e f                  fd1Z>dJd2Z?d0d-d'e@fd3ZAd)e	d'e@fd4ZBd5e	d+ed'ee@         fd6ZCd7eejD                 d+ed'dfd8ZE G d9 d:          ZF G d; d<eG          ZH G d= d>eI          ZJejK         G d? d@ee	e9f                               ZLe G dA d-ejM                              ZNdBe9d'e9fdCZOdDdEdFe	dGe9dHe@d'ee	ee9         f         fdIZPdS )KzHCore implementation of the testing process: init, session, runtest loop.    N)Path)Callable)Dict)	FrozenSet)Iterator)List)Optional)Sequence)Set)Tuple)Type)TYPE_CHECKING)Union)nodes)final)overload)Config)directory_arg)ExitCode)hookimpl)PytestPluginManager)
UsageError)Parser)FixtureManager)exitabsolutepath)bestrelpath
fnmatch_ex)safe_exists)visit)CollectReport)
TestReport)collect_one_node)
SetupState)Literalparserreturnc           
         |                      dddg d           |                      dddg            |                     dd	          }|                    d
ddddd           |                     d          }|                    dddd           |                      ddd           |                    dddt          ddd            |                    d!d"d#           |                    d$d"d%           |                    d&d"d'           |                    d(d)d*t
          d+d,-           |                    d.d"d/d0d12           |                    d3dd4d56           |                     d7d8          }|                    d9d:d;d"d<           |                    d=d"d>           |                    d?dd@dAB           |                    dCdd@dDB           |                    dEddFdGB           |                    dHdId dJt          j        t          dHK          dLM           |                    dNd"dOd/dPQ           |                    dRdSd"dTd/dUQ           |                    dVd"dWd/dXQ           |                    dYdZg d[d\d]^           |                     d_d`          }|                    dadbd t          dJdcd           d S )eN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)r:   r=   filterwarningslinelistz_Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings.)r3   r=   z	--maxfailnumstorer   z'Exit after first num failures or errors)metavarr:   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.)rC   r3   r;   r=   z--continue-on-collection-errorsFcontinue_on_collection_errorsz4Force test execution even if collection errors occur)r:   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'.)r:   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))r:   rC   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)r;   r4   rC   r3   r=   z--noconftest
noconftestz Don't load any conftest.py files)r:   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)rS   r>   	importlib
importmodez\Prepend/append to sys.path when importing test modules and conftest files. Default: prepend.)r4   choicesr;   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   rC   r=   )
addinigetgroup
_addoption	addoptionintstr	functoolspartialr   validate_basetemp)r(   groups     Y/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/_pytest/main.pypytest_addoptionrd   3   sp   
MM3

 

 

	      MM	     OOI'FGGE	;     OO-..E	OOK	     MM/     
6     
*     
     
5    
 
(     
),C     
	     OOI|44E	OO5     
OO@    
 
OO<	     
OOD	     
OOS	     
OO}nEEE@     
OO/     
OO#     
OO!$A     
OO222#     OOM+UVVE	OOA  
 
 
 
 
    rK   c                    d}| st          j        |          dt          dt          dt          fd} |t          j                    t          |                                                     rt          j        |           |t          j                                                    t          |                                                     rt          j        |          | S )NzWbasetemp must not be empty, the current working directory or any parent directory of itbasequeryr)   c                 $    | |k    rdS || j         v S )z,Return whether query is an ancestor of base.T)parents)rg   rh   s     rc   is_ancestorz&validate_basetemp.<locals>.is_ancestor   s    5==4$$re   )argparseArgumentTypeErrorr   boolcwdabsoluteresolve)rK   msgrk   s      rc   ra   ra      s    
cC  .(---%$ %t % % % % % {48::tDzz224455 .(--- {48::%%''d););)=)=>> .(---Kre   configdoitSessionc           	      $   t                               |           }t          j        |_        d}	 	 |                                  d}| j                            |           d} || |          pd|_        n# t          $ r t          j	        |_         t          $ r t          j        |_        Y nt          t          j        f$ r t          j        j                                        }t          j        }t)          |j        t          j                  rR|j        j        |j        j        }|dk     r4t.          j                            |j         d|j        j         d           | j                            |           ||_        Y nt:          $ r t          j        |_        t          j        j                                        }	 |                     || j                    t)          |j        tB                    rt.          j                            d	           nf# t          j        $ rT}|j        |j        |_        t.          j                            tE          |          j#         d| d           Y d}~nd}~ww xY wY nw xY wd}tI          j%        |j&                   |dk    r	 | j        '                    ||j        
           nf# t          j        $ rT}|j        |j        |_        t.          j                            tE          |          j#         d| d           Y d}~nd}~ww xY w| (                                 n# d}tI          j%        |j&                   |dk    r	 | j        '                    ||j        
           nf# t          j        $ rT}|j        |j        |_        t.          j                            tE          |          j#         d| d           Y d}~nd}~ww xY w| (                                 w xY w|j        S )zSkeleton command line program.r   r9   session   Nz: 
)excinfoz(mainloop: caught unexpected SystemExit!
)rx   
exitstatus))ru   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typenamerr   pytest_keyboard_interruptBaseExceptionINTERNAL_ERRORnotify_exceptionoption
SystemExitr3   __name__oschdir	startpathpytest_sessionfinish_ensure_unconfigure)rs   rt   rx   	initstater{   r|   excs          rc   wrap_sessionr     sc    !!&))G!GI0% 	R  """IK++G+<<<I!%fg!6!6!;!G 	 	 	!)!5G 	7 	7 	7!)!6G!4>2 		, 		, 		,m1>>@@G/7/CJ'-88 S=+7!(!9Jq==J$$(8%Q%QGM<M%Q%Q%QRRRK11'1BBB!+G 	R 	R 	R!)!8Gm1>>@@GR''??? gmZ88 RJ$$%PQQQ > C C C>-),G&
  DII$6!A!A#!A!A!ABBBBBBBBC	R 
"###>>C00#0B 1     > C C C>-),G&
  DII$6!A!A#!A!A!ABBBBBBBBC 	""$$$$ 
"###>>C00#0B 1     > C C C>-),G&
  DII$6!A!A#!A!A!ABBBBBBBBC 	""$$$$s   AA8 6M 86J.M 1CJM 
=JH#:JJ ,A
I;6J;J  JM JM +!K L0A
L++L0"P+!NPO0A
O+&P+O00Pc                 ,    t          | t                    S N)r   _mainrs   s    rc   pytest_cmdline_mainr   =  s    &&&re   rx   c                     | j                             |           | j                             |           |j        rt          j        S |j        dk    rt          j        S dS )z[Default command line protocol for initialization, session,
    running tests and reporting.rw   r   N)r   pytest_collectionpytest_runtestlooptestsfailedr   r   testscollectedNO_TESTS_COLLECTED)rs   rx   s     rc   r   r   A  sf     K!!'!222
K""7"333 +$$		1	$	$**4re   c                 .    |                                   d S r   )perform_collectrw   s    rc   r   r   N  s    re   c                    | j         r=| j        j        j        s,|                     d| j         | j         dk    rdndfz            | j        j        j        rdS t          | j                  D ]\  }}|dz   t          | j                  k     r| j        |dz            nd }|j        j	        
                    ||           | j        r|                     | j                  | j        r|                     | j                  dS )Nz%d error%s during collectionr9   s T)itemnextitem)r   rs   r   rG   Interruptedcollectonly	enumerateitemslenr   pytest_runtest_protocol
shouldfailr   
shouldstop)rx   ir   r   s       rc   r   r   R  s$    
7>#8#V 
!!*"7+>!+C+CCCLM
 
 	

 ~( tW]++ : :4+,q53w}3E3E+E+E7=Q''400dX0NNN 	5..!3444 	:%%g&8999	:4re   c                     |                      t          j                            d          rdnd          }	 |                                sdS n# t
          $ r Y dS w xY wdt          fd|                                D                       S )zAttempt to detect if ``path`` is the root of a Virtual Environment by
    checking for the existence of the appropriate activate script.winScriptsbinF)activatezactivate.cshzactivate.fishActivatezActivate.batzActivate.ps1c              3   *   K   | ]}|j         v V  d S r   name).0fname	activatess     rc   	<genexpr>z_in_venv.<locals>.<genexpr>w  s*      EE5uzY&EEEEEEre   )joinpathr   platform
startswithis_dirOSErroranyiterdir)rK   bindirr   s     @rc   _in_venvr   f  s     ]](?(?(F(FQ99ERRF}} 	5	   uuI EEEEFNN4D4DEEEEEEs   A 
AAcollection_pathc                     |                     d j        |j                  }|pg }|                    d          }|r|                    d |D                         |v rdS |                     d j        |j                  }|pg }|                    d          }|r|                    d |D                        t           fd	|D                       rdS |                    d
          }|st                     rdS                                  r2|                    d          }t           fd|D                       rdS d S )Ncollect_ignore)rK   rootpathignorec              3   4   K   | ]}t          |          V  d S r   r   r   xs     rc   r   z(pytest_ignore_collect.<locals>.<genexpr>  s(      @@LOO@@@@@@re   Tcollect_ignore_globignore_globc              3   4   K   | ]}t          |          V  d S r   r   r   s     rc   r   z(pytest_ignore_collect.<locals>.<genexpr>  s(      DDLOODDDDDDre   c              3   v   K   | ]3}t          j         t                    t          |                    V  4d S r   )fnmatchr^   )r   globr   s     rc   r   z(pytest_ignore_collect.<locals>.<genexpr>  s=      
U
U7?3//T;;
U
U
U
U
U
Ure   rR   r+   c              3   8   K   | ]}t          |          V  d S r   r   )r   patr   s     rc   r   z(pytest_ignore_collect.<locals>.<genexpr>  s-      MMCz#//MMMMMMre   )	_getconftest_pathlistparentr   	getoptionextendr   r   r   getini)r   rs   ignore_paths
excludeoptignore_globsexcludegloboptallow_in_venvnorecursepatternss   `       rc   pytest_ignore_collectr   z  s   //5 0  L  %2L!!(++J A@@Z@@@@@@,&&t//O$:V_ 0  L  %2L%%m44N EDD^DDDDDD

U
U
U
U
U
U
UUU t$$%<==M Xo66 t "MM/::MMMM;LMMMMM 	44re   r   c                 >   t          |                    d          pg           }|sd S g }g }| D ]G}|j                            |          r|                    |           2|                    |           H|r$|j                            |           || d d <   d S d S )Ndeselect)r   )tupler   nodeidr   r>   r   pytest_deselected)r   rs   deselect_prefixes	remaining
deselectedcolitems         rc   pytest_collection_modifyitemsr     s    f..z::@bAA IJ & &>$$%677 	&g&&&&W%%%% %%J%777aaa re   c                   *    e Zd ZdeddfdZdefdZdS )FSHookProxypmr)   Nc                 "    || _         || _        d S r   )r   remove_mods)selfr   r   s      rc   __init__zFSHookProxy.__init__  s    &re   r   c                 \    | j                             || j                  }|| j        |<   |S )N)remove_plugins)r   subset_hook_callerr   __dict__)r   r   r   s      rc   __getattr__zFSHookProxy.__getattr__  s0    G&&tD<L&MMdre   )r   
__module____qualname__r   r   r^   r   re   rc   r   r     sR        '. ' ' ' ' '      re   r   c                       e Zd ZdZdZdS )r   z*Signals that the test run was interrupted.builtinsNr   r  r  __doc__r  re   rc   r   r     s        44JJJre   r   c                       e Zd ZdZdS )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eed<   dedefdZdS )_bestrelpath_cache)rK   rK   r)   c                 :    t          | j        |          }|| |<   |S r   )r   rK   )r   rK   rs      rc   __missing__z_bestrelpath_cache.__missing__  s!    	4((T
re   N)r   r  r  	__slots__r   __annotations__r^   r  r  re   rc   r  r    sF         I
JJJ       re   r  c                   B    e Zd ZU dZeZeZeed<   eed<   e	e
ef         ed<   deddf fdZededd fd	            Zdefd
Zedefd            ZdedefdZ ed          d'd            Z ed          de	eef         ddfd            ZeZde	edf         defdZd(dZdddefdZ	 d)dedede e!j"                 fdZ#e$	 d*de%e e                  dd de e!j&                 fd!            Z'e$	 d*de%e e                  dede e	e!j&        e!j"        f                  fd"            Z'	 d+de%e e                  dede e	e!j&        e!j"        f                  fd#Z'de(e	e!j&        e!j"        f                  fd$Z)d%e	e!j&        e!j"        f         de(e!j&                 fd&Z* xZ+S ),ru   zoThe root of the collection tree.

    ``Session`` collects the initial paths given as arguments to pytest.
    _setupstate_fixturemanagerr|   rs   r)   Nc                 z   t                                          |j        d d || d           d| _        d| _        d| _        d| _        |j        j        	                    d          | _        t                      | _        t          |j                  | _        | j        j                            | d           d S )Nr   )rK   fspathr   rs   rx   r   r   FrJ   rx   r   )superr   r   r   r   r   r   tracerootget	frozenset_initialpathsr  _bestrelpathcachers   pluginmanagerregister)r   rs   	__class__s     rc   r   zSession.__init__  s     	 	
 	
 	
 ,1,1\&**<88
.7kk2DV_2U2U!**4i*@@@@@re   c                 2    |                      |          }|S )Nr   )_create)clsrs   rx   s      rc   r}   zSession.from_config  s    ;;f;55re   c                 f    d| j         j        | j        t          | dd          | j        | j        fz  S )Nz6<%s %s exitstatus=%r testsfailed=%d testscollected=%d>r|   z<UNSET>)r"  r   r   getattrr   r   r   s    rc   __repr__zSession.__repr__  s=    GN#ID,	22K
 
 	
re   c                 $    | j         j        j        S )zQThe path from which pytest was invoked.

        .. versionadded:: 7.0.0
        )rs   invocation_paramsrN   r(  s    rc   r   zSession.startpath  s     {,00re   	node_pathc                     | j         |         S r   )r  )r   r,  s     rc   _node_location_to_relpathz!Session._node_location_to_relpath	  s    %i00re   T)tryfirstc                     | j         r|                     | j                   | j        r|                     | j                  d S r   )r   r   r   r   r(  s    rc   pytest_collectstartzSession.pytest_collectstart  sJ    ? 	/++do...? 	4""4?333	4 	4re   reportc                     |j         rXt          |d          sJ| xj        dz  c_        | j                            d          }|r | j        |k    rd| j        z  | _        d S d S d S d S d S )Nwasxfailr9   r8   zstopping after %d failures)failedhasattrr   rs   getvaluer   )r   r2  r8   s      rc   pytest_runtest_logreportz Session.pytest_runtest_logreport  s     = 	T!<!< 	T!k**955G T4+w66">$BR"S		T 	T 	T 	TT T66re   rK   os.PathLike[str]c                 `    t          |t                    r|nt          |          }|| j        v S r   )r   r   r  )r   rK   path_s      rc   
isinitpathzSession.isinitpath   s.    "4..>DJJ***re   r  c                 n   t          |t                    r|nt          |          }| j        j        }|                    || j                            d          | j        j                  }|j                            |          }|r ddl	m
}  |t          ||                    }n| j        j        }|S )NrU   )r   r9   )PathAwareHookProxy)r   r   rs   r   _getconftestmodulesr   r   _conftest_plugins
differenceconfig.compatr>  r   r   )r   r  rK   r   my_conftestmodulesr   r>  proxys           rc   gethookproxyzSession.gethookproxy%  s    #FD11CvvtF||[&  33K!!,//[) 4 
 

 *556HII 	%999999&&{2{'C'CDDEE K$Ere   direntryzos.DirEntry[str]c                     |j         dk    rdS t          |j                  }|                     |j                  }|                    || j                  rdS dS )N__pycache__Fr   rs   T)r   r   rK   rE  r   r   rs   )r   rF  r  ihooks       rc   _recursezSession._recurse;  s_    =M))5hm$$!!&-00&&vdk&RR 	5tre   handle_dupesc                 (   |                                 sVJ d                    ||                                |                                |                                                      |                     |          }|                     |          s|                    || j                  rdS |rH| j        	                    d          }|s,| j        j
        j        }||v rdS |                    |           |                    ||           S )Nz9{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})rI  r  rQ   )	file_pathr   )is_fileformatr   exists
is_symlinkrE  r<  r   rs   r   r   _duplicatepathsaddpytest_collect_file)r   r  rL  rJ  rQ   duplicate_pathss         rc   _collectfilezSession._collectfileD  s    NN	
 	
FMMFMMOOV]]__f6G6G6I6I
 
	
 	
 !!&))v&& 	**6$+*VV r 	0![223CDDN! 0"&+";"K_,,2#''///((6$(GGGre   .r,   genitemszLiteral[True]c                     d S r   r  r   r,   rX  s      rc   r   zSession.perform_collect\  	     	re   c                     d S r   r  rZ  s      rc   r   zSession.perform_collectb  r[  re   c           
         || j         j        }|                     d| |           | j        j        xj        dz  c_        g | _        g | _        g | _        | j         j        }| j        }	 g }|D ]f}t          | j         j
        j        || j         j        j                  \  }}| j                            ||f           |                    |           gt          |          | _        t#          |           }	| j                            |	           | j        j        xj        dz  c_        | j        rRg }
| j        D ]?\  }}|r |
                    d| d|d|d	           '|
                    d
|            @t)          |
 |s|	j        }n>|	j        r7|	j        D ]/}| j                            |                     |                     0| j         j                                         |                    | | j         |           |                    |            n# |                    |            w xY wt;          |          | _        |S )a  Perform the collection phase for this session.

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

        This function normally recursively expands any collectors collected
        from the session to their items, and only items are returned. For
        testing purposes, this may be suppressed by passing ``genitems=False``,
        in which case the return value contains these collectors unexpanded,
        and ``session.items`` is empty.
        Nr   r9   	as_pypathr2  znot found: z

(no name z in any of )zfound no collectors for )rx   rs   r   rw   )rs   r,   r  r  indent	_notfound_initial_partsr   r   resolve_collection_argumentr+  rN   r   pyargsr>   r  r  r%   rJ  pytest_collectreportr   resultpassedr   rX  r   check_pendingr   pytest_collection_finishr   r   )r   r,   rX  r   r   initialpathsargr  partsreperrors
collectorsnodes                rc   r   zSession.perform_collecth  s     <;#D

$dD111
!#FH<>')
{>Bj%	8')L , , ;K15"k07! ! !
 #**FE?;;;##F++++!*<!8!8D"4((CJ++3+777JO""a'""~ 
*'+~ H HOC! H[#[[#[[J[[[    &F&F&FGGGG &)) ?
: ? #
 ? ?
))$--*=*=>>>>K%33555..T[ /    ))$)7777D))$)7777!%jjs   )FH H7c              #   B
  K   ddl m} i }i }i }i }| j        D ]\  }}|                     d||f           | j        j        xj        dz  c_        | j                            dd          s| j        j        }|g|j	        R D ]}	|
                    |          s n|	                                rn|	dz  }
|
                                rU|
|vrQ|                     |
d          }|r8t          |d         |          r|d         ||	<   |d         g||d         j        <   |                                r|rJ d	||f            t!                      }t#          || j                  D ]}|                                st'          |j                  }|j        }||vr_|                    |           |dz  }
|
                                r1|                     |
          D ]}|V  t          ||          r|||<   ||v r|                     |          D ]0}t/          |          |j        f}||v r||         V  '|||<   |V  1n|                                sJ ||v r	||         }n9|                    |j        |           }|                    |d          }|r|||<   g }||fg}|r|                     d
||           | j        j        xj        dz  c_        |                                \  }}|D ]}|s|                    |           t          |t6          j                  s6t/          |          |j        f}||v r	||         }nt=          |          }|||<   |j        r~g }|j         D ]R}|j!        |d         k    s*|j!        "                    d          d         |d         k    r|                    |           S|r|                    ||dd          f           |j#        $                    |           |                     dtK          |          d           | j        j        xj        dz  c_        ||sDd&                    tO          |          g|R           }| j(                            ||f           x|j!        dk    r`t          |d         |          rJ	 tS          tU          |d         +                                                    V  n# tX          $ r Y nw xY w|E d {V  | j        j        xj        dz  c_        d S )Nr   )Packagezprocessing argumentr9   doctestmodulesFz__init__.py)rL  zinvalid arg 
matchnodes[r`  zmatchnodes finished -> r   ::)-_pytest.pythonrt  rd  r  r  rb  rs   r   r   rj   _is_in_confcutdirr   rO  rW  r   rK   setr"   rK  r   r   rT  rQ  r3   r  popr>   r   	Collectorr   r%   ri  rh  r   splitrJ  rg  r   joinr^   rc  nextiterrI   StopIteration)r   rt  node_cache1node_cache2matchnodes_cache	pkg_rootsargpathnamesr   r   pkginitcol	seen_dirsrF  rK   dirpathr   key2collect_rootmatchingworkrv  
matchnamesrr  keyro  submatchnodesr  
report_args                                rc   rI   zSession.collect  sA     ****** >@QS TV *,	"1 B	( B	(NGUJJ,w.>???JO""a'""
 ;(()95AA D[.&999 D DF//88 }} D"(="8"??,, D1K1K"&"3"3G%"3"P"PC" D#-c!fg#>#> !?8;AIf$5<?F8CFK 8 ~~ h$ EE"E'51A"E"EEEy'*uu	 %gt} = = $ $H#++-- ! ..D"kGi//!g...")M"9">>++ ;%)%6%6w%?%? ; ;&'#-a#9#9 !;9:Ig$6)++ !..t44 $ $ $Q0;.."-d"3333301K-"#GGGG$)$8 (((((k))%g.CC#,==#F#FL&33G%3PPC 3/2G, 5\N   $0JJ|S%888JO**a/**-1XXZZ*J
 * H H) %$OOD111$)$@@ %$#Dzz4;7"222"23"7CC"24"8"8C47,S1: H,.M%(Z < < %&Fjm$;$;'(v||C'8'8';z!}'L'L$1$8$8$;$;$;, M $]JqrrN,K L L L
 !J;;3;GGGGJJ8#h--QQQJO**a/**I  $0L   !%CLL+A5+A+A!B!BJN)):s*;<<< <=00ZW5U5U0"4(;(;(=(=#>#>??????(    	
 ########JO""a'"""EB	( B	(s   26S))
S65S6rr  c              #     K   |                      d|           t          |t          j                  r!|j                            |           |V  d S t          |t          j                  sJ t          |          }|j        r%|j	        D ]}| 
                    |          E d {V  |j                            |           d S )NrX  )r   r`  )r  r   r   ItemrJ  pytest_itemcollectedr}  r%   ri  rh  rX  rg  )r   rr  ro  subnodes       rc   rX  zSession.genitemsA  s       	

:t$$$dEJ'' 		8J+++666JJJJJdEO44444"4((Cz 6"z 6 6G#}}W5555555555J++3+77777re   )r)   N)r  r9  )T)..)NT),r   r  r  r  r   r   r&   r  r   r   r]   r   r   r   classmethodr}   r^   r)  propertyr   r   r.  r   r1  r$   r#   r8  rg  rn   r<  rE  rK  r
   r   r}  rW  r   r	   r  r   r   rI   rX  __classcell__)r"  s   @rc   ru   ru     s         
 KF####c8m$$$$Av A$ A A A A A A(  I    [
# 
 
 
 
 14 1 1 1 X114 1C 1 1 1 1 Xt4 4 4 4 XtTJ56T	T T T T 4+uS*<%<= +$ + + + +
   ,!3      26H HH*.H	%/	"H H H H0 OR Xc]+=L	%*	   X
 DG Xc]+=A	%
EO34	5   X FJE EXc]+E>BE	%
EO34	5E E E ENP(%
EO(C"DE P( P( P( P(d8%*eo568	%*	8 8 8 8 8 8 8 8re   module_namec                    	 t           j                            |           }n# t          t          t
          f$ r | cY S w xY w||j        |j        dk    r| S |j        r$t          j	        
                    |j                  S |j        S )zTSearch sys.path for the given a dotted module name, and return its file system path.N	namespace)rT   util	find_specAttributeErrorImportError
ValueErrororiginsubmodule_search_locationsr   rK   dirname)r  specs     rc   search_pypathr  Q  s    ~''44 K4   |t{*dk[.H.H		( wt{+++{s   " >>Fr^  invocation_pathrm  r_  c                   t          |                              d          \  }}}|                    d          ^}}|r|d          | | |d<   |rt          |          }| |z  }t	          |          }t          |          s)|rdnd}	t          |	                    |                    |r=|                                r)|rdnd}	t          |	                    |                    ||f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 tuple:

        (Path("/full/path/to/pkg/tests/test_foo.py"), ["TestClass", "test_foo"])

    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.

    If the path doesn't exist, raise UsageError.
    If the path is a directory and selection parts are present, raise UsageError.
    rw  rx  z9module or package not found: {arg} (missing __init__.py?)z"file or directory not found: {arg})rm  z9package argument cannot contain :: selection parts: {arg}z;directory argument cannot contain :: selection parts: {arg})	r^   	partitionr~  r  r   r!   r   rP  r   )
r  rm  r_  rg   squacketreststrpathrn  r  rr   s
             rc   re  re  b  s(   2 s88--c22D(Djj&&OGe 3Ry2(2D22b	 )((w&F&!!Fv . 6GG5 	
 ,,--- . . OGGN 	
 ,,---5=re   )rx   ru   r)   N)Qr  rl   dataclassesr   r_   rT   r   r   pathlibr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   _pytest._coder   r   _pytest.compatr   r   _pytest.configr   r   r   r   r   r   _pytest.config.argparsingr   _pytest.fixturesr   _pytest.outcomesr   _pytest.pathlibr   r   r    r!   r"   _pytest.reportsr#   r$   _pytest.runnerr%   r&   typing_extensionsr'   rd   r^   ra   r]   r   r   r   r   rn   r   r   r   r  r   r   r   r   r   r   	dataclassr  FSCollectorru   r  re  r  re   rc   <module>r     s   N N               				 



                                                                                                           # # # # # # ! ! ! ! ! ! ( ( ( ( ( ( # # # # # # # # # # # # . . . . . . % % % % % % , , , , , , + + + + + + ! ! ! ! ! ! ( ( ( ( ( ( ' ' ' ' ' ' & & & & & & ' ' ' ' ' ' ! ! ! ! ! ! ) ) ) ) ) ) & & & & & & + + + + + + % % % % % %  *))))))sV s s s s slC C    288"FI#6sH}AU8V#VW8
3=8 8 8 8v' '5h+? ' ' ' '
& 
9 
%X:N1O 
 
 
 
   	 d    (F4 FD F F F F( 4    HTN        Fej)9 6 d    $           #   - - - - -Y - - -     dCi    }8 }8 }8 }8 }8e }8 }8 }8@s s    $ ;@/ / // #/37/
4c?/ / / / / /re   