§
    ÖŽ’jùD ã                  óè  — d Z ddlm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ZddlZddlZddlZddlmZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlZddlm Z  ddl!m"Z" ddl!m#Z# ddl!m$Z$ ddl!m%Z% ddl!m&Z& ddl!m'Z' ddl!m(Z( ddl)Z)ddl*m+Z+ ddl*m,Z, ddl*m-Z- ddl*m.Z. ddl*m/Z/ ddl0m1Z1 ddl0m2Z2 ddl3m4Z4 ddl3m5Z5 ddl3m6Z6 dd l3m7Z7 dd!l8m9Z9 ddl:Z8dd"l:m;Z; dd#l:m<Z< dd$l=m>Z> dd%l?m@Z@ dd&lAmBZB dd'lAmCZC dd(lAmDZD dd)lEmFZF dd*lEmGZG dd+lEmHZH ddlIZ8ddlJZ8dd,lKmLZL dd-lKmMZM dd.lNmOZO dd/lNmPZP dd0lNmQZQ dd1lNmRZR dd2lNmSZS dd3lNmTZT dd4lUmVZV dd5lWmXZX dd6lWmYZY e(rdd7lZm[Z[ dd8l\m]Z] dd9l^m_Z_ e`Za	  e+d:¦  «        Zb e-d:¦  «        Zce% G d;„ d<ejd        ¦  «        ¦   «         Ze G d=„ d>ef¦  «        Zgd¯dC„Zhd°dH„Zid±dJ„Zjd²dN„Zk	 	 d³d´dT„ZldddUœdµdW„Zmd¶dY„Znd¶dZ„Zo G d[„ d\¦  «        Zpd·d_„Zqd·d`„ZrdaZsg es¢db‘dc‘dd‘de‘df‘dg‘dh‘di‘dj‘dk‘dl‘dm‘dn‘do‘dp‘dq‘dr‘ds‘dt‘du‘dv‘dw‘dx‘dy‘dz‘R Zth et£d{’d|’d}’Zu	 	 d³dd~œd¸d‚„Zvd¹d„„Zw	 dºdd~œd»d†„Zxd¼dˆ„Zyd½d�„Zze% G d�„ dƒe/¦  «        ¦   «         Z{d¾d”„Z|d¿d˜„Z} G d™„ dšee~e"f         ¦  «        Ze% G d›„ d�¦  «        ¦   «         Z€dÀdœ„Z�	 dºdÁd „Z‚dÂd¢„Zƒ ed£¬¤¦  «        dÃd¨„¦   «         Z„dÄd«„Z…dÅd®„Z†dS )Æz=Command line options, config-file and conftest.py processing.é    )ÚannotationsN)ÚCallable)Ú	Generator)ÚIterable)ÚIterator)ÚMapping)ÚMutableMapping)ÚSequence)Ú	lru_cache)Údedent)ÚFunctionType)ÚAny)Úcast)ÚFinal)Úfinal)ÚIO)ÚTextIO)ÚTYPE_CHECKING)ÚHookimplMarker)ÚHookimplOpts)ÚHookspecMarker)ÚHookspecOpts)ÚPluginManageré   )Ú	PrintHelp)Ú
UsageError)Ú
ConfigDict)ÚConfigValue)Údetermine_setup)Úparse_override_ini)Ú__version__)ÚExceptionInfo)Úfilter_traceback)ÚTracebackStyle)ÚTerminalWriter)Úassert_never)Ú
deprecated)ÚNOTSET)ÚArgument)ÚFILE_OR_DIR)ÚParser)Úfail)ÚSkipped)Úabsolutepath)Úbestrelpath)Úimport_path)Ú
ImportMode)Úresolve_package_path)Úsafe_exists)ÚStash)ÚPytestConfigWarning)Úwarn_explicit_for)ÚAssertionRewritingHook)ÚCache)ÚTerminalReporterÚpytestc                  ó2   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚExitCodez�Encodes the valid exit codes by pytest.

    Currently users and plugins may supply other exit codes as well.

    .. versionadded:: 5.0
    r   r   é   é   é   é   é   r:   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚINTERNAL_ERRORÚUSAGE_ERRORÚNO_TESTS_COLLECTEDÚMAX_WARNINGS_ERROR© ó    úEC:\Projects\DSCons\.venv\Lib\site-packages\_pytest\config\__init__.pyr<   r<   d   sD   € € € € € ðð ð 
€Bà€Là€Kà€Nà€KàÐàÐà€J€J€JrN   r<   c                  ó   — e Zd Zdd„Zdd	„Zd
S )ÚConftestImportFailureÚpathúpathlib.PathÚcauseÚ	ExceptionÚreturnÚNonec               ó"   — || _         || _        d S ©N)rR   rT   )ÚselfrR   rT   s      rO   Ú__init__zConftestImportFailure.__init__€   s   € ð ˆŒ	ØˆŒ
ˆ
ˆ
rN   Ústrc                óZ   — t          | j        ¦  «        j        › d| j        › d| j        › d�S )Nú: z (from ú))ÚtyperT   rB   rR   ©rZ   s    rO   Ú__str__zConftestImportFailure.__str__‰   s2   € Ý�t”zÑ"Ô"Ô+ÐNÐN¨t¬zÐNÐNÀ$Ä)ÐNÐNÐNÐNrN   N)rR   rS   rT   rU   rV   rW   )rV   r\   )rB   rC   rD   r[   rb   rM   rN   rO   rQ   rQ      sB   € € € € € ðð ð ð ðOð Oð Oð Oð Oð OrN   rQ   Úentryú_pytest._code.TracebackEntryrV   Úboolc                ó†   — t          | ¦  «        o2dt          | j        ¦  «                             t          j        ¦  «        vS )zÓFilter tracebacks entries which point to pytest internals or importlib.

    Make a special case for importlib because we use it to import test modules and conftest files
    in _pytest.pathlib.import_path.
    Ú	importlib)r#   r\   rR   ÚsplitÚosÚsep)rc   s    rO   Ú,filter_traceback_for_conftest_import_failurerk   �   s6   € õ ˜EÑ"Ô"ÐW {½#¸e¼j¹/¼/×:OÒ:OÕPRÔPVÑ:WÔ:WÐ'WÐWrN   ÚeÚfiler   rW   c                óà  — t          j        | j        ¦  «        }t          |¦  «        }|                     d| j        › d�d¬¦  «         |j                             t          ¦  «        |_        |j        r| 	                    dd¬¦  «        n| 
                    ¦   «         }t          |¦  «        }|                     ¦   «         D ]+}|                     |                     ¦   «         d¬¦  «         Œ,d S )Nz$ImportError while loading conftest 'z'.T©ÚredÚshortF)ÚstyleÚchain)r"   Úfrom_exceptionrT   r%   ÚlinerR   Ú	tracebackÚfilterrk   ÚgetreprÚexconlyr\   Ú
splitlinesÚrstrip)rl   rm   Úexc_infoÚtwÚexc_reprÚformatted_tbru   s          rO   Úprint_conftest_import_errorr€   ˜   sï   € ÝÔ+¨A¬GÑ4Ô4€HÝ	˜Ñ	Ô	€BØ‡G‚GÐ=°1´6Ð=Ð=Ð=À4€GÑHÔHÐHØ!Ô+×2Ò2Ý4ñô €HÔð
 Ôð	 ˆ×Ò˜w¨eÐÑ4Ô4Ð4à×ÒÑÔð õ
 �x‘=”=€LØ×'Ò'Ñ)Ô)ð )ð )ˆØ
�Š�—’‘” 4ˆÑ(Ô(Ð(Ð(ð)ð )rN   r   c                ón   — t          |¦  «        }| j        D ]}|                     d|› d�d¬¦  «         Œd S )NzERROR: ú
Tro   )r%   Úargsru   )rl   rm   r}   Úmsgs       rO   Úprint_usage_errorr…   ©   sO   € Ý	˜Ñ	Ô	€BØŒvð -ð -ˆØ
�ŠÐ!˜#Ð!Ð!Ð! tˆÑ,Ô,Ð,Ð,ð-ð -rN   ÚargvúSequence[str]r\   c                óh   — | r| d         nd}t           j                             |¦  «        dk    rdS dS )zèDetermine the CLI program name from the argument vector.

    :param argv: The argument vector (typically ``sys.argv``).
    :returns: ``"python -m pytest"`` when invoked via ``python -m``,
              ``"pytest"`` otherwise.
    r   Ú z__main__.pyzpython -m pytestr:   )ri   rR   Úbasename)r†   Úargv0s     rO   Ú_get_prog_namerŒ   ¯   s<   € ð Ð#ˆD�ŒGˆG €EÝ	„w×Ò˜ÑÔ -Ò/Ð/Ø!Ð!Øˆ8rN   rƒ   ú#list[str] | os.PathLike[str] | NoneÚpluginsú$Sequence[str | _PluggyPlugin] | Noneúint | ExitCodec                ó&   — t          | |d¬¦  «        S )aL  Perform an in-process test run.

    :param args:
        List of command line arguments. If `None` or not given, defaults to reading
        arguments directly from the process command line (:data:`sys.argv`).
    :param plugins: List of plugin objects to be auto-registered during initialization.

    :returns: An exit code.
    zpytest.main())rƒ   rŽ   Úprog)Ú_main©rƒ   rŽ   s     rO   Úmainr•   ¼   s   € õ �d G°/ÐBÑBÔBÐBrN   r”   r’   c                ó¦  — | €t           j        dd …         n| }t          |t          ¦  «        rc|                     d¦  «        |                     d¦  «        z   dk    r4t           j                             dt          › d�¦  «         t          j	        S t          j                             d¦  «        }	 t          t          j        d<   	 t          |||¬¦  «        }np# t          $ rc}t          |t           j        ¬¦  «         t          j        cY d }~|€!t          j                             dd ¦  «         S |t          j        d<   S d }~ww xY w	 |j                             |¬	¦  «        }	 t          |¦  «        |                     ¦   «          |€!t          j                             dd ¦  «         S |t          j        d<   S # t,          $ rK |cY |                     ¦   «          |€!t          j                             dd ¦  «         S |t          j        d<   S w xY w# |                     ¦   «          w xY w# t.          $ rc}t1          |t           j        ¬¦  «         t          j        cY d }~|€!t          j                             dd ¦  «         S |t          j        d<   S d }~ww xY w# |€!t          j                             dd ¦  «         n|t          j        d<   w xY w)
Nr   ú	--versionz-Vzpytest r‚   ÚPYTEST_VERSION©r’   ©rm   ©Úconfig)Úsysr†   Ú
isinstancer
   ÚcountÚstdoutÚwriter!   r<   rF   ri   ÚenvironÚgetÚ_prepareconfigrQ   r€   ÚstderrrJ   ÚpopÚhookÚpytest_cmdline_mainÚ_ensure_unconfigureÚ
ValueErrorr   r…   )rƒ   rŽ   r’   Únew_argsÚold_pytest_versionrœ   rl   Úrets           rO   r“   r“   Ì   så  € ð  $˜|�sŒx˜˜˜Œ|ˆ|°€Hå�8�XÑ&Ô&ðà�^Š^˜KÑ(Ô(¨8¯>ª>¸$Ñ+?Ô+?Ñ?ÀAÒEÐEåŒ
×ÒÐ2¥;Ð2Ð2Ð2Ñ3Ô3Ð3ÝŒ{ÐåœŸšÐ(8Ñ9Ô9Ðð>Ý'2�Œ
Ð#Ñ$ð	(Ý# H¨g¸DÐAÑAÔAˆFˆFøÝ$ð 	(ð 	(ð 	(Ý'¨µ´
Ð;Ñ;Ô;Ð;ÝÔ'Ð'Ð'Ð'Ð'Ð'ð Ð%ÝŒJ�NŠNÐ+¨TÑ2Ô2Ð2Ð2à+=�BŒJÐ'Ñ(Ð(øøøøð'	(øøøð	)Ø"(¤+×"AÒ"AÈÐ"AÑ"PÔ"PˆCðÝ ‘}”}ð ×&Ò&Ñ(Ô(Ð(ð
 Ð%ÝŒJ�NŠNÐ+¨TÑ2Ô2Ð2Ð2à+=�BŒJÐ'Ñ(Ð(øõ ð ð ð Ø�
�
à×&Ò&Ñ(Ô(Ð(ð
 Ð%ÝŒJ�NŠNÐ+¨TÑ2Ô2Ð2Ð2à+=�BŒJÐ'Ñ(Ð(ðøøøøð ×&Ò&Ñ(Ô(Ð(Ð(øøøøÝð $ð $ð $Ý˜!¥#¤*Ð-Ñ-Ô-Ð-ÝÔ#Ð#Ð#Ð#Ð#Ð#àÐ%ÝŒJ�NŠNÐ+¨TÑ2Ô2Ð2Ð2à+=�BŒJÐ'Ñ(Ð(øøøøð$øøøøð Ð%ÝŒJ�NŠNÐ+¨TÑ2Ô2Ð2Ð2à+=�BŒJÐ'Ñ(Ð=Ð=Ð=Ð=sœ   Â1H, ÃC ÃH, Ã
EÃ#&EÄ	EÄ
H, ÅEÅH, Å
H Å&F; Å4H, Æ;HÇH ÇH, ÈHÈH ÈH)È)H, È,
JÈ6&JÉJÉJ ÊJÊJ Ê4KÚintc                 óh  — 	 t          t          t          j        ¦  «        ¬¦  «        } t          j                             ¦   «          | S # t          $ r^ t          j        t          j	        t          j
        ¦  «        }t          j        |t          j                             ¦   «         ¦  «         Y dS w xY w)z}The CLI entry point of pytest (internal).

    This is the real implementation used by entry points and ``__main__.py``.
    r™   r   )r“   rŒ   r�   r†   r    ÚflushÚBrokenPipeErrorri   ÚopenÚdevnullÚO_WRONLYÚdup2Úfileno)Úcoder³   s     rO   Ú_console_mainr¸   ö   s“   € ð	Ý�.­¬Ñ2Ô2Ð3Ñ3Ô3ˆÝŒ
×ÒÑÔÐØˆøÝð ð ð õ ”'�"œ*¥b¤kÑ2Ô2ˆÝ
Œ��œ×*Ò*Ñ,Ô,Ñ-Ô-Ð-Øˆqˆqðøøøs   ‚AA	 Á	A$B1Â0B1c                 óV   — ddl } ddlm}  | j        |d¬¦  «         t	          ¦   «         S )zÅThe CLI entry point of pytest.

    .. deprecated:: 9.1
        This function is slated for removal in pytest 10.
        It is not meant for programmable use; use :func:`pytest.main` instead.
    r   N)ÚCONSOLE_MAINr=   ©Ú
stacklevel)ÚwarningsÚ_pytest.deprecatedrº   Úwarnr¸   )r½   rº   s     rO   Úconsole_mainrÀ     s@   € ð €O€O€Oà/Ð/Ð/Ð/Ð/Ð/à€H„M�,¨1Ð-Ñ-Ô-Ð-Ý‰?Œ?ÐrN   c                  ó$   — e Zd Z ee¦  «        ZdS )ÚcmdlineN)rB   rC   rD   Ústaticmethodr•   rM   rN   rO   rÂ   rÂ     s   € € € € € Øˆ<˜ÑÔ€D€D€DrN   rÂ   rR   Úoptnamec                ól   — t           j                             | ¦  «        rt          |› d| › �¦  «        ‚| S )ztArgparse type validator for filename arguments.

    :path: Path of filename.
    :optname: Name of the option.
    z must be a filename, given: ©ri   rR   Úisdirr   ©rR   rÄ   s     rO   Úfilename_argrÉ     s<   € õ 
„w‡}‚}�TÑÔð IÝ˜GÐGÐGÀÐGÐGÑHÔHÐHØ€KrN   c                ól   — t           j                             | ¦  «        st          |› d| › �¦  «        ‚| S )zvArgparse type validator for directory arguments.

    :path: Path of directory.
    :optname: Name of the option.
    z must be a directory, given: rÆ   rÈ   s     rO   Údirectory_argrË   &  s<   € õ Œ7�=Š=˜ÑÔð JÝ˜GÐHÐHÀ$ÐHÐHÑIÔIÐIØ€KrN   )Úmarkr•   ÚrunnerÚfixturesÚ
helpconfigÚpythonÚterminalÚ	debuggingÚunittestÚcaptureÚskippingÚ
legacypathÚtmpdirÚmonkeypatchÚrecwarnÚpastebinÚ	assertionÚjunitxmlÚdoctestÚcacheproviderÚ	setuponlyÚ	setupplanÚstepwiseÚunraisableexceptionÚthreadexceptionr½   ÚloggingÚreportsÚfaulthandlerÚsubtestsÚpytesterÚpytester_assertionsÚterminalprogressr™   úIterable[str] | Noneú
str | NoneÚConfigc               ó@  — t          ¦   «         }t                               | pd|t          j                             ¦   «         ¬¦  «        }t          |||¬¦  «        }|j        r|                     |j        d¬¦  «         t          D ]}| 	                    |¦  «         Œ|S )NrM   ©rƒ   rŽ   Údir©Úinvocation_paramsr’   T©Úexclude_only)
ÚPytestPluginManagerrí   ÚInvocationParamsÚpathlibÚPathÚcwdrƒ   Úconsider_preparseÚdefault_pluginsÚimport_plugin)rƒ   rŽ   r’   Úpluginmanagerrò   rœ   Úspecs          rO   Ú
get_configrÿ   _  s°   € õ (Ñ)Ô)€MÝ×/Ò/ØˆZ�RØÝŒL×ÒÑÔð 0ñ ô Ðõ
 �MÐ5FÈTÐRÑRÔR€FàÔð Sà×'Ò'Ð(9Ô(>ÈTÐ'ÑRÔRÐRåð *ð *ˆØ×#Ò# DÑ)Ô)Ð)Ð)à€MrN   rõ   c                 ó(   — t          ¦   «         j        S )zíObtain a new instance of the
    :py:class:`pytest.PytestPluginManager`, with default plugins
    already loaded.

    This function can be used by integration with other tools, like hooking
    into pytest to run tests into an IDE.
    )rÿ   rý   rM   rN   rO   Úget_plugin_managerr  x  s   € õ ‰<Œ<Ô%Ð%rN   úlist[str] | os.PathLike[str]c               ó4  — t          | t          j        ¦  «        rt          j        | ¦  «        g} nGt          | t          ¦  «        s2d}t          |                     | t          | ¦  «        ¦  «        ¦  «        ‚t          | ||¬¦  «        }|j	        }	 |rE|D ]B}t          |t          ¦  «        r|                     |¦  «         Œ-|                     |¦  «         ŒC|j                             || ¬¦  «        }|S # t          $ r |                     ¦   «          ‚ w xY w)NzG`args` parameter expected to be a list of strings, got: {!r} (type: {})r™   )rý   rƒ   )rž   ri   ÚPathLikeÚfspathÚlistÚ	TypeErrorÚformatr`   rÿ   rý   r\   Úconsider_pluginargÚregisterr§   Úpytest_cmdline_parseÚBaseExceptionr©   )rƒ   rŽ   r’   r„   Úinitial_configrý   Úpluginrœ   s           rO   r¤   r¤   ƒ  s:  € õ �$�œÑ$Ô$ð 6Ý”	˜$‘”Ð ˆˆÝ˜�dÑ#Ô#ð 6àUð 	õ ˜Ÿ
š
 4­¨d©¬Ñ4Ô4Ñ5Ô5Ð5å  g°DÐ9Ñ9Ô9€NØ"Ô0€MðØð 	3Ø!ð 3ð 3�Ý˜f¥cÑ*Ô*ð 3Ø!×4Ò4°VÑ<Ô<Ð<Ð<à!×*Ò*¨6Ñ2Ô2Ð2Ð2Ø&Ô+×@Ò@Ø'¨dð Añ 
ô 
ˆð ˆøÝð ð ð Ø×*Ò*Ñ,Ô,Ð,Øðøøøs   ÂA$C7 Ã7 DrS   c                ó<   — |                       ¦   «         r| j        S | S )z<Get the directory of a path - itself if already a directory.)Úis_fileÚparent)rR   s    rO   Ú_get_directoryr  £  s   € à‡|‚|�~„~ð ØŒ{ÐàˆrN   Úmethodr   Ú	hook_typeÚ	opt_namesútuple[str, ...]údict[str, bool]c                ó   — t           rt          j        | ¦  «        sJ ‚d„ t          | dg ¦  «        D ¦   «         }g }i }|D ]h}t          | |t          ¦  «        }|t          ur |                     |› d|› �¦  «         d||<   ŒA||v r|                     |› d�¦  «         d||<   Œcd||<   Œi|rdd                     |¦  «        }t          j        j	         
                    || j        |¬¦  «        }	t          t          t          | ¦  «        |	¦  «         |S )	Nc                ó   — h | ]	}|j         ’Œ
S rM   ©Úname)Ú.0Úms     rO   ú	<setcomp>z)_get_legacy_hook_marks.<locals>.<setcomp>³  s   € ÐOÐOÐO¨˜QœVÐOÐOÐOrN   Ú
pytestmarkú=Tz=TrueFú, )r`   ÚfullnameÚ	hook_opts)r   ÚinspectÚ	isroutineÚgetattrÚAttributeErrorÚappendÚjoinÚ_pytestr'   ÚHOOK_LEGACY_MARKINGr  rD   r6   r   r   )
r  r  r  Úknown_marksÚ	must_warnÚoptsÚopt_nameÚopt_attrr#  Úmessages
             rO   Ú_get_legacy_hook_marksr2  «  sI  € õ
 ð )åÔ  Ñ(Ô(Ð(Ð(Ð(ØOÐO­W°V¸\È2Ñ-NÔ-NÐOÑOÔO€KØ€IØ€DØð 	#ð 	#ˆÝ˜6 8­^Ñ<Ô<ˆØ�>Ð)Ð)Ø×Ò Ð5Ð5¨8Ð5Ð5Ñ6Ô6Ð6Ø!ˆD�‰NˆNØ˜Ð$Ð$Ø×Ò Ð/Ð/Ð/Ñ0Ô0Ð0Ø!ˆD�‰NˆNà"ˆD�‰NˆNØð ?Ø—I’I˜iÑ(Ô(ˆ	ÝÔ$Ô8×?Ò?ØØÔ(Øð @ñ 
ô 
ˆõ
 	�$�|¨VÑ4Ô4°gÑ>Ô>Ð>Ø€KrN   c                  óÚ   ‡ — e Zd ZdZdBˆ fd„ZdCˆ fd
„ZdDˆ fd„ZdEdFˆ fd„ZdGd„ZdHd„Z	dId„Z
dJd"„ZdKd$„ZdLd&„ZdMd(„ZdNd*„ZdOd-„ZdPd/„Zd0d1œdQd4„ZdRd6„ZdSd9„ZdBd:„ZdTd;„ZdUd>„ZdVdWdA„Zˆ xZS )Xrõ   a;  A :py:class:`pluggy.PluginManager <pluggy.PluginManager>` with
    additional pytest-specific functionality:

    * Loading plugins from the command line, ``PYTEST_PLUGINS`` env variable and
      ``pytest_plugins`` global variables found in plugins being loaded.
    * ``conftest.py`` loading during start-up.
    rV   rW   c                ó  •— ddl m} ddl m} t          ¦   «                              d¦  «         t          ¦   «         | _        i | _        d | _        d| _	         t          d¦  «        t          ¦  «        | _        g | _        |                      t          j        ¦  «         |                      | ¦  «         t"          j                             d¦  «        r£t(          j        }t-          |dd	¦  «        }	 t/          t#          j        |                     ¦   «         ¦  «        |j        d
|¬¦  «        }n# t6          $ r Y nw xY w| j        j                             |j        ¦  «         |                       ¦   «           |¦   «         | _!        d| _"        d S )Nr   )ÚDummyRewriteHook)ÚRewriteHookr:   Fé   ÚPYTEST_DEBUGÚencodingÚutf8r   )ÚmodeÚ	bufferingr9  )#Ú_pytest.assertionr5  r6  Úsuperr[   ÚsetÚ_conftest_pluginsÚ_dirpath2confmodsÚ_confcutdirÚ_noconftestr   r  Úskipped_pluginsÚadd_hookspecsr*  Úhookspecr
  ri   r¢   r£   r�   r¥   r&  r²   Údupr¶   r;  rU   ÚtraceÚrootÚ	setwriterr¡   Úenable_tracingÚrewrite_hookÚ_configured)rZ   r5  r6  Úerrr9  Ú	__class__s        €rO   r[   zPytestPluginManager.__init__Õ  sŽ  ø€ Ø6Ð6Ð6Ð6Ð6Ð6Ø1Ð1Ð1Ð1Ð1Ð1å‰Œ×Ò˜Ñ"Ô"Ð"õ 9<¹¼ˆÔð NPˆÔà04ˆÔà ˆÔð
 -�i¨™nœn­^Ñ<Ô<ˆÔð 79ˆÔà×Ò�7Ô+Ñ,Ô,Ð,Ø�Š�dÑÔÐÝŒ:�>Š>˜.Ñ)Ô)ð 	"Ýœ:ˆCÝ# C¨°VÑ<Ô<ˆHðÝÝ”F˜3Ÿ:š:™<œ<Ñ(Ô(ØœØØ%ð	ñ ô ��øõ ð ð ð Ø�ðøøøàŒJŒO×%Ò% c¤iÑ0Ô0Ð0Ø×ÒÑ!Ô!Ð!ð *:Ð)9Ñ);Ô);ˆÔà ˆÔÐÐs   Ã1<D. Ä.
D;Ä:D;r  Ú_PluggyPluginr  r\   úHookimplOpts | Nonec                ó&  •— |                      d¦  «        sdS |dk    rdS t          ¦   «                              ||¦  «        }|�|S t          ||¦  «        }t	          j        |¦  «        sdS t          |dd¦  «        }t          t          |¦  «        S )ú:meta private:Úpytest_NÚpytest_pluginsÚimpl)ÚtryfirstÚtrylastÚoptionalhookÚhookwrapper)	Ú
startswithr>  Úparse_hookimpl_optsr&  r$  r%  r2  r   r   )rZ   r  r  r.  r  ÚlegacyrO  s         €rO   r\  z'PytestPluginManager.parse_hookimpl_opts	  s£   ø€ ð �Š˜yÑ)Ô)ð 	Ø�4àÐ#Ò#Ð#Ø�4å‰wŒw×*Ò*¨6°4Ñ8Ô8ˆØÐØˆKå˜ Ñ&Ô&ˆåÔ  Ñ(Ô(ð 	Ø�4å'Ø�FÐRñ
ô 
ˆõ •L &Ñ)Ô)Ð)rN   úHookspecOpts | Nonec                óæ   •— t          ¦   «                              ||¦  «        }|€Kt          ||¦  «        }|                     d¦  «        r&t	          |dd¦  «        }t          t          |¦  «        }|S )rS  NrT  rþ   )ÚfirstresultÚhistoric)r>  Úparse_hookspec_optsr&  r[  r2  r   r   )rZ   Úmodule_or_classr  r.  r  r]  rO  s         €rO   rb  z'PytestPluginManager.parse_hookspec_opts$  sq   ø€ å‰wŒw×*Ò*¨?¸DÑAÔAˆØˆ<Ý˜_¨dÑ3Ô3ˆFØ�Š˜yÑ)Ô)ð 2Ý/Ø˜FÐ$?ñô �õ �L¨&Ñ1Ô1�ØˆrN   Nrì   c           
     óÈ  •— |t           j        j        v rJt          j        t          d                     |                     dd¦  «        ¦  «        ¦  «        ¦  «         d S t          ¦   «          	                    ||¦  «        }|�_| j
        j                             t          ||| ¬¦  «        ¬¦  «         t          |t          j        ¦  «        r|                      |¦  «         |S )NzQ{} plugin has been merged into the core, please remove it from your requirements.Ú_ú-)r  Úplugin_nameÚmanager©Úkwargs)r*  r'   ÚDEPRECATED_EXTERNAL_PLUGINSr½   r¿   r5   r  Úreplacer>  r
  r§   Úpytest_plugin_registeredÚcall_historicÚdictrž   ÚtypesÚ
ModuleTypeÚconsider_module)rZ   r  r  rg  rO  s       €rO   r
  zPytestPluginManager.register0  sð   ø€ Ø•7Ô%ÔAÐAÐAÝŒMÝ#ð?ß?EºvØŸš S¨#Ñ.Ô.ñ@ô @ñô ñô ð ð �4Ý‘g”g×&Ò& v¨tÑ4Ô4ˆØÐ"ØŒIÔ.×<Ò<ÝØ!Ø +Ø ðñ ô ð =ñ ô ð õ ˜&¥%Ô"2Ñ3Ô3ð -Ø×$Ò$ VÑ,Ô,Ð,ØÐrN   c                ó0   — |                       |¦  «        }|S rY   )Ú
get_plugin)rZ   r  r  s      rO   Ú	getpluginzPytestPluginManager.getpluginI  s   € à'+§¢°tÑ'<Ô'<ˆØˆrN   re   c                óF   — t          |                      |¦  «        ¦  «        S )z:Return whether a plugin with the given name is registered.)re   rt  )rZ   r  s     rO   Ú	haspluginzPytestPluginManager.haspluginN  s   € å�D—O’O DÑ)Ô)Ñ*Ô*Ð*rN   rœ   rí   c                ól   — |                      dd¦  «         |                      dd¦  «         d| _        dS )rS  Úmarkerszµtryfirst: mark a hook implementation function such that the plugin machinery will try to call it first/as early as possible. DEPRECATED, use @pytest.hookimpl(tryfirst=True) instead.z±trylast: mark a hook implementation function such that the plugin machinery will try to call it last/as late as possible. DEPRECATED, use @pytest.hookimpl(trylast=True) instead.TN)Úaddinivalue_linerM  ©rZ   rœ   s     rO   Úpytest_configurez$PytestPluginManager.pytest_configureR  sX   € ð 	×ÒØðGñ	
ô 	
ð 	
ð 	×ÒØðFñ	
ô 	
ð 	
ð  ˆÔÐÐrN   rƒ   úSequence[str | pathlib.Path]ÚpyargsÚ
noconftestÚrootpathrS   Ú
confcutdirúpathlib.Path | NoneÚinvocation_dirÚ
importmodeúImportMode | strÚconsider_namespace_packagesc               ó–  — |rt          ||z  ¦  «        nd| _        || _        || _        g }	|D ]³}
t	          |
¦  «        }|                     d¦  «        }|dk    r
|d|…         }t          ||z  ¦  «        }t          |¦  «        sŒX|	                     |¦  «         |                     ¦   «         r2|	 	                    d„ | 
                    d¦  «        D ¦   «         ¦  «         Œ´|	sG|	                     |¦  «         |	 	                    d„ | 
                    d¦  «        D ¦   «         ¦  «         |	D ]}|                      ||||¬¦  «         ŒdS )a`  Load initial conftest files given a preparsed "namespace".

        As conftest files may add their own command line options which have
        arguments ('--my-opt somepath') we might get some false positives.
        All builtin and 3rd party plugins will have been loaded, however, so
        common options will not confuse our logic here.
        Nú::éÿÿÿÿc              3  óB   K  — | ]}|                      ¦   «         ¯|V — Œd S rY   ©Úis_dir©r  Úxs     rO   ú	<genexpr>z=PytestPluginManager._set_initial_conftests.<locals>.<genexpr>�  s/   è è € ÐMÐM QÀ!Ç(Â(Á*Ä*ÐM˜qÐMÐMÐMÐMÐMÐMrN   ztest*c              3  óB   K  — | ]}|                      ¦   «         ¯|V — Œd S rY   r‹  r�  s     rO   r�  z=PytestPluginManager._set_initial_conftests.<locals>.<genexpr>“  s/   è è € ÐQÐQ ÀaÇhÂhÁjÄjÐQ˜1ÐQÐQÐQÐQÐQÐQrN   ©r†  )r.   rB  rC  Ú_using_pyargsr\   Úfindr3   r(  rŒ  ÚextendÚglobÚ_loadconftestmodules)rZ   rƒ   r~  r  r€  r�  rƒ  r„  r†  ÚanchorsÚinitial_pathrR   ÚiÚanchors                 rO   Ú_set_initial_conftestsz*PytestPluginManager._set_initial_conftestsg  sŠ  € ð( :DÐM�L˜¨*Ñ4Ñ5Ô5Ð5Èð 	Ôð &ˆÔØ#ˆÔàˆØ ð 	Nð 	NˆLÝ�|Ñ$Ô$ˆDà—	’	˜$‘”ˆAØ�BŠwˆwØ˜B˜Q˜B”x�Ý! .°4Ñ"7Ñ8Ô8ˆFõ ˜vÑ&Ô&ð Øà�NŠN˜6Ñ"Ô"Ð"à�}Š}‰Œð NØ—’ÐMÐM¨&¯+ª+°gÑ*>Ô*>ÐMÑMÔMÑMÔMÐMøØð 	RØ�NŠN˜>Ñ*Ô*Ð*Ø�NŠNÐQÐQ n×&9Ò&9¸'Ñ&BÔ&BÐQÑQÔQÑQÔQÐQàð 	ð 	ˆFØ×%Ò%ØØØØ,Gð	 &ñ ô ð ð ð	ð 	rN   rR   c                ó0   — | j         €dS || j         j        vS )z:Whether to consider the given path to load conftests from.NT)rB  Úparents©rZ   rR   s     rO   Ú_is_in_confcutdirz%PytestPluginManager._is_in_confcutdir�  s#   € àÔÐ#Ø�4ð ˜4Ô+Ô3Ð3Ð3rN   ústr | ImportModec               ó^  — | j         rd S |                      |¦  «        }|| j        v rd S g }t          |g|j        ¢R ¦  «        D ]^}|                      |¦  «        rG|dz  }|                     ¦   «         r.|                      ||||¬¦  «        }	|                     |	¦  «         Œ_|| j        |<   d S )Núconftest.pyr‘  )	rC  r  rA  Úreversedr�  rŸ  r  Ú_importconftestr(  )
rZ   rR   r„  r€  r†  Ú	directoryÚclistr  ÚconftestpathÚmods
             rO   r–  z(PytestPluginManager._loadconftestmodules¬  sè   € ð Ôð 	ØˆFà×'Ò'¨Ñ-Ô-ˆ	ð ˜Ô.Ð.Ð.ØˆFàˆÝ 	Ð>¨IÔ,=Ð>Ð>Ñ?Ô?ð 
	&ð 
	&ˆFØ×%Ò% fÑ-Ô-ð 	&Ø%¨Ñ5�Ø×'Ò'Ñ)Ô)ð &Ø×.Ò.Ø$Ø"Ø Ø4Oð	 /ñ ô �Cð —L’L Ñ%Ô%Ð%øØ,1ˆÔ˜yÑ)Ð)Ð)rN   úSequence[types.ModuleType]c                ób   — |                       |¦  «        }| j                             |d¦  «        S )NrM   )r  rA  r£   )rZ   rR   r¥  s      rO   Ú_getconftestmodulesz'PytestPluginManager._getconftestmodulesÌ  s.   € Ø×'Ò'¨Ñ-Ô-ˆ	ØÔ%×)Ò)¨)°RÑ8Ô8Ð8rN   útuple[types.ModuleType, Any]c                ó¶   — |                       |¦  «        }t          |¦  «        D ]&}	 |t          ||¦  «        fc S # t          $ r Y Œ#w xY wt	          |¦  «        ‚rY   )r«  r£  r&  r'  ÚKeyError)rZ   r  rR   Úmodulesr¨  s        rO   Ú_rget_with_confmodz&PytestPluginManager._rget_with_confmodÐ  sz   € ð
 ×*Ò*¨4Ñ0Ô0ˆÝ˜GÑ$Ô$ð 	ð 	ˆCðØ�G C¨Ñ.Ô.Ð.Ð.Ð.Ð.øÝ!ð ð ð Ø�ðøøøå�t‰nŒnÐs   ¨<¼
A	ÁA	r§  útypes.ModuleTypec          
     ó  — t          |¦  «        }|                      |¦  «        }|�t          t          j        |¦  «        S t          |¦  «        }|€$	 t          j        |j        = n# t          $ r Y nw xY w	 t          ||||¬¦  «        }n-# t          $ r }	|	j        €J ‚t          ||	¬¦  «        |	‚d }	~	ww xY w|                      ||¦  «         | j                             |¦  «         |j        }
|
| j        v re| j                             ¦   «         D ]K\  }}|
|j        v s||
k    r7||v rt+          d|›d|› d|j        › d�¦  «        ‚|                     |¦  «         ŒL|                      d|›�¦  «         |                      ||¬¦  «         |S )	N)r;  rI  r†  )rT   z#While trying to load conftest path z, found that the module z is already loaded with path zE. This is not supposed to happen. Please report this issue to pytest.zloading conftestmodule )Úregistration_name)r\   rt  r   rp  rq  r2   r�   r¯  Ústemr®  r0   rU   Ú__traceback__rQ   Ú_check_non_top_pytest_pluginsr@  Úaddr  rA  Úitemsr�  ÚAssertionErrorÚ__file__r(  rH  Úconsider_conftest)rZ   r§  r„  r€  r†  Úconftestpath_plugin_nameÚexistingÚpkgpathr¨  rl   ÚdirpathrR   Úmodss                rO   r¤  z#PytestPluginManager._importconftestÝ  s  € õ $' |Ñ#4Ô#4Ð Ø—?’?Ð#;Ñ<Ô<ˆØÐÝ�Ô(¨(Ñ3Ô3Ð3õ ' |Ñ4Ô4ˆØˆ?ðÝ”K Ô 1Ð2Ð2øÝð ð ð Ø�ðøøøð		FÝØØØØ,Gð	ñ ô ˆCˆCøõ ð 	Fð 	Fð 	FØ”?Ð.Ð.Ð.Ý'¨¸AÐ>Ñ>Ô>ÀAÐEøøøøð	Føøøð 	×*Ò*¨3°Ñ=Ô=Ð=àÔ×"Ò" 3Ñ'Ô'Ð'ØÔ%ˆØ�dÔ,Ð,Ð,Ø"Ô4×:Ò:Ñ<Ô<ð %ð %‘
��dØ˜dœlÐ*Ð*¨d°gªo¨oØ˜d�{�{Ý,ðbÀ,ð bð bØ58ðbð bØWZÔWcðbð bð bñô ð ð
 —K’K Ñ$Ô$Ð$øØ�
Š
Ð4¨SÐ4Ð4Ñ5Ô5Ð5Ø×Ò˜sÐ6NÐÑOÔOÐOØˆ
s*   ÁA& Á&
A3Á2A3Á7B Â
B5ÂB0Â0B5r¨  c                ó¦   — t          |d¦  «        r<| j        r7| j        s2d}t          |                     || j        ¦  «        d¬¦  «         d S d S d S d S )NrU  af  Defining 'pytest_plugins' in a non-top-level conftest is no longer supported:
It affects the entire test suite instead of just below the conftest as expected.
  {}
Please move it to a top level conftest file at the rootdir:
  {}
For more information, visit:
  https://docs.pytest.org/en/stable/deprecations.html#pytest-plugins-in-non-top-level-conftest-filesF)Úpytrace)ÚhasattrrM  r’  r,   r  rB  )rZ   r¨  r§  r„   s       rO   r¶  z1PytestPluginManager._check_non_top_pytest_plugins  s�   € õ �CÐ)Ñ*Ô*ð	LàÔ ð	Lð Ô&ð	Lðwð õ �—’˜L¨$Ô*:Ñ;Ô;ÀUÐKÑKÔKÐKÐKÐKð	Lð 	Lð 	Lð 	Lð 	Lð 	LrN   Fró   r‡   rô   c               óš  — d}t          |¦  «        }||k     r³||         }|dz  }t          |t          ¦  «        r‰|dk    r!	 ||         }n# t          $ r Y dS w xY w|dz  }n!|                     d¦  «        r|dd…         }nŒp|                     ¦   «         }|r|                     d¦  «        sŒœ|                      |¦  «         ||k     °±dS dS )rS  r   r   z-pNr=   úno:)Úlenrž   r\   Ú
IndexErrorr[  Ústripr	  )rZ   rƒ   rô   r™  ÚnÚoptÚpargs          rO   rú   z%PytestPluginManager.consider_preparse,  sÿ   € ð ˆÝ�‰IŒIˆØ�!ŠeˆeØ�q”'ˆCØ�‰FˆAÝ˜#�sÑ#Ô#ð .Ø˜$’;�;ðØ# Aœw˜˜øÝ%ð ð ð Ø˜˜ðøøøà˜‘F�A�AØ—^’^ DÑ)Ô)ð Ø˜q˜r˜rœ7�D�DàØ—z’z‘|”|�Øð ¨¯ª¸Ñ(>Ô(>ð ØØ×'Ò'¨Ñ-Ô-Ð-ð# �!Šeˆeˆeˆeˆeˆes   ÁA
 Á

AÁAÚargc                ón  — |                      d¦  «        rÄ|dd…         }|t          v rt          d|› d�¦  «        ‚|                     d¦  «        rt          d|› d�¦  «        ‚|d	k    r*|                      d
¦  «         |                      d¦  «         |                      |¦  «         |                      d¦  «        s|                      d|z   ¦  «         dS dS |}|                      |¦  «         |                      d¦  «        s|                      d|z   ¦  «         |                      |d¬¦  «         dS )rS  rÅ  r>   Nzplugin z cannot be disabledr¢  z9Blocking conftest files using -p is not supported: -p no:zB
conftest.py files are not plugins and cannot be disabled via -p.
rÞ   rá   Úpytest_stepwiserT  T)Úconsider_entry_points)r[  Úessential_pluginsr   ÚendswithÚset_blockedÚunblockrü   )rZ   rÌ  r  s      rO   r	  z&PytestPluginManager.consider_pluginargE  su  € à�>Š>˜%Ñ Ô ð 	@Ø�q�r�r”7ˆDØÕ(Ð(Ð(Ý Ð!D¨4Ð!DÐ!DÐ!DÑEÔEÐEà�}Š}˜]Ñ+Ô+ð Ý ðYÐPTð Yð Yð Yñô ð ð �Ò&Ð&Ø× Ò  Ñ,Ô,Ð,Ø× Ò Ð!2Ñ3Ô3Ð3à×Ò˜TÑ"Ô"Ð"Ø—?’? 9Ñ-Ô-ð 3Ø× Ò  ¨TÑ!1Ñ2Ô2Ð2Ð2Ð2ð3ð 3ð ˆDà�LŠL˜ÑÔÐØ—?’? 9Ñ-Ô-ð /Ø—’˜Y¨Ñ-Ñ.Ô.Ð.Ø×Ò˜s¸$ÐÑ?Ô?Ð?Ð?Ð?rN   Úconftestmoduler³  c                ó4   — |                       ||¬¦  «         dS )rS  r  N)r
  )rZ   rÔ  r³  s      rO   r»  z%PytestPluginManager.consider_conftestb  s!   € ð 	�Š�nÐ+<ˆÑ=Ô=Ð=Ð=Ð=rN   c                ój   — |                       t          j                             d¦  «        ¦  «         dS )rS  ÚPYTEST_PLUGINSN)Ú_import_plugin_specsri   r¢   r£   ra   s    rO   Úconsider_envz PytestPluginManager.consider_envh  s+   € à×!Ò!¥"¤*§.¢.Ð1AÑ"BÔ"BÑCÔCÐCÐCÐCrN   c                óN   — |                       t          |dg ¦  «        ¦  «         dS )rS  rU  N)rØ  r&  )rZ   r¨  s     rO   rr  z#PytestPluginManager.consider_modulel  s)   € à×!Ò!¥'¨#Ð/?ÀÑ"DÔ"DÑEÔEÐEÐEÐErN   rþ   ú-None | types.ModuleType | str | Sequence[str]c                óX   — t          |¦  «        }|D ]}|                      |¦  «         Œd S rY   )Ú_get_plugin_specs_as_listrü   )rZ   rþ   rŽ   Úimport_specs       rO   rØ  z(PytestPluginManager._import_plugin_specsp  sA   € õ ,¨DÑ1Ô1ˆØ"ð 	,ð 	,ˆKØ×Ò˜{Ñ+Ô+Ð+Ð+ð	,ð 	,rN   ÚmodnamerÏ  c                óì  — t          |t          ¦  «        sJ d|›�¦   «         ‚|                      |¦  «        s|                      |¦  «        �dS |t          v rd|z   n|}| j                             |¦  «         |r|                      d|¬¦  «        }|rdS 	 t          j	        dk    rt          j        |¦  «        }n!t          |¦  «         t          j        |         }|                      ||¦  «         dS # t          $ r>}t          d|› d|j        d	         › �¦  «                             |j        ¦  «        |‚d}~wt&          $ r.}| j                             ||j        pd
f¦  «         Y d}~dS d}~ww xY w)z™Import a plugin with ``modname``.

        If ``consider_entry_points`` is True, entry point names are also
        considered to find a plugin.
        z"module name as text required, got Nz_pytest.Úpytest11r  )r>   é   zError importing plugin "z": r   r‰   )rž   r\   Ú
is_blockedrt  Úbuiltin_pluginsrL  Úmark_rewriteÚload_setuptools_entrypointsr�   Úversion_inforg   Úimport_moduleÚ
__import__r¯  r
  ÚImportErrorrƒ   Úwith_tracebackrµ  r-   rD  r(  r„   )rZ   rß  rÏ  Ú
importspecÚloadedr¨  rl   s          rO   rü   z!PytestPluginManager.import_pluginw  sÆ  € õ ˜'¥3Ñ'Ô'ð 	
ð 	
Ø<°Ð<Ð<ñ	
ô 	
Ð'ð �?Š?˜7Ñ#Ô#ð 	 t§¢°wÑ'?Ô'?Ð'KØˆFà-4½Ð-GÐ-G�Z 'Ñ)Ð)ÈWˆ
ØÔ×&Ò& zÑ2Ô2Ð2à ð 	Ø×5Ò5°jÀwÐ5ÑOÔOˆFØð Ø�ð	(ÝÔ 7Ò*Ð*ÝÔ-¨jÑ9Ô9��õ ˜:Ñ&Ô&Ð&Ý”k *Ô-�ð �MŠM˜#˜wÑ'Ô'Ð'Ð'Ð'øõ ð 	5ð 	5ð 	5ÝØB¨7ÐBÐB°q´v¸a´yÐBÐBñô çŠn˜Qœ_Ñ-Ô-°1ð5øøøøõ ð 	@ð 	@ð 	@ØÔ ×'Ò'¨°!´%°+¸2Ð(>Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?øøøøð	@øøøs%   ÂAC5 Ã5
E3Ã?9D8Ä8E3Å#E.Å.E3©rV   rW   )r  rP  r  r\   rV   rQ  )r  r\   rV   r^  rY   )r  rP  r  rì   rV   rì   ©r  r\   )r  r\   rV   re   ©rœ   rí   rV   rW   )rƒ   r}  r~  re   r  re   r€  rS   r�  r‚  rƒ  rS   r„  r…  r†  re   rV   rW   )rR   rS   rV   re   )
rR   rS   r„  r   r€  rS   r†  re   rV   rW   )rR   rS   rV   r©  )r  r\   rR   rS   rV   r¬  )
r§  rS   r„  r   r€  rS   r†  re   rV   r±  )r¨  r±  r§  rS   rV   rW   )rƒ   r‡   rô   re   rV   rW   )rÌ  r\   rV   rW   )rÔ  r±  r³  r\   rV   rW   )r¨  r±  rV   rW   )rþ   rÛ  rV   rW   )F)rß  r\   rÏ  re   rV   rW   )rB   rC   rD   rE   r[   r\  rb  r
  ru  rw  r|  r›  rŸ  r–  r«  r°  r¤  r¶  rú   r	  r»  rÙ  rr  rØ  rü   Ú__classcell__)rO  s   @rO   rõ   rõ   Ë  s#  ø€ € € € € ðð ð2!ð 2!ð 2!ð 2!ð 2!ð 2!ðh*ð *ð *ð *ð *ð *ð6
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð2ð ð ð ð
+ð +ð +ð +ð ð  ð  ð  ð*4ð 4ð 4ð 4ðl4ð 4ð 4ð 4ð2ð 2ð 2ð 2ð@9ð 9ð 9ð 9ðð ð ð ð3ð 3ð 3ð 3ðjLð Lð Lð Lð6 <Að.ð .ð .ð .ð .ð .ð2@ð @ð @ð @ð:>ð >ð >ð >ðDð Dð Dð DðFð Fð Fð Fð,ð ,ð ,ð ,ð((ð ((ð ((ð ((ð ((ð ((ð ((ð ((ð ((rN   ÚspecsrÛ  ú	list[str]c                ó  — | €g S t          | t          j        ¦  «        rg S t          | t          ¦  «        r| r|                      d¦  «        ng S t          | t
          j        j        ¦  «        rt          | ¦  «        S t          d| ›�¦  «        ‚)z:Parse a plugins specification into a list of plugin names.Nú,zWPlugins may be specified as a sequence or a ','-separated string of plugin names. Got: )
rž   rp  rq  r\   rh   ÚcollectionsÚabcr
   r  r   )rò  s    rO   rÝ  rÝ  ¢  s—   € ð
 €}Øˆ	å�%�Ô)Ñ*Ô*ð Øˆ	å�%�ÑÔð 1Ø#(Ð0ˆu�{Š{˜3ÑÔÐ¨bÐ0å�%�œÔ1Ñ2Ô2ð Ý�E‰{Œ{ÐÝ
ØkÐbgÐkÐkñô ð rN   Úpackage_filesúIterable[str]úIterator[str]c              #  óx  K  — t          | ¦  «        } d}| D ]¶}d|vo|                     d¦  «        }|                     d¦  «        dk    o|                     d¦  «        }|rDt          j                             |¦  «        \  }}|dk    r|                     d¦  «        sd}|V — Œ�|r%t          j                             |¦  «        }d}|V — Œ·|sig }| D ]K}|                     d¦  «        }	d 	                    |	dd	…         ¦  «        }
|
r| 
                    |
¦  «         ŒL|rt          |¦  «        E d	{V —† d	S d	S d	S )
aM  Given an iterable of file names in a source distribution, return the "names" that should
    be marked for assertion rewrite.

    For example the package "pytest_mock/__init__.py" should be added as "pytest_mock" in
    the assertion rewrite mechanism.

    This function has to deal with dist-info based distributions and egg based distributions
    (which are still very much in use for "editable" installs).

    Here are the file names as seen in a dist-info based distribution:

        pytest_mock/__init__.py
        pytest_mock/_version.py
        pytest_mock/plugin.py
        pytest_mock.egg-info/PKG-INFO

    Here are the file names as seen in an egg based distribution:

        src/pytest_mock/__init__.py
        src/pytest_mock/_version.py
        src/pytest_mock/plugin.py
        src/pytest_mock.egg-info/PKG-INFO
        LICENSE
        setup.py

    We have to take in account those two distribution flavors in order to determine which
    names should be considered for assertion rewriting.

    More information:
        https://github.com/pytest-dev/pytest-mock/issues/167
    Fú/z.pyr   z__init__.pyÚsetupÚ__editable__TN)r  rÑ  rŸ   ri   rR   Úsplitextr[  Údirnamerh   r)  r(  Ú_iter_rewritable_modules)rø  Ú	seen_someÚfnÚis_simple_moduleÚ
is_packageÚmodule_namere  Úpackage_nameÚnew_package_filesÚpartsÚnew_fns              rO   r  r  ·  s—  è è € õ@ ˜Ñ'Ô'€MØ€IØð ð ˆØ b˜=Ð?¨R¯[ª[¸Ñ-?Ô-?ÐØ—X’X˜c‘]”] aÒ'ÐF¨B¯KªK¸Ñ,FÔ,Fˆ
Øð 
	ÝœW×-Ò-¨bÑ1Ô1‰NˆK˜ð ˜gÒ%Ð%¨k×.DÒ.DÀ^Ñ.TÔ.TÐ%Ø �	Ø!Ð!Ð!Ð!øØð 	Ýœ7Ÿ?š?¨2Ñ.Ô.ˆLØˆIØÐÐÐøàð Cð ÐØð 	1ð 	1ˆBØ—H’H˜S‘M”MˆEØ—X’X˜e A B BœiÑ(Ô(ˆFØð 1Ø!×(Ò(¨Ñ0Ô0Ð0øØð 	CÝ/Ð0AÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBðCð Cð	Cð 	CrN   c                  óF   — e Zd ZdZdZdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )Ú_DeprecatedInicfgProxyz5Compatibility proxy for the deprecated Config.inicfg.©Ú_configrœ   rí   rV   rW   c                ó   — || _         d S rY   r  r{  s     rO   r[   z_DeprecatedInicfgProxy.__init__ý  s   € ØˆŒˆˆrN   Úkeyr\   r   c                ó0   — | j         j        |         j        S rY   )r  Ú_inicfgÚvalue©rZ   r  s     rO   Ú__getitem__z"_DeprecatedInicfgProxy.__getitem__   s   € ØŒ|Ô# CÔ(Ô.Ð.rN   r  c                óD   — t          |dd¬¦  «        | j        j        |<   d S )NÚoverrideÚtoml)Úoriginr;  )r   r  r  )rZ   r  r  s      rO   Ú__setitem__z"_DeprecatedInicfgProxy.__setitem__  s&   € Ý$/°¸jÈvÐ$VÑ$VÔ$VˆŒÔ˜SÑ!Ð!Ð!rN   c                ó    — | j         j        |= d S rY   )r  r  r  s     rO   Ú__delitem__z"_DeprecatedInicfgProxy.__delitem__  s   € ØŒLÔ  Ð%Ð%Ð%rN   rú  c                ó4   — t          | j        j        ¦  «        S rY   )Úiterr  r  ra   s    rO   Ú__iter__z_DeprecatedInicfgProxy.__iter__	  s   € Ý�D”LÔ(Ñ)Ô)Ð)rN   r®   c                ó4   — t          | j        j        ¦  «        S rY   )rÆ  r  r  ra   s    rO   Ú__len__z_DeprecatedInicfgProxy.__len__  s   € Ý�4”<Ô'Ñ(Ô(Ð(rN   Nrð  )r  r\   rV   r   )r  r\   r  r   rV   rW   )r  r\   rV   rW   )rV   rú  ©rV   r®   )rB   rC   rD   rE   Ú	__slots__r[   r  r  r  r  r!  rM   rN   rO   r  r  ø  s›   € € € € € Ø?Ð?à€Iðð ð ð ð/ð /ð /ð /ðWð Wð Wð Wð&ð &ð &ð &ð*ð *ð *ð *ð)ð )ð )ð )ð )ð )rN   r  c                  ó.  — e Zd ZU dZe ej        d¬¦  «         G d„ d¦  «        ¦   «         ¦   «         Z G d„ dej	        ¦  «        Z
ded	<   d
d
dœd„d„Zer ed¦  «        ed…d„¦   «         ¦   «         Zned…d„¦   «         Zed†d„¦   «         Zed‡d„¦   «         Zdˆd„Zd‰d „Zd‰d!„ZdŠd#„Zd‹d&„Z	 dŒd�d+„ZdŽd.„Zed�d1„¦   «         Zd�d4„Z ed¬5¦  «        d‘d7„¦   «         Zd‰d8„Zd’d=„Z d‰d>„Z!d‰d?„Z"d“dA„Z#d”dH„Z$ ed¬I¦  «        d•dK„¦   «         Z%d‰dL„Z&d‰dM„Z'd‰dN„Z(d–dP„Z)d—dR„Z*d˜d™dT„Z+dšdY„Z,d›d\„Z-dœd^„Z.d�db„Z/dždc„Z0dŸdg„Z1d dh„Z2d¡dk„Z3e4dlfd¢dn„Z5dŒdždo„Z6dŒdždp„Z7dqZ8dreds<   dtZ9dredu<   dvZ:dredw<   dxZ;dredy<   dŒd£d{„Z<e=d¤d|„¦   «         Z>e=d¥d€„¦   «         Z?d¦d‚„Z@d‰dƒ„ZAd
S )§rí   a  Access to configuration values, pluginmanager and plugin hooks.

    :param PytestPluginManager pluginmanager:
        A pytest PluginManager.

    :param InvocationParams invocation_params:
        Object containing parameters regarding the :func:`pytest.main`
        invocation.
    T)Úfrozenc                  ó@   — e Zd ZU dZded<   	 ded<   	 ded<   	 dd„ZdS )úConfig.InvocationParamsa¤  Holds parameters passed during :func:`pytest.main`.

        The object attributes are read-only.

        .. versionadded:: 5.1

        .. note::

            Note that the environment variable ``PYTEST_ADDOPTS`` and the ``addopts``
            configuration option are handled by pytest, not being included in the ``args`` attribute.

            Plugins accessing ``InvocationParams`` must be aware of that.
        r  rƒ   r�   rŽ   rS   rð   rù  rV   rW   c               óÈ   — t                                | dt          |¦  «        ¦  «         t                                | d|¦  «         t                                | d|¦  «         d S )Nrƒ   rŽ   rð   )ÚobjectÚ__setattr__Útuple)rZ   rƒ   rŽ   rð   s       rO   r[   z Config.InvocationParams.__init__4  sX   € õ ×Ò˜t V­U°4©[¬[Ñ9Ô9Ð9Ý×Ò˜t Y°Ñ8Ô8Ð8Ý×Ò˜t U¨CÑ0Ô0Ð0Ð0Ð0rN   N)rƒ   rù  rŽ   r�   rð   rS   rV   rW   )rB   rC   rD   rE   Ú__annotations__r[   rM   rN   rO   rö   r'    sc   € € € € € € ð	ð 	ð 	ÐÐÑØJØ5Ð5Ð5Ñ5Ø-ØÐÐÑØGð		1ð 		1ð 		1ð 		1ð 		1ð 		1rN   rö   c                  óp   — e Zd ZdZ ej        ¦   «         Z ej        ¦   «         ZeZ ej        ¦   «         Z	dS )úConfig.ArgsSourcezSIndicates the source of the test arguments.

        .. versionadded:: 7.2
        N)
rB   rC   rD   rE   ÚenumÚautoÚARGSÚINVOCATION_DIRÚINCOVATION_DIRÚ	TESTPATHSrM   rN   rO   Ú
ArgsSourcer.  ?  sF   € € € € € ð	ð 	ð ˆtŒy‰{Œ{ˆà"˜œ™œˆØ'ˆà�D”I‘K”Kˆ	ˆ	ˆ	rN   r5  r8   ÚcacheNrñ   rý   rõ   rò   úInvocationParams | Noner’   rì   rV   rW   c               ó  — |€4|                       dd t          j                             ¦   «         ¬¦  «        }t	          j        ¦   «         | _        	 || _        	 t          dt          › dt          › d�| j
        |d¬¦  «        | _        || _        	 t          ¦   «         | _        	 | j        | _        | j        j        j                             d¦  «        | _        | j        j        | _        i | _        i | _        t-          j        ¦   «         | _        | j                             | d	¦  «         d
| _        | j        j                             t;          | j        | j        ¬¦  «        ¬¦  «         t<          j        j         | _!        g | _"        d S )NrM   rï   z%(prog)s [options] [z] [z] [...]T)ÚusageÚ
processoptr’   Ú	_ispytestrœ   ÚpytestconfigF)Úparserrý   ri  )#rö   r÷   rø   rù   ÚargparseÚ	NamespaceÚoptionrò   r+   r*   Ú_processoptÚ_parserrý   r4   ÚstashÚ_storerH  rI  r£   r§   Ú	_inicacher  Ú
contextlibÚ	ExitStackÚ_cleanup_stackr
  rM  Úpytest_addoptionrn  ro  rí   r5  r1  Úargs_sourcerƒ   )rZ   rý   rò   r’   s       rO   r[   zConfig.__init__P  sƒ  € ð Ð$Ø $× 5Ò 5Ø ­7¬<×+;Ò+;Ñ+=Ô+=ð !6ñ !ô !Ðõ Ô(Ñ*Ô*ˆŒð	ð
 "3ˆÔð	õ
 ØM­ÐMÐM½ÐMÐMÐMØÔ'ØØð	
ñ 
ô 
ˆŒð +ˆÔð	õ
 ‘W”WˆŒ
ð	ð ”jˆŒàÔ'Ô-Ô2×6Ò6°xÑ@Ô@ˆŒ
ØÔ&Ô+ˆŒ	Ø)+ˆŒØ#%ˆŒÝ(Ô2Ñ4Ô4ˆÔØÔ×#Ò# D¨.Ñ9Ô9Ð9Ø ˆÔØŒ	Ô"×0Ò0Ý˜tœ|¸4Ô;MÐNÑNÔNð 	1ñ 	
ô 	
ð 	
õ "Ô,Ô1ˆÔØ!ˆŒ	ˆ	ˆ	rN   zXconfig.inicfg is deprecated, use config.getini() to access configuration values instead.r  c                ó   — t          ¦   «         ‚rY   )ÚNotImplementedErrorra   s    rO   ÚinicfgzConfig.inicfgŒ  s   € õ
 &Ñ'Ô'Ð'rN   c                ój   — t          j        t          j        j        d¬¦  «         t          | ¦  «        S )Nr=   r»   )r½   r¿   r*  r'   ÚCONFIG_INICFGr  ra   s    rO   rM  zConfig.inicfg”  s7   € åŒMÝÔ"Ô0Øðñ ô ð õ *¨$Ñ/Ô/Ð/rN   rS   c                ó   — | j         S )zQThe path to the :ref:`rootdir <rootdir>`.

        .. versionadded:: 6.1
        )Ú	_rootpathra   s    rO   r€  zConfig.rootpathœ  s   € ð Œ~ÐrN   r‚  c                ó   — | j         S )zXThe path to the :ref:`configfile <configfiles>`.

        .. versionadded:: 6.1
        )Ú_inipathra   s    rO   ÚinipathzConfig.inipath¤  s   € ð Œ}ÐrN   ÚfuncúCallable[[], None]c                ó:   — | j                              |¦  «         dS )z�Add a function to be called when the config object gets out of
        use (usually coinciding with pytest_unconfigure).
        N)rH  Úcallback)rZ   rU  s     rO   Úadd_cleanupzConfig.add_cleanup¬  s!   € ð 	Ô×$Ò$ TÑ*Ô*Ð*Ð*Ð*rN   c                ó‚   — | j         rJ ‚d| _         | j        j                             t	          | ¬¦  «        ¬¦  «         d S )NTr›   ri  )rM  r§   r|  rn  ro  ra   s    rO   Ú_do_configurezConfig._do_configure²  sF   € ØÔ#Ð#Ð#Ð#ØˆÔØŒ	Ô"×0Ò0½ÀDÐ8IÑ8IÔ8IÐ0ÑJÔJÐJÐJÐJrN   c                óô  — 	 | j         rKd| _         	 | j                             | ¬¦  «         g | j        j        _        n# g | j        j        _        w xY w	 | j                             ¦   «          t          j        ¦   «         | _        d S # t          j        ¦   «         | _        w xY w# 	 | j                             ¦   «          t          j        ¦   «         | _        n# t          j        ¦   «         | _        w xY ww xY w)NFr›   )	rM  r§   Úpytest_unconfigurer|  Ú_call_historyrH  ÚcloserF  rG  ra   s    rO   r©   zConfig._ensure_unconfigure·  s	  € ð	=ØÔð BØ#(�Ô ðBØ”I×0Ò0¸Ð0Ñ=Ô=Ð=à?A�D”IÔ.Ô<Ð<ø¸r�D”IÔ.Ô<ÐAÐAÐAÐAð=ØÔ#×)Ò)Ñ+Ô+Ð+å&0Ô&:Ñ&<Ô&<�Ô#Ð#Ð#ø¥jÔ&:Ñ&<Ô&<�Ô#Ð<Ð<Ð<Ð<øð=ØÔ#×)Ò)Ñ+Ô+Ð+å&0Ô&:Ñ&<Ô&<�Ô#Ð#ø¥jÔ&:Ñ&<Ô&<�Ô#Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<sC   ‚B% ‘> ¬B% ¾AÁB% ÁB ÂB"Â%C7Â'CÃ C7ÃC3Ã3C7r%   c                óL   — | j                              d¦  «        }|€J ‚|j        S )NÚterminalreporter)rý   rt  Ú_tw)rZ   ra  s     rO   Úget_terminal_writerzConfig.get_terminal_writerÅ  s5   € Ø48Ô4F×4QÒ4QØñ5
ô 5
Ðð  Ð+Ð+Ð+ØÔ#Ð#rN   rƒ   ró  c                ó`  — 	 |                       |¦  «         n–# t          $ r‰ t          | j        dd¦  «        sd|v rddlm}  || ¦  «         n[t          | j        dd¦  «        sd|v sd|v r=| j        j                             ¦   «          t          j
                             d	¦  «         ‚ w xY w| S )
NÚversionFr—   r   )Úshow_version_verboseÚhelpz--helpz-hz8
NOTE: displaying only minimal help due to UsageError.

)Úparser   r&  r@  Ú_pytest.helpconfigrf  rB  Ú	optparserÚ
print_helpr�   r    r¡   )rZ   rý   rƒ   rf  s       rO   r  zConfig.pytest_cmdline_parseÌ  së   € ð	Ø�JŠJ�tÑÔÐÐøÝð 	ð 	ð 	õ �t”{ I¨uÑ5Ô5ð ¸ÈÐ9LÐ9LØCÐCÐCÐCÐCÐCð %Ð$ TÑ*Ô*Ð*Ð*å˜œ V¨UÑ3Ô3ðØ7?À4Ð7GÐ7GÈ4ÐSWÈ<È<à”Ô&×1Ò1Ñ3Ô3Ð3Ý”
× Ò ØQñô ð ð ð%	øøøð( ˆs
   ‚ ˜BB+ÚexcinfoúExceptionInfo[BaseException]r@  úargparse.Namespace | Nonec                óª  — |rt          |dd¦  «        rd}nd}|                     dt          |dd¦  «        |¬¦  «        }| j                             ||¬¦  «        }t	          |¦  «        sft          |¦  «                             d	¦  «        D ]E}t          j         	                    d
|› d	�¦  «         t          j         
                    ¦   «          ŒDd S d S )NÚ	fulltraceFÚlongÚnativeTÚ
showlocals)Úfuncargsrs  rr   )Úexcreprrl  r‚   zINTERNALERROR> )r&  rx   r§   Úpytest_internalerrorÚanyr\   rh   r�   r¥   r¡   r°   )rZ   rl  r@  rr   ru  Úresru   s          rO   Únotify_exceptionzConfig.notify_exceptionç  sñ   € ð
 ð 	•g˜f k°5Ñ9Ô9ð 	Ø$*ˆEˆEàˆEØ—/’/Ø¥g¨f°lÀEÑ&JÔ&JÐRWð "ñ 
ô 
ˆð Œi×,Ò,°WÀgÐ,ÑNÔNˆÝ�3‰xŒxð 	#Ý˜G™œ×*Ò*¨4Ñ0Ô0ð #ð #�Ý”
× Ò Ð!;°4Ð!;Ð!;Ð!;Ñ<Ô<Ð<Ý”
× Ò Ñ"Ô"Ð"Ð"ð	#ð 	#ð#ð #rN   Únodeidr\   c                óÖ   — | j         j        | j        k    rS|                     d¦  «        ^}}| j        |z  }t	          | j         j        |¦  «        }d                     |g|¢¦  «        }|S )Nrˆ  )rò   rð   r€  rh   r/   r)  )rZ   rz  Úbase_path_partÚnodeid_partÚfullpathÚrelative_paths         rO   Úcwd_relative_nodeidzConfig.cwd_relative_nodeidù  sj   € àÔ!Ô%¨¬Ò6Ð6Ø+1¯<ª<¸Ñ+=Ô+=Ð(ˆN˜[à”} ~Ñ5ˆHÝ'¨Ô(>Ô(BÀHÑMÔMˆMà—Y’Y Ð<°Ð<Ñ=Ô=ˆFØˆrN   Úoption_dictúMapping[str, Any]c                óâ   — t          |¦  «        }|j        j                             |¦  «         |                     |d¬¦  «         |j        j        D ]}|j                             |¦  «         Œ|S )z$Constructor usable for subprocesses.F)Úaddopts)rÿ   r@  Ú__dict__Úupdaterh  rŽ   rý   r	  )Úclsr�  rƒ   rœ   rŽ  s        rO   ÚfromdictargszConfig.fromdictargs  ss   € õ ˜DÑ!Ô!ˆØŒÔ×%Ò% kÑ2Ô2Ð2Ø�Š�T 5ˆÑ)Ô)Ð)Ø”Ô&ð 	7ð 	7ˆAØÔ ×3Ò3°AÑ6Ô6Ð6Ð6ØˆrN   rÊ  r)   c                ó~   — t          | j        |j        ¦  «        s"t          | j        |j        |j        ¦  «         d S d S rY   )rÃ  r@  ÚdestÚsetattrÚdefault)rZ   rÊ  s     rO   rA  zConfig._processopt  s@   € Ý�t”{ C¤HÑ-Ô-ð 	8Ý�D”K ¤¨3¬;Ñ7Ô7Ð7Ð7Ð7ð	8ð 	8rN   )rX  Úearly_configc                ó†  — |                      |j        j        |j        j        |                     d¦  «        |j        j        |j        d¬¦  «        \  }}| j         	                    ||j        j        |j        j
        |j        |j        j        |j        j        |j        j        |                     d¦  «        ¬¦  «         d S )NÚ	testpathsF©rƒ   r~  r�  rƒ  r€  r¿   r†  )rƒ   r~  r  r€  r�  rƒ  r„  r†  )Ú_decide_argsÚknown_args_namespaceÚfile_or_dirr~  Úgetinirò   rð   r€  rý   r›  r  r�  r„  )rZ   r�  rƒ   Ú_args_sources       rO   Úpytest_load_initial_conftestsz$Config.pytest_load_initial_conftests  sÐ   € ð *×6Ò6ØÔ2Ô>ØÔ4Ô;Ø"×)Ò)¨+Ñ6Ô6Ø'Ô9Ô=Ø!Ô*Øð 7ñ 
ô 
Ñˆˆlð 	Ô×1Ò1ØØÔ4Ô;Ø#Ô8ÔCØ!Ô*Ø#Ô8ÔCØ'Ô9Ô=Ø#Ô8ÔCØ(4×(;Ò(;Ø-ñ)ô )ð 	2ñ 	
ô 	
ð 	
ð 	
ð 	
rN   c                ó|  — t          | j        dd¦  «        }t          | j        dd¦  «        p+t          t          j                             d¦  «        ¦  «        }|dk    rHddl}	 |j                             | ¦  «        }|  	                    ||¦  «         n# t          $ r d}Y nw xY w|                      |¦  «         dS )	zïInstall the PEP 302 import hook if using assertion rewriting.

        Needs to parse the --assert=<mode> option from the commandline
        and find all the installed plugins to mark them for rewriting
        by the importhook.
        Ú
assertmodeÚplainÚdisable_plugin_autoloadFÚPYTEST_DISABLE_PLUGIN_AUTOLOADÚrewriter   N)r&  r’  re   ri   r¢   r£   r=  rÛ   Úinstall_importhookÚ_mark_plugins_for_rewriteÚSystemErrorÚ_warn_about_missing_assertion)rZ   r;  Údisable_autoloadr*  r§   s        rO   Ú_consider_importhookzConfig._consider_importhook-  sè   € õ �tÔ0°,ÀÑHÔHˆå"ØÔ%Ð'@À%ñ
ô 
ð Då•"”*—.’.Ð!AÑBÔBÑCÔCð 	ð �9ÒÐØ$Ð$Ð$Ð$ðGØÔ(×;Ò;¸DÑAÔA�ð ×.Ò.¨tÐ5EÑFÔFÐFÐFøõ ð ð ð Ø���ðøøøð 	×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0s   Á$B ÂB$Â#B$r§   r7   r¡  re   c                óÄ   — || j         _        |rdS d„ t          j                             ¦   «         D ¦   «         }t          |¦  «        D ]}|                     |¦  «         ŒdS )z‹Given an importhook, mark for rewrite any top-level
        modules or packages in the distribution package for
        all pytest plugins.Nc              3  óˆ   K  — | ]=}t          d „ |j        D ¦   «         ¦  «        ¯ |j        pg D ]}t          |¦  «        V — ŒŒ>dS )c              3  ó,   K  — | ]}|j         d k    V — ŒdS )rá  N)Úgroup)r  Úeps     rO   r�  z=Config._mark_plugins_for_rewrite.<locals>.<genexpr>.<genexpr>T  s)   è è € ÐFÐF¨b�2”8˜zÒ)ÐFÐFÐFÐFÐFÐFrN   N)rw  Úentry_pointsÚfilesr\   )r  Údistrm   s      rO   r�  z3Config._mark_plugins_for_rewrite.<locals>.<genexpr>Q  s~   è è € ð 
ð 
àÝÐFÐF°DÔ4EÐFÑFÔFÑFÔFð
ð œ
Ð( bð	
ð 
ð õ �‰IŒIð
ð 
ð 
ð 
ð 
ð 
ð 
rN   )rý   rL  rg   ÚmetadataÚdistributionsr  rå  )rZ   r§   r¡  rø  r  s        rO   rž  z Config._mark_plugins_for_rewriteD  s…   € ð +/ˆÔÔ'àð 	ð ˆFð
ð 
å!Ô*×8Ò8Ñ:Ô:ð
ñ 
ô 
ˆõ -¨]Ñ;Ô;ð 	$ð 	$ˆDØ×Ò˜dÑ#Ô#Ð#Ð#ð	$ð 	$rN   c                óÞ   — t          |                      d¦  «        ¦  «        D ]/}t          j                             dt          |¦  «        ¦  «         Œ0|                      | j        ¦  «         d S )NÚ
pythonpathr   )r£  r”  r�   rR   Úinsertr\   rY  Ú_unconfigure_python_pathrž  s     rO   Ú_configure_python_pathzConfig._configure_python_path[  sa   € å˜TŸ[š[¨Ñ6Ô6Ñ7Ô7ð 	*ð 	*ˆDÝŒH�OŠO˜A�s 4™yœyÑ)Ô)Ð)Ð)Ø×Ò˜Ô6Ñ7Ô7Ð7Ð7Ð7rN   c                ó®   — |                       d¦  «        D ]>}t          |¦  «        }|t          j        v rt          j                             |¦  «         Œ?d S )Nr®  )r”  r\   r�   rR   Úremove)rZ   rR   Úpath_strs      rO   r°  zConfig._unconfigure_python_patha  sT   € Ø—K’K Ñ-Ô-ð 	*ð 	*ˆDÝ˜4‘y”yˆHØ�3œ8Ð#Ð#Ý”—’ Ñ)Ô)Ð)øð	*ð 	*rN   Úviac                ó  — || j         j        d<   	 | j                              |t          j        | j        ¦  «        ¬¦  «         | j         j                             dd¦  «         n%# | j         j                             dd¦  «         w xY w|S )zValidate known args.zconfig source©Ú	namespaceN)rB  Ú
extra_infoÚparse_known_and_unknown_argsÚcopyr@  r¦   )rZ   rƒ   rµ  s      rO   Ú_validate_argszConfig._validate_argsg  sŒ   € à36ˆŒÔ Ñ0ð	?ØŒL×5Ò5Ø¥¤	¨$¬+Ñ 6Ô 6ð 6ñ ô ð ð ŒLÔ#×'Ò'¨¸Ñ>Ô>Ð>Ð>øˆDŒLÔ#×'Ò'¨¸Ñ>Ô>Ð>Ð>øøøàˆs   ‘3A% Á%"Br~  r�  rƒ  r€  r¿   útuple[list[str], ArgsSource]c          	     óŒ  — |rt           j        j        }|}n«||k    r€t           j        j        }|r|}nlg }|D ]8}	|                     t          t          j        |	d¬¦  «        ¦  «        ¦  «         Œ9|r*|s(|r&d}
|                      t          |
¦  «        d¬¦  «         ng }|s!t           j        j
        }t          |¦  «        g}||fS )zÑDecide the args (initial paths/nodeids) to use given the relevant inputs.

        :param warn: Whether can issue warnings.

        :returns: The args and the args source. Guaranteed to be non-empty.
        T)Ú	recursivez˜No files were found in testpaths; consider removing or adjusting your testpaths configuration. Searching recursively from the current directory instead.r>   r»   )rí   r5  r1  r4  r”  Úsortedr•  ÚiglobÚissue_config_time_warningr5   r2  r\   )rZ   rƒ   r~  r�  rƒ  r€  r¿   ÚsourceÚresultrR   Úwarning_texts              rO   r‘  zConfig._decide_argss  s  € ð  ð 	/ÝÔ&Ô+ˆFØˆFˆFà Ò)Ð)ÝÔ*Ô4�Øð Ø&�F�Fà�FØ )ð Pð P˜ØŸš¥f­T¬Z¸ÈÐ-MÑ-MÔ-MÑ&NÔ&NÑOÔOÐOÐOØ ð 	¨ð 	Øð ð!\ð )ð
 !×:Ò:Ý 3°LÑ AÔ AÈað ;ñ ô ð øð �Øð /ÝÔ*Ô9�Ý˜nÑ-Ô-Ð.�Ø�vˆ~ÐrN   )ÚwrapperúGenerator[None, object, object]c              #  ój   K  — 	 d V —|                       ¦   «          S # |                       ¦   «          w xY wrY   )Ú_validate_config_optionsra   s    rO   Úpytest_collectionzConfig.pytest_collection   s?   è è € ð	,Ø�E�Eà×)Ò)Ñ+Ô+Ð+Ð+øˆD×)Ò)Ñ+Ô+Ð+Ð+øøøs   „ œ2c                óÖ   — dd l }|                      d¦  «        }|rKddlm}  ||¦  «         ||j        ¦  «        k    r*|                     | j        › d|› d|j        › d�¦  «        ‚d S d S )Nr   Ú
minversion©ÚVersionz: 'minversion' requires pytest-z, actual pytest-ú')r:   r”  Úpackaging.versionrÎ  r!   r   rT  )rZ   r:   ÚminverrÎ  s       rO   Ú_checkversionzConfig._checkversion©  s¢   € Øˆˆˆà—’˜\Ñ*Ô*ˆØð 	à1Ð1Ð1Ð1Ð1Ð1àˆw�v‰Œ  ¨Ô);Ñ!<Ô!<Ò<Ð<Ø×'Ò'Ø”|ÐqÐqÀFÐqÐqÐ\bÔ\nÐqÐqÐqñô ð ð	ð 	ð =Ð<rN   c                ó€   — t          |                      ¦   «         ¦  «        D ]}|                      d|› d�¦  «         Œd S )NzUnknown config option: r‚   )rÀ  Ú_get_unknown_ini_keysÚ_warn_or_fail_if_strictr  s     rO   rÉ  zConfig._validate_config_options¶  sV   € Ý˜$×4Ò4Ñ6Ô6Ñ7Ô7ð 	Lð 	LˆCØ×(Ò(Ð)JÀ3Ð)JÐ)JÐ)JÑKÔKÐKÐKð	Lð 	LrN   c                ó^  — t          |                      d¦  «        ¦  «        }|sd S ddlm} ddlm} ddlm} | j                             ¦   «         }d„ |D ¦   «         }g }|D ]“}	  ||¦  «        }	n # |$ r | 	                    |¦  «         Y Œ+w xY w|	j
        |vr| 	                    |¦  «         ŒN|	j                              |||	j
                 ¦  «        d¬¦  «        s| 	                    |¦  «         Œ”|r5t          d	                     d
                     |¦  «        ¦  «        ¦  «        ‚d S )NÚrequired_pluginsr   )ÚInvalidRequirement)ÚRequirementrÍ  c                ó.   — i | ]\  }}|j         |j        “ŒS rM   )Úproject_namere  )r  re  rª  s      rO   ú
<dictcomp>z,Config._validate_plugins.<locals>.<dictcomp>Å  s#   € ÐWÐWÐWÁÀÀ4˜DÔ-¨t¬|ÐWÐWÐWrN   T)ÚprereleaseszMissing required plugins: {}r!  )rÀ  r”  Úpackaging.requirementsrØ  rÙ  rÐ  rÎ  rý   Úlist_plugin_distinfor(  r  Ú	specifierÚcontainsr   r  r)  )
rZ   r×  rØ  rÙ  rÎ  Úplugin_infoÚplugin_dist_infoÚmissing_pluginsÚrequired_pluginÚreqs
             rO   Ú_validate_pluginszConfig._validate_pluginsº  s�  € Ý! $§+¢+Ð.@Ñ"AÔ"AÑBÔBÐØð 	ØˆFð 	>Ð=Ð=Ð=Ð=Ð=Ø6Ð6Ð6Ð6Ð6Ð6Ø-Ð-Ð-Ð-Ð-Ð-àÔ(×=Ò=Ñ?Ô?ˆØWÐWÈ;ÐWÑWÔWÐàˆØ/ð 	8ð 	8ˆOðØ!�k /Ñ2Ô2��øØ%ð ð ð Ø×&Ò& Ñ7Ô7Ð7Ø�ðøøøð ŒxÐ/Ð/Ð/Ø×&Ò& Ñ7Ô7Ð7Ð7Ø”]×+Ò+Ø�Ð(¨¬Ô2Ñ3Ô3Àð ,ñ ô ð 8ð  ×&Ò& Ñ7Ô7Ð7øàð 	ÝØ.×5Ò5°d·i²iÀÑ6PÔ6PÑQÔQñô ð ð	ð 	s   Á%A1Á1BÂBr1  c                óÈ   — |                       d¦  «        }|€|                       d¦  «        }|rt          |¦  «        ‚|                      t          |¦  «        d¬¦  «         d S )NÚstrict_configÚstrictr>   r»   )r”  r   rÂ  r5   )rZ   r1  ré  s      rO   rÕ  zConfig._warn_or_fail_if_strictÛ  si   € ØŸš OÑ4Ô4ˆØÐ Ø ŸKšK¨Ñ1Ô1ˆMØð 	&Ý˜WÑ%Ô%Ð%à×&Ò&Õ':¸7Ñ'CÔ'CÐPQÐ&ÑRÔRÐRÐRÐRrN   úset[str]c                ó´   — | j         j                             ¦   «         | j         j                             ¦   «         z  }| j                             ¦   «         |z
  S rY   )rB  Ú_inidictÚkeysÚ_ini_aliasesr  )rZ   Ú
known_keyss     rO   rÔ  zConfig._get_unknown_ini_keysä  sG   € Ø”\Ô*×/Ò/Ñ1Ô1°D´LÔ4M×4RÒ4RÑ4TÔ4TÑTˆ
ØŒ|× Ò Ñ"Ô" ZÑ/Ð/rN   r„  c                óP
  — | j         g k    s
J d¦   «         ‚| j        j                             t	          | j        ¬¦  «        ¬¦  «         |r_t          j                             dd¦  «        }t          |¦  «        r0|  
                    t          j        |¦  «        d¦  «        |z   |d d …<   | j                             |t          j        | j        ¦  «        ¬¦  «        }t#          |j        |j        |j        |j        pd | j        j        ¬¦  «        \  }}}}|| _        || _        || _        || _        t9          | j        ¦  «        | j        j        d	<   t9          | j        ¦  «        | j        j        d
<   | j                              ddd¦  «         | j                              dd¦  «         | j                              dddg ¬¦  «         | j                              dddg ¬¦  «         |r1|  
                    |  !                    d¦  «        d¦  «        |z   |d d …<   | j                             |t          j        | j        ¦  «        ¬¦  «        | _"        |rNtG          | j"        j        ¦  «        x}	r3| j         $                    |	¦  «         | j%         &                    ¦   «          |  '                    ¦   «          |  (                    ¦   «          |  )                    ¦   «          | j         *                    |d¬¦  «         t          j                             d¦  «        s&| j"        j+        s| j         ,                    d¦  «         | j         -                    ¦   «          | j                             |t          j        | j        ¦  «        ¬¦  «        | _"        |  .                    ¦   «          |  /                    ¦   «          | j"        j0        €A| j        �t9          | j        j1        ¦  «        }
nt9          | j        ¦  «        }
|
| j"        _0        	 | j         2                    | || j        ¬¦  «         n]# tf          $ rP}| j"        j4        s| j"        j5        r-|  6                    to          d|j8        › �¦  «        d¬¦  «         n‚ Y d }~nd }~ww xY w	 | j         9                    || j        ¬¦  «         n# tt          $ r Y d S w xY w|  ;                    ty          | j        tz          ¦  «        | j        j>        |  !                    d ¦  «        | j        j        | j        d!¬"¦  «        \  | _         | _?        d S )#Nz:can only parse cmdline args at most once per Config object)rý   ri  ÚPYTEST_ADDOPTSr‰   zvia PYTEST_ADDOPTSr·  )ÚinifileÚoverride_inirƒ   Úrootdir_cmd_argrƒ  Úrootdirró  r„  zExtra command line optionsrƒ   rÌ  z!Minimally required pytest versionr®  ÚpathszAdd paths to sys.path)r`   rg  rŒ  r×  z.Plugins that must be present for pytest to run)r`   rŒ  zvia addopts configFró   r›  rá  )r�  rƒ   r=  z"could not load initial conftests: r=   r»   r�  Tr�  )@rƒ   r§   Úpytest_addhooksrn  ro  rý   ri   r¢   r£   rÆ  r¼  Úshlexrh   rB  Úparse_known_argsr»  r@  r   Úinifilenamerô  r“  rö  rò   rð   rQ  rS  Ú_ignored_config_filesr  r\   r€  r¹  rT  Úaddinir”  r’  r    r†  rE  ÚclearrÒ  r¢  r±  rú   rš  ræ  rÙ  rç  Ú_warn_about_skipped_pluginsr�  r  r–  rQ   rg  re  rÂ  r5   rR   rh  r   r‘  r&  r*   r~  rJ  )rZ   rƒ   r„  Úenv_addoptsÚnsr€  rT  rM  Úignored_config_filesÚ	overridesr�  rl   s               rO   rh  zConfig.parseè  sn  € àŒy˜BŠˆˆØHñ Œˆð 	Œ	Ô!×/Ò/Ý dÔ&8Ð9Ñ9Ô9ð 	0ñ 	
ô 	
ð 	
ð ð 	Ýœ*Ÿ.š.Ð)9¸2Ñ>Ô>ˆKÝ�;ÑÔð à×'Ò'­¬°KÑ(@Ô(@ÐBVÑWÔWØñð �Q�Q�Q‘ð Œ\×*Ò*¨4½4¼9ÀTÄ[Ñ;QÔ;QÐ*ÑRÔRˆÝ:IØ”NØœØ”ØœJÐ.¨$ØÔ1Ô5ð;
ñ ;
ô ;
Ñ7ˆ�'˜6Ð#7ð "ˆŒØˆŒØ%9ˆÔ"ØˆŒÝ-0°´Ñ-?Ô-?ˆŒÔ 	Ñ*Ý-0°´Ñ->Ô->ˆŒÔ 	Ñ*àŒ×Ò˜IÐ'CÀVÑLÔLÐLØŒ×Ò˜LÐ*MÑNÔNÐNØŒ×ÒØ˜wÐ-DÈbð 	ñ 	
ô 	
ð 	
ð 	Œ×ÒØØ<ØØð	 	ñ 	
ô 	
ð 	
ð ð 	à×#Ò# D§K¢K°	Ñ$:Ô$:Ð<PÑQÔQÐTXÑXð ���‰Gð %)¤L×$AÒ$AØ�DœI d¤kÑ2Ô2ð %Bñ %
ô %
ˆÔ!ð ð 	'õ /¨tÔ/HÔ/UÑVÔVÐVˆyð 'Ø”×#Ò# IÑ.Ô.Ð.Ø”×$Ò$Ñ&Ô&Ð&Ø×ÒÑÔÐØ×!Ò!Ñ#Ô#Ð#Ø×#Ò#Ñ%Ô%Ð%ØÔ×,Ò,¨TÀÐ,ÑFÔFÐFå”
—’Ð?Ñ@Ô@ð	GàÔ-ÔEð	Gð Ô×:Ò:¸:ÑFÔFÐFð 	Ô×'Ò'Ñ)Ô)Ð)ð
 %)¤L×$AÒ$AØ�DœI d¤kÑ2Ô2ð %Bñ %
ô %
ˆÔ!ð 	×ÒÑ Ô Ð Ø×(Ò(Ñ*Ô*Ð*àÔ$Ô/Ð7ØŒ|Ð'Ý  ¤Ô!4Ñ5Ô5�
�
å  ¤Ñ/Ô/�
Ø3=ˆDÔ%Ô0ð	ØŒI×3Ò3Ø!¨°T´\ð 4ñ ô ð ð øõ %ð 		ð 		ð 		ØÔ(Ô-ð °Ô1JÔ1Rð ð ×.Ò.Ý'Ð(UÈQÌVÐ(UÐ(UÑVÔVØ ð /ñ ô ð ð ð
 ðð ð ð ð øøøøð			øøøð	ØŒL×Ò˜t¨t¬{ÐÑ;Ô;Ð;Ð;øÝð 	ð 	ð 	ØˆFˆFð	øøøð '+×&7Ò&7Ý˜œ¥kÑ2Ô2Ø”;Ô%Ø—k’k +Ñ.Ô.ØÔ1Ô5Ø”]Øð '8ñ '
ô '
Ñ#ˆŒ	�4Ô#Ð#Ð#s+   Ð"P) Ð)
RÐ3AQ>Ñ>RÒ!R) Ò)
R7Ò6R7ÚwarningÚWarningr¼   r®   c                óN  — | j                              d¦  «        rdS | j        j        pg }|                      d¦  «        }t          j        d¬¦  «        5 }t          j        dt          |¦  «        ¦  «         t          ||¦  «         t          j
        ||¬¦  «         ddd¦  «         n# 1 swxY w Y   |rnt          j        |dz
  ¦  «        }|j        j        |j        |j        j        f}| j        j                             t)          |d	         d
d|¬¦  «        ¬¦  «         dS dS )a  Issue and handle a warning during the "configure" stage.

        During ``pytest_configure`` we can't capture warnings using the ``catch_warnings_for_item``
        function because it is not possible to have hook wrappers around ``pytest_configure``.

        This function is mainly intended for plugins that need to issue warnings during
        ``pytest_configure`` (or similar stages).

        :param warning: The warning instance.
        :param stacklevel: stacklevel forwarded to warnings.warn.
        r½   NÚfilterwarningsT)ÚrecordÚalwaysr»   r   r   rœ   r‰   )Úwarning_messageÚwhenrz  Úlocationri  )rý   rã  r’  Úpythonwarningsr”  r½   Úcatch_warningsÚsimplefilterr`   Úapply_warning_filtersr¿   r�   Ú	_getframeÚf_codeÚco_filenameÚf_linenoÚco_namer§   Úpytest_warning_recordedrn  ro  )rZ   r  r¼   Úcmdline_filtersÚconfig_filtersÚrecordsÚframer  s           rO   rÂ  z Config.issue_config_time_warninga  su  € ð Ô×(Ò(¨Ñ4Ô4ð 	ØˆFàÔ3ÔBÐHÀbˆØŸšÐ%5Ñ6Ô6ˆåÔ$¨DÐ1Ñ1Ô1ð 	:°WÝÔ! (­D°©M¬MÑ:Ô:Ð:Ý! .°/ÑBÔBÐBÝŒM˜'¨jÐ9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð
 ð 
	Ý”M *¨q¡.Ñ1Ô1ˆEØ”|Ô/°´ÀÄÔAUÐUˆHØŒIÔ-×;Ò;ÝØ$+¨A¤JØ!ØØ%ð	ñ ô ð <ñ ô ð ð ð ð
	ð 
	s   ÁA	B*Â*B.Â1B.r  ru   c                óˆ   — |                       |¦  «        }t          |t          ¦  «        sJ ‚|                     |¦  «         dS )z­Add a line to a configuration option. The option must have been
        declared but might not yet be set in which case the line becomes
        the first line in its value.N)r”  rž   r  r(  )rZ   r  ru   rŽ  s       rO   rz  zConfig.addinivalue_line„  s>   € ð �KŠK˜ÑÔˆÝ˜!�TÑ"Ô"Ð"Ð"Ð"Ø	�Š�‰ŒˆˆˆrN   r   c                óÀ   — | j         j                             ||¦  «        }	 | j        |         S # t          $ r Y nw xY w|                      |¦  «        x| j        |<   }|S )a~  Return configuration value the an :ref:`configuration file <configfiles>`.

        If a configuration value is not defined in a
        :ref:`configuration file <configfiles>`, then the ``default`` value
        provided while registering the configuration through
        :func:`parser.addini <pytest.Parser.addini>` will be returned.
        Please note that you can even provide ``None`` as a valid
        default value.

        If ``default`` is not provided while registering using
        :func:`parser.addini <pytest.Parser.addini>`, then a default value
        based on the ``type`` parameter passed to
        :func:`parser.addini <pytest.Parser.addini>` will be returned.
        The default values based on ``type`` are:
        ``paths``, ``pathlist``, ``args`` and ``linelist`` : empty list ``[]``
        ``bool`` : ``False``
        ``string`` : empty string ``""``
        ``int`` : ``0``
        ``float`` : ``0.0``

        If neither the ``default`` nor the ``type`` parameter is passed
        while registering the configuration through
        :func:`parser.addini <pytest.Parser.addini>`, then the configuration
        is treated as a string and a default empty string '' is returned.

        If the specified name hasn't been registered through a prior
        :func:`parser.addini <pytest.Parser.addini>` call (usually from a
        plugin), a ValueError is raised.
        )rB  rï  r£   rE  r®  Ú_getini)rZ   r  Úcanonical_nameÚvals       rO   r”  zConfig.getiniŒ  sr   € ð< œÔ2×6Ò6°t¸TÑBÔBˆð	Ø”> .Ô1Ð1øÝð 	ð 	ð 	ØˆDð	øøøà/3¯|ª|¸NÑ/KÔ/KÐKˆŒ�~Ñ&¨Øˆ
s   ¢/ ¯
<»<r`   r  r)  c                ó6   — d|› d|› d|›�}t          |¦  «        ‚)NzOption z  has unknown configuration type z with value )rª   )rZ   r  r`   r  r„   s        rO   Ú_getini_unknown_typezConfig._getini_unknown_type´  s0   € àW�dÐWÐW¸DÐWÐWÈeÐWÐWð 	õ ˜‰oŒoÐrN   c                óî  — | j         j                             ||¦  «        }	 | j         j        |         \  }}}n%# t          $ r}t          d|›�¦  «        |‚d }~ww xY wg }|| j        v r"|                     | j        |         df¦  «         | j         j                             ¦   «         D ]6\  }}	|	|k    r+|| j        v r"|                     | j        |         df¦  «         Œ7|s|S t          |d„ ¬¦  «        d         }
|
j
        }|
j        }|dk    r7t          |t          t          f¦  «        sJ ‚|                      |||||¦  «        S |dk    r|                      |||||¦  «        S t#          |¦  «         d S )	Nzunknown configuration value: TFc                ó4   — | d         j         dk    | d         fS )Nr   r  r   )r  ©rŽ  s    rO   ú<lambda>z Config._getini.<locals>.<lambda>Ò  s   € °!°A´$´+ÀÒ2KÈQÈqÌTÐ1R€ rN   )r  r   Úinir  )rB  rï  r£   rí  r®  rª   r  r(  r¸  Úmaxr  r;  rž   r\   r  Ú_getini_iniÚ_getini_tomlr&   )rZ   r  r  Ú_descriptionr`   rŒ  rl   Ú
candidatesÚaliasÚtargetÚselectedr  r;  s                rO   r  zConfig._getiniº  s¹  € àœÔ2×6Ò6°t¸TÑBÔBˆð	NØ*.¬,Ô*?ÀÔ*OÑ'ˆL˜$  øÝð 	Nð 	Nð 	NÝÐE¸TÐEÐEÑFÔFÈAÐMøøøøð	Nøøøð
 ˆ
Ø˜Tœ\Ð)Ð)Ø×Ò˜tœ|¨NÔ;¸TÐBÑCÔCÐCØ!œ\Ô6×<Ò<Ñ>Ô>ð 	@ð 	@‰MˆE�6Ø˜Ò'Ð'¨E°T´\Ð,AÐ,AØ×!Ò! 4¤<°Ô#6¸Ð">Ñ?Ô?Ð?øàð 	ØˆNõ
 �zÐ'RÐ'RÐSÑSÔSÐTUÔVˆØ”ˆØŒ}ˆà�5Š=ˆ=å˜e¥c­4 [Ñ1Ô1Ð1Ð1Ð1Ø×#Ò# D¨.¸$ÀÀwÑOÔOÐOØ�VŠ^ˆ^Ø×$Ò$ T¨>¸4ÀÈÑPÔPÐPå˜ÑÔÐÐÐs   ¢9 ¹
AÁAÁAr  ústr | list[str]rŒ  c                ó^  ‡— |dk    rX| j         �| j         j        n| j        j        Št	          |t
          ¦  «        rt          j        |¦  «        n|}ˆfd„|D ¦   «         S |dk    r+t	          |t
          ¦  «        rt          j        |¦  «        n|S |dk    rEt	          |t
          ¦  «        r.d„ t          d„ |                     d¦  «        ¦  «        D ¦   «         S |S |d	k    r.t          t          |¦  «         
                    ¦   «         ¦  «        S |d
k    r|S |dk    r:t	          |t
          ¦  «        st          d|› d|›�¦  «        d‚t          |¦  «        S |dk    r:t	          |t
          ¦  «        st          d|› d|›�¦  «        d‚t          |¦  «        S |                      |||¦  «        S )z¯Handle config values read in INI mode.

        In INI mode, values are stored as str or list[str] only, and coerced
        from string based on the registered type.
        r÷  Nc                ó   •— g | ]}‰|z  ‘ŒS rM   rM   ©r  rŽ  Údps     €rO   ú
<listcomp>z&Config._getini_ini.<locals>.<listcomp>  s   ø€ Ð1Ð1Ð1˜q�B˜‘FÐ1Ð1Ð1rN   rƒ   Úlinelistc                ó   — g | ]}|¯|‘ŒS rM   rM   )r  Úts     rO   r4  z&Config._getini_ini.<locals>.<listcomp>  s   € ÐTÐTÐT˜aÐRSÐT˜ÐTÐTÐTrN   c                ó*   — |                       ¦   «         S rY   ©rÈ  r$  s    rO   r%  z$Config._getini_ini.<locals>.<lambda>  s   € °·²±´€ rN   r‚   re   Ústringr®   z"Expected an int string for option z of type integer, but got: Úfloatz#Expected a float string for option z of type float, but got: )rT  r  rò   rð   rž   r\   rù  rh   ÚmapÚ
_strtoboolrÈ  r  r®   r;  r!  )rZ   r  r  r`   r  rŒ  Úinput_valuesr3  s          @rO   r(  zConfig._getini_iniß  sä  ø€ ð6 �7Š?ˆ?ð ”<Ð+ð ”Ô#Ð#àÔ+Ô/ð õ
 2<¸EÅ3Ñ1GÔ1GÐR�5œ; uÑ-Ô-Ð-ÈUˆLØ1Ð1Ð1Ð1 LÐ1Ñ1Ô1Ð1Ø�VŠ^ˆ^Ý)3°E½3Ñ)?Ô)?ÐJ•5”;˜uÑ%Ô%Ð%ÀUÐJØ�ZÒÐÝ˜%¥Ñ%Ô%ð ØTÐT¥3Ð':Ð':¸E¿KºKÈÑ<MÔ<MÑ#NÔ#NÐTÑTÔTÐTà�Ø�VŠ^ˆ^Ý�c %™jœj×.Ò.Ñ0Ô0Ñ1Ô1Ð1Ø�XÒÐØˆLØ�UŠ]ˆ]Ý˜e¥SÑ)Ô)ð ÝØc¸ÐcÐcÐZ_ÐcÐcñô àðõ �u‘:”:ÐØ�WŠ_ˆ_Ý˜e¥SÑ)Ô)ð ÝØb¸$ÐbÐbÐY^ÐbÐbñô àðõ ˜‘<”<Ðà×,Ò,¨T°4¸Ñ?Ô?Ð?rN   c                óœ  ‡
— t          j        |¦  «        j        }|dk    rÆt          |t          ¦  «        st          | j        › d|› d|› d|›�¦  «        ‚t          |¦  «        D ]U\  }}t          |t          ¦  «        s;t          j        |¦  «        j        }	t          | j        › d|› d|› d|	› d|›�	¦  «        ‚ŒV| j        �| j        j	        n| j
        j        Š
ˆ
fd„|D ¦   «         S |d	v r«t          |t          ¦  «        s"t          | j        › d|› d
|› d|› d|›�	¦  «        ‚t          |¦  «        D ]U\  }}t          |t          ¦  «        s;t          j        |¦  «        j        }	t          | j        › d|› d|› d|	› d|›�	¦  «        ‚ŒVt	          |¦  «        S |dk    r6t          |t          ¦  «        st          | j        › d|› d|› d|›�¦  «        ‚|S |dk    rKt          |t          ¦  «        rt          |t          ¦  «        rt          | j        › d|› d|› d|›�¦  «        ‚|S |dk    rRt          |t          t          f¦  «        rt          |t          ¦  «        rt          | j        › d|› d|› d|›�¦  «        ‚|S |dk    r6t          |t          ¦  «        st          | j        › d|› d|› d|›�¦  «        ‚|S |                      |||¦  «        S )zæHandle TOML config values with strict type validation and no coercion.

        In TOML mode, values already have native types from TOML parsing.
        We validate types match expectations exactly, including list items.
        r÷  z: config option 'z'' expects a list for type 'paths', got r^   z/' expects a list of strings, but item at index z is Nc                ó   •— g | ]}‰|z  ‘ŒS rM   rM   r2  s     €rO   r4  z'Config._getini_toml.<locals>.<listcomp>=  s   ø€ Ð*Ð*Ð*˜q�B˜‘FÐ*Ð*Ð*rN   >   rƒ   r5  z' expects a list for type 'z', got re   z' expects a bool, got r®   z' expects an int, got r;  z' expects a float, got r:  z' expects a string, got )Úbuiltinsr`   rB   rž   r  r  rT  Ú	enumerater\   r  rò   rð   re   r®   r;  r!  )rZ   r  r  r`   r  rŒ  Ú
value_typer™  ÚitemÚ	item_typer3  s             @rO   r)  zConfig._getini_toml  sf  ø€ õ ”] 5Ñ)Ô)Ô2ˆ
Ø�7Š?ˆ?å˜e¥TÑ*Ô*ð ÝØ”|ð 3ð 3°dð 3ð 3Ø%ð3ð 3Ø).ð3ð 3ñô ð õ % UÑ+Ô+ð ð ‘��4Ý! $­Ñ,Ô,ð Ý (¤¨dÑ 3Ô 3Ô <�IÝ#Øœ<ð Jð J¸$ð Jð JØ-.ðJð JØ4=ðJð JØAEðJð Jñô ð ðð ”<Ð+ð ”Ô#Ð#àÔ+Ô/ð ð
 +Ð*Ð*Ð* EÐ*Ñ*Ô*Ð*ØÐ)Ð)Ð)å˜e¥TÑ*Ô*ð ÝØ”|ð 3ð 3°dð 3ð 3ÐW[ð 3ð 3Ø%ð3ð 3Ø).ð3ð 3ñô ð õ % UÑ+Ô+ð ð ‘��4Ý! $­Ñ,Ô,ð Ý (¤¨dÑ 3Ô 3Ô <�IÝ#Øœ<ð Jð J¸$ð Jð JØ-.ðJð JØ4=ðJð JØAEðJð Jñô ð ðõ ˜‘;”;ÐØ�VŠ^ˆ^å˜e¥TÑ*Ô*ð ÝØ”|ð 3ð 3°dð 3ð 3Ø%ð3ð 3Ø).ð3ð 3ñô ð ð ˆLØ�UŠ]ˆ]å˜e¥SÑ)Ô)ð ­Z¸½tÑ-DÔ-Dð ÝØ”|ð 3ð 3°dð 3ð 3Ø%ð3ð 3Ø).ð3ð 3ñô ð ð ˆLØ�WŠ_ˆ_å˜e¥e­S \Ñ2Ô2ð µjÀÍÑ6MÔ6Mð ÝØ”|ð 3ð 3°dð 3ð 3Ø%ð3ð 3Ø).ð3ð 3ñô ð ð ˆLØ�XÒÐå˜e¥SÑ)Ô)ð ÝØ”|ð 3ð 3°dð 3ð 3Ø%ð3ð 3Ø).ð3ð 3ñô ð ð ˆLà×,Ò,¨T°4¸Ñ?Ô?Ð?rN   rR   úlist[pathlib.Path] | Nonec                ó°  — 	 | j                              ||¦  «        \  }}n# t          $ r Y d S w xY w|j        €J ‚t	          j        |j        ¦  «        j        }g }|D ]x}t          |t          j	        ¦  «        rt	          j        |¦  «        }n2| 
                    dt          j        ¦  «        }t          ||z  ¦  «        }|                     |¦  «         Œy|S )Nrü  )rý   r°  r®  rº  r÷   rø   r  rž   ri   r  rl  rj   r.   r(  )rZ   r  rR   r¨  ÚrelrootsÚmodpathÚvaluesÚrelroots           rO   Ú_getconftest_pathlistzConfig._getconftest_pathlistp  sã   € ð	Ø Ô.×AÒAÀ$ÈÑMÔM‰MˆC��øÝð 	ð 	ð 	Ø�4�4ð	øøøàŒ|Ð'Ð'Ð'Ý”,˜sœ|Ñ,Ô,Ô3ˆØ%'ˆØð 	#ð 	#ˆGÝ˜'¥2¤;Ñ/Ô/ð :Ý!œ, wÑ/Ô/��à!Ÿ/š/¨#­r¬vÑ6Ô6�Ý& w°Ñ'8Ñ9Ô9�Ø�MŠM˜'Ñ"Ô"Ð"Ð"Øˆs   ‚! ¡
/®/FÚskipc                ó@  — | j         j                             ||¦  «        }	 t          | j        |¦  «        }|€|rt          |¦  «        ‚|S # t
          $ rG}|t          ur|cY d}~S |rddl}|                     d|›d�¦  «         t          d|›�¦  «        |‚d}~ww xY w)as  Return command line option value.

        :param name: Name of the option. You may also specify
            the literal ``--OPT`` option instead of the "dest" option name.
        :param default: Fallback value if no option of that name is **declared** via :hook:`pytest_addoption`.
            Note this parameter will be ignored when the option is **declared** even if the option's value is ``None``.
        :param skip: If ``True``, raise :func:`pytest.skip` if option is undeclared or has a ``None`` value.
            Note that even if ``True``, if a default was specified it will be returned instead of a skip.
        Nr   zno z option foundzno option named )
rB  Ú	_opt2destr£   r&  r@  r'  r(   r:   rM  rª   )rZ   r  rŒ  rM  r  rl   r:   s          rO   Ú	getoptionzConfig.getoptionƒ  sÖ   € ð Œ|Ô%×)Ò)¨$°Ñ5Ô5ˆð	AÝ˜$œ+ tÑ,Ô,ˆCØˆ{˜tˆ{Ý$ TÑ*Ô*Ð*ØˆJøÝð 	Að 	Að 	AØ�fÐ$Ð$Ø������Øð 9Ø���à—’Ð7 $Ð7Ð7Ð7Ñ8Ô8Ð8ÝÐ8°Ð8Ð8Ñ9Ô9¸qÐ@øøøøð	Aøøøs#   ¢)A Á
BÁ
BÁ BÁ&2BÂBc                ó,   — |                       |¦  «        S )z$Deprecated, use getoption() instead.©rP  ©rZ   r  rR   s      rO   ÚgetvaluezConfig.getvalueœ  s   € à�~Š~˜dÑ#Ô#Ð#rN   c                ó0   — |                       |d¬¦  «        S )z-Deprecated, use getoption(skip=True) instead.T)rM  rR  rS  s      rO   ÚgetvalueorskipzConfig.getvalueorskip   s   € à�~Š~˜d¨ˆ~Ñ.Ô.Ð.rN   Ú
assertionsr   ÚVERBOSITY_ASSERTIONSÚ
test_casesÚVERBOSITY_TEST_CASESrç   ÚVERBOSITY_SUBTESTSr0  Ú_VERBOSITY_INI_DEFAULTÚverbosity_typec                ó&  — |                       dd¬¦  «        }t          |t          ¦  «        sJ ‚|€|S t                               |¦  «        }|| j        j        vr|S |                      |¦  «        }|t          j        k    r|S t          |¦  «        S )a´  Retrieve the verbosity level for a fine-grained verbosity type.

        :param verbosity_type: Verbosity type to get level for. If a level is
            configured for the given type, that value will be returned. If the
            given type is not a known verbosity type, the global verbosity
            level will be returned. If the given type is None (default), the
            global verbosity level will be returned.

        To configure a level for a fine-grained verbosity type, the
        configuration file should have a setting for the configuration name
        and a numeric value for the verbosity level. A special value of "auto"
        can be used to explicitly use the global verbosity level.

        Example:

        .. tab:: toml

            .. code-block:: toml

                [tool.pytest]
                verbosity_assertions = 2

        .. tab:: ini

            .. code-block:: ini

                [pytest]
                verbosity_assertions = 2

        .. code-block:: console

            pytest -v

        .. code-block:: python

            print(config.get_verbosity())  # 1
            print(config.get_verbosity(Config.VERBOSITY_ASSERTIONS))  # 2
        Úverboser   )rŒ  )	rP  rž   r®   rí   Ú_verbosity_ini_namerB  rí  r”  r\  )rZ   r]  Úglobal_levelÚini_nameÚlevels        rO   Úget_verbosityzConfig.get_verbosity­  s–   € ðN —~’~ i¸�~Ñ;Ô;ˆÝ˜,­Ñ,Ô,Ð,Ð,Ð,ØÐ!ØÐå×-Ò-¨nÑ=Ô=ˆØ˜4œ<Ô0Ð0Ð0ØÐà—’˜HÑ%Ô%ˆØ•FÔ1Ò1Ð1ØÐå�5‰zŒzÐrN   c                ó   — d| › �S )NÚ
verbosity_rM   )r]  s    rO   r`  zConfig._verbosity_ini_nameã  s   € à,˜NÐ,Ð,Ð,rN   r=  r+   rg  c                ó|   — |                       t                               |¦  «        |dt          j        ¬¦  «         dS )a¦  Add a output verbosity configuration option for the given output type.

        :param parser: Parser for command line arguments and config-file values.
        :param verbosity_type: Fine-grained verbosity category.
        :param help: Description of the output this type controls.

        The value should be retrieved via a call to
        :py:func:`config.get_verbosity(type) <pytest.Config.get_verbosity>`.
        r:  )rg  r`   rŒ  N)rý  rí   r`  r\  )r=  r]  rg  s      rO   Ú_add_verbosity_inizConfig._add_verbosity_iniç  sF   € ð 	�ŠÝ×&Ò& ~Ñ6Ô6ØØÝÔ1ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
rN   r;  c                ó„   — t          ¦   «         s1|dk    rd}nd}|                      t          |¦  «        d¬¦  «         d S d S )Nr™  zRASSERTIONS ARE NOT EXECUTED and FAILING TESTS WILL PASS.  Are you using python -O?z¥assertions not in test modules or plugins will be ignored because assert statements are not executed by the underlying Python interpreter (are you using python -O?)
r>   r»   )Ú_assertion_supportedrÂ  r5   )rZ   r;  rÅ  s      rO   r   z$Config._warn_about_missing_assertionù  sp   € Ý#Ñ%Ô%ð 	Ø�wŠˆð(ð �ð3ð ð ×*Ò*Ý# LÑ1Ô1Øð +ñ ô ð ð ð ð	ð 	rN   c           	     ó~   — | j         j        D ]/\  }}|                      t          d|›d|› �¦  «        d¬¦  «         Œ0d S )Nzskipped plugin r^   r=   r»   )rý   rD  rÂ  r5   )rZ   r  r„   s      rO   rÿ  z"Config._warn_about_skipped_plugins  sg   € Ø $Ô 2Ô Bð 	ð 	ÑˆK˜Ø×*Ò*Ý#Ð$L°kÐ$LÐ$LÀsÐ$LÐ$LÑMÔMØð +ñ ô ð ð ð	ð 	rN   )rý   rõ   rò   r7  r’   rì   rV   rW   )rV   r  )rV   rS   )rV   r‚  )rU  rV  rV   rW   rî  )rV   r%   )rý   rõ   rƒ   ró  rV   rí   rY   )rl  rm  r@  rn  rV   rW   )rz  r\   rV   r\   )r�  r‚  rƒ   ró  rV   rí   )rÊ  r)   rV   rW   )r�  rí   rV   rW   )r§   r7   r¡  re   rV   rW   )rƒ   ró  rµ  r\   rV   ró  )rƒ   ró  r~  re   r�  ró  rƒ  rS   r€  rS   r¿   re   rV   r½  )rV   rÇ  )r1  r\   rV   rW   )rV   rë  )T)rƒ   ró  r„  re   rV   rW   )r  r  r¼   r®   rV   rW   )r  r\   ru   r\   rV   rW   )r  r\   rV   r   )r  r\   r`   r\   r  r)  rï  )
r  r\   r  r\   r`   r\   r  r/  rŒ  r   )
r  r\   r  r\   r`   r\   r  r)  rŒ  r   )r  r\   rR   rS   rV   rF  )r  r\   rŒ  r   rM  re   )r]  rì   rV   r®   )r]  r\   rV   r\   )r=  r+   r]  r\   rg  r\   rV   rW   )r;  r\   rV   rW   )BrB   rC   rD   rE   r   ÚdataclassesÚ	dataclassrö   r/  ÚEnumr5  r,  r[   r   r'   ÚpropertyrM  r€  rT  rY  r[  r©   rc  r  ry  r€  Úclassmethodrˆ  rA  Úhookimplr–  r¢  rž  r±  r°  r¼  r‘  rÊ  rÒ  rÉ  rç  rÕ  rÔ  rh  rÂ  rz  r”  r!  r  r(  r)  rL  r(   rP  rT  rV  rX  rZ  r[  r\  rd  rÃ   r`  rh  r   rÿ  rM   rN   rO   rí   rí     s|  € € € € € € ðð ð Ø€[Ô $Ð'Ñ'Ô'ð1ð 1ð 1ð 1ð 1ñ 1ô 1ñ (Ô'ñ „Uð1ðB ð  ð  ð  ð  �T”Yñ  ô  ð  ð €L€L�Lð 6:Øð8"ð 8"ð 8"ð 8"ð 8"ð 8"ðt ð 0à	ˆØfñ

ô 

ð 
ð	(ð 	(ð 	(ñ 
Œñ

ô 

ð	(ð 	(ð 
ð	0ð 	0ð 	0ñ 
Œð	0ð ðð ð ñ „Xðð ðð ð ñ „Xðð+ð +ð +ð +ðKð Kð Kð Kð
=ð =ð =ð =ð$ð $ð $ð $ðð ð ð ð< -1ð#ð #ð #ð #ð #ð$	ð 	ð 	ð 	ð ðð ð ñ „[ðð8ð 8ð 8ð 8ð €X�dÐÑÔð
ð 
ð 
ñ Ôð
ð41ð 1ð 1ð 1ð.$ð $ð $ð $ð.8ð 8ð 8ð 8ð*ð *ð *ð *ð
ð 
ð 
ð 
ð+ð +ð +ð +ðZ €X�dÐÑÔð,ð ,ð ,ñ Ôð,ðð ð ð ðLð Lð Lð Lðð ð ð ðBSð Sð Sð Sð0ð 0ð 0ð 0ðw
ð w
ð w
ð w
ð w
ðr!ð !ð !ð !ðFð ð ð ð$ð $ð $ð $ðPð ð ð ð#ð #ð #ð #ðJ;@ð ;@ð ;@ð ;@ðzR@ð R@ð R@ð R@ðhð ð ð ð& 39Àuð Að Að Að Að Að2$ð $ð $ð $ð $ð/ð /ð /ð /ð /ð
 #/ÐÐ.Ð.Ð.Ñ.à".ÐÐ.Ð.Ð.Ñ.à *ÐÐ*Ð*Ð*Ñ*à$*ÐÐ*Ð*Ð*Ñ*ð4ð 4ð 4ð 4ð 4ðl ð-ð -ð -ñ „\ð-ð ð
ð 
ð 
ñ „\ð
ð"ð ð ð ð*ð ð ð ð ð rN   c                 ó*   — 	 J ‚# t           $ r Y dS w xY w)NFT)r¹  rM   rN   rO   rj  rj    s.   € ðØˆuøÝð ð ð Øˆtˆtðøøøs   ‚ „
‘rœ   úTextIO | Noner%   c                óâ   — t          |¬¦  «        }| j        j        dk    rd|_        n| j        j        dk    rd|_        | j        j        dk    rd|_        n| j        j        dk    rd|_        |S )zÚCreate a TerminalWriter instance configured according to the options
    in the config object.

    Every code which requires a TerminalWriter object and has access to a
    config object should use this function.
    rš   ÚyesTÚnoF)r%   r@  ÚcolorÚ	hasmarkupÚcode_highlight)rœ   rm   r}   s      rO   Úcreate_terminal_writerrz    s|   € õ 
˜TÐ	"Ñ	"Ô	"€Bà„}Ô˜eÒ#Ð#ØˆŒˆØ	ŒÔ	 Ò	$Ð	$ØˆŒà„}Ô# uÒ,Ð,Ø ˆÔÐØ	ŒÔ	%¨Ò	-Ð	-Ø!ˆÔà€IrN   r  c                óf   — |                       ¦   «         } | dv rdS | dv rdS t          d| ›�¦  «        ‚)a  Convert a string representation of truth to True or False.

    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
    are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
    'val' is anything else.

    .. note:: Copied from distutils.util.
    )Úyru  r7  ÚtrueÚonÚ1T)rÉ  rv  ÚfÚfalseÚoffÚ0Fzinvalid truth value )Úlowerrª   )r  s    rO   r=  r=  7  sJ   € ð �)Š)‰+Œ+€CØ
Ð2Ð2Ð2ØˆtØ	Ð5Ð	5Ð	5ØˆuåÐ7°Ð7Ð7Ñ8Ô8Ð8rN   é2   )ÚmaxsizerÌ  Úescapeú9tuple[warnings._ActionKind, str, type[Warning], str, int]c          	     ón  — d}t          d| › d�¦  «        }|                      d¦  «        }t          |¦  «        dk    rHd}t          dt          |¦  «        › d|› d	�¦  «        }t          |                     |¬
¦  «        ¦  «        ‚t          |¦  «        dk     r(|                     d¦  «         t          |¦  «        dk     °(d„ |D ¦   «         \  }}}	}
}	 t          j        |¦  «        }nH# t          j        $ r6}t          |                     t          |¦  «        ¬
¦  «        ¦  «        d‚d}~ww xY w	 t          |	¦  «        }ne# t          $ r ‚ t          $ rN t          j        ¦   «         }|                     d¬¦  «        }t          |                     |¬
¦  «        ¦  «        d‚w xY w|r|rt!          j        |¦  «        }|
r|rt!          j        |
¦  «        dz   }
|rb	 t%          |¦  «        }|dk     rt'          d¦  «        ‚n># t&          $ r/}t          |                     d|›d|› �¬
¦  «        ¦  «        d‚d}~ww xY wd}	 t!          j        |¦  «         t!          j        |
¦  «         nF# t           j        $ r4}t          |                     d|j        ›d|› �¬
¦  «        ¦  «        d‚d}~ww xY w||||
|fS )zíParse a warnings filter string.

    This is copied from warnings._setoption with the following changes:

    * Does not apply the filter.
    * Escaping is optional.
    * Raises UsageError so we get nice error messages on failure.
    TzF        while parsing the following warning configuration:

          z8

        This error occurred:

        {error}
        ú:r@   zJhttps://docs.python.org/3/library/warnings.html#describing-warning-filtersz            Too many fields (z�), expected at most 5 separated by colons:

              action:message:category:module:line

            For more information please consult: z
            )Úerrorr‰   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rY   r9  )r  Úss     rO   r�  z'parse_warning_filter.<locals>.<genexpr>t  s*   è è € Ð3MÐ3MÀ!°A·G²G±I´IÐ3MÐ3MÐ3MÐ3MÐ3MÐ3MrN   Nrr  )rr   z\Zr   znumber is negativezinvalid lineno r^   zInvalid regex )r   rh   rÆ  r   r  r(  r½   Ú
_getactionÚ_OptionErrorr\   Ú_resolve_warning_categoryrê  rU   r"   Úfrom_currentrx   Úrer‡  r®   rª   Úcompiler‹  Úpattern)rÌ  r‡  Ú__tracebackhide__Úerror_templater	  Údoc_urlr‹  Úaction_r1  Ú	category_ÚmoduleÚlineno_Úactionrl   Úcategoryr|   Úexception_textÚlinenos                     rO   Úparse_warning_filterr   I  sk  € ð ÐÝð	ð ð	ð 	ð 	ñ
ô 
€Nð �IŠI�c‰NŒN€EÝ
ˆ5�z„z�A‚~€~àXð 	õ ðÝ! %™jœjðð ð
 3:ðð ð ñ
ô 
ˆõ ˜×.Ò.°UÐ.Ñ;Ô;Ñ<Ô<Ð<å
ˆe‰*Œ*�qŠ.ˆ.Ø�Š�RÑÔÐõ ˆe‰*Œ*�qŠ.ˆ.à3MÐ3MÀuÐ3MÑ3MÔ3MÑ0€GˆW�i ¨ðHÝ'/Ô':¸7Ñ'CÔ'CˆˆøÝÔ ð Hð Hð HÝ˜×.Ò.µS¸±V´VÐ.Ñ<Ô<Ñ=Ô=À4ÐGøøøøðHøøøðPÝ";¸IÑ"FÔ"FˆˆøÝð ð ð ØÝð Pð Pð PÝ Ô-Ñ/Ô/ˆØ!×)Ò)°Ð)Ñ9Ô9ˆÝ˜×.Ò.°^Ð.ÑDÔDÑEÔEÈ4ÐOðPøøøð ð %�6ð %Ý”)˜GÑ$Ô$ˆØð +�&ð +Ý”˜6Ñ"Ô" UÑ*ˆØð 
ð	Ý˜‘\”\ˆFØ˜ŠzˆzÝ Ð!5Ñ6Ô6Ð6ð øåð 	ð 	ð 	ÝØ×%Ò%Ð,N¸gÐ,NÐ,NÈ1Ð,NÐ,NÐ%ÑOÔOñô àðøøøøð	øøøð
 ˆðÝ
Œ
�7ÑÔÐÝ
Œ
�6ÑÔÐÐøÝŒ8ð ð ð ÝØ×!Ò!Ð(K¸¼Ð(KÐ(KÈÐ(KÐ(KÐ!ÑLÔLñ
ô 
àð	øøøøðøøøð �7˜H f¨fÐ4Ð4sU   ÃC) Ã)D.Ã81D)Ä)D.Ä2E ÅA"F$Ç$H È
H;È*H6È6H;É(I* É*J-É9/J(Ê(J-r�  útype[Warning]c                ó6  — d}| st           S d| vrddl}| }n-|                      d¦  «        \  }}}t          j        |¦  «        }t          ||¦  «        }t          |t           ¦  «        st          |› d�¦  «        ‚t          t          t                    |¦  «        S )z§
    Copied from warnings._getcategory, but changed so it lets exceptions (specially ImportErrors)
    propagate so we can get access to their tracebacks (#9218).
    Tú.r   Nz is not a Warning subclass)
r  rA  Ú
rpartitionrg   rè  r&  Ú
issubclassr   r   r`   )r�  r•  r  Úklassrš  re  Úcats          rO   r�  r�  š  s«   € ð
 ÐØð Ýˆà
�(ÐÐØÐÐÐàˆˆà#×.Ò.¨sÑ3Ô3Ñˆ��5ÝÔ# FÑ+Ô+ˆÝ
�!�UÑ
Ô
€CÝ�c�7Ñ#Ô#ð =Ý˜CÐ;Ð;Ð;Ñ<Ô<Ð<Ý••W”˜sÑ#Ô#Ð#rN   r  r  c                ó‚  — | D ]\}	 t          j        t          |d¬¦  «        Ž  Œ!# t          $ r/}t          j        d|j        › d|› �t          ¦  «         Y d}~ŒUd}~ww xY w|D ]\}	 t          j        t          |d¬¦  «        Ž  Œ!# t          $ r/}t          j        d|j        › d|› �t          ¦  «         Y d}~ŒUd}~ww xY wdS )z8Applies pytest-configured filters to the warnings moduleF)r‡  z Failed to import filter module 'z': NT)r½   r  r   rê  r¿   r  r5   )r  r  rÌ  rl   s       rO   r  r  °  s&  € ð ð ð ˆð	ÝÔ#Õ%9¸#ÀeÐ%LÑ%LÔ%LÐMÐMÐMøÝð 	ð 	ð 	ÝŒMØC°1´6ÐCÐC¸cÐCÐCÕEXñô ð ð ˆHˆHˆHˆHøøøøð		øøøð ð ð ˆð	ÝÔ#Õ%9¸#ÀdÐ%KÑ%KÔ%KÐLÐLÐLøÝð 	ð 	ð 	ÝŒMØC°1´6ÐCÐC¸cÐCÐCÕEXñô ð ð ˆHˆHˆHˆHøøøøð		øøøðð s,   †$¤
A®%AÁAÁ%BÂ
B<Â%B7Â7B<)rc   rd   rV   re   )rl   rQ   rm   r   rV   rW   )rl   r   rm   r   rV   rW   )r†   r‡   rV   r\   )NN)rƒ   r�   rŽ   r�   rV   r�   )rƒ   r�   rŽ   r�   r’   r\   rV   r�   r"  )rR   r\   rÄ   r\   rV   r\   )rƒ   rë   rŽ   r�   r’   rì   rV   rí   )rV   rõ   rY   )rƒ   r  rŽ   r�   r’   rì   rV   rí   )rR   rS   rV   rS   )r  r   r  r\   r  r  rV   r  )rò  rÛ  rV   ró  )rø  rù  rV   rú  )rV   re   )rœ   rí   rm   rs  rV   r%   )r  r\   rV   re   )rÌ  r\   r‡  re   rV   rˆ  )r�  r\   rV   r¡  )r  rù  r  rù  rV   rW   )‡rE   Ú
__future__r   r>  rA  Úcollections.abcrö  r   r   r   r   r   r	   r
   rF  r»  rl  r/  Ú	functoolsr   r•  rg   Úimportlib.metadatar$  ri   r÷   r’  rù  r�   Útextwrapr   rp  r   Útypingr   r   r   r   r   r   r   r½   Úpluggyr   r   r   r   r   Ú
exceptionsr   r   Ú	findpathsr   r   r   r    r*  r!   Ú_pytest._coder"   r#   Ú_pytest._code.coder$   Ú_pytest._ior%   Ú_pytest.compatr&   r'   r(   Ú_pytest.config.argparsingr)   r*   r+   r¾   Ú_pytest.hookspecÚ_pytest.outcomesr,   r-   Ú_pytest.pathlibr.   r/   r0   r1   r2   r3   Ú_pytest.stashr4   Ú_pytest.warning_typesr5   r6   Ú_pytest.assertion.rewriter7   Ú_pytest.cacheproviderr8   Ú_pytest.terminalr9   r)  rP  rq  rF  ÚIntEnumr<   rU   rQ   rk   r€   r…   rŒ   r•   r“   r¸   rÀ   rÂ   rÉ   rË   rÐ  rû   rä  rÿ   r  r¤   r  r2  rõ   rÝ  r  r\   r  rí   rj  rz  r=  r   r�  r  rM   rN   rO   ú<module>rÀ     sÄ	  ðà CÐ Cà "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à .Ð .Ð .Ð .Ð .Ð .Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð ð 2Ø@Ð@Ð@Ð@Ð@Ð@Ø+Ð+Ð+Ð+Ð+Ð+Ø1Ð1Ð1Ð1Ð1Ð1à€ðð ˆ>˜(Ñ#Ô#€Øˆ>˜(Ñ#Ô#€ð ðð ð ð ð ˆtŒ|ñ ô ñ „ðð4Oð Oð Oð Oð O˜Iñ Oô Oð OðXð Xð Xð Xð)ð )ð )ð )ð"-ð -ð -ð -ð
ð 
ð 
ð 
ð 15Ø48ðCð Cð Cð Cð Cð$ 15Ø48ð'>ð '>ð '>ð '>ð '>ð '>ðTð ð ð ð$ð ð ð ðð ð ð ð ñ ô ð ðð ð ð ðð ð ð ðÐ ðØðàðð ðð ð	ð
 ðð ðð ðð ðð ðð ðð ðð ðð ðð ðð ðð  ð!ð" ð#ð$ ð%ð& ð'ð( ð)ð* ð+ð, ð-ð. ð/ð0 ð1ð2 ð3ð4 ð5ð €ð:Øðàðð ðð ð	€ð "&Ø48ðð ð	ð ð ð ð ð ð2&ð &ð &ð &ð 59ðð ð	ð ð ð ð ð ð@ð ð ð ðð ð ð ð@ ðS(ð S(ð S(ð S(ð S(˜-ñ S(ô S(ñ „ðS(ðlð ð ð ð*>Cð >Cð >Cð >CðB)ð )ð )ð )ð )˜^¨C°¨HÔ5ñ )ô )ð )ð0 ðBð Bð Bð Bð Bñ Bô Bñ „ðBðJ ð ð ð ð +/ðð ð ð ð ð09ð 9ð 9ð 9ð$ €�2ÐÑÔðM5ð M5ð M5ñ ÔðM5ð`$ð $ð $ð $ð,ð ð ð ð ð rN   