File: //proc/thread-self/root/lib/python3/dist-packages/twisted/python/__pycache__/monkey.cpython-38.pyc
U
W[� � @ s$ d dl mZmZ G dd� de�ZdS )� )�division�absolute_importc @ s@ e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Zdd
� Z dS )�
MonkeyPatcherzn
Cover up attributes with new objects. Neat for monkey-patching things for
unit-testing purposes.
c G s$ g | _ g | _|D ]}| j|� qd S )N)�_patchesToApply�
_originals�addPatch)�selfZpatches�patch� r
�7/usr/lib/python3/dist-packages/twisted/python/monkey.py�__init__ s zMonkeyPatcher.__init__c C s | j �|||f� dS )z�
Add a patch so that the attribute C{name} on C{obj} will be assigned to
C{value} when C{patch} is called or during C{runWithPatches}.
You can restore the original values with a call to restore().
N)r �append�r �obj�name�valuer
r
r r s zMonkeyPatcher.addPatchc C s, | j D ] \}}}||f||fkr dS qdS )zc
Has the C{name} attribute of C{obj} already been patched by this
patcher?
TF)r )r r r �o�n�vr
r
r �_alreadyPatched# s zMonkeyPatcher._alreadyPatchedc C sF | j D ]:\}}}| �||�s4| j�||t||�f� t|||� qdS )z�
Apply all of the patches that have been specified with L{addPatch}.
Reverse this operation using L{restore}.
N)r r r r
�getattr�setattrr r
r
r r . s zMonkeyPatcher.patchc C s( | j r$| j �� \}}}t|||� q dS )zE
Restore all original values to any patched objects.
N)r �popr r r
r
r �restore9 s zMonkeyPatcher.restorec O s&