§
    Ètºf  ã                   óX   — d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	  G d„ d¦  «        Z
dS )z\
Facilities for helping test code which interacts with Python's module system
to load code.
é    N)Ú
ModuleType)ÚIterableÚListÚTuple)ÚFilePathc                   óx   — e Zd ZdZdee         ddfd„Zdeeee	f                  ddfd„Z
dd	edee         fd
„ZdS )ÚTwistedModulesMixinz‰
    A mixin for C{twisted.trial.unittest.SynchronousTestCase} providing useful
    methods for manipulating Python's module system.
    ÚsysPathÚreturnNc                 óˆ   ‡— t           j        dd…         Šdˆfd„}|                      |¦  «         |t           j        dd…<   dS )zW
        Replace sys.path, for the duration of the test, with the given value.
        Nr   c                  ó*   •— ‰ t           j        d d …<   d S ©N)ÚsysÚpath)ÚoriginalSysPaths   €úb/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/python/test/modules_helpers.pyÚcleanUpSysPathz:TwistedModulesMixin.replaceSysPath.<locals>.cleanUpSysPath   s   ø€ Ø)�CŒH�Q�Q�Q‰KˆKˆKó    ©r   N)r   r   Ú
addCleanup)Úselfr
   r   r   s      @r   ÚreplaceSysPathz"TwistedModulesMixin.replaceSysPath   sY   ø€ õ œ( 1 1 1œ+ˆð	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	�Š˜Ñ'Ô'Ð'Ø�Œ���‰ˆˆr   Ú
sysModulesc                 óô   ‡— t           j                             ¦   «         Šdˆfd„}|                      |¦  «         t           j                             ¦   «          t           j                             |¦  «         dS )zZ
        Replace sys.modules, for the duration of the test, with the given value.
        r   Nc                  ó‚   •— t           j                             ¦   «          t           j                             ‰ ¦  «         d S r   )r   ÚmodulesÚclearÚupdate)ÚoriginalSysModuless   €r   ÚcleanUpSysModulesz@TwistedModulesMixin.replaceSysModules.<locals>.cleanUpSysModules(   s4   ø€ ÝŒK×ÒÑÔÐÝŒK×ÒÐ1Ñ2Ô2Ð2Ð2Ð2r   r   )r   r   Úcopyr   r   r   )r   r   r    r   s      @r   ÚreplaceSysModulesz%TwistedModulesMixin.replaceSysModules"   s|   ø€ õ !œ[×-Ò-Ñ/Ô/Ðð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	�ŠÐ)Ñ*Ô*Ð*ÝŒ×ÒÑÔÐÝŒ×Ò˜:Ñ&Ô&Ð&Ð&Ð&r   Útest_packageÚpkgnamec                 óê   — t          |                      ¦   «         ¦  «        }|                     d¦  «        }|                     ¦   «          |                     d¦  «                             d¦  «         |S )z‰
        Generate a L{FilePath} with one package, named C{pkgname}, on it, and
        return the L{FilePath} of the path entry.
        r#   z__init__.pyr   )r   ÚmktempÚchildÚmakedirsÚ
setContent)r   r$   ÚentryÚpkgs       r   ÚpathEntryWithOnePackagez+TwistedModulesMixin.pathEntryWithOnePackage0   s\   € õ
 ˜Ÿš™œÑ'Ô'ˆØ�kŠk˜.Ñ)Ô)ˆØ�Š‰ŒˆØ�	Š	�-Ñ Ô ×+Ò+¨CÑ0Ô0Ð0Øˆr   )r#   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   r   r   r   r"   r   r,   © r   r   r	   r	      s¡   € € € € € ðð ð

 d¨3¤ið 
°Dð 
ð 
ð 
ð 
ð'¨H°U¸3À
¸?Ô5KÔ,Lð 'ÐQUð 'ð 'ð 'ð 'ð	ð 	¨sð 	ÈÐQTÌð 	ð 	ð 	ð 	ð 	ð 	r   r	   )r0   r   Útypesr   Útypingr   r   r   Útwisted.python.filepathr   r	   r2   r   r   ú<module>r6      sŽ   ððð ð
 €
€
€
Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à ,Ð ,Ð ,Ð ,Ð ,Ð ,ð)ð )ð )ð )ð )ñ )ô )ð )ð )ð )r   