§
    øyIfÏK  ã                  ól  — 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mZmZ ddl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mZ dd	lmZ dd
l m!Z! ddl"Z#ddl$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1 ddl"m2Z3 ddl"m4Z5 ddl6m7Z7 ddl8m9Z: ddl;m<Z< er,ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ejG        eH         ZGnejG        ZGdejI        d<   dejI        d<    e!¦   «         rdejI        d<   dejI        d<    ejJ        d¬¦  «        d_d"„¦   «         ZK ejJ        d¬¦  «        d`d'„¦   «         ZLed_d(„¦   «         ZM ejJ        d¬¦  «        dad+„¦   «         ZN ejJ        d¬¦  «        dbd.„¦   «         ZO G d/„ d0¦  «        ZP ejJ        dd1¬2¦  «        d_d3„¦   «         ZQ G d4„ d5¦  «        ZR G d6„ d7e¦  «        ZS ejJ        d8¬9¦  «        dcd>„¦   «         ZT ejJ        ¦   «         ddd?„¦   «         ZUd@ZVdedC„ZWdfdF„ZX ejY        d¬G¦  «        dgdJ„¦   «         ZZdhdM„Z[ ejJ        d1¬N¦  «        didR„¦   «         Z\ ejJ        d1¬N¦  «        djdT„¦   «         Z] ejJ        d¬¦  «        dkdW„¦   «         Z^ ejJ        dX¬9¦  «        dldZ„¦   «         Z_dmd]„Z`eja        Zaejb        Zbejc        Zcd^ZddS )nz<A pytest plugin useful to test tox itself (and its plugins).é    )ÚannotationsN)ÚclosingÚcontextmanager)ÚPath)Ú
ModuleTypeÚTracebackType)ÚTYPE_CHECKINGÚAnyÚCallableÚIteratorÚProtocolÚSequenceÚcast)Ú
SubRequest)ÚIndexServer)Úfs_supports_symlink)ÚExecuteÚExecuteInstanceÚExecuteOptionsÚExecuteStatusÚOutcome)ÚExecuteRequestÚ	shell_cmd)Úmanager)ÚLOGGERÚOutErr)Úrun)Úsetup_state)ÚENV_VAR_KEY)Úapi)ÚToxEnv)Ú	MagicMock)ÚMockerFixture)ÚEnvConfigSet)Ú	SyncWrite)ÚStateÚ1ÚPIP_DISABLE_PIP_VERSION_CHECKÚPIP_NO_PYTHON_VERSION_WARNINGÚVIRTUALENV_SYMLINK_APP_DATAÚVIRTUALENV_SYMLINKST)ÚautouseÚreturnúIterator[None]c               #  ó\   K  — t          t          j        ¦  «        } d V — | t          _        d S ©N)Úlistr   Úhandlers)Úbefore_handlerss    ú>/var/www/piapp/venv/lib/python3.11/site-packages/tox/pytest.pyÚ$ensure_logging_framework_not_alteredr5   7   s)   è è € å�6œ?Ñ+Ô+€OØ	€E€E€EØ%…F„O€O€Oó    Úrequestr   Úmockerr#   c              #  óB  ‡‡K  — | j                              d¦  «        redt          j        cŠŠdˆˆfd„}|j                             t          d|¦  «         dV — ‰�&t          j        j                             ‰¦  «         dS dS |                     d	d¬
¦  «         dV — dS )z=Unless this is a plugin test do not allow loading toxfile.py.Úplugin_testNÚpathr   r-   úModuleType | Nonec                ó   •—  ‰| ¦  «        Š‰S r0   © )r;   Úload_inlineÚmodules    €€r4   Ú_load_inlinez*_disable_root_tox_py.<locals>._load_inlineD   s   ø€ à �[ Ñ&Ô&ˆFØˆMr6   rA   ztox.plugin.inline._load_plugin©Úreturn_value)r;   r   r-   r<   )ÚnodeÚget_closest_markerr   rA   ÚpatchÚobjectÚMANAGERÚ
unregister)r7   r8   rA   r?   r@   s      @@r4   Ú_disable_root_tox_pyrJ   >   sÌ   øøè è € ð „|×&Ò& }Ñ5Ô5ð Ø"¥GÔ$8Ðˆ�ð	ð 	ð 	ð 	ð 	ð 	ð 	ð
 	Œ×Ò�G ^°\ÑBÔBÐBØˆˆˆØÐÝŒOÔ#×.Ò.¨vÑ6Ô6Ð6Ð6Ð6ð Ðð 	�ŠÐ5ÀDˆÑIÔIÐIØˆˆˆˆˆr6   c               #  ó’  ‡‡K  — t           j                             ¦   «         Šd„ t          dddfD ¦   «         } d V — |                      ¦   «         D ]\  }}|�|t           j        |<   Œt           j        Šˆfd„t          ‰¦  «        t          ‰¦  «        z
  D ¦   «         }|                     dd ¦  «         ˆfd„t          ‰¦  «        t          ‰¦  «        z
  D ¦   «         }ˆˆfd„t          ‰¦  «        t          ‰¦  «        z  D ¦   «         }|s|s|r6d	}|r|d
|› �z  }|r|d|› �z  }|r|d|› �z  }t          j        |¦  «         d S d S )Nc                óP   — i | ]#}|t           j                             |d ¦  «        “Œ$S r0   )ÚosÚenvironÚpop)Ú.0Úks     r4   ú
<dictcomp>z$check_os_environ.<locals>.<dictcomp>U   s*   € ÐtÐtÐt¨q�•2”:—>’> ! TÑ*Ô*ÐtÐtÐtr6   ÚTOX_WORK_DIRÚ
PYTHONPATHÚCOV_CORE_CONTEXTc                ó"   •— i | ]}|‰|         “ŒS r>   r>   )rP   rQ   Únews     €r4   rR   z$check_os_environ.<locals>.<dictcomp>^   s   ø€ Ð4Ð4Ð4˜1ˆQ��A”Ð4Ð4Ð4r6   ÚPLATc                ó"   •— i | ]}|‰|         “ŒS r>   r>   )rP   rQ   Úolds     €r4   rR   z$check_os_environ.<locals>.<dictcomp>`   s   ø€ Ð3Ð3Ð3˜!ˆAˆs�1ŒvÐ3Ð3Ð3r6   c                óŠ   •— h | ]?}‰|         ‰|         k    ¯|                      d ¦  «        °)|› d‰|         › d‰|         › �’Œ@S )ÚPYTEST_z = z vs )Ú
startswith)rP   rQ   rW   rZ   s     €€r4   ú	<setcomp>z#check_os_environ.<locals>.<setcomp>a   sh   ø€ ð ð ð Ø*+ÀcÈ!ÄfÐPSÐTUÔPVÒFVÐFVÐ_`×_kÒ_kÐluÑ_vÔ_vÐFVˆ1Ð%Ð%��Q”Ð%Ð%˜S œVÐ%Ð%ÐFVÐFVÐFVr6   ztest changed environz extra z miss z diff )	rM   rN   Úcopyr   ÚitemsÚsetrO   ÚpytestÚfail)	Úto_cleanÚkeyÚvalueÚextraÚmissÚdiffÚmsgrW   rZ   s	          @@r4   Úcheck_os_environrk   R   s¤  øøè è € å
Œ*�/Š/Ñ
Ô
€CØtÐtµ[À.ÐR^Ð`rÐ4sÐtÑtÔt€Hà	€E€E€Eà—n’nÑ&Ô&ð $ð $‰
ˆˆUØÐØ#�BŒJ�s‰Oøå
Œ*€CØ4Ð4Ð4Ð4¥ C¡¤­3¨s©8¬8Ñ 3Ð4Ñ4Ô4€EØ	‡I‚Iˆf�dÑÔÐØ3Ð3Ð3Ð3�s 3™xœx­#¨c©(¬(Ñ2Ð3Ñ3Ô3€Dðð ð ð ð Ý/2°3©x¬x½#¸c¹(¼(Ñ/Bðñ ô €Dð ð �ð ˜ð Ø$ˆØð 	%ØÐ$˜UÐ$Ð$Ñ$ˆCØð 	#Ø�?˜D�?�?Ñ"ˆCØð 	#Ø�?˜D�?�?Ñ"ˆCÝŒ�CÑÔÐÐÐðð r6   Úmonkeypatchúpytest.MonkeyPatchc              #  óˆ   K  — t          ¦   «         5  d V — |                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S r0   )rk   Úundo)rl   s    r4   Úcheck_os_environ_stablerp   o   s‘   è è € å	Ñ	Ô	ð ð ØˆˆˆØ×ÒÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ‘7·;¾;rp   ÚNonec                ó2   — |                       dd¦  «         d S )NÚNO_COLORÚyes)Úsetenv)rl   rp   s     r4   Úno_colorrv   v   s   € à×Ò�z 5Ñ)Ô)Ð)Ð)Ð)r6   c                  ó~   — e Zd Zd#d„Zed$d„¦   «         Zd%d„Zed&d„¦   «         Ze	d'd(d„¦   «         Z
ddœd)d!„Zd*d"„ZdS )+Ú
ToxProjectÚfilesúdict[str, Any]ÚbaseúPath | Noner;   r   ÚcapfdÚCaptureFixturerl   rm   r8   r#   r-   rq   c                óv   — || _         || _        || _        || _        |                      | j         ||¦  «         d S r0   )r;   rl   r8   Ú_capfdÚ_setup_files)Úselfry   r{   r;   r}   rl   r8   s          r4   Ú__init__zToxProject.__init__|   sA   € ð ˆŒ	Ø/:ˆÔØˆŒØˆŒØ×Ò˜$œ) T¨5Ñ1Ô1Ð1Ð1Ð1r6   ÚdestÚcontentc                óR  — |�/t          j        t          |¦  «        t          | ¦  «        ¦  «         |                      d¬¦  «         |                     ¦   «         D �]I\  }}t          |t          ¦  «        s|›d| › �}t          |¦  «        ‚| |z  }t          |¦  «        rLt          j	        d 
                    t          j        |¦  «        d         dd …         ¦  «        ¦  «        }d|› �}t          |t          ¦  «        r3|                     d¬¦  «         t                               |d |¦  «         ŒÙt          |t          ¦  «        r+|                     t          j	        |¦  «        d¬	¦  «         �Œ|€|                     ¦   «          �Œ1d
||z  › d|›�}t          |¦  «        ‚d S )NT)Úexist_okz at ú
r   é   z#from __future__ import annotations
zutf-8)Úencodingzcould not handle z with content )ÚshutilÚcopytreeÚstrÚmkdirr`   Ú
isinstanceÚ	TypeErrorÚcallableÚtextwrapÚdedentÚjoinÚinspectÚgetsourcelinesÚdictrx   r�   Ú
write_text)r„   r{   r…   re   rf   rj   Úat_paths          r4   r�   zToxProject._setup_files‹   sŸ  € àÐÝŒO�C ™IœI¥s¨4¡y¤yÑ1Ô1Ð1Ø�
Š
˜Dˆ
Ñ!Ô!Ð!Ø!Ÿ-š-™/œ/ð 	%ñ 	%‰JˆC�Ý˜c¥3Ñ'Ô'ð %ØÐ*Ð* DÐ*Ð*�Ý ‘n”nÐ$Ø˜S‘jˆGÝ˜‰Œð GÝ œ¨¯	ª	µ'Ô2HÈÑ2OÔ2OÐPQÔ2RÐSTÐSUÐSUÔ2VÑ(WÔ(WÑXÔX�ØF¸uÐFÐF�Ý˜%¥Ñ&Ô&ð 	%Ø—’ t�Ñ,Ô,Ð,Ý×'Ò'¨°°uÑ=Ô=Ð=Ð=Ý˜E¥3Ñ'Ô'ð %Ø×"Ò"¥8¤?°5Ñ#9Ô#9ÀGÐ"ÑLÔLÐLÑLØ�Ø—’‘”�‘àP¨'°C©-ÐPÐPÀuÐPÐP�Ý ‘n”nÐ$ð#	%ð 	%r6   Úhandleú&Callable[[ExecuteRequest], int | None]r"   c                ó  ‡‡‡‡‡—  G ˆfd„dt           ¦  «        Š G d„ dt          ¦  «        Š G ˆfd„dt          ¦  «        Št          dˆˆˆfd„¦   «         }t          j        Š| j        j                             t          d|d¬¦  «        S )Nc                  ó.   •‡ — e Zd Zdˆ fd„Zdˆfd„Zˆ xZS )ú-ToxProject.patch_execute.<locals>.MockExecuteÚcoloredÚboolÚ	exit_codeÚintr-   rq   c                óX   •— || _         t          ¦   «                              |¦  «         d S r0   )r¡   Úsuperrƒ   )r‚   rŸ   r¡   Ú	__class__s      €r4   rƒ   z6ToxProject.patch_execute.<locals>.MockExecute.__init__¥   s(   ø€ Ø!*�”Ý‘”× Ò  Ñ)Ô)Ð)Ð)Ð)r6   r7   r   Úoptionsr   Úoutr%   Úerrr   c                ó,   •—  ‰||||| j         ¦  «        S r0   )r¡   )r‚   r7   r¦   r§   r¨   ÚMockExecuteInstances        €r4   Úbuild_instancez<ToxProject.patch_execute.<locals>.MockExecute.build_instance©   s    ø€ ð +Ð*¨7°G¸SÀ#ÀtÄ~ÑVÔVÐVr6   )rŸ   r    r¡   r¢   r-   rq   )
r7   r   r¦   r   r§   r%   r¨   r%   r-   r   )Ú__name__Ú
__module__Ú__qualname__rƒ   r«   Ú__classcell__)r¥   rª   s   @€r4   ÚMockExecuterž   ¤   sf   øø€ € € € € ð*ð *ð *ð *ð *ð *ðWð Wð Wð Wð Wð Wð Wð Wð Wð Wr6   r°   c                  óR   ‡ — e Zd Zdˆ fd
„Zedd„¦   «         Zddd„Zdd„Zdd„Zˆ xZ	S )ú3ToxProject.patch_execute.<locals>.MockExecuteStatusr¦   r   r§   r%   r¨   r¡   r¢   r-   rq   c                ó\   •— t          ¦   «                              |||¦  «         || _        d S r0   )r¤   rƒ   Ú
_exit_code)r‚   r¦   r§   r¨   r¡   r¥   s        €r4   rƒ   z<ToxProject.patch_execute.<locals>.MockExecuteStatus.__init__³   s*   ø€ Ý‘”× Ò  ¨#¨sÑ3Ô3Ð3Ø"+�”��r6   ú
int | Nonec                ó   — | j         S r0   ©r´   ©r‚   s    r4   r¡   z=ToxProject.patch_execute.<locals>.MockExecuteStatus.exit_code·   s
   € à”Ð&r6   NÚtimeoutúfloat | Nonec                ó   — | j         S r0   r·   )r‚   r¹   s     r4   Úwaitz8ToxProject.patch_execute.<locals>.MockExecuteStatus.wait»   s
   € Ø”Ð&r6   r…   r�   c                ó   — d S r0   r>   )r‚   r…   s     r4   Úwrite_stdinz?ToxProject.patch_execute.<locals>.MockExecuteStatus.write_stdin¾   ó   € Ø�tr6   c                ó   — d S r0   r>   r¸   s    r4   Ú	interruptz=ToxProject.patch_execute.<locals>.MockExecuteStatus.interruptÁ   r¿   r6   )
r¦   r   r§   r%   r¨   r%   r¡   r¢   r-   rq   )r-   rµ   r0   )r¹   rº   r-   rµ   )r…   r�   r-   rq   ©r-   rq   )
r¬   r­   r®   rƒ   Úpropertyr¡   r¼   r¾   rÁ   r¯   )r¥   s   @r4   ÚMockExecuteStatusr²   ²   sž   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð ,ð ð'ð 'ð 'ñ ŒXð'ð'ð 'ð 'ð 'ð 'ðð ð ð ðð ð ð ð ð ð ð r6   rÄ   c                  óN   •‡ — e Zd Zdˆ fd„Zdˆfd„Zdd„Zedd„¦   «         Zˆ xZS )ú5ToxProject.patch_execute.<locals>.MockExecuteInstancer7   r   r¦   r   r§   r%   r¨   r¡   r¢   r-   rq   c                ó^   •— t          ¦   «                              ||||¦  «         || _        d S r0   )r¤   rƒ   r¡   )r‚   r7   r¦   r§   r¨   r¡   r¥   s         €r4   rƒ   z>ToxProject.patch_execute.<locals>.MockExecuteInstance.__init__Å   s.   ø€ õ ‘”× Ò  ¨'°3¸Ñ<Ô<Ð<Ø!*�”��r6   r   c                óH   •—  ‰| j         | j        | j        | j        ¦  «        S r0   )r¦   Ú_outÚ_errr¡   )r‚   rÄ   s    €r4   Ú	__enter__z?ToxProject.patch_execute.<locals>.MockExecuteInstance.__enter__Ð   s"   ø€ Ø(Ð(¨¬°t´yÀ$Ä)ÈTÌ^Ñ\Ô\Ð\r6   Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | Nonec                ó   — d S r0   r>   )r‚   rÌ   rÎ   rÐ   s       r4   Ú__exit__z>ToxProject.patch_execute.<locals>.MockExecuteInstance.__exit__Ó   s	   € ð �r6   úSequence[str]c                ó   — | j         j        S r0   )r7   Úcmdr¸   s    r4   rÖ   z9ToxProject.patch_execute.<locals>.MockExecuteInstance.cmdÛ   s   € à”|Ô'Ð'r6   )r7   r   r¦   r   r§   r%   r¨   r%   r¡   r¢   r-   rq   )r-   r   )rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   r-   rq   )r-   rÔ   )	r¬   r­   r®   rƒ   rË   rÓ   rÃ   rÖ   r¯   )r¥   rÄ   s   @€r4   rª   rÆ   Ä   s–   øø€ € € € € ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð]ð ]ð ]ð ]ð ]ð ]ðð ð ð ð ð(ð (ð (ñ ŒXð(ð (ð (ð (ð (r6   rª   r‚   r!   Úexecutorr   Úout_errr   r7   r   Úshowr    r-   úIterator[ExecuteStatus]c              3  ó¢   •K  —  ‰|¦  «        }|� ‰|j         |¬¦  «        } ‰	| ||||¦  «        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S )N)rŸ   r¡   )Ú_colored)
r‚   r×   rØ   r7   rÙ   r¡   Ústatusr°   rš   Úoriginal_execute_calls
          €€€r4   Ú_execute_callz/ToxProject.patch_execute.<locals>._execute_callß   s·   øè è € ð ˜˜w™œˆIØÐ$Ø&˜;¨xÔ/@ÈIÐVÑVÔV�Ø&Ð& t¨X°wÀÈÑNÔNð ÐRXØ���ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ²AÁAÁArß   T)Úside_effectÚautospec)r‚   r!   r×   r   rØ   r   r7   r   rÙ   r    r-   rÚ   )	r   r   r   r   r!   rß   r8   rF   rG   )r‚   rš   rß   r°   rª   rÄ   rÞ   s    ` @@@@r4   Úpatch_executezToxProject.patch_execute£   s  øøøøø€ ð	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	W�'ñ 	Wô 	Wð 	Wð	ð 	ð 	ð 	ð 	¥ñ 	ô 	ð 	ð$	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(¥/ñ 	(ô 	(ð 	(õ6 
ð	ð 	ð 	ð 	ð 	ð 	ð 	ñ 
Œð	õ !'Ô 4ÐØŒ{Ô ×'Ò'­°È]ÐeiÐ'ÑjÔjÐjr6   c                óR  — i }t          j        t          | j        ¦  «        ¦  «        D ]}\  }}}t	          |¦  «        }|}|                     t          | j        ¦  «        ¦  «        }|j        D ]}|                     |i ¦  «        }Œ|D ]}	||	z                       ¦   «         ||	<   ŒŒ~|S r0   )	rM   Úwalkr�   r;   r   Úrelative_toÚpartsÚ
setdefaultÚ	read_text)
r‚   ÚresultÚdir_nameÚ_ry   Údir_pathÚintoÚrelativeÚelemÚ	file_names
             r4   Ú	structurezToxProject.structureð   sº   € à!#ˆÝ"$¤'­#¨d¬i©.¬.Ñ"9Ô"9ð 	Eð 	EÑˆH�a˜Ý˜H‘~”~ˆHØˆDØ×+Ò+­C°´	©N¬NÑ;Ô;ˆHØ œð 1ð 1�Ø—’ t¨RÑ0Ô0��Ø"ð Eð E�	Ø#+¨iÑ#7×"BÒ"BÑ"DÔ"D��Y‘�ðEàˆr6   NÚtor.   c              #  óÊ   K  — t          j        ¦   «         }t          j        |p| j        ¦  «         	 d V — t          j        |¦  «         d S # t          j        |¦  «         w xY wr0   )r   ÚcwdrM   Úchdirr;   )r‚   rò   Úcur_dirs      r4   rõ   zToxProject.chdirý   sa   è è € å”(‘*”*ˆÝ
Œ���t”yÑ!Ô!Ð!ð	ØˆEˆEˆEåŒH�WÑÔÐÐÐø�BŒH�WÑÔÐÐøøøs   ²A ÁA")Úfrom_cwdÚargsr�   r÷   ÚToxRunOutcomec          
     óô  ‡
— |                       |¦  «        5  d Š
| j                             ¦   «          d }d Š
dˆ
fd„}| j                             ¦   «         5 }|                     t          d| j        ¦  «         |                     t          j	        d|¦  «         |                     t          dt          j        d	d
gt          |¦  «        ¢¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         	 t          |¦  «         n# t          $ r}|j        }Y d }~nd }~ww xY w|€d}t#          |¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «         \  }}	t%          || j        t'          t(          |¦  «        ||	‰
¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nrf   rÔ   r-   r&   c                ó&   •— t          | ¦  «        Š‰S r0   )Úprevious_setup_state)rf   Ústates    €r4   Úour_setup_statez'ToxProject.run.<locals>.our_setup_state  s   ø€ å,¨UÑ3Ô3�Ø�r6   Ú_CWDr   Úargvú-mÚtoxr*   r'   r+   ÚVIRTUALENV_PIPÚembedÚVIRTUALENV_WHEELÚVIRTUALENV_SETUPTOOLSzexit code not set)rf   rÔ   r-   r&   )rõ   r€   Ú
readouterrrl   ÚcontextÚsetattrÚtox_env_apir;   r  r   ÚsysÚ
executabler1   ru   Útox_runÚ
SystemExitÚcodeÚRuntimeErrorrù   r   r¢   )r‚   r÷   rø   r  rþ   ÚmÚ	exceptionrj   r§   r¨   rý   s             @r4   r   zToxProject.run  s‘  ø€ Ø�ZŠZ˜Ñ!Ô!ð 	Tð 	TØˆEØŒK×"Ò"Ñ$Ô$Ð$ØˆDØˆEðð ð ð ð ð ð
 Ô!×)Ò)Ñ+Ô+ð ,¨qØ—	’	�+ v¨t¬yÑ9Ô9Ð9Ø—	’	�#œ' =°/ÑBÔBÐBØ—	’	�#˜v­¬¸¸eÐ'QÅdÈ4ÁjÄjÐ'QÑRÔRÐRØ—’Ð6¸Ñ<Ô<Ð<Ø—’Ð.°Ñ4Ô4Ð4Ø—’Ð)¨7Ñ3Ô3Ð3Ø—’Ð+¨WÑ5Ô5Ð5Ø—’Ð0°'Ñ:Ô:Ð:ð*Ý˜D‘M”M�M�MøÝ!ð *ð *ð *Ø$œ>�D�D�D�D�D�Døøøøð*øøøà�<Ø-�CÝ& sÑ+Ô+Ð+ð  ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð  ”{×-Ò-Ñ/Ô/‰HˆC�Ý   t¤yµ$µs¸D±/´/À3ÈÈUÑSÔSð9	Tð 	Tð 	Tð 	Tñ 	Tô 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tøøøð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tsa   —?G-ÁC)FÅ EÅFÅ
E+ÅE&Å!FÅ&E+Å+FÆG-ÆF	ÆG-ÆF	ÆA
G-Ç-G1Ç4G1c                ó^   — t          | ¦  «        j        › d| j        › dt          | ¦  «        › �S )Nz(path=z) at )Útyper¬   r;   Úidr¸   s    r4   Ú__repr__zToxProject.__repr__%  s/   € Ý�t‘*”*Ô%ÐGÐG¨T¬YÐGÐG½RÀ¹X¼XÐGÐGÐGr6   )ry   rz   r{   r|   r;   r   r}   r~   rl   rm   r8   r#   r-   rq   )r„   r   r{   r|   r…   rz   r-   rq   )rš   r›   r-   r"   )r-   rz   r0   )rò   r|   r-   r.   )rø   r�   r÷   r|   r-   rù   ©r-   r�   )r¬   r­   r®   rƒ   Ústaticmethodr�   râ   rÃ   rñ   r   rõ   r   r  r>   r6   r4   rx   rx   {   sí   € € € € € ð2ð 2ð 2ð 2ð ð%ð %ð %ñ „\ð%ð.Kkð Kkð Kkð KkðZ ð
ð 
ð 
ñ „Xð
ð ðð ð ð ñ „^ðð 7;ð Tð Tð Tð Tð Tð Tð>Hð Hð Hð Hð Hð Hr6   rx   Úsession)r,   Úscopec               #  ó¦   ‡K  — 	 dd l } n# t          $ r d V — Y d S w xY wddlm} dˆfd„}|j        Š	 ||_        d V — ‰|_        d S # ‰|_        w xY w)	Nr   )ÚPep517VirtualEnvPackagerr‚   r  r-   ú	list[str]c                óH   •—  ‰| ¦  «        }|                      d¦  «         |S )NzCOV_*)Úappend)r‚   ré   Úpreviouss     €r4   Údefault_pass_envz8enable_pep517_backend_coverage.<locals>.default_pass_env3  s'   ø€ Ø�˜$‘”ˆØ�Š�gÑÔÐØˆr6   )r‚   r  r-   r  )ÚcoverageÚImportErrorÚ0tox.tox_env.python.virtual_env.package.pyprojectr  Ú_default_pass_env)r"  r  r!  r   s      @r4   Úenable_pep517_backend_coverager&  )  sº   øè è € ðØˆˆˆˆøÝð ð ð ØˆˆˆØˆˆðøøøð ZÐYÐYÐYÐYÐYðð ð ð ð ð ð
 (Ô9€Hð>Ø5EÐ Ô2Øˆˆˆà5=Ð Ô2Ð2Ð2ø°XÐ Ô2Ð=Ð=Ð=Ð=s   …
 Š›³A Á	Ac                  óª   — e Zd Zd'd„Zed(d„¦   «         Zd)d„Zed*d„¦   «         Zd+d„Zd,d-d„Z	d.d„Z
ed.d„¦   «         Zdddœd/d!„Zed0d1d&„¦   «         ZdS )2rù   rÖ   rÔ   rô   r   r  r¢   r§   r�   r¨   rý   úState | Noner-   rq   c                ó¢   — t           j        ddg}|                     |¦  «         || _        || _        || _        || _        || _        || _        d S )Nr  r  )	r  r  ÚextendrÖ   rô   r  r§   r¨   Ú_state)r‚   rÖ   rô   r  r§   r¨   rý   Úextended_cmds           r4   rƒ   zToxRunOutcome.__init__A  sT   € õ œ¨¨eÐ4ˆØ×Ò˜CÑ Ô Ð Ø*ˆŒØˆŒØˆŒ	ØˆŒØˆŒØ$)ˆŒˆˆr6   r&   c                ó@   — | j         €d}t          |¦  «        ‚| j         S )Nzno state)r+  r  )r‚   rj   s     r4   rý   zToxRunOutcome.stateS  s%   € àŒ;ÐØˆCÝ˜sÑ#Ô#Ð#ØŒ{Ðr6   Únamer$   c                ó@   — | j         j                             |¦  «        S r0   )rý   ÚconfÚget_env)r‚   r.  s     r4   Úenv_confzToxRunOutcome.env_confZ  s   € ØŒzŒ×&Ò& tÑ,Ô,Ð,r6   r    c                ó,   — | j         t          j        k    S r0   )r  r   ÚOKr¸   s    r4   ÚsuccesszToxRunOutcome.success]  s   € àŒy�GœJÒ&Ð&r6   c                óB   — | j         sJ t          | ¦  «        ¦   «         ‚d S r0   )r5  Úreprr¸   s    r4   Úassert_successzToxRunOutcome.assert_successa  s$   € ØŒ|Ð'Ð'�T $™ZœZÑ'Ô'Ð'Ð'Ð'r6   Nrµ   c                óZ   — |€| j         dk    n
| j         |k    }|sJ d|› d| › �¦   «         ‚d S )Nr   z
should be z, got )r  )r‚   r  Ústatus_matchs      r4   Úassert_failedzToxRunOutcome.assert_failedd  sG   € Ø)-¨�t”y A’~�~¸4¼9ÈÒ;LˆØÐ<Ð<Ð<¨$Ð<Ð<°dÐ<Ð<Ñ<Ô<Ð<Ð<Ð<r6   c           	     óÄ   — d                      d„ dt          | j        ¦  «        fd| j        fdt          | j        ¦  «        fd| j        fd| j        ffD ¦   «         ¦  «        S )Nrˆ   c              3  óZ   K  — | ]&\  }}|¯d                       |d|v rdnd|¦  «        V — Œ'dS )z{}{}{}rˆ   z: N)Úformat)rP   rQ   Úvs      r4   ú	<genexpr>z)ToxRunOutcome.__repr__.<locals>.<genexpr>i  s^   è è € ð 

ð 

á��1ð ð

Ø�OŠO˜A t¨q y y˜t˜t°d¸AÑ>Ô>ð

ð 

ð 

ð 

ð 

ð 

r6   r  rÖ   rô   zstandard outputzstandard error)r”   r�   r  r   rô   r§   r¨   r¸   s    r4   r  zToxRunOutcome.__repr__h  sv   € Ø�yŠyð 

ð 

ð �˜TœY™œÐ(Ø˜œÐ'Ø�˜DœH™œÐ&Ø" D¤HÐ-Ø! 4¤8Ð,ðð

ñ 

ô 

ñ 

ô 

ð 
	
r6   c                ó*   — t          | j        ¦  «        S r0   )r   rÖ   r¸   s    r4   r   zToxRunOutcome.shell_cmdu  s   € å˜œÑ"Ô"Ð"r6   TF)r“   Úregexr“   rB  c               ó´  — |r&t          j        |¦  «                             ¦   «         }|r4|                      || j        t
          j        t
          j        z  ¦  «         n| j        |k    sJ ‚|r&t          j        |¦  «                             ¦   «         }|r5|                      || j        t
          j        t
          j        z  ¦  «         d S | j        |k    sJ ‚d S r0   )	r’   r“   ÚlstripÚmatchesr§   ÚreÚ	MULTILINEÚDOTALLr¨   )r‚   r§   r¨   r“   rB  s        r4   Úassert_out_errzToxRunOutcome.assert_out_erry  sÅ   € Øð 	0Ý”/ #Ñ&Ô&×-Ò-Ñ/Ô/ˆCØð 	#Ø�LŠL˜˜dœh­¬µr´yÑ(@ÑAÔAÐAÐAà”8˜s’?�?�?�?Øð 	0Ý”/ #Ñ&Ô&×-Ò-Ñ/Ô/ˆCØð 	#Ø�LŠL˜˜dœh­¬µr´yÑ(@ÑAÔAÐAÐAÐAà”8˜s’?�?�?�?�?�?r6   r   ÚpatternÚtextÚflagsc                óÌ   — 	 ddl m}  || |¬¦  «        |k    sJ ‚d S # t          $ r< t          j        | ||¦  «        }|€t          j        dt          d¬¦  «         |sJ ‚Y d S w xY w)Nr   )ÚMatches)rL  z:install the re-assert PyPI package for bette error messager‰   )Ú
stacklevel)Ú	re_assertrN  r#  rF  ÚmatchÚwarningsÚwarnÚUserWarning)rJ  rK  rL  rN  rQ  s        r4   rE  zToxRunOutcome.matches‡  sŸ   € ð	9Ø)Ð)Ð)Ð)Ð)Ð)ð �7˜7¨%Ð0Ñ0Ô0°DÒ8Ð8Ð8Ð8Ð8Ð8øõ ð 	ð 	ð 	Ý”H˜W d¨EÑ2Ô2ˆEØˆ}Ý”ÐZÕ\gÐtuÐvÑvÔvÐvØˆLˆLˆLˆLˆLˆLð		øøøs   ‚ �AA#Á"A#)rÖ   rÔ   rô   r   r  r¢   r§   r�   r¨   r�   rý   r(  r-   rq   )r-   r&   )r.  r�   r-   r$   )r-   r    rÂ   r0   )r  rµ   r-   rq   r  )
r§   r�   r¨   r�   r“   r    rB  r    r-   rq   )r   )rJ  r�   rK  r�   rL  r¢   r-   rq   )r¬   r­   r®   rƒ   rÃ   rý   r2  r5  r8  r;  r  r   rI  r  rE  r>   r6   r4   rù   rù   @  s*  € € € € € ð*ð *ð *ð *ð$ ðð ð ñ „Xðð-ð -ð -ð -ð ð'ð 'ð 'ñ „Xð'ð(ð (ð (ð (ð=ð =ð =ð =ð =ð
ð 
ð 
ð 
ð ð#ð #ð #ñ „Xð#ð DHÐW\ð #ð #ð #ð #ð #ð #ð ð	9ð 	9ð 	9ð 	9ñ „\ð	9ð 	9ð 	9r6   rù   c                  ó   — e Zd Z	 	 d
dd	„ZdS )ÚToxProjectCreatorNry   rz   r{   r|   Úprj_pathr-   rx   c                ó   — d S r0   r>   )r‚   ry   r{   rW  s       r4   Ú__call__zToxProjectCreator.__call__•  s	   € ð
 �Sr6   ©NN©ry   rz   r{   r|   rW  r|   r-   rx   )r¬   r­   r®   rY  r>   r6   r4   rV  rV  ”  s5   € € € € € ð !Ø $ð	ð ð ð ð ð ð r6   rV  Útox_project)r.  Útmp_pathr   r}   r~   c                ó"   ‡ ‡‡‡— d	d
ˆˆˆˆ fd„}|S )Nry   rz   r{   r|   rW  r-   rx   c                ó6   •— t          | ||p‰dz  ‰‰‰¦  «        S )zCreate tox  projects.Úp)rx   )ry   r{   rW  r}   r8   rl   r]  s      €€€€r4   Ú_initzinit_fixture.<locals>._init¤  s%   ø€ å˜%  xÐ'A°8¸c±>À5È+ÐW]Ñ^Ô^Ð^r6   rZ  r[  r>   )r]  r}   rl   r8   ra  s   ```` r4   Úinit_fixturerb  �  sI   øøøø€ ð_ð _ð _ð _ð _ð _ð _ð _ð _ð _ð €Lr6   c                óT   —  | ddi¦  «        }|                      |j        ¦  «         |S )Nztox.iniÚ )rõ   r;   )r\  rl   Úprojects      r4   Úempty_projectrf  «  s0   € àˆk˜9 b˜/Ñ*Ô*€GØ×Ò�g”lÑ#Ô#Ð#Ø€Nr6   z--run-integrationÚparserúpytest.Parserc                ó@   — |                       t          dd¬¦  «         d S )NÚ
store_truezrun the integration tests)ÚactionÚhelp)Ú	addoptionÚ_RUN_INTEGRATION_TEST_FLAG)rg  s    r4   Úpytest_addoptionro  µ  s%   € Ø
×ÒÕ/¸ÐKfÐÑgÔgÐgÐgÐgr6   Úconfigúpytest.Configc                ó^   — |                       dd¦  «         |                       dd¦  «         d S )NÚmarkersÚintegrationr:   )Úaddinivalue_line)rp  s    r4   Úpytest_configurerv  ¹  s4   € Ø
×Ò˜I }Ñ5Ô5Ð5Ø
×Ò˜I }Ñ5Ô5Ð5Ð5Ð5r6   )Útrylastr`   úlist[pytest.Function]c                ó8  — t          |¦  «        dk    rd S t          j                             dt          › d�¬¦  «        }dd	„}|                      t          ¦  «        }|s%|D ]"} ||¦  «        r|                     |¦  «         Œ#|                     |¬
¦  «         d S )Nr‰   zintegration tests not run (no z flag))ÚreasonÚ	test_itemúpytest.Functionr-   r    c                ó0   — |                       d¦  «        d uS )Nrt  )rE   )r{  s    r4   Úis_integrationz5pytest_collection_modifyitems.<locals>.is_integrationÆ  s   € Ø×+Ò+¨MÑ:Ô:À$ÐFÐFr6   )re   )r{  r|  r-   r    )Úlenrb   ÚmarkÚskiprn  Ú	getoptionÚ
add_markerÚsort)rp  r`   Úskip_intr~  Úintegration_enabledÚitems         r4   Úpytest_collection_modifyitemsrˆ  ¾  sÂ   € õ ˆ5�z„z�Q‚€ØˆåŒ{×ÒÐ'jÕHbÐ'jÐ'jÐ'jÐÑkÔk€HðGð Gð Gð Gð !×*Ò*Õ+EÑFÔFÐØð *Øð 	*ð 	*ˆDØˆ~˜dÑ#Ô#ð *Ø—’ Ñ)Ô)Ð)øà	‡J‚J�>€JÑ"Ô"Ð"Ð"Ð"r6   Úurlú
str | Nonec                óò   — |€|                       dd¬¦  «         n|                      d|¦  «         |                      dt          d¦  «        ¦  «         |                      dt          d¦  «        ¦  «         d S )NÚPIP_INDEX_URLF)ÚraisingÚPIP_RETRIESé   ÚPIP_TIMEOUTé   )Údelenvru   r�   )rl   r‰  s     r4   Úenable_pypi_serverr“  Ò  sw   € Ø
€{Ø×Ò˜?°EÐÑ:Ô:Ð:Ð:à×Ò˜?¨CÑ0Ô0Ð0Ø×Ò�}¥c¨!¡f¤fÑ-Ô-Ð-Ø×Ò�}¥c¨!¡f¤fÑ-Ô-Ð-Ð-Ð-r6   )r  Útmp_path_factoryúpytest.TempPathFactoryúIterator[IndexServer]c              #  ó¸   K  — |                       d¦  «        }t          |¦  «        5 }|                     dd¦  «         |V — d d d ¦  «         d S # 1 swxY w Y   d S )NÚpypiÚemptyzvolatile=False)Úmktempr   Úcreate_index)r”  r;   Úservers      r4   Úpypi_serverr�  Û  sª   è è € ð ×"Ò" 6Ñ*Ô*€DÝ	�TÑ	Ô	ð ˜fØ×Ò˜GÐ%5Ñ6Ô6Ð6Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   §AÁAÁAr¢   c                 ó&  — t          t          j        t          j        t          j        ¦  «        ¦  «        5 } |                      d¦  «         t          t          |                      ¦   «         d         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )N)rd  r   r‰   )r   ÚsocketÚAF_INETÚSOCK_STREAMÚbindr   r¢   Úgetsockname)Úsocket_handlers    r4   Ú_invalid_index_fake_portr¥  ä  s´   € å	•”�vœ~­vÔ/AÑBÔBÑ	CÔ	Cð :À~Ø×Ò˜GÑ$Ô$Ð$Ý•C˜×3Ò3Ñ5Ô5°aÔ8Ñ9Ô9ð:ð :ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :s   ·ABÂB
ÂB
r¥  útuple[str, str | None]c                ó  — t           j                             d¦  «        }d| › d�}|                     d|¦  «         |                     dt	          d¦  «        ¦  «         |                     dt	          d¦  «        ¦  «         ||fS )ú`Set a fake pip index url, tests that want to use a pypi server should create and overwrite this.rŒ  zhttp://localhost:z/bad-pypi-serverrŽ  r   r�  gü©ñÒMbP?)rM   rN   Úgetru   r�   )r¥  rl   Úprevious_urlÚnew_urls       r4   Údisable_pip_pypi_accessr¬  ë  s�   € õ ”:—>’> /Ñ2Ô2€LØLÐ":ÐLÐLÐL€GØ×Ò�¨Ñ0Ô0Ð0Ø×Ò�}¥c¨!¡f¤fÑ-Ô-Ð-Ø×Ò�}¥c¨%¡j¤jÑ1Ô1Ð1Ø�LÐ Ð r6   Úenable_pip_pypi_accessr¬  c                ó0   — | \  }}t          ||¦  «         |S )r¨  )r“  )r¬  rl   rë   rª  s       r4   Úenable_pip_pypi_access_fixturer¯  ö  s#   € ð .�O€A€|Ý�{ LÑ1Ô1Ð1ØÐr6   rø   úCallable[..., Any]c                ó@  — t          j        ¦   «         d         }t          j        |d         ¦  «        }|€J ‚t          |j        › d|d         › �¦  «        }|j        |_        |j                             d„ |D ¦   «         ¦  «         |                      d|¬¦  «         d S )Nr‰   r   ú|é   c                ó   — i | ]
}|j         |“ŒS r>   )r¬   )rP   Úfs     r4   rR   z*register_inline_plugin.<locals>.<dictcomp>  s   € Ð8Ð8Ð8¨a˜AœJ¨Ð8Ð8Ð8r6   ztox.plugin.manager.load_inlinerB   )	r•   ÚstackÚ	getmoduler   r¬   Ú__file__Ú__dict__ÚupdaterF   )r8   rø   Ú
frame_infoÚcaller_moduleÚplugins        r4   Úregister_inline_pluginr¾    s    € Ý”‘” Ô#€JÝÔ% j°¤mÑ4Ô4€MØÐ$Ð$Ð$Ý˜=Ô1ÐCÐC°J¸q´MÐCÐCÑDÔD€FØ#Ô,€F„OØ
„O×ÒÐ8Ð8°4Ð8Ñ8Ô8Ñ9Ô9Ð9Ø
‡L‚LÐ1À€LÑGÔGÐGÐGÐGr6   )
r~   ÚLogCaptureFixtureÚMonkeyPatchr   ÚTempPathFactoryrx   rV  rù   rk   r¾  )r-   r.   )r7   r   r8   r#   r-   r.   )rl   rm   r-   r.   )rl   rm   rp   rq   r-   rq   )
r]  r   r}   r~   rl   rm   r8   r#   r-   rV  )r\  rV  rl   rm   r-   rx   )rg  rh  r-   rq   )rp  rq  r-   rq   )rp  rq  r`   rx  r-   rq   )rl   rm   r‰  rŠ  r-   rq   )r”  r•  r-   r–  )r-   r¢   )r¥  r¢   rl   rm   r-   r¦  )r¬  r¦  rl   rm   r-   rŠ  )r8   r#   rø   r°  r-   rq   )eÚ__doc__Ú
__future__r   r•   rM   rF  r‹   rŸ  r  r’   rR  Ú
contextlibr   r   Úpathlibr   Útypesr   r   Útypingr	   r
   r   r   r   r   r   rb   Ú_pytest.fixturesr   Údevpi_processr   Úvirtualenv.infor   Útox.runr  Útox.execute.apir   r   r   r   r   Útox.execute.requestr   r   Ú
tox.pluginr   Ú
tox.reportr   r   r   r  r   rü   Útox.session.cmd.run.parallelr   Útox.tox_envr    r
  Útox.tox_env.apir!   Úunittest.mockr"   Úpytest_mockr#   Útox.config.setsr$   Útox.execute.streamr%   Útox.session.stater&   r~   r�   rN   Úfixturer5   rJ   rk   rp   rv   rx   r&  rù   rV  rb  rf  rn  ro  rv  Úhookimplrˆ  r“  r�  r¥  r¬  r¯  r¾  r¿  rÁ  rÀ  Ú__all__r>   r6   r4   ú<module>rÛ     s!  ðØ BÐ Bà "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sà €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø %Ð %Ð %Ð %Ð %Ð %Ø /Ð /Ð /Ð /Ð /Ð /à €€€Ø \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø *Ð *Ð *Ð *Ð *Ð *Ø "Ð "Ð "Ð "Ð "Ð "àð +Ø'Ð'Ð'Ð'Ð'Ð'à)Ð)Ð)Ð)Ð)Ð)à,Ð,Ð,Ð,Ð,Ð,Ø,Ð,Ð,Ð,Ð,Ð,Ø'Ð'Ð'Ð'Ð'Ð'àÔ*¨3Ô/€N€NàÔ*€Nà.1€„
Ð*Ñ +Ø.1€„
Ð*Ñ +àÐÑÔð ,Ø03€B„JÐ,Ñ-Ø(+€B„JÐ$Ñ%ð €„˜ÐÑÔð&ð &ð &ñ Ôð&ð €„˜ÐÑÔðð ð ñ Ôðð& ðð ð ñ „ðð8 €„˜ÐÑÔðð ð ñ Ôðð €„˜ÐÑÔð*ð *ð *ñ Ôð*ðkHð kHð kHð kHð kHñ kHô kHð kHð\ €„˜ IÐ.Ñ.Ô.ð>ð >ð >ñ /Ô.ð>ð,Q9ð Q9ð Q9ð Q9ð Q9ñ Q9ô Q9ð Q9ðhð ð ð ð ˜ñ ô ð ð €„�]Ð#Ñ#Ô#ð
ð 
ð 
ñ $Ô#ð
ð €„ÑÔðð ð ñ Ôðð 1Ð ðhð hð hð hð6ð 6ð 6ð 6ð
 €„˜ÐÑÔð#ð #ð #ñ Ôð#ð&.ð .ð .ð .ð €„�iÐ Ñ Ô ðð ð ñ !Ô ðð €„�iÐ Ñ Ô ð:ð :ð :ñ !Ô ð:ð €„˜ÐÑÔð!ð !ð !ñ Ôð!ð €„Ð-Ð.Ñ.Ô.ðð ð ñ /Ô.ððHð Hð Hð Hð Ô,Ð ØÔ(€ØÔ €ð€€€r6   