§
    u
Êj8•  ã            	      ó  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZmZm Z m!Z!m"Z" ddl#Z#ddl$Z$ddl%m&Z& dd	l'm(Z( dd
l$m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 e
j4        dk    rddlm5Z5 nddl6m5Z5 e
j4        dk    rddlm7Z7 nddl8m7Z7 erddlm9Z9 ed         Z: e!dee         ee         z  ¬¦  «        Z; ed¦  «        Z<ee<e;f         Z=eg ef         Z>de?d<    G d„ de@¦  «        ZA G d„ deBejC        ¦  «        ZD e#jE        d¦  «        ZF G d„ d¦  «        ZGdZHd¿d$„ZIe"d%d%d%d%d%d%d&œdÀd5„¦   «         ZJe"	 dÁd%d%d%d%d%dd&œdÂd7„¦   «         ZJ	 	 dÃdÄd<„ZJdÅd>„ZKdÆd?„ZLdÅd@„ZMdÇdC„ZNdÈdD„ZOdEZPdÉdI„ZQdJZRdÊdM„ZSdËdN„ZT e$jU        dO¬P¦  «        dÌdR„¦   «         ZVdÍdZ„ZW ed[¦  «        ZX e!d\¦  «        ZYdÎd^„ZZ ed_¦  «        Z[ e!d`¦  «        Z\dÏdb„Z] edc¦  «        Z^ e!dd¦  «        Z_dÐdg„Z` edh¦  «        Za e!di¦  «        ZbdÑdl„ZcdÒdp„Zd G dq„ dre,¦  «        Ze G ds„ dtee¦  «        Zf G du„ dvee¦  «        Zg G dw„ dxee¦  «        Zh G dy„ dzee¦  «        ZidÓd}„Zj e$jU        d~dO¬¦  «        dÔd„„¦   «         Zk e$jU        dO¬P¦  «        dÕd‡„¦   «         Zlejm        dÖd‹„¦   «         Znejm        d×dŽ„¦   «         ZodØd�„ZpdÙd�„Zq	 dÚdÛd“„ZrdÜd•„Zs e$jU        dOdO¬–¦  «        dÝd™„¦   «         ZtdÞd�„Zu e$jU        dO¬ž¦  «        dßdŸ„¦   «         Zvd Zwd¡Zxd¢Zyd£Zzdàd§„Z{dád¨„Z|dâd©„Z}dªZ~dãd¬„Ze(D ]&Z€ ee€j�        ¦  «         e‚¦   «         d­e€j�        › d®�<   Œ' e$jJ        d¯¬°¦  «        däd²„¦   «         Zƒ e$jJ        d¯dO¬³¦  «        dØd´„¦   «         Z„dåd¶„Z…dæd¹„Z†e$jJ        dçdº„¦   «         Z‡e$jJ        dçd»„¦   «         Zˆ e$jJ        d¯¬°¦  «        dèd½„¦   «         Z‰ e$jJ        d¯¬°¦  «        dèd¾„¦   «         ZŠdS )ézpytest-asyncio implementation.é    )ÚannotationsN)ÚAbstractEventLoop)	ÚAsyncIteratorÚ	AwaitableÚCallableÚ
CollectionÚ	GeneratorÚIterableÚIteratorÚMappingÚSequence)ÚAsyncGeneratorTypeÚCoroutineType)ÚTYPE_CHECKINGÚAnyÚLiteralÚ	ParamSpecÚ	TypeAliasÚTypeVarÚoverload)Úresolve_fixture_function)ÚScope)ÚConfigÚ
FixtureDefÚFixtureRequestÚFunctionÚItemÚMarkÚMonkeyPatchÚParserÚPytestCollectionWarningÚPytestDeprecationWarningÚPytestPluginManager)é   é   )ÚRunner)r$   é   )ÚTypeIs)ÚAbstractEventLoopPolicy)ÚsessionÚpackageÚmoduleÚclassÚfunctionÚ_R)ÚboundÚ_Pr   ÚLoopFactoryc                  ó   — e Zd ZdZdS )ÚPytestAsyncioErrorz2Base class for exceptions raised by pytest-asyncioN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úEC:\Projects\Muse2API\.venv\Lib\site-packages\pytest_asyncio/plugin.pyr4   r4   N   s   € € € € € Ø<Ð<Ð<Ð<r:   r4   c                  ó   — e Zd ZdZdZdS )ÚModeÚautoÚstrictN)r5   r6   r7   ÚAUTOÚSTRICTr9   r:   r;   r=   r=   R   s   € € € € € Ø€DØ€F€F€Fr:   r=   Úpytestc                  ó:   — e Zd Z ed¬¦  «        dd	„¦   «         Zd
S )ÚPytestAsyncioSpecsT)ÚfirstresultÚconfigr   Úitemr   Úreturnú Mapping[str, LoopFactory] | Nonec                ó   — t           ‚©N©ÚNotImplementedError)ÚselfrF   rG   s      r;   Úpytest_asyncio_loop_factoriesz0PytestAsyncioSpecs.pytest_asyncio_loop_factories[   s
   € õ "Ð!r:   N)rF   r   rG   r   rH   rI   )r5   r6   r7   ÚhookspecrO   r9   r:   r;   rD   rD   Z   s@   € € € € € Ø€X˜$ÐÑÔð"ð "ð "ñ  Ôð"ð "ð "r:   rD   zö'auto' - for automatically handling all async functions by the plugin
'strict' - for autoprocessing disabling (useful if different async frameworks should be tested together, e.g. both pytest-asyncio and pytest-trio are used in the same project)
Úparserr    Úpluginmanagerr#   rH   ÚNonec                óœ  — |                      t          ¦  «         |                      d¦  «        }|                     ddd dt          ¬¦  «         |                     dddd d	¬
¦  «         |                      ddd¬¦  «         |                      dd	dd¬¦  «         |                      dddd ¬¦  «         |                      dddd¬¦  «         d S )NÚasyncioz--asyncio-modeÚasyncio_modeÚMODE)ÚdestÚdefaultÚmetavarÚhelpz--asyncio-debugÚasyncio_debugÚ
store_truez4enable asyncio debug mode for the default event loop)rX   ÚactionrY   r[   z default value for --asyncio-moder?   )r[   rY   ÚboolÚfalse)r[   ÚtyperY   Ú"asyncio_default_fixture_loop_scopeÚstringzFdefault scope of the asyncio event loop used to execute async fixtures)ra   r[   rY   Úasyncio_default_test_loop_scopez=default scope of the asyncio event loop used to execute testsr.   )Úadd_hookspecsrD   ÚgetgroupÚ	addoptionÚASYNCIO_MODE_HELPÚaddini)rQ   rR   Úgroups      r;   Úpytest_addoptionrk   l   s)  € Ø×ÒÕ 2Ñ3Ô3Ð3Ø�OŠO˜IÑ&Ô&€EØ	‡O‚OØØØØÝð ñ ô ð ð 
‡O‚OØØØØØCð ñ ô ð ð ‡M‚MØØ/Øð ñ ô ð ð
 ‡M‚MØØCØØð	 ñ ô ð ð ‡M‚MØ,ØØUØð	 ñ ô ð ð ‡M‚MØ)ØØLØð	 ñ ô ð ð ð r:   .)ÚscopeÚ
loop_scopeÚparamsÚautouseÚidsÚnameÚfixture_functionúFixtureFunction[_P, _R]rl   ú0_ScopeName | Callable[[str, Config], _ScopeName]rm   ú_ScopeName | Nonern   úIterable[object] | Nonero   r_   rp   úQIterable[str | float | int | bool | None] | Callable[[Any], object | None] | Nonerq   ú
str | Nonec               ó   — d S rK   r9   ©rr   rl   rm   rn   ro   rp   rq   s          r;   Úfixturer{   –   s	   € ð "˜cr:   ú<Callable[[FixtureFunction[_P, _R]], FixtureFunction[_P, _R]]c               ó   — d S rK   r9   rz   s          r;   r{   r{   §   s   € ð DGÀ3r:   úFixtureFunction[_P, _R] | NoneÚkwargsr   úVFixtureFunction[_P, _R] | Callable[[FixtureFunction[_P, _R]], FixtureFunction[_P, _R]]c                óž   ‡‡— | �"t          | ‰¦  «         t          j        | fi ‰¤ŽS t          j        t          ¦  «        dˆˆfd„¦   «         }|S )Nrr   rs   rH   c                ó"   •— t          | fd‰i‰¤ŽS )Nrm   )r{   )rr   r   rm   s    €€r;   Úinnerzfixture.<locals>.innerÆ   s   ø€ åÐ+ÐMÐM¸
ÐMÀfÐMÐMÐMr:   )rr   rs   rH   rs   )Ú_make_asyncio_fixture_functionrB   r{   Ú	functoolsÚwraps)rr   rm   r   rƒ   s    `` r;   r{   r{   ¸   s~   øø€ ð Ð#Ý&Ð'7¸ÑDÔDÐDÝŒ~Ð.Ð9Ð9°&Ð9Ð9Ð9õ 
Œ�Ñ	!Ô	!ð	Nð 	Nð 	Nð 	Nð 	Nð 	Nñ 
"Ô	!ð	Nð ˆr:   Úobjc                óF   — t          | d| ¦  «        } t          | dd¦  «        S )NÚ__func__Ú_force_asyncio_fixtureF©Úgetattr©r‡   s    r;   Ú_is_asyncio_fixture_functionrŽ   Í   s&   € Ý
�#�z 3Ñ
'Ô
'€CÝ�3Ð0°%Ñ8Ô8Ð8r:   c                óP   — t          | d¦  «        r| j        } d| _        || _        d S )Nr‰   T)Úhasattrr‰   rŠ   Ú_loop_scope)r‡   rm   s     r;   r„   r„   Ò   s.   € Ýˆs�JÑÔð àŒlˆØ!%€CÔØ €C„O€O€Or:   c                óR   — t          j        | ¦  «        pt          j        | ¦  «        S rK   )ÚinspectÚiscoroutinefunctionÚisasyncgenfunctionr�   s    r;   Ú_is_coroutine_or_asyncgenr–   Ú   s#   € ÝÔ& sÑ+Ô+ÐN­wÔ/IÈ#Ñ/NÔ/NÐNr:   rF   r   c                ó  — |                       d¦  «        }|€|                      d¦  «        }	 t          |¦  «        S # t          $ rD}d                     d„ t          D ¦   «         ¦  «        }t          j        |›d|› d�¦  «        |‚d }~ww xY w)NrV   ú, c              3  ó$   K  — | ]}|j         V — Œd S rK   ©Úvalue)Ú.0Úms     r;   ú	<genexpr>z$_get_asyncio_mode.<locals>.<genexpr>å   s$   è è € Ð0Ð0 a˜!œ'Ð0Ð0Ð0Ð0Ð0Ð0r:   z+ is not a valid asyncio_mode. Valid modes: ú.)Ú	getoptionÚgetinir=   Ú
ValueErrorÚjoinrB   Ú
UsageError)rF   ÚvalÚeÚmodess       r;   Ú_get_asyncio_moder¨   Þ   s§   € Ø
×
Ò
˜>Ñ
*Ô
*€CØ
€{Ø�mŠm˜NÑ+Ô+ˆðÝ�C‰yŒyÐøÝð ð ð Ø—	’	Ð0Ð0­4Ð0Ñ0Ô0Ñ0Ô0ˆÝÔØÐIÐIÀÐIÐIÐIñ
ô 
àð	øøøøðøøøs   ®= ½
BÁ?BÂBc                ó”   — |                       d¦  «        }|€|                      d¦  «        }t          |t          ¦  «        r|S |dk    S )Nr\   Útrue)r    r¡   Ú
isinstancer_   )rF   r¥   s     r;   Ú_get_asyncio_debugr¬   ë   sL   € Ø
×
Ò
˜?Ñ
+Ô
+€CØ
€{Ø�mŠm˜OÑ,Ô,ˆå�#•tÑÔð Øˆ
à�fŠ}Ðr:   z]pytest_asyncio_loop_factories must return a non-empty mapping of factory names to callables.
rG   r   údict[str, LoopFactory] | Nonec                ón  — |j         j        }|                     ¦   «         sd S  || |¬¦  «        }|�t          |t          ¦  «        st          j        t          ¦  «        ‚t          |¦  «        }|r+t          d„ | 
                    ¦   «         D ¦   «         ¦  «        rt          j        t          ¦  «        ‚|S )N)rF   rG   c              3  ón   K  — | ]0\  }}t          |t          ¦  «         p| pt          |¦  «         V — Œ1d S rK   )r«   ÚstrÚcallable)rœ   rq   Úfactorys      r;   rž   z/_collect_hook_loop_factories.<locals>.<genexpr>
  s^   è è € ð ð áˆD�'õ �t�SÑ!Ô!Ð!ÐF¨ XÐFµX¸gÑ5FÔ5FÐ1Fðð ð ð ð ð r:   )ÚihookrO   Úget_hookimplsr«   r   rB   r¤   Ú_INVALID_LOOP_FACTORIESÚdictÚanyÚitems)rF   rG   Úhook_callerÚresultÚ	factoriess        r;   Ú_collect_hook_loop_factoriesr¼   ü   sÆ   € ð ”*Ô:€KØ×$Ò$Ñ&Ô&ð Øˆtàˆ[ ¨TÐ2Ñ2Ô2€FØ€~�Z¨µÑ8Ô8€~ÝÔÕ 7Ñ8Ô8Ð8õ �V‘”€IØð 9�ð ð à&Ÿ_š_Ñ.Ô.ðñ ô ñ ô ð 9õ ÔÕ 7Ñ8Ô8Ð8ØÐr:   aÇ  The configuration option "asyncio_default_fixture_loop_scope" is unset.
The event loop scope for asynchronous fixtures will default to the "fixture" caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to "function" scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session"
Úoption_namer°   c           	     ó˜   — | €d S d„ t           D ¦   «         }| |vr0t          j        | ›d|› dd                     |¦  «        › d�¦  «        ‚d S )Nc                ó   — g | ]	}|j         ‘Œ
S r9   rš   )rœ   Úss     r;   ú
<listcomp>z#_validate_scope.<locals>.<listcomp>  s   € Ð+Ð+Ð+ �A”GÐ+Ð+Ð+r:   z is not a valid z. Valid scopes are: r˜   rŸ   )r   rB   r¤   r£   )rl   r½   Úvalid_scopess      r;   Ú_validate_scoperÃ     s~   € Ø€}ØˆØ+Ð+¥UÐ+Ñ+Ô+€LØ�LÐ Ð ÝÔØð <ð <¨ð <ð <Ø!%§¢¨<Ñ!8Ô!8ð<ð <ð <ñ
ô 
ð 	
ð !Ð r:   c                ó  — |                       d¦  «        }t          |d¦  «         |s&t          j        t	          t
          ¦  «        ¦  «         |                       d¦  «        }t          |d¦  «         |                      dd¦  «         d S )Nrb   rd   ÚmarkerszQasyncio: mark the test as a coroutine, it will be run using an asyncio event loop)r¡   rÃ   ÚwarningsÚwarnr"   Ú!_DEFAULT_FIXTURE_LOOP_SCOPE_UNSETÚaddinivalue_line)rF   Údefault_fixture_loop_scopeÚdefault_test_loop_scopes      r;   Úpytest_configurerÌ   '  s™   € Ø!'§¢Ð/SÑ!TÔ!TÐÝÐ.Ð0TÑUÔUÐUØ%ð SÝŒÕ.Õ/PÑQÔQÑRÔRÐRà$ŸmšmÐ,MÑNÔNÐÝÐ+Ð-NÑOÔOÐOØ
×ÒØð	*ñô ð ð ð r:   T)Útryfirstú	list[str]c                óÜ   — t          | ¦  «        }t          | ¦  «        }|                      d¦  «        }t          | ¦  «        }d|› �d|› �d|› �d|› �g}dd                     |¦  «        z   gS )z$Add asyncio config to pytest header.rb   zmode=zdebug=z#asyncio_default_fixture_loop_scope=z asyncio_default_test_loop_scope=z	asyncio: r˜   )r¨   r¬   r¡   Ú_get_default_test_loop_scoper£   )rF   ÚmodeÚdebugrÊ   rË   Úheaders         r;   Úpytest_report_headerrÔ   7  s’   € õ ˜VÑ$Ô$€DÝ˜vÑ&Ô&€EØ!'§¢Ð/SÑ!TÔ!TÐÝ:¸6ÑBÔBÐà�ˆˆØ�ÐÐØJÐ.HÐJÐJØDÐ+BÐDÐDð	€Fð 	�d—i’i Ñ'Ô'Ñ'ðð r:   Ú
fixturedefr   Úrunnerr&   Úrequestr   r   c                ó<  — t          | |¦  «        }t          j        | j        ¦  «        rt	          |||¦  «        S t          j        | j        ¦  «        rt          |||¦  «        S t          j        | j        ¦  «        rt          ||¦  «        S t          ||¦  «        S )z@Returns a synchronous function evaluating the specified fixture.)
r   r“   r•   ÚfuncÚ_wrap_asyncgen_fixturer”   Ú_wrap_async_fixtureÚisgeneratorfunctionÚ_wrap_syncgen_fixtureÚ_wrap_sync_fixture)rÕ   rÖ   r×   rr   s       r;   Ú_fixture_synchronizerrß   I  s›   € õ 0°
¸GÑDÔDÐÝÔ! *¤/Ñ2Ô2ð <Ý%Ð&6¸ÀÑHÔHÐHÝ	Ô	$ Z¤_Ñ	5Ô	5ð <Ý"Ð#3°V¸WÑEÔEÐEÝ	Ô	$ Z¤_Ñ	5Ô	5ð <Ý$Ð%5°vÑ>Ô>Ð>å!Ð"2°FÑ;Ô;Ð;r:   ÚSyncGenFixtureParamsÚSyncGenFixtureYieldTypeúBCallable[SyncGenFixtureParams, Generator[SyncGenFixtureYieldType]]c                óL   ‡ ‡— t          j        ‰ ¦  «        dˆ ˆfd„¦   «         }|S )	NÚargsúSyncGenFixtureParams.argsr   úSyncGenFixtureParams.kwargsrH   ú"Generator[SyncGenFixtureYieldType]c               ?  óœ   •K  — t          ‰                     ¦   «         ¦  «        5   ‰| i |¤ŽE d {V —† d d d ¦  «         d S # 1 swxY w Y   d S rK   ©Ú_temporary_event_loopÚget_loop©rä   r   rr   rÖ   s     €€r;   Ú_syncgen_fixture_wrapperz7_wrap_syncgen_fixture.<locals>._syncgen_fixture_wrapperb  s­   øè è € õ
 # 6§?¢?Ñ#4Ô#4Ñ5Ô5ð 	9ð 	9Ø'Ð'¨Ð8°Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9s   ¥AÁAÁA)rä   rå   r   ræ   rH   rç   ©r…   r†   )rr   rÖ   rí   s   `` r;   rÝ   rÝ   \  sG   øø€ õ „_Ð%Ñ&Ô&ð9ð 9ð 9ð 9ð 9ð 9ñ 'Ô&ð9ð $Ð#r:   ÚSyncFixtureParamsÚSyncFixtureReturnTypeú2Callable[SyncFixtureParams, SyncFixtureReturnType]c                óL   ‡ ‡— t          j        ‰ ¦  «        dˆ ˆfd„¦   «         }|S )	Nrä   úSyncFixtureParams.argsr   úSyncFixtureParams.kwargsrH   rð   c                 óŠ   •— t          ‰                     ¦   «         ¦  «        5   ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S rK   ré   rì   s     €€r;   Ú_sync_fixture_wrapperz1_wrap_sync_fixture.<locals>._sync_fixture_wrapperu  s”   ø€ õ
 # 6§?¢?Ñ#4Ô#4Ñ5Ô5ð 	5ð 	5Ø#Ð# TÐ4¨VÐ4Ð4ð	5ð 	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   £8¸<¿<)rä   ró   r   rô   rH   rð   rî   )rr   rÖ   rö   s   `` r;   rÞ   rÞ   q  sG   øø€ õ „_Ð%Ñ&Ô&ð5ð 5ð 5ð 5ð 5ð 5ñ 'Ô&ð5ð !Ð r:   ÚAsyncGenFixtureParamsÚAsyncGenFixtureYieldTypeúRCallable[AsyncGenFixtureParams, AsyncGeneratorType[AsyncGenFixtureYieldType, Any]]ú9Callable[AsyncGenFixtureParams, AsyncGenFixtureYieldType]c                óP   ‡ ‡‡— t          j        ‰ ¦  «        dˆ ˆˆfd„¦   «         }|S )Nrä   úAsyncGenFixtureParams.argsr   úAsyncGenFixtureParams.kwargsc                 óæ   •‡‡‡—  ‰| i |¤ŽŠˆfd„}t          j        ¦   «         Š‰
                      |¦   «         ‰¬¦  «        }t          ‰¦  «        Šdˆˆˆˆ
fd„}‰	                     |¦  «         |S )Nc               “  ó@   •K  — ‰                      ¦   «         ƒ d {V —†} | S rK   )Ú	__anext__)ÚresÚgen_objs    €r;   ÚsetupzH_wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.setup’  s/   øè è € Ø×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+ˆCØˆJr:   ©ÚcontextrH   rS   c                 ón   •— dˆfd„} ‰                       | ¦   «         ‰¬¦  «         ‰� ‰¦   «          dS dS )zYield again, to finalize.rH   rS   c               “  óŒ   •K  — 	 ‰                      ¦   «         ƒ d {V —† d} | dz  } t          | ¦  «        ‚# t          $ r Y d S w xY w)Nz$Async generator fixture didn't stop.zYield only once.)r   r¢   ÚStopAsyncIteration)Úmsgr  s    €r;   Úasync_finalizerze_wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.finalizer.<locals>.async_finalizerž  ss   øè è € ð*Ø!×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð A�CØÐ-Ñ-�CÝ$ S™/œ/Ð)øõ *ð ð ð Ø�D�Dðøøøs   …5 µ
AÁAr  N©rH   rS   ©Úrun)r
  r  r  Úreset_contextvarsrÖ   s    €€€€r;   Ú	finalizerzL_wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.finalizer›  sd   ø€ ð*ð *ð *ð *ð *ð *ð �JŠJ��Ñ(Ô(°'ˆJÑ:Ô:Ð:Ø Ð,Ø!Ð!Ñ#Ô#Ð#Ð#Ð#ð -Ð,r:   r  ©ÚcontextvarsÚcopy_contextr  Ú_apply_contextvar_changesÚaddfinalizer)rä   r   r  rº   r  r  r  r  rr   r×   rÖ   s        @@@€€€r;   Ú_asyncgen_fixture_wrapperz9_wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper‹  s·   øøøø€ ð
 #Ð" DÐ3¨FÐ3Ð3ˆð	ð 	ð 	ð 	ð 	õ Ô*Ñ,Ô,ˆØ—’˜E˜E™GœG¨W�Ñ5Ô5ˆå5°gÑ>Ô>Ðð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð" 	×Ò˜YÑ'Ô'Ð'Øˆr:   )rä   rü   r   rý   rî   )rr   rÖ   r×   r  s   ``` r;   rÚ   rÚ   „  sN   øøø€ õ „_Ð%Ñ&Ô&ð!ð !ð !ð !ð !ð !ð !ñ 'Ô&ð!ðF %Ð$r:   ÚAsyncFixtureParamsÚAsyncFixtureReturnTypeúMCallable[AsyncFixtureParams, CoroutineType[Any, Any, AsyncFixtureReturnType]]ú4Callable[AsyncFixtureParams, AsyncFixtureReturnType]c                óP   ‡ ‡‡— t          j        ‰ ¦  «        dˆ ˆˆfd„¦   «         }|S )Nrä   úAsyncFixtureParams.argsr   úAsyncFixtureParams.kwargsc                 óÊ   •‡ ‡— ˆ ˆˆfd„}t          j        ¦   «         }‰                      |¦   «         |¬¦  «        }t          |¦  «        }|�‰                     |¦  «         |S )Nc               “  ó(   •K  —  ‰‰i ‰¤Žƒ d {V —†} | S rK   r9   )r  rä   rr   r   s    €€€r;   r  zB_wrap_async_fixture.<locals>._async_fixture_wrapper.<locals>.setupÂ  s3   øè è € Ø(Ð(¨$Ð9°&Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ˆCØˆJr:   r  r  )	rä   r   r  r  rº   r  rr   r×   rÖ   s	   ``    €€€r;   Ú_async_fixture_wrapperz3_wrap_async_fixture.<locals>._async_fixture_wrapper½  sƒ   øøø€ ð
	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô*Ñ,Ô,ˆØ—’˜E˜E™GœG¨W�Ñ5Ô5ˆõ 6°gÑ>Ô>ÐØÐ(Ø× Ò Ð!2Ñ3Ô3Ð3àˆr:   )rä   r  r   r  rî   )rr   rÖ   r×   r  s   ``` r;   rÛ   rÛ   ¶  sM   øøø€ õ „_Ð%Ñ&Ô&ðð ð ð ð ð ð ñ 'Ô&ðð2 "Ð!r:   r  úcontextvars.ContextúCallable[[], None] | Nonec                ó  ‡— g Š| D ]}}	 |                      ¦   «         |                       |¦  «        u rŒ-n# t          $ r Y nw xY w|                     |                       |¦  «        ¦  «        }‰                     ||f¦  «         Œ~‰sdS ˆfd„}|S )zµ
    Copy contextvar changes from the given context to the current context.

    If any contextvars were modified by the fixture, return a finalizer that
    will restore them.
    Nc                 ól   •— ‰r0‰                      ¦   «         \  } }|                      |¦  «         ‰°.d S d S rK   )ÚpopÚreset)ÚvarÚtokenÚcontext_tokenss     €r;   Úrestore_contextvarsz6_apply_contextvar_changes.<locals>.restore_contextvarsò  sP   ø€ Øð 	Ø'×+Ò+Ñ-Ô-‰JˆC�Ø�IŠI�eÑÔÐð ð 	ð 	ð 	ð 	ð 	r:   )ÚgetÚLookupErrorÚsetÚappend)r  r&  r'  r)  r(  s       @r;   r  r  Ú  sÏ   ø€ ð €NØð 	,ð 	,ˆð	Ø�wŠw‰yŒy˜GŸKšK¨Ñ,Ô,Ð,Ð,àð -øõ ð 	ð 	ð 	àˆDð	øøøð —’˜Ÿš CÑ(Ô(Ñ)Ô)ˆØ×Ò˜s E˜lÑ+Ô+Ð+Ð+àð Øˆtðð ð ð ð ð
 Ðs   ‰)4´
AÁ Ac                  ó²   ‡ — e Zd ZdZedd„¦   «         Zedd„¦   «         Zedd
„¦   «         Zdˆ fd„Z	dˆ fd„Z
ej        dd„¦   «         Zedd„¦   «         Zˆ xZS )ÚPytestAsyncioFunctionz<Base class for all test functions managed by pytest-asyncio.rG   r   rH   ú"type[PytestAsyncioFunction] | Nonec               óf   — |                       ¦   «         D ]}|                     |¦  «        r|c S ŒdS )zØ
        Returns a subclass of PytestAsyncioFunction if there is a specialized subclass
        for the specified function item.

        Return None if no specialized subclass exists for the specified item.
        N)Ú__subclasses__Ú_can_substitute)ÚclsrG   Úsubclasss      r;   Úitem_subclass_forz'PytestAsyncioFunction.item_subclass_forý  sH   € ð ×*Ò*Ñ,Ô,ð 	 ð 	 ˆHØ×'Ò'¨Ñ-Ô-ð  Ø���ð àˆtr:   r.   c          	     ó  — |                      d¦  «        sJ ‚|j        €J ‚|                      |j        |j        t	          |dd¦  «        |j        |j        |j        |j        ¬¦  «        }|j	        |_	        |j	        |j	        k    sJ ‚|S )zq
        Instantiates this specific PytestAsyncioFunction type from the specified
        Function item.
        rU   NÚcallspec)rq   r8  ÚcallobjÚfixtureinfoÚkeywordsÚoriginalname)
Úget_closest_markerÚparentÚfrom_parentrq   rŒ   r‡   Ú_fixtureinfor;  r<  Úown_markers)r4  r.   Úsubclass_instances      r;   Ú_from_functionz$PytestAsyncioFunction._from_function
  s    € ð ×*Ò*¨9Ñ5Ô5Ð5Ð5Ð5ØŒÐ*Ð*Ð*ØŸOšOØŒOØ”Ý˜X z°4Ñ8Ô8Ø”LØ Ô-ØÔ&Ø!Ô.ð ,ñ 
ô 
Ðð )1Ô(<ÐÔ%Ø Ô,°Ô0DÒDÐDÐDÐDØ Ð r:   r_   c                ó   — t          ¦   «         ‚)zDReturns whether the specified function can be replaced by this classrL   ©rG   s    r;   r3  z%PytestAsyncioFunction._can_substitute  s   € õ "Ñ#Ô#Ð#r:   rS   c                ó2  •— d| j         › d�}|| j        vr| j                             |¦  «         | j        j        j        }|                     ¦   «         r$| j                             t          j
        ¦  «        }t          ¦   «                              ¦   «         S ©NÚ_Ú_scoped_runner)r‘   Úfixturenamesr-  rF   ÚhookrO   r´   Ú_requestÚgetfixturevalueÚ_asyncio_loop_factoryr5   Úsuperr  )rN   Úrunner_fixture_idr¹   rH  Ú	__class__s       €r;   r  zPytestAsyncioFunction.setup$  sŒ   ø€ Ø@ Ô 0Ð@Ð@Ð@ÐØ DÔ$5Ð5Ð5ØÔ×$Ò$Ð%6Ñ7Ô7Ð7ð ”kÔ&ÔDˆØ×$Ò$Ñ&Ô&ð 	NØ”×-Ò-Õ.CÔ.LÑMÔMˆAÝ‰wŒw�}Š}‰ŒÐr:   c                ór  •— d| j         › d�}| j                             |¦  «        }t          j        ¦   «         }t          t          | j        Ž ||¦  «        }t          j	        ¦   «         5 } |j
        g | j        ¢|‘R Ž  t          ¦   «                              ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S rG  )r‘   rL  rM  r  r  Ú_synchronize_coroutinerŒ   Ú_synchronization_target_attrr   r  ÚsetattrrO  Úruntest)rN   rP  rÖ   r  Úsynchronized_objÚcrQ  s         €r;   rV  zPytestAsyncioFunction.runtest0  s  ø€ Ø@ Ô 0Ð@Ð@Ð@ÐØ”×.Ò.Ð/@ÑAÔAˆÝÔ*Ñ,Ô,ˆÝ1Ý�TÔ6Ð7¸Àñ
ô 
Ðõ Ô Ñ"Ô"ð 	 aØˆAŒIÐK�tÔ8ÐKÐ:JÐKÐKÐKÐKÝ‰GŒG�OŠOÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á*5B,Â,B0Â3B0Ú
_ScopeNamec                óÐ   — |                       d¦  «        }|€J ‚t          | j        ¦  «        }|j                             d¦  «        p|j                             d¦  «        }|€|S |S )az  
        Return the scope of the asyncio event loop this item is run in.

        The effective scope is determined lazily. It is identical to to the
        `loop_scope` value of the closest `asyncio` pytest marker. If no such
        marker is present, the the loop scope is determined by the configuration
        value of `asyncio_default_test_loop_scope`, instead.
        rU   Nrm   rl   )r=  rÐ   rF   r   r*  )rN   ÚmarkerÚdefault_loop_scoperm   s       r;   r‘   z!PytestAsyncioFunction._loop_scope;  so   € ð ×(Ò(¨Ñ3Ô3ˆØÐ!Ð!Ð!Ý9¸$¼+ÑFÔFÐØ”]×&Ò& |Ñ4Ô4ÐR¸¼×8IÒ8IÈ'Ñ8RÔ8Rˆ
ØÐØ%Ð%àÐr:   útuple[object, str]c                ó
   — | dfS )a.  
        Return the coroutine that needs to be synchronized during the test run.

        This method is intended to be overwritten by subclasses when they need to apply
        the coroutine synchronizer to a value that's different from self.obj
        e.g. the AsyncHypothesisTest subclass.
        r‡   r9   ©rN   s    r;   rT  z2PytestAsyncioFunction._synchronization_target_attrN  s   € ð �Uˆ{Ðr:   )rG   r   rH   r0  ©r.   r   rH   r   ©rG   r   rH   r_   r  )rH   rY  ©rH   r]  )r5   r6   r7   r8   Úclassmethodr6  rC  Ústaticmethodr3  r  rV  r…   Úcached_propertyr‘   ÚpropertyrT  Ú__classcell__©rQ  s   @r;   r/  r/  ú  s  ø€ € € € € ØFÐFàð
ð 
ð 
ñ „[ð
ð ð!ð !ð !ñ „[ð!ð( ð$ð $ð $ñ „\ð$ð
ð 
ð 
ð 
ð 
ð 
ð	ð 	ð 	ð 	ð 	ð 	ð Ôðð ð ñ Ôðð$ ðð ð ñ „Xðð ð ð ð r:   r/  c                  ó*   — e Zd ZdZedd„¦   «         ZdS )	Ú	Coroutinez"Pytest item created by a coroutinerG   r   rH   r_   c                ó8   — | j         }t          j        |¦  «        S rK   )r‡   r“   r”   ©rG   rÙ   s     r;   r3  zCoroutine._can_substitute]  s   € àŒxˆÝÔ*¨4Ñ0Ô0Ð0r:   Nra  ©r5   r6   r7   r8   rd  r3  r9   r:   r;   rj  rj  Z  s8   € € € € € Ø,Ð,àð1ð 1ð 1ñ „\ð1ð 1ð 1r:   rj  c                  óL   ‡ — e Zd ZdZed	d„¦   «         Zed
ˆ fd„¦   «         Zˆ xZS )ÚAsyncGeneratorz0Pytest item created by an asynchronous generatorrG   r   rH   r_   c                ó8   — | j         }t          j        |¦  «        S rK   )r‡   r“   r•   rl  s     r;   r3  zAsyncGenerator._can_substitutef  s   € àŒxˆÝÔ)¨$Ñ/Ô/Ð/r:   r.   c               ó  •— t          ¦   «                              |¦  «        }d|j        › d�}|                     t	          |¦  «        ¦  «         |                     t          j                             d|¬¦  «        ¦  «         |S )Nz:Tests based on asynchronous generators are not supported. z will be ignored.F)r  Úreason)	rO  rC  rq   rÇ   r!   Ú
add_markerrB   ÚmarkÚxfail)r4  r.   Úasync_gen_itemÚunsupported_item_type_messagerQ  s       €r;   rC  zAsyncGenerator._from_functionk  s‘   ø€ å™œ×/Ò/°Ñ9Ô9ˆð0ØŒ}ð0ð 0ð 0ð 	&ð 	×ÒÕ3Ð4QÑRÔRÑSÔSÐSØ×!Ò!ÝŒK×Ò %Ð0MÐÑNÔNñ	
ô 	
ð 	
ð Ðr:   ra  r`  )	r5   r6   r7   r8   rd  r3  rc  rC  rg  rh  s   @r;   ro  ro  c  sm   ø€ € € € € Ø:Ð:àð0ð 0ð 0ñ „\ð0ð ð
ð 
ð 
ð 
ð 
ñ „[ð
ð 
ð 
ð 
ð 
r:   ro  c                  ó*   — e Zd ZdZedd„¦   «         ZdS )	ÚAsyncStaticMethodzf
    Pytest item that is a coroutine or an asynchronous generator
    decorated with staticmethod
    rG   r   rH   r_   c                ób   — | j         }t          |t          ¦  «        ot          |j        ¦  «        S rK   )r‡   r«   rd  r–   r‰   rl  s     r;   r3  z!AsyncStaticMethod._can_substitute  s2   € àŒxˆÝ˜$¥Ñ-Ô-ð 
Õ2KØŒMñ3
ô 3
ð 	
r:   Nra  rm  r9   r:   r;   ry  ry  y  s>   € € € € € ðð ð
 ð
ð 
ð 
ñ „\ð
ð 
ð 
r:   ry  c                  óT   ‡ — e Zd ZdZdˆ fd„Zedd„¦   «         Zedd
„¦   «         Zˆ xZ	S )ÚAsyncHypothesisTestzh
    Pytest item that is coroutine or an asynchronous generator decorated by
    @hypothesis.given.
    rH   rS   c                óÌ   •— t          | j        dd¦  «        s.t          | j        dd¦  «        rt          j        d| ›d�¦  «         t	          ¦   «                              ¦   «         S )NÚ
hypothesisFÚis_hypothesis_testztest function `zU` is using Hypothesis, but pytest-asyncio only works with Hypothesis 3.64.0 or later.)rŒ   r‡   rB   ÚfailrO  r  )rN   rQ  s    €r;   r  zAsyncHypothesisTest.setup�  st   ø€ Ý�t”x ¨uÑ5Ô5ð 	½'ØŒHÐ*¨Eñ;
ô ;
ð 	õ ŒKð> $ð >ð >ð >ñô ð õ ‰wŒw�}Š}‰ŒÐr:   rG   r   r_   c                ó�   — | j         }t          |dd¦  «        o.t          |dd ¦  «        ot          j        |j        j        ¦  «        S )Nr  Fr~  )r‡   rŒ   r“   r”   r~  Ú
inner_testrl  s     r;   r3  z#AsyncHypothesisTest._can_substitute—  sL   € àŒxˆå�DÐ.°Ñ6Ô6ð HÝ˜˜l¨DÑ1Ô1ðHåÔ+¨D¬OÔ,FÑGÔGð	
r:   r]  c                ó   — | j         j        dfS )Nr‚  )r‡   r~  r_  s    r;   rT  z0AsyncHypothesisTest._synchronization_target_attr   s   € àŒxÔ" LÐ0Ð0r:   r  ra  rb  )
r5   r6   r7   r8   r  rd  r3  rf  rT  rg  rh  s   @r;   r|  r|  ‡  s‡   ø€ € € € € ðð ð
ð ð ð ð ð ð ð
ð 
ð 
ñ „\ð
ð ð1ð 1ð 1ñ „Xð1ð 1ð 1ð 1ð 1r:   r|  r   úMark | Nonec                óÐ   — |                       d¦  «        }|�|S t          | j        ¦  «        t          j        k    r*|                      d¦  «         |                       d¦  «        S d S )NrU   )r=  r¨   rF   r=   r@   rs  )rG   r[  s     r;   Ú_resolve_asyncio_markerr†  ¥  sb   € Ø×$Ò$ YÑ/Ô/€FØÐØˆÝ˜œÑ%Ô%­¬Ò2Ð2Ø�Š˜	Ñ"Ô"Ð"Ø×&Ò& yÑ1Ô1Ð1Øˆ4r:   Úpytest_pycollect_makeitem)ÚspecnameÚhookwrapperÚ	collectorúpytest.Module | pytest.ClassÚobjectú$Generator[None, pluggy.Result, None]c              #  ó  K  — dV —}	 |                      ¦   «         }n-# t          $ r }|                     |¦  «         Y d}~dS d}~ww xY w|sdS t          |t          ¦  «        rt          |¦  «        }nt          |f¦  «        }g }|D ]n}|}	t          |t          ¦  «        r@t                               |¦  «        }
|
�$t          |¦  «        �|
 
                    |¦  «        }	|                     |	¦  «         Œo|                     |¦  «         dS )zl
    Converts coroutines and async generators collected as pytest.Functions
    to AsyncFunction items.
    N)Ú
get_resultÚBaseExceptionÚforce_exceptionr«   r   Úiterr   r/  r6  r†  rC  r-  Úforce_result)rŠ  rq   r‡   Úhook_resultÚnode_or_list_of_nodesr¦   Únode_iteratorÚupdated_node_collectionÚnodeÚupdated_itemÚspecialized_item_classs              r;   Ú=pytest_pycollect_makeitem_convert_async_functions_to_subclassr›  ±  sP  è è € ð �%�%€Kðð ×"Ò"Ñ$Ô$ð 	Ðøõ ð ð ð Ø×#Ò# AÑ&Ô&Ð&Øˆˆˆˆˆøøøøðøøøð !ð ØˆÝÐ'­Ñ2Ô2ð 7ÝÐ2Ñ3Ô3ˆˆõ Ð3Ð5Ñ6Ô6ˆØ ÐØð 	5ð 	5ˆØˆÝ�d�HÑ%Ô%ð 	KÝ%:×%LÒ%LÈTÑ%RÔ%RÐ"à&Ð2Ý+¨DÑ1Ô1Ð=à5×DÒDÀTÑJÔJ�Ø×&Ò& |Ñ4Ô4Ð4Ð4Ø×ÒÐ4Ñ5Ô5Ð5Ð5Ð5s   ˆ �
A§AÁAÚmetafuncúpytest.Metafuncc                ó®  ‡
— t                                | j        ¦  «        }|€d S t          | j        ¦  «        }|€d S t	          |¦  «        \  }}t          | j        | j        ¦  «        Š
‰
€|�t          j        d¦  «        ‚d S |€)‰
 	                    ¦   «         }‰
 
                    ¦   «         }n|}ˆ
fd„|D ¦   «         }| j                             t          j        ¦  «         t          | j        ¦  «        }|p|}t!          |¦  «        dk    ot#          t          d¦  «        }	|                      t          j        ||	rt          j        fn|d|¬¦  «         d S )Nzfmark.asyncio 'loop_factories' requires at least one pytest_asyncio_loop_factories hook implementation.c                óÄ   •— g | ]\}|‰v r‰|         nMt          j        d t           j                             d|›dd                     ‰¦  «        › d�¬¦  «        ¬¦  «        ‘Œ]S )NzLoop factory z( is not available. Available factories: r˜   rŸ   )rr  )Úmarks)rB   Úparamrt  Úskipr£   )rœ   rq   Úhook_factoriess     €r;   rÁ   z)pytest_generate_tests.<locals>.<listcomp>÷  s    ø€ ð 
ð 
ð 
ð ð ˜>Ð)Ð)ð ˜tÔ$Ð$å”\ØÝ œ+×*Ò*ð=¨Dð =ð =à $§	¢	¨.Ñ 9Ô 9ð=ð =ð =ð +ñ ô ð	ñ 	ô 	ð	
ð 
ð 
r:   é   ÚHIDDEN_PARAMT)rp   Úindirectrl   )r/  r6  Ú
definitionr†  Ú_parse_asyncio_markerr¼   rF   rB   r¤   ÚvaluesÚkeysrJ  r-  rN  r5   rÐ   Úlenr�   Úparametrizer¥  )rœ  rš  Úasyncio_markerÚmarker_loop_scopeÚmarker_selected_factory_namesÚfactory_paramsÚfactory_idsr\  rm   Úhide_idr£  s             @r;   Úpytest_generate_testsr³  Ö  s£  ø€ å2×DÒDØÔñô Ðð Ð%Øˆå,¨XÔ-@ÑAÔA€NØÐØˆÝ7LØñ8ô 8Ñ4ÐÐ4õ 2°(´/À8ÔCVÑWÔW€NØÐØ(Ð4ÝÔ#ðEñô ð ð 	ˆð %Ð,Ø'×.Ò.Ñ0Ô0ˆØ$×)Ò)Ñ+Ô+ˆˆð 4ˆð
ð 
ð 
ð 
ð 6ð
ñ 
ô 
ˆð" Ô× Ò Õ!6Ô!?Ñ@Ô@Ð@Ý5°h´oÑFÔFÐØ"Ð8Ð&8€Jå�+ÑÔ !Ò#ÐG­µ¸Ñ(GÔ(G€GØ×ÒÝÔ&ØØ&-Ð>�VÔ Ð"Ð"°;ØØð ñ ô ð ð ð r:   Úloopr   úIterator[None]c              #  óÐ   K  — 	 t          ¦   «         }n# t          $ r d }Y nw xY w|| u rd V — d S t          | ¦  «         	 d V — t          |¦  «         d S # t          |¦  «         w xY wrK   )Ú_get_event_loop_no_warnÚRuntimeErrorÚ_set_event_loop)r´  Úold_loops     r;   rê   rê     s™   è è € ðÝ*Ñ,Ô,ˆˆøÝð ð ð Øˆˆˆðøøøà�4ÐÐØˆˆˆØˆÝ�DÑÔÐð"Øˆˆˆå˜Ñ!Ô!Ð!Ð!Ð!ø�˜Ñ!Ô!Ð!Ð!øøøs   „ “"¡"¿A ÁA%Úpolicyr)   c              #  ó”   K  — t          ¦   «         }t          | ¦  «         	 d V — t          |¦  «         d S # t          |¦  «         w xY wrK   )Ú_get_event_loop_policyÚ_set_event_loop_policy)r»  Úold_loop_policys     r;   Ú_temporary_event_loop_policyrÀ  &  sX   è è € õ -Ñ.Ô.€OÝ˜6Ñ"Ô"Ð"ð0Øˆˆˆå˜Ñ/Ô/Ð/Ð/Ð/øÕ˜Ñ/Ô/Ð/Ð/øøøs	   ¡6 ¶Ac                 ó¶   — t          j        ¦   «         5  t          j        dt          ¦  «         t	          j        ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S ©NÚignore)rÆ   Úcatch_warningsÚsimplefilterÚDeprecationWarningrU   Úget_event_loop_policyr9   r:   r;   r½  r½  2  s•   € Ý	Ô	 Ñ	"Ô	"ð /ð /ÝÔ˜hÕ(:Ñ;Ô;Ð;ÝÔ,Ñ.Ô.ð/ð /ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /s   ”-AÁAÁAc                óº   — t          j        ¦   «         5  t          j        dt          ¦  «         t	          j        | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rÂ  )rÆ   rÄ  rÅ  rÆ  rU   Úset_event_loop_policy©r»  s    r;   r¾  r¾  8  sš   € Ý	Ô	 Ñ	"Ô	"ð .ð .ÝÔ˜hÕ(:Ñ;Ô;Ð;ÝÔ% fÑ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .ó   ”/AÁAÁAúAbstractEventLoopPolicy | Noneúasyncio.AbstractEventLoopc                óú   — t          j        ¦   «         5  t          j        dt          ¦  «         | � |                      ¦   «         cd d d ¦  «         S t          j        ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S rÂ  )rÆ   rÄ  rÅ  rÆ  Úget_event_looprU   rÊ  s    r;   r·  r·  >  sÖ   € õ 
Ô	 Ñ	"Ô	"ð ,ð ,ÝÔ˜hÕ(:Ñ;Ô;Ð;ØÐØ×(Ò(Ñ*Ô*ð,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,õ
 Ô)Ñ+Ô+ð,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   ”0A0ÁA0Á0A4Á7A4úAbstractEventLoop | Nonec                óº   — t          j        ¦   «         5  t          j        dt          ¦  «         t	          j        | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rÂ  )rÆ   rÄ  rÅ  rÆ  rU   Úset_event_loop)r´  s    r;   r¹  r¹  I  sš   € Ý	Ô	 Ñ	"Ô	"ð %ð %ÝÔ˜hÕ(:Ñ;Ô;Ð;ÝÔ˜tÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %rË  )rÍ   r‰  Ú
pyfuncitemúobject | Nonec           
   #  óö  K  — |                       d¦  «        �Ýt          | ¦  «        r£t          | j        ¦  «        }| j        j                             ¦   «         D ]o\  }}|d         j        }|t          j	        k    rMt          |¦  «        r>t          |¦  «        s/t          j        t          d| j        ›d|›d�¦  «        d¬¦  «         Œpn+|                      t!          j        d	| › d
�¦  «        ¦  «         dV — dS )z-Pytest hook called before a test case is run.rU   Néÿÿÿÿzasyncio test z! requested async @pytest.fixture z– in strict mode. You might want to use @pytest_asyncio.fixture or switch to auto mode. This will become an error in future versions of pytest-asyncio.r¤  )Ú
stacklevelz	The test z¾ is marked with '@pytest.mark.asyncio' but it is not an async function. Please remove the asyncio mark. If the test is not marked explicitly, check for global marks applied via 'pytestmark'.)r=  Úis_async_testr¨   rF   r@  Úname2fixturedefsr¸   rÙ   r=   rA   r–   rŽ   rÆ   rÇ   r"   rq   rB   ÚPytestWarning)rÓ  rV   ÚfixnameÚfixturesrÙ   s        r;   Úpytest_pyfunc_callrÝ  O  sG  è è € ð ×$Ò$ YÑ/Ô/Ð;Ý˜Ñ$Ô$ð $	Ý,¨ZÔ->Ñ?Ô?ˆLØ%/Ô%<Ô%M×%SÒ%SÑ%UÔ%Uð ð Ñ!�˜ð   ”|Ô(�à ¥D¤KÒ/Ð/Ý1°$Ñ7Ô7ð 0å8¸Ñ>Ô>ð 0õ ”MÝ0ð.¨J¬Oð .ð .à&ð.ð .ð .ñô ð $%ðñ ô ð øðð4 �OŠOÝÔ$ðG 
ð Gð Gð Gñô ñô ð ð 
€E€E€EØˆ4r:   rÙ   úCallable[..., CoroutineType]úasyncio.Runnerc                óN   ‡ ‡‡— t          j        ‰ ¦  «        ˆˆ ˆfd„¦   «         }|S )zh
    Return a sync wrapper around a coroutine executing it in the
    specified runner and context.
    c                 óF   •—  ‰| i |¤Ž}‰                      |‰¬¦  «         d S )Nr  r  )rä   r   Úcoror  rÙ   rÖ   s      €€€r;   rƒ   z%_synchronize_coroutine.<locals>.inner†  s3   ø€ àˆt�TÐ$˜VÐ$Ð$ˆØ�
Š
�4 ˆ
Ñ)Ô)Ð)Ð)Ð)r:   rî   )rÙ   rÖ   r  rƒ   s   ``` r;   rS  rS  |  sF   øøø€ õ „_�TÑÔð*ð *ð *ð *ð *ð *ñ Ôð*ð €Lr:   )Úwrapperc              #  ó:  K  — | j         dk    r;| j        j        t          k    r&t	          j        t          t          ¦  «        ¦  «         t          |j	        ¦  «        }t          | j        ¦  «        s,|t          j        k    rd V —S t          | j        ¦  «        sd V —S |j	                             d¦  «        }t          | j        dd ¦  «        p|p| j        }d|› d�}|                     |¦  «        }|                     |¦  «        }|                     t)          j        | j        |¬¦  «        ¦  «         t/          | ||¦  «        }t1          ||¦  «         t3          j        ¦   «         5 }	|	                     | d|¦  «         d V —}
d d d ¦  «         n# 1 swxY w Y   |
S )NÚevent_loop_policyrb   r‘   rH  rI  ©r×   rÙ   )ÚargnamerÙ   r6   r5   rÆ   rÇ   r"   Ú._EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNINGr¨   rF   rŽ   r=   rA   r–   r¡   rŒ   rl   rM  Ú_get_active_fixturedefr  r…   ÚpartialÚfinishrß   r„   r   r  rU  )rÕ   r×   rV   r\  rm   rP  rÖ   Úrunner_fixturedefÚsynchronizerrX  r”  s              r;   Úpytest_fixture_setuprî  Ž  sò  è è € ð 	ÔÐ1Ò1Ð1ØŒOÔ&­(Ò2Ð2åŒÝ$Õ%SÑTÔTñ	
ô 	
ð 	
õ % W¤^Ñ4Ô4€LÝ'¨
¬Ñ8Ô8ð Ø�4œ;Ò&Ð&ð �E�EˆNÝ(¨¬Ñ9Ô9ð 	Ø�E�EˆNØ œ×.Ò.Ð/SÑTÔTÐå�
” °Ñ5Ô5ð 	Øð	àÔð ð
 7˜JÐ6Ð6Ð6ÐØ×$Ò$Ð%6Ñ7Ô7€Fà×6Ò6Ð7HÑIÔIÐØ×"Ò"ÝÔ˜*Ô+°WÐ=Ñ=Ô=ñô ð õ )¨°V¸WÑEÔE€LÝ" <°Ñ<Ô<Ð<Ý	Ô	Ñ	Ô	ð  !Ø	�	Š	�*˜f lÑ3Ô3Ð3Ø�e�eˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð Ðs   Å(FÆFÆFzeAn asyncio pytest marker defines both "scope" and "loop_scope", but it should only use "loop_scope".
zvThe "scope" keyword argument to the asyncio marker has been deprecated. Please use the "loop_scope" argument instead.
zGmark.asyncio 'loop_factories' must be a non-empty sequence of strings.
zÂOverriding the "event_loop_policy" fixture is deprecated and will be removed in a future version of pytest-asyncio. Use the "pytest_asyncio_loop_factories" hook to customize event loop creation.r­  r   ú.tuple[_ScopeName | None, Sequence[str] | None]c                óv  — | j         dk    sJ ‚t          | ¦  «         d| j        v rHd| j        v rt          j        t
          ¦  «        ‚t          j        t          t          ¦  «        ¦  «         | j         
                    d¦  «        p| j         
                    d¦  «        }|�|dv sJ ‚| j         
                    d¦  «        }|€|d fS t          |t          ¦  «        st          |t          ¦  «        st          t          ¦  «        ‚|rt!          d„ |D ¦   «         ¦  «        rt          t          ¦  «        ‚||fS )NrU   rl   rm   >   r-   r,   r+   r*   r.   Úloop_factoriesc              3  óH   K  — | ]}t          |t          ¦  «         p| V — Œd S rK   )r«   r°   )rœ   Úfactory_names     r;   rž   z(_parse_asyncio_marker.<locals>.<genexpr>Ü  sK   è è € ð ð àõ �|¥SÑ)Ô)Ð)Ð=°Ð-=ðð ð ð ð ð r:   )rq   Ú_validate_asyncio_markerr   rB   r¤   Ú&_DUPLICATE_LOOP_SCOPE_DEFINITION_ERRORrÆ   rÇ   r"   Ú'_MARKER_SCOPE_KWARG_DEPRECATION_WARNINGr*  r«   r°   r   r¢   Ú_INVALID_LOOP_FACTORIES_KWARGr·   )r­  rl   Úmarker_values      r;   r¨  r¨  É  se  € ð Ô )Ò+Ð+Ð+Ð+Ý˜^Ñ,Ô,Ð,Ø�.Ô'Ð'Ð'Ø˜>Ô0Ð0Ð0ÝÔ#Õ$JÑKÔKÐKÝŒÕ.Õ/VÑWÔWÑXÔXÐXØÔ!×%Ò% lÑ3Ô3ð °~Ô7L×7PÒ7PØñ8ô 8€Eð ÐØÐMÐMÐMÐMÐMØ!Ô(×,Ò,Ð-=Ñ>Ô>€LØÐØ�dˆ{ÐÝ�,¥Ñ$Ô$ð 8­J°|ÅXÑ,NÔ,Nð 8ÝÕ6Ñ7Ô7Ð7Øð 8�3ð ð à(ðñ ô ñ ô ð 8õ Õ6Ñ7Ô7Ð7Ø�,ÐÐr:   c                óz   — | j         s | j        r*t          | j        ¦  «        h d£z
  rd}t          |¦  «        ‚d S d S )N>   rl   rm   rñ  zNmark.asyncio accepts only keyword arguments 'loop_scope' and 'loop_factories'.)rä   r   r,  r¢   )r­  r	  s     r;   rô  rô  ä  sc   € ØÔð ØÔðå�Ô%Ñ&Ô&Ð)RÐ)RÐ)RÑRðð
!ð 	õ ˜‰oŒoÐðð ð ð r:   c                ó,   — |                       d¦  «        S )Nrd   )r¡   )rF   s    r;   rÐ   rÐ   ð  s   € Ø�=Š=Ð:Ñ;Ô;Ð;r:   a’  An exception occurred during teardown of an asyncio.Runner. The reason is likely that you closed the underlying event loop in a test, which prevents the cleanup of asynchronous generators by the runner.
This warning will become an error in future versions of pytest-asyncio. Please ensure that your tests don't close the event loop. Here is the traceback of the exception triggered during teardown:
%s
rY  c                óN   — t          j        | d| › d�¬¦  «        d	d„¦   «         }|S )
NrH  rI  )rl   rq   r×   r   rH   úIterator[Runner]c              3  ó4  K  — | }t          |j        ¦  «        }t          |¦  «        5  t          ||¬¦  «                             ¦   «         }|�!t          |                     ¦   «         ¦  «         	 |V — t          j        ¦   «         5  t          j	        ddt          ¦  «         	 |                     d d d ¦  «         nC# t          $ r6 t          j        t          t          j        ¦   «         z  t          ¦  «         Y nw xY wd d d ¦  «         n# 1 swxY w Y   n@# t"          $ r3}|                     t%          |¦  «        ||j        ¦  «         Y d }~nd }~ww xY w|�t          d ¦  «         n# |�t          d ¦  «         w w xY wd d d ¦  «         d S # 1 swxY w Y   d S )N)rÒ   Úloop_factoryrÃ  z$.*BaseEventLoop.shutdown_asyncgens.*)r¬   rF   rÀ  r&   Ú	__enter__r¹  rë   rÆ   rÄ  ÚfilterwarningsÚRuntimeWarningÚ__exit__r¸  rÇ   Ú_RUNNER_TEARDOWN_WARNINGÚ	tracebackÚ
format_excÚ	Exceptionra   Ú__traceback__)rå  rN  r×   Únew_loop_policyÚ
debug_moderÖ   r¦   s          r;   rI  z5_create_scoped_runner_fixture.<locals>._scoped_runner   sZ  è è € ð ,ˆÝ'¨¬Ñ7Ô7ˆ
Ý)¨/Ñ:Ô:ð 	*ð 	*ÝØ Ø2ðñ ô ÷ Ši‰kŒkð ð %Ð0Ý §¢Ñ 1Ô 1Ñ2Ô2Ð2ð*Ø���õ Ô,Ñ.Ô.ð 
ð 
ÝÔ+Ø Ð"HÍ.ñô ð ðØŸš¨¨d°DÑ9Ô9Ð9Ð9øÝ'ð ð ð Ý œÝ4µyÔ7KÑ7MÔ7MÑMÝ*ñô ð ð ð ðøøøð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
øøõ ð =ð =ð =Ø—’¥ Q¡¤¨¨A¬OÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<øøøøð=øøøð )Ð4Ý# DÑ)Ô)Ð)øøð )Ð4Ý# DÑ)Ô)Ð)Ð)ð 5øøøð1	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s–   ¨AFÁ0DÁ4E)ÂDÂ$B<Â;DÂ<=C<Ã9DÃ;C<Ã<DÃ?E)ÄD	ÄE)ÄD	ÄE)Ä
EÄ!)EÅ
E)ÅEÅE)ÅFÅ)E=Å=FÆFÆF)r×   r   rH   rü  )rB   r{   )rl   rI  s     r;   Ú_create_scoped_runner_fixturer
  ÿ  sN   € Ý„^ØØ&�Ð&Ð&Ð&ðñ ô ð *ð  *ð  *ñ	ô ð *ðD Ðr:   rH  rI  r*   )rl   úLoopFactory | Nonec                ó$   — t          | dd ¦  «        S )Nr¡  r‹   ræ  s    r;   rN  rN  /  s   € å�7˜G TÑ*Ô*Ð*r:   )rl   ro   c                 ó   — t          ¦   «         S )zDReturn an instance of the policy used to create asyncio event loops.)r½  r9   r:   r;   rå  rå  4  s   € õ "Ñ#Ô#Ð#r:   úTypeIs[PytestAsyncioFunction]c                ó,   — t          | t          ¦  «        S )z4Returns whether a test item is a pytest-asyncio test)r«   r/  rE  s    r;   rØ  rØ  :  s   € å�dÕ1Ñ2Ô2Ð2r:   Úsocket_typeÚintc                óâ   — t          j        t          j        | ¬¦  «        ¦  «        5 }|                     d¦  «         |                     ¦   «         d         cddd¦  «         S # 1 swxY w Y   dS )z<Find an unused localhost port from 1024-65535 and return it.)ra   )z	127.0.0.1r   r¤  N)Ú
contextlibÚclosingÚsocketÚbindÚgetsockname)r  Úsocks     r;   Ú_unused_portr  ?  s¨   € å	Ô	�FœM¨{Ð;Ñ;Ô;Ñ	<Ô	<ð %ÀØ�	Š	Ð"Ñ#Ô#Ð#Ø×ÒÑ!Ô! !Ô$ð%ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ¨/A$Á$A(Á+A(c                 ó4   — t          t          j        ¦  «        S rK   )r  r  ÚSOCK_STREAMr9   r:   r;   Úunused_tcp_portr  F  s   € å�Ô*Ñ+Ô+Ð+r:   c                 ó4   — t          t          j        ¦  «        S rK   )r  r  Ú
SOCK_DGRAMr9   r:   r;   Úunused_udp_portr  K  s   € å�Ô)Ñ*Ô*Ð*r:   úCallable[[], int]c                 ó.   ‡— t          ¦   «         Šˆfd„} | S )z9A factory function, producing different unused TCP ports.c                 ó¦   •— t          t          j        ¦  «        } | ‰v rt          t          j        ¦  «        } | ‰v °‰                     | ¦  «         | S ©zReturn an unused port.)r  r  r  Úadd©ÚportÚproduceds    €r;   r²   z(unused_tcp_port_factory.<locals>.factoryU  sT   ø€ å�FÔ.Ñ/Ô/ˆà�hÐÐÝ¥Ô 2Ñ3Ô3ˆDð �hÐÐð 	�Š�TÑÔÐàˆr:   ©r,  ©r²   r'  s    @r;   Úunused_tcp_port_factoryr*  P  ó.   ø€ õ ‰uŒu€Hð	ð 	ð 	ð 	ð 	ð €Nr:   c                 ó.   ‡— t          ¦   «         Šˆfd„} | S )z9A factory function, producing different unused UDP ports.c                 ó¦   •— t          t          j        ¦  «        } | ‰v rt          t          j        ¦  «        } | ‰v °‰                     | ¦  «         | S r#  )r  r  r  r$  r%  s    €r;   r²   z(unused_udp_port_factory.<locals>.factoryh  sT   ø€ å�FÔ-Ñ.Ô.ˆà�hÐÐÝ¥Ô 1Ñ2Ô2ˆDð �hÐÐð 	�Š�TÑÔÐàˆr:   r(  r)  s    @r;   Úunused_udp_port_factoryr.  c  r+  r:   )rQ   r    rR   r#   rH   rS   )rr   rs   rl   rt   rm   ru   rn   rv   ro   r_   rp   rw   rq   rx   rH   rs   ).)rr   rS   rl   rt   rm   ru   rn   rv   ro   r_   rp   rw   rq   rx   rH   r|   )NN)rr   r~   rm   ru   r   r   rH   r€   )r‡   r   rH   r_   )r‡   r   rm   ru   rH   rS   )rF   r   rH   r=   )rF   r   rH   r_   )rF   r   rG   r   rH   r­   )rl   rx   r½   r°   rH   rS   )rF   r   rH   rS   )rF   r   rH   rÎ   )rÕ   r   rÖ   r&   r×   r   rH   r   )rr   râ   rÖ   r&   rH   râ   )rr   rñ   rÖ   r&   rH   rñ   )rr   rù   rÖ   r&   r×   r   rH   rú   )rr   r  rÖ   r&   r×   r   rH   r  )r  r   rH   r!  )rG   r   rH   r„  )rŠ  r‹  rq   r°   r‡   rŒ  rH   r�  )rœ  r�  rH   rS   )r´  r   rH   rµ  )r»  r)   rH   rµ  )rH   r)   )r»  r)   rH   rS   rK   )r»  rÌ  rH   rÍ  )r´  rÐ  rH   rS   )rÓ  r   rH   rÔ  )rÙ   rÞ  rÖ   rß  r  r   )rÕ   r   rH   rÔ  )r­  r   rH   rï  )r­  r   rH   rS   )rF   r   rH   r   )rl   rY  rH   r   )r×   r   rH   r  )rG   r   rH   r  )r  r  rH   r  )rH   r  )rH   r   )‹r8   Ú
__future__r   rU   r  r  Úenumr…   r“   r  Úsysr  rÆ   r   Úcollections.abcr   r   r   r   r	   r
   r   r   r   Útypesr   r   Útypingr   r   r   r   r   r   r   ÚpluggyrB   Ú_pytest.fixturesr   Ú_pytest.scoper   r   r   r   r   r   r   r   r    r!   r"   r#   Úversion_infor&   Úbackports.asyncio.runnerr(   Útyping_extensionsr)   rY  r/   r1   ÚFixtureFunctionr2   Ú__annotations__r  r4   r°   ÚEnumr=   ÚHookspecMarkerrP   rD   rh   rk   r{   rŽ   r„   r–   r¨   r¬   rµ   r¼   rÈ   rÃ   rÌ   ÚhookimplrÔ   rß   rà   rá   rÝ   rï   rð   rÞ   r÷   rø   rÚ   r  r  rÛ   r  r/  rj  ro  ry  r|  r†  r›  r³  Úcontextmanagerrê   rÀ  r½  r¾  r·  r¹  rÝ  rS  rî  rõ  rö  r÷  rè  r¨  rô  rÐ   r  r
  rl   r›   ÚglobalsrN  rå  rØ  r  r  r  r*  r.  r9   r:   r;   ú<module>rB     sÚ
  ðØ $Ð $Ð $à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ô�wÒÐØÐÐÐÐÐÐà/Ð/Ð/Ð/Ð/Ð/àÔ�wÒÐØÐÐÐÐÐÐà(Ð(Ð(Ð(Ð(Ð(àð 0ð 0Ð/Ð/Ð/Ð/Ð/àÐHÔI€
Ø€WˆT˜ 3œ¨-¸Ô*<Ñ<Ð=Ñ=Ô=€Ø€Yˆt�_„_€Ø˜2˜r˜6Ô"€Ø! "Ð&7Ð"7Ô8€Ð 8Ð 8Ð 8Ñ 8ð=ð =ð =ð =ð =˜ñ =ô =ð =ðð ð ð ð ˆ3�”	ñ ô ð ð
 !ˆ6Ô  Ñ*Ô*€ð"ð "ð "ð "ð "ñ "ô "ð "ðÐ ð'ð 'ð 'ð 'ðT 
ð ?BØ$'Ø&)Øð
 	Øð"ð "ð "ð "ð "ñ 
„ð"ð  
à ðGð ?BØ$'Ø&)Øð
 	ØðGð Gð Gð Gð Gñ 
„ðGð" 8<Ø$(ðð ð ð ð ð*9ð 9ð 9ð 9ð
!ð !ð !ð !ðOð Oð Oð Oð
ð 
ð 
ð 
ðð ð ð ðÐ ðð ð ð ð,%Ð !ð
ð 
ð 
ð 
ðð ð ð ð  €„˜$ÐÑÔðð ð ñ  Ôðð"<ð <ð <ð <ð !�yÐ!7Ñ8Ô8Ð Ø!˜'Ð";Ñ<Ô<Ð ð$ð $ð $ð $ð" �IÐ1Ñ2Ô2Ð Ø˜Ð 7Ñ8Ô8Ð ð!ð !ð !ð !ð "˜	Ð"9Ñ:Ô:Ð Ø"˜7Ð#=Ñ>Ô>Ð ð+%ð +%ð +%ð +%ð\ �YÐ3Ñ4Ô4Ð Ø ˜Ð!9Ñ:Ô:Ð ð!"ð !"ð !"ð !"ðHð ð ð ð@]ð ]ð ]ð ]ð ]˜Hñ ]ô ]ð ]ð@1ð 1ð 1ð 1ð 1Ð%ñ 1ô 1ð 1ðð ð ð ð Ð*ñ ô ð ð,
ð 
ð 
ð 
ð 
Ð-ñ 
ô 
ð 
ð1ð 1ð 1ð 1ð 1Ð/ñ 1ô 1ð 1ð<ð ð ð ð €„Ð5À4ÐHÑHÔHð!6ð !6ð !6ñ IÔHð!6ðH €„˜$ÐÑÔð<ð <ð <ñ  Ôð<ð~ Ôð"ð "ð "ñ Ôð"ð Ôð0ð 0ð 0ñ Ôð0ð/ð /ð /ð /ð.ð .ð .ð .ð .2ð,ð ,ð ,ð ,ð ,ð%ð %ð %ð %ð €„˜$¨DÐ1Ñ1Ô1ð)ð )ð )ñ 2Ô1ð)ðXð ð ð ð$ €„˜ÐÑÔð"ð "ð "ñ Ôð"ðJ*Ð &ð
+Ð 'ð
!Ð ð2Ð .ðð ð ð ð6	ð 	ð 	ð 	ð<ð <ð <ð <ðÐ ð'ð 'ð 'ð 'ðT ð ð €EØ1NÐ1NØŒñ2ô 2€G€G�I„IÐ-�%”+Ð-Ð-Ð-Ñ.Ð.ð
 €„�iÐ Ñ Ô ð+ð +ð +ñ !Ô ð+ð €„�i¨Ð.Ñ.Ô.ð$ð $ð $ñ /Ô.ð$ð
3ð 3ð 3ð 3ð
%ð %ð %ð %ð „ð,ð ,ð ,ñ „ð,ð „ð+ð +ð +ñ „ð+ð €„�iÐ Ñ Ô ðð ð ñ !Ô ðð$ €„�iÐ Ñ Ô ðð ð ñ !Ô ðð ð r:   