+
    üÐjë  ã                   ó   €  ! R  R4      t R# )c                   óV   a € ] tR t^t o RtR tR tR tR t]t	R t
RR ltR	 tR
tV tR# )ÚMonkeyPatcherzb
Cover up attributes with new objects. Neat for monkey-patching things for
unit-testing purposes.
c                óT   € . V n         . V n        V F  pV P                  ! V!   K  	  R # ©N)Ú_patchesToApplyÚ
_originalsÚaddPatch)ÚselfÚpatchesÚpatchs   &* Ú7/usr/lib/python3/dist-packages/twisted/python/monkey.pyÚ__init__ÚMonkeyPatcher.__init__   s)   € à!ˆÔð ˆŒÛˆEØ�MŠM˜5Ô!ó ó    c                ó@   € V P                   P                  WV34       R# )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Úvalues   &&&&r   r   ÚMonkeyPatcher.addPatch   s   € ð 	×Ñ×#Ñ# S°Ð$6Ö7r   c                óJ   € V P                    F  w  r4pW43W38X  g   K   R# 	  R# )zK
Has the C{name} attribute of C{obj} already been patched by this
patcher?
TF)r   )r	   r   r   ÚoÚnÚvs   &&&   r   Ú_alreadyPatchedÚMonkeyPatcher._alreadyPatched   s*   € ð
 —”‰GˆA�!Øˆv˜#˜Ö$Úñ 'ñ r   c           	     óÄ   € V P                    FO  w  rpV P                  W4      '       g'   V P                  P                  W\	        W4      34       \        WV4       KQ  	  R# )zn
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   s   &   r   r   ÚMonkeyPatcher.patch)   sP   € ð
 !%× 4Ô 4ÑˆC�uØ×'Ñ'¨×2Ò2Ø—‘×&Ñ&¨´7¸3Ó3EÐ'FÔGÜ�C˜uÖ%ó !5r   c                ó€   € V P                   '       d,   V P                   P                  4       w  rp\        WV4       K=  R# )z5
Restore all original values to any patched objects.
N)r   Úpopr   r   s   &   r   ÚrestoreÚMonkeyPatcher.restore5   s3   € ð �o�oˆoØ#Ÿ™×2Ñ2Ó4ÑˆC�uÜ�C˜uÖ%ñ r   Nc                ó&   € V P                  4        R # r   )r#   )r	   ÚexcTypeÚexcValueÚexcTracebacks   &&&&r   Ú__exit__ÚMonkeyPatcher.__exit__=   s   € Ø�‰Žr   c                ó~   € V P                  4         V! V/ VB V P                  4        #   T P                  4        i ; i)z{
Apply each patch already specified. Then run the function f with the
given args and kwargs. Restore everything when done.
)r   r#   )r	   ÚfÚargsÚkws   &&*,r   ÚrunWithPatchesÚMonkeyPatcher.runWithPatches@   s0   € ð
 	�
‰
Œð	Ù�d�>˜b‘>à�L‰L�NøˆD�L‰L�Nús   ’* ª<)r   r   )NNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú	__enter__r#   r)   r/   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s9   ø‡ € ñò
"ò8òò&ð €Iò&ô÷	ð 	r   r   N)r   © r   r   Ú<module>r;      s   ð÷Bó Br   