Current File : //proc/self/root/lib/python3/dist-packages/twisted/test/__pycache__/test_twisted.cpython-312.pyc |
�
Ϫ�f� � �^ � d Z ddlZddlmZ ddlmZ G d� d� Zd� Zd� Z G d � d
e� Z y)zt
Tests for miscellaneous behaviors of the top-level L{twisted} package (ie, for
the code in C{twisted/__init__.py}.
� N)�
ModuleType)�TestCasec �( � e Zd ZdZd� Zd� Zd� Zd� Zy)�SetAsideModulez�
L{SetAsideModule} is a context manager for temporarily removing a module
from C{sys.modules}.
@ivar name: The name of the module to remove.
c � � || _ y �N)�name)�selfr s �;/usr/lib/python3/dist-packages/twisted/test/test_twisted.py�__init__zSetAsideModule.__init__ s � ��� � c � � t t j j � � D ��ci c]5 \ }}|| j k( s|j | j dz � r||��7 }}}|D ] }t j |= � |S c c}}w )z�
Find the given module and all of its hierarchically inferior modules in
C{sys.modules}, remove them from it, and return whatever was found.
�.)�list�sys�modules�itemsr �
startswith)r
r �
moduleName�moduler s r � _unimportzSetAsideModule._unimport s� � � )-�S�[�[�->�->�-@�(A�
�$��V��d�i�i�'�:�+@�+@����S��+Q�
���
��
�
� "�D����D�!� "����
s �:Bc �D � | j | j � | _ y r )r r r )r
s r � __enter__zSetAsideModule.__enter__+ s � ��~�~�d�i�i�0��r
c � � | j | j � t j j | j � y r )r r r r �update)r
�excType�excValue� tracebacks r �__exit__zSetAsideModule.__exit__. s( � ����t�y�y�!������4�<�<�(r
N)�__name__�
__module__�__qualname__�__doc__r r r r � r
r r r s � ����1�)r
r c �` � i }t d| |� t j j |� y)a
Take a mapping defining a package and turn it into real C{ModuleType}
instances in C{sys.modules}.
Consider these example::
a = {"foo": "bar"}
b = {"twisted": {"__version__": "42.6"}}
c = {"twisted": {"plugin": {"getPlugins": stub}}}
C{_install(a)} will place an item into C{sys.modules} with C{"foo"} as the
key and C{"bar" as the value.
C{_install(b)} will place an item into C{sys.modules} with C{"twisted"} as
the key. The value will be a new module object. The module will have a
C{"__version__"} attribute with C{"42.6"} as the value.
C{_install(c)} will place an item into C{sys.modules} with C{"twisted"} as
the key. The value will be a new module object with a C{"plugin"}
attribute. An item will also be placed into C{sys.modules} with the key
C{"twisted.plugin"} which refers to that module object. That module will
have an attribute C{"getPlugins"} with a value of C{stub}.
@param modules: A mapping from names to definitions of modules. The names
are native strings like C{"twisted"} or C{"unittest"}. Values may be
arbitrary objects. Any value which is not a dictionary will be added to
C{sys.modules} unmodified. Any dictionary value indicates the value is
a new module and its items define the attributes of that module. The
definition of this structure is recursive, so a value in the dictionary
may be a dictionary to trigger another level of processing.
@return: L{None}
N)�
_makePackagesr r r )r �results r �_installr( 3 s( � �D �F��$���(��K�K���v�r
c �� � i }t |j � � D ]� \ }}| �Mt |t � r7t |� }|j
j
t |||� � |||<