o
    ˷es                     @   s@  U 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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ZddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl1m3Z3 ddl4m5Z5 dd l6m7Z7 erddl8Z8d!Z9d"Z:d#Z;d$Z<d%Z=e9e:e;e<e=fZ>da?da@eed&  eAd'< d(e*d)dfd*d+ZBdxd,d-ZCd.ed/e.d)eed0  fd1d2ZDeEejFGd3d d4k rAeDZHd/e.d)eed0  fd5d2ZDe3ZId6d7 Z3d8ed)eJfd9d:ZKd;e(d8ed/e.d)eJfd<d=ZLd8ed)eJfd>d?ZMG d@dA dAe"ZNG dBdC dCeOZPd)edD fdEdFZQ				GdydHed& dIeeJ dJeEdKeJd)dDf
dLdMZRG dNdO dOejSZTd)eeUeEf fdPdQZVdRdS ZWdTdU ZXG dVdW dWejYZZdzdZd[Z[d\e\d)eJfd]d^Z]ed)ed_ fd`daZ^G dbdc dcejYZ_ddeTd)e,fdedfZ`d)ed& fdgdhZad{didjZbd)eEfdkdlZcd)eEfdmdnZdd)eEfdodpZedqeUd)eEfdrdsZfejgdtdud)eeUef fdvdwZhdS )|z6Discover and run ipdoctests in modules and test files.    N)contextmanager)Path)Any)Callable)Dict)	Generator)Iterable)List)Optional)Pattern)Sequence)Tuple)Type)TYPE_CHECKING)Union)outcomes)ExceptionInfo)ReprFileLocation)TerminalRepr)TerminalWritersafe_getattr)Config)Parser)FixtureRequest)	Collector)OutcomeException
fnmatch_ex)import_path)approx)PytestWarningnonecdiffndiffudiffonly_first_failureIPDoctestOutputCheckerCHECKER_CLASSparserreturnc                 C   s   | j ddddgd | j dddd	 | d
}|jdddddd |jdtjddtdd |jddg dddd |jdddddd |jdddd d!d d S )"Nipdoctest_optionflagszoption flags for ipdoctestsargsELLIPSIS)typedefaultipdoctest_encodingz!encoding used for ipdoctest fileszutf-8)r/   collectz--ipdoctest-modules
store_trueFz!run ipdoctests in all .py modulesipdoctestmodules)actionr/   helpdestz--ipdoctest-reportr%   z;choose another output format for diffs on ipdoctest failureipdoctestreport)r.   r/   r5   choicesr6   z--ipdoctest-globappendpatz4ipdoctests file matching pattern, default: test*.txtipdoctestglob)r4   r/   metavarr5   r6   z --ipdoctest-ignore-import-errorszignore ipdoctest ImportErrorsipdoctest_ignore_import_errorsz--ipdoctest-continue-on-failurez>for a given ipdoctest, continue to run after the first failureipdoctest_continue_on_failure)addinigetgroup	addoptionstrlowerDOCTEST_REPORT_CHOICES)r)   group rF   ^/var/www/ideatree/venv/lib/python3.10/site-packages/IPython/testing/plugin/pytest_ipdoctest.pypytest_addoptionH   s^   

rH   c                   C   s   d a d S N)RUNNER_CLASSrF   rF   rF   rG   pytest_unconfigurez   s   rK   	file_pathparent)IPDoctestModuleIPDoctestTextfilec                 C   sd   |j }| jdkr!|jjrtt| t| fstj|| d}|S d S t	|| |r0t
j|| d}|S d S )Nz.pypath)configsuffixoptionr3   any_is_setup_py_is_main_pyrN   from_parent_is_ipdoctestrO   )rL   rM   rR   modtxtrF   rF   rG   pytest_collect_file   s   

r\   .   c                 C   s   t t| |S rI   )_collect_filer   )rQ   rM   rF   rF   rG   r\      s   c                 C   s   dd l }t|j| S )Nr   )py.path_import_pathrQ   local)rQ   rootpyrF   rF   rG   r      s   r   rQ   c                 C   s&   | j dkrdS |  }d|v pd|v S )Nzsetup.pyFs
   setuptoolss	   distutils)name
read_bytes)rQ   contentsrF   rF   rG   rV      s   
rV   rR   c                    s@    j dv r|j rdS | dpdg}t fdd|D S )N)z.txtz.rstTr;   z	test*.txtc                 3   s    | ]}t | V  qd S rI   r   ).0globrP   rF   rG   	<genexpr>   s    z _is_ipdoctest.<locals>.<genexpr>)rS   session
isinitpath	getoptionrU   )rR   rQ   rM   globsrF   rP   rG   rY      s   rY   c                 C   s
   | j dkS )Nz__main__.py)re   rP   rF   rF   rG   rW      s   
rW   c                   @   s@   e Zd Zdeeeee f  ddfddZdeddfddZ	dS )	ReprFailDoctestreprlocation_linesr*   Nc                 C   s
   || _ d S rI   )rp   )selfrp   rF   rF   rG   __init__   s   
zReprFailDoctest.__init__twc                 C   s2   | j D ]\}}|D ]}|| q	|| qd S rI   )rp   line
toterminal)rq   rs   reprlocationlinesrt   rF   rF   rG   ru      s
   zReprFailDoctest.toterminal)
__name__
__module____qualname__r   r   r   rB   rr   r   ru   rF   rF   rF   rG   ro      s    
ro   c                       s*   e Zd Zded ddf fddZ  ZS )MultipleDoctestFailuresfailureszdoctest.DocTestFailurer*   Nc                    s   t    || _d S rI   )superrr   r|   )rq   r|   	__class__rF   rG   rr      s   

z MultipleDoctestFailures.__init__)rx   ry   rz   r   rr   __classcell__rF   rF   r~   rG   r{      s    "r{   IPDocTestRunnerc                     s,   dd l  ddlm}  G  fddd| }|S )Nr      )r   c                       s   e Zd ZdZ				dded dee ded	ed
df
 fddZddddded
dffddZ	ddddde
ee eejf d
dffddZ  ZS )z/_init_runner_class.<locals>.PytestDoctestRunnerzRunner to collect failures.

        Note that the out variable in this case is a list instead of a
        stdout-like object.
        Nr   Tcheckerr'   verboseoptionflagscontinue_on_failurer*   c                    s   t  j|||d || _d S )N)r   r   r   )r}   rr   r   )rq   r   r   r   r   r~   rF   rG   rr      s   
z8_init_runner_class.<locals>.PytestDoctestRunner.__init__testdoctest.DocTestexamplezdoctest.Examplegotc                    s&     |||}| jr|| d S |rI   )DocTestFailurer   r9   )rq   outr   r   r   failuredoctestrF   rG   report_failure   s   z>_init_runner_class.<locals>.PytestDoctestRunner.report_failureexc_infoc                    sV   t |d tr|d t |d tjrtd  |||}| jr)|| d S |)Nr   zQuitting debugger)	
isinstancer   bdbBdbQuitr   exitUnexpectedExceptionr   r9   )rq   r   r   r   r   r   r   rF   rG   report_unexpected_exception   s   
zK_init_runner_class.<locals>.PytestDoctestRunner.report_unexpected_exceptionNNr   T)rx   ry   rz   __doc__r
   boolintrr   rB   r   r   r   BaseExceptiontypesTracebackTyper   r   rF   r   r~   rG   PytestDoctestRunner   sF    
r   )r   	ipdoctestr   )r   r   rF   r   rG   _init_runner_class   s   /r   Tr   r   r   r   c                 C   s   t d u rt a t | |||dS )Nr   r   r   r   )rJ   r   r   rF   rF   rG   _get_runner   s   r   c                       s  e Zd Z		d!deddded ded d	df
 fd
dZedddeddddf fddZd"ddZd"ddZ	d"ddZ
d"ddZdee d	eeef f fddZd	eedef ee ef fddZeejdd dk r}ed	efdd Z  ZS   ZS )#IPDoctestItemNre   rM   z)Union[IPDoctestTextfile, IPDoctestModule]runnerr   dtestr   r*   c                    s*   t  || || _|| _d | _d | _d S rI   )r}   rr   r   r   objfixture_request)rq   re   rM   r   r   r~   rF   rG   rr     s
   
zIPDoctestItem.__init__c                   s   t  j||||dS )zThe public named constructor.)re   rM   r   r   )r}   rX   )clsrM   re   r   r   r~   rF   rG   rX     s   zIPDoctestItem.from_parentc                 C   s   | j d ur]t| | _t| jjd}| jd D ]\}}|||< q| j j| ddlm	} t
| j jd |r_i | _| jtj tj| j j tjdd  ttjd< tj| j _d S d S d S )N)
getfixtureipdoctest_namespacer   	IPExampler   ___builtins__)r   _setup_fixturesr   dictgetfixturevalueitemsrn   updater   r   r   examples_user_ns_orig_ipuser_nspopbuiltins)rq   rn   re   valuer   rF   rF   rG   setup,  s(   




zIPDoctestItem.setupc                 C   sR   ddl m} t| jjd |r!i | j_tj  tj	| j
 | `
| jj  d S )Nr   r   r   )r   r   r   r   r   rn   r   r   clearr   r   )rq   r   rF   rF   rG   teardownE  s   
zIPDoctestItem.teardownc              
   C   s   | j d usJ | jd usJ t| j  |   g }ttd}ttdd }t }t	| j
j z$| jj| j |dd W t	| |rIttd| n%ttdrSttd nt	| |rbttd| w ttdrmttd w w |rtt|d S )Nr   F)r   clear_globs)r   r   _check_all_skipped$_disable_output_capturing_for_darwinhasattrr   getattrosgetcwdchdirfspathdirnamerunsetattrdelattrr{   )rq   r|   had_underscore_valueunderscore_original_valuecurdirrF   rF   rG   runtestQ  s4   






zIPDoctestItem.runtestc                 C   sZ   t  dkrdS | jjd}|r+|jdd | \}}tj	| tj
	| dS dS )zNDisable output capturing. Otherwise, stdout is lost to ipdoctest (pytest#985).DarwinNcapturemanagerT)in_)platformsystemrR   pluginmanager	getpluginsuspend_global_captureread_global_capturesysstdoutwritestderr)rq   capmanr   errrF   rF   rG   r   o  s   z2IPDoctestItem._disable_output_capturing_for_darwinexcinfoc                    s  dd l }d }t|j|j|jfr|jg}n
t|jtr|jj}|d u r)t |S g }|D ]}|j	}|j
  j} jd u r@d }n j|j d }t|j}	t|||	}
t }t| jd}|d ur|j
jd usjJ |j
jd} jd usxJ  fddt|D }|t|jd d|jd  }ndg}d	}|j D ]}|d
| d|  d}qt||jr||||j|d7 }nt|j}|dt |j g7 }|dd t!j"|j D 7 }||
|f q-t#|S )Nr   r   r7   Fc                    s&   g | ]\}}d | j  d |f qS )z%03d %sr   )lineno)rh   ixr   rF   rG   
<listcomp>  s    z.IPDoctestItem.repr_failure.<locals>.<listcomp>	   z?EXAMPLE LOCATION UNKNOWN, not showing all tests of that examplez>>>z???  z...
zUNEXPECTED EXCEPTION: %sc                 S   s   g | ]}| d qS )r   )striprh   r   rF   rF   rG   r     s    
)$r   r   r   r   r   r{   r|   r}   repr_failurer   r   filenamer   r.   rx   r   _get_checker_get_report_choicerR   rm   	docstring
splitlines	enumeratemaxsourcer9   output_differencer   splitr   from_exc_infor   repr	tracebackformat_exceptionro   )rq   r   r   r|   rp   r   r   r   r   messagerv   r   report_choicerw   indentrt   inner_excinfor~   r   rG   r   {  sd   



 
zIPDoctestItem.repr_failurezos.PathLike[str]c                 C   s$   | j d usJ | j| j jd| j fS )Nz[ipdoctest] %s)r   rQ   r   re   rq   rF   rF   rG   
reportinfo  s   zIPDoctestItem.reportinfor]   r   r^   c                 C   
   t | jS rI   r   r   r   rF   rF   rG   rQ        
zIPDoctestItem.path)NNr*   N)rx   ry   rz   rB   r
   rr   classmethodrX   r   r   r   r   r   r   r   r   r   r   r   r   pytest__version__r   propertyr   rQ   r   rF   rF   r~   rG   r     sL    




$@r   c                  C   s4   dd l } t| j| j| j| j| j| jt t	 t
 d	S )Nr   )	DONT_ACCEPT_TRUE_FOR_1DONT_ACCEPT_BLANKLINENORMALIZE_WHITESPACEr-   IGNORE_EXCEPTION_DETAILCOMPARISON_FLAGSALLOW_UNICODEALLOW_BYTESNUMBER)r   r   r  r  r	  r-   r
  r  _get_allow_unicode_flag_get_allow_bytes_flag_get_number_flagr   rF   rF   rG   _get_flag_lookup  s   r  c                 C   s0   | j d}t }d}|D ]}||| O }q|S )Nr+   r   )rR   getinir  )rM   optionflags_strflag_lookup_tableflag_accflagrF   rF   rG   get_optionflags  s   r  c                 C   s    |  d}|r|  drd}|S )Nr>   usepdbF)getvalue)rR   r   rF   rF   rG   _get_continue_on_failure  s
   

r  c                       sz   e Zd ZdZdee fddZeej	
dd dk r9edefdd	Zeddd
dee f fddZ  ZS   ZS )rO   Nr*   c                 c   s    dd l }ddlm} | jd}| j|}t| j}| jj}ddi}t	| }t
d|t t| jd}	| }
|
||||d}|jrPtj| |j|	|d	V  d S d S )
Nr   r   )IPDocTestParserr0   rx   __main__Fr   r   r   r   re   r   r   )r   r   r  rR   r  rQ   	read_textrB   re   r  r   r   r  get_doctestr   r   rX   )rq   r   r  encodingtextr   re   rn   r   r   r)   r   rF   rF   rG   r1     s,   

zIPDoctestTextfile.collectr]   r   r^   c                 C   r   rI   r   r   rF   rF   rG   rQ   
  r  zIPDoctestTextfile.pathr   rQ   rQ   c                   4   |d urdd l }|j|}t jd||d|S Nr   )rM   r   rF   r`   rQ   rb   r}   rX   r   rM   r   rQ   kwrd   r~   rF   rG   rX        	zIPDoctestTextfile.from_parent)rx   ry   rz   r   r   r   r1   r   r  r  r   r  r   rQ   r  r
   rX   r   rF   rF   r~   rG   rO     s    rO   r   r   c                    s6   ddl  t fdd| jD }|rtd dS dS )zVRaise pytest.skip() if all examples in the given DocTest have the SKIP
    option set.r   Nc                 3   s     | ]}|j  jd V  qdS )FN)optionsgetSKIPr   r   rF   rG   rj   #  s    z%_check_all_skipped.<locals>.<genexpr>z%all docstests skipped by +SKIP option)r   allr   r  skip)r   all_skippedrF   r   rG   r     s
   r   r   c                 C   s   t | ddduS )zmReturn if an object is possibly a mock object by checking the
    existence of a highly improbable attribute.1pytest_mock_example_attribute_that_shouldnt_existNr   r   rF   rF   rG   
_is_mocked(  s   
r3  )NNNc                  #   s`    t j dddtdtf dtttgtf  dtf fdd} | t _z	dV  W  t _dS  t _w )	zContext manager which replaces ``inspect.unwrap`` with a version
    that's aware of mock objects and doesn't recurse into them.Nstopfunc.r5  r*   c             
      sj   z|d u s	|t u rt dW S |  fdddW S  ty4 } ztd|f t  d }~ww )Nr4  c                    s   t | p S rI   )r3  r2  _stopr6  rF   rG   <lambda>>  s    zF_patch_unwrap_mock_aware.<locals>._mock_aware_unwrap.<locals>.<lambda>zGot %r when unwrapping %r.  This is usually caused by a violation of Python's object protocol; see e.g. https://github.com/pytest-dev/pytest/issues/5080)r3  	Exceptionwarningswarnr!   )r6  r5  ereal_unwrapr7  rG   _mock_aware_unwrap7  s   z4_patch_unwrap_mock_aware.<locals>._mock_aware_unwrap)inspectunwrapr   r   r
   )r@  rF   r>  rG   _patch_unwrap_mock_aware1  s   
rC  c                       sv   e Zd Zdee fddZeej	dd dk r7e
defddZed	d	d
dee f fddZ  ZS   ZS )rN   r*   c           
      c   s8   dd l }ddlm}m} G dd d|}| jjdkrGttj	dd dk r5| j
j| j| j
d	}n7| j
jj| j| j
d	| j
jd
}n%zt| j| j
jd}W n tyk   | j
drhtd| j  n Y nw || d}t| }td|t t| j
d}|||jD ]}	|	jrtj| |	j||	dV  qd S )Nr   r   )DocTestFinderr  c                       s2   e Zd ZdZ fddZ		d fddZ  ZS )	z7IPDoctestModule.collect.<locals>.MockAwareDocTestFinderzA hackish ipdoctest finder that overrides stdlib internals to fix a stdlib bug.

            https://github.com/pytest-dev/pytest/issues/3456
            https://bugs.python.org/issue25532
            c                    s8   t |trt|d|}t|drt|}t ||S )a3  Doctest code does not take into account `@property`, this
                is a hackish way to fix it. https://bugs.python.org/issue17446

                Wrapped Doctests will need to be unwrapped so the correct
                line number is returned. This will be reported upstream. #8796
                fget__wrapped__)r   r  r   r   rA  rB  r}   _find_lineno)rq   r   source_linesr~   rF   rG   rG  [  s   


zDIPDoctestModule.collect.<locals>.MockAwareDocTestFinder._find_linenor*   Nc              
      sP   t |rd S t  t ||||||| W d    d S 1 s!w   Y  d S rI   )r3  rC  r}   _find)rq   testsr   re   modulerH  rn   seenr~   rF   rG   rI  o  s   "z=IPDoctestModule.collect.<locals>.MockAwareDocTestFinder._findr  )rx   ry   rz   r   rG  rI  r   rF   rF   r~   rG   MockAwareDocTestFinderT  s    rM  zconftest.pyr]   r^   
importmode)rootpath)rc   r=   zunable to import module %r)r)   Fr  r  )r   r   rD  r  rQ   re   r   r  r  r   rR   r   _importconftestrm   rO  r   ImportErrorr  r/  r  r   r   r  findrx   r   r   rX   )
rq   r   rD  r  rM  rK  finderr   r   r   rF   rF   rG   r1   P  sL   '


zIPDoctestModule.collectr]   r   r^   c                 C   r   rI   r   r   rF   rF   rG   rQ     r  zIPDoctestModule.pathNr$  rQ   c                   r%  r&  r'  r(  r~   rF   rG   rX     r*  zIPDoctestModule.from_parent)rx   ry   rz   r   r   r1   r   r  r  r   r  r   rQ   r  r
   rX   r   rF   rF   r~   rG   rN   O  s    OrN   doctest_itemc                 C   sD   d	dd}i | _ | jj}|j| |ddd| _t| dd}|  |S )
zIUsed by IPDoctestTextfile and IPDoctestItem to setup fixture information.r*   Nc                   S   s   d S rI   rF   rF   rF   rF   rG   r6    s   z_setup_fixtures.<locals>.funcF)noder6  r   funcargsT)	_ispytestr  )rV  rk   _fixturemanagergetfixtureinfo_fixtureinfor   _fillfixtures)rT  r6  fmr   rF   rF   rG   r     s   
r   c                     s4   dd l } dd l ddlm} G  fddd|}|S )Nr   r   )r'   c                       sp   e Zd ZdjZdjZdjZde	de	de
def fdd	Zde	de	de	fd
dZ  ZS )z2_init_checker_class.<locals>.LiteralsOutputCheckerz(\W|^)[uU]([rR]?[\'\"])z(\W|^)[bB]([rR]?[\'\"])a  
            (?P<number>
              (?P<mantissa>
                (?P<integer1> [+-]?\d*)\.(?P<fraction>\d+)
                |
                (?P<integer2> [+-]?\d+)\.
              )
              (?:
                [Ee]
                (?P<exponent1> [+-]?\d+)
              )?
              |
              (?P<integer3> [+-]?\d+)
              (?:
                [Ee]
                (?P<exponent2> [+-]?\d+)
              )
            )
            wantr   r   r*   c                    s   t  |||r
dS |t @ }|t @ }|t @ }|s!|s!|s!dS dtt dtdtffdd}|r>|| j|}|| j|}|rL|| j|}|| j|}|rT| 	||}t  |||S )NTFregexr[   r*   c                    s     | d|S )Nz\1\2)sub)r^  r[   rerF   rG   remove_prefixes  s   zX_init_checker_class.<locals>.LiteralsOutputChecker.check_output.<locals>.remove_prefixes)
r}   check_outputr  r  r  r   rB   _unicode_literal_re_bytes_literal_re_remove_unwanted_precision)rq   r]  r   r   allow_unicodeallow_bytesallow_numberrb  )r   ra  rF   rG   rc    s"   


z?_init_checker_class.<locals>.LiteralsOutputChecker.check_outputc                 S   s  t | j|}t | j|}t|t|kr|S d}t||D ]h\}}|d}|d}	|	d u r8|d}	|d u r>dnt|}
|	d urL|
t|	8 }
t| tt| d|
  dkr|d |	 |  |  ||
 | d   }||
 |	  |
 |	   7 }q!|S )Nr   fraction	exponent1	exponent2
   )abs)list
_number_refinditerlenziprE   r   floatr    startend)rq   r]  r   wantsgotsoffsetwgrj  exponent	precisionrF   rF   rG   rf    s&   


&.$zM_init_checker_class.<locals>.LiteralsOutputChecker._remove_unwanted_precision)rx   ry   rz   compileUNICODErd  re  VERBOSErp  rB   r   r   rc  rf  r   rF   r`  r~   rG   LiteralsOutputChecker  s     r  )r   ra  r   r'   )r   r'   r  rF   r`  rG   _init_checker_class  s
   Qr  c                   C   s   t du rt a t  S )a  Return a IPDoctestOutputChecker subclass that supports some
    additional options:

    * ALLOW_UNICODE and ALLOW_BYTES options to ignore u'' and b''
      prefixes (respectively) in string literals. Useful when the same
      ipdoctest should run in Python 2 and Python 3.

    * NUMBER to ignore floating-point differences smaller than the
      precision of the literal number in the ipdoctest.

    An inner class is used to avoid importing "ipdoctest" at the module
    level.
    N)r(   r  rF   rF   rF   rG   r     s   r   c                  C      ddl } | dS )z+Register and return the ALLOW_UNICODE flag.r   Nr  r   register_optionflagr   rF   rF   rG   r  2     
r  c                  C   r  )z)Register and return the ALLOW_BYTES flag.r   Nr  r  r   rF   rF   rG   r  9  r  r  c                  C   r  )z$Register and return the NUMBER flag.r   Nr  r  r   rF   rF   rG   r  @  r  r  keyc              
   C   s,   ddl }t|jt|jt|jt|jt	di|  S )zReturn the actual `ipdoctest` module flag value.

    We want to do it as late as possible to avoid importing `ipdoctest` and all
    its dependencies when parsing options, as it adds overhead and breaks tests.
    r   N)
r   DOCTEST_REPORT_CHOICE_UDIFFREPORT_UDIFFDOCTEST_REPORT_CHOICE_CDIFFREPORT_CDIFFDOCTEST_REPORT_CHOICE_NDIFFREPORT_NDIFF(DOCTEST_REPORT_CHOICE_ONLY_FIRST_FAILUREREPORT_ONLY_FIRST_FAILUREDOCTEST_REPORT_CHOICE_NONE)r  r   rF   rF   rG   r   G  s   r   rk   )scopec                   C   s   t  S )zcFixture that returns a :py:class:`dict` that will be injected into the
    namespace of ipdoctests.)r   rF   rF   rF   rG   r   X  s   r   r  r   )r   r   r*   N)r*   r'   )ir   r   r   rA  r   r   r   r   r   r;  
contextlibr   pathlibr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r  _pytestr   _pytest._code.coder   r   r   _pytest._ior   _pytest.compatr   _pytest.configr   _pytest.config.argparsingr   _pytest.fixturesr   _pytest.nodesr   _pytest.outcomesr   _pytest.pathlibr   r   _pytest.python_apir    _pytest.warning_typesr!   r   r  r  r  r  r  rD   rJ   r(   __annotations__rH   rK   r\   r   r  r   r_   ra   r   rV   rY   rW   ro   r:  r{   r   r   Itemr   rB   r  r  r  ModulerO   r   objectr3  rC  rN   r   r  r   r  r  r  r   fixturer   rF   rF   rF   rG   <module>   s   	
2



7
 6	

5
	f
Y
