+
    Dfj'                         R t ^ RIHtHt ^ RIHt  ! R R4      t ! R R]4      t ! R R]4      t ! R	 R
]4      t	 ! R R4      t
 ! R R]4      t^ RIHt  ! R R]],          ]4      tR# )z7
Utility classes for dealing with circular references.
)logreflect)_constructMethodc                   <   a  ] tR t^t o R tR tRtR tR tRt	V t
R# )NotKnownc                "    . V n         ^ V n        R#     N)
dependantsresolvedselfs   &</usr/lib/python3/dist-packages/twisted/persisted/crefutil.py__init__NotKnown.__init__   s        c                f    V P                   '       d   Q hV P                  P                  W34       R # N)r   r
   append)r   mutableObjectkeys   &&&r   addDependantNotKnown.addDependant   s&    ===  34r   Nc                R    ^V n         Wn        V P                   F	  w  r#WV&   K  	  R# )   N)r   resolvedObjectr
   )r   	newObjectmutr   s   &&  r   resolveDependantsNotKnown.resolveDependants   s&    'HC H (r   c                    Q R4       h)r	   z(I am not to be used as a dictionary key. r   s   &r   __hash__NotKnown.__hash__!   s    <<<qr   )r
   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r"   __static_attributes____classdictcell____classdict__s   @r   r   r      s%     5 N!= =r   r   c                   0   a  ] tR t^%t o RtR tR tRtV tR# )
_ContainerzC
Helper class to resolve circular references on container objects.
c                   \         P                  V 4       W n        Wn        \	        \        \        V4      4      4      V n        \        \        V4      4       FS  p\        W,          \         4      '       g   V P                  P                  V4       K<  W,          P                  W4       KU  	  V P                  '       g-   V P                  V P                  V P                  4      4       R# R# )z
@param l: The list of object which may contain some not yet referenced
objects.

@param containerType: A type of container objects (e.g., C{tuple} or
    C{set}).
N)r   r   containerTypellistrangelenlocs
isinstanceremover   r   )r   r0   r/   idxs   &&& r   r   _Container.__init__*   s     	$*s1v'	Q=Cafh//		  %##D.	 !
 yyy""4#5#5dff#=> r   c                   W P                   V&   \        V\        4      '       g\   V P                  P	                  V4       V P                  '       g-   V P                  V P                  V P                   4      4       R# R# R# )zh
Change the value of one contained objects, and resolve references if
all objects have been referenced.
N)r0   r5   r   r4   r6   r   r/   r   nobjs   &&&r   __setitem___Container.__setitem__>   s^    
 q	#x((IIQ999&&t'9'9$&&'AB  )r   )r/   r0   r4   N)	r$   r%   r&   r'   __doc__r   r=   r(   r)   r*   s   @r   r-   r-   %   s     ?(	C 	Cr   r-   c                   *   a  ] tR t^Jt o RtR tRtV tR# )_TuplezU
Manage tuple containing circular references. Deprecated: use C{_Container}
instead.
c                :    \         P                  W\        4       R# )zQ
@param l: The list of object which may contain some not yet referenced
objects.
N)r-   r   tuple)r   r0   s   &&r   r   _Tuple.__init__P   s    
 	DU+r   r!   N)r$   r%   r&   r'   r?   r   r(   r)   r*   s   @r   rA   rA   J   s     
, ,r   rA   c                   2   a  ] tR t^Xt o R tR tR tRtV tR# )_InstanceMethodc                l    \         P                  V 4       W0n        Wn        VP	                  V ^ 4       R# r   )r   r   my_classnamer   )r   im_nameim_selfim_classs   &&&&r   r   _InstanceMethod.__init__Y   s*    $ 	T1%r   c                   ^ RI p\        P                  ! R\        P                  ! V P
                  4       RV P                   24       \        P                  ! RV: RV: 24       VP                  \        P                  R7       Q h)r	   Nzinstance method .zbeing called with  )file)		tracebackr   msgr   qualrH   rI   print_stacklogfile)r   argskwrR   s   &*, r   __call___InstanceMethod.__call__`   se    "7<<#>"?qLM$THAbV453;;/qr   c                    V^ 8X  g   Q R4       h\        V\        4      '       g5   \        V P                  V P                  V4      pV P                  V4       R# R# )r	   zonly zero index allowedN)r5   r   r   rH   rI   r   )r   r;   r<   methods   &&& r   r=   _InstanceMethod.__setitem__h   sJ    Av000v#x((%dmmTYYDF""6* )r   )rH   rI   N)	r$   r%   r&   r'   r   rY   r=   r(   r)   r*   s   @r   rF   rF   X   s     &+ +r   rF   c                   ,   a  ] tR t^ot o R tR tRtV tR# )_DictKeyAndValuec                    Wn         R # r   )dict)r   ra   s   &&r   r   _DictKeyAndValue.__init__p   s    	r   c                    VR9  d   \        R4      hV'       d   W n        MW n        \        V R4      '       d:   \        V R4      '       d&   V P                  V P                  V P                  &   R# R# R# )r   z6DictKeyAndValue should only ever be called with 0 or 1r   valueN)r   r	   )RuntimeErrorrd   r   hasattrra   r:   s   &&&r   r=   _DictKeyAndValue.__setitem__s   sY    F?WXXJH4GD'$:$:"&**DIIdhh %;r   )ra   r   rd   N)r$   r%   r&   r'   r   r=   r(   r)   r*   s   @r   r_   r_   o   s     - -r   r_   c                   &   a  ] tR t^~t o R tRtV tR# )_Dereferencec                <    \         P                  V 4       Wn        R # r   )r   r   id)r   rk   s   &&r   r   _Dereference.__init__   s    $r   )rk   N)r$   r%   r&   r'   r   r(   r)   r*   s   @r   ri   ri   ~   s      r   ri   )Deferredc                   6   a  ] tR t^t o R t^ tR tR tRtV t	R# )_Deferc                |    \         P                  ! V 4       \        P                  V 4       V P                  4        R # r   )rm   r   r   pauser   s   &r   r   _Defer.__init__   s'    $$

r   c                    V P                   '       d   \        R P                  W4      4      h^V n         V P                  V4       R# )z8setitem should only be called once, setting {!r} to {!r}N)wassetre   formatcallbackr:   s   &&&r   r=   _Defer.__setitem__   s>    ;;;JQQ  DKcr   c                    \         P                  WV4       V P                  4        V P                  pV P	                  V4       R # r   )r   r   unpauseresultr   )r   depr   resovds   &&& r   r   _Defer.addDependant   s4     	d-v&r   )rt   N)
r$   r%   r&   r'   r   rt   r=   r   r(   r)   r*   s   @r   ro   ro      s      
 F	' 'r   ro   N)r?   twisted.pythonr   r   twisted.python.compatr   r   r-   rA   rF   r_   ri   twisted.internet.deferrm   objectro   r!   r   r   <module>r      sq   
 ( 2= =*"C "CJ,Z ,+h +.- -8  ,'Xfx 'r   