+
    Dfj                        R t ^ RIHt ^ RIHtHt ^ RIHtHt ^ RI	H
t
 ^RIHt ^RIHt  ! R R]4      t]P                   t]
! ]4       ! R	 R
4      4       tR R ltR# )z>
Implementation of an in-memory worker that defers execution.
)annotations)Enumauto)CallableLiteral)implementer)Quit)IExclusiveWorkerc                  $    ] tR t^t]! 4       tRtR# )NoMore N)__name__
__module____qualname____firstlineno__r   Work__static_attributes__r       :/usr/lib/python3/dist-packages/twisted/_threads/_memory.pyr   r      s	    6Dr   r   c                  D    ] tR t^tRt]3R R lltR R ltR R ltRt	R	# )
MemoryWorkerzl
An L{IWorker} that queues work for later performance.

@ivar _quit: a flag indicating
@type _quit: L{Quit}
c                    V ^8  d   QhRRRR/# )   pendingz?Callable[[], list[Callable[[], object] | Literal[NoMore.Work]]]returnNoner   )formats   "r   __annotate__MemoryWorker.__annotate__$   s     " "P" 
"r   c                <    \        4       V n        V! 4       V n        R# )z
Create a L{MemoryWorker}.
N)r   _quit_pending)selfr   s   &&r   __init__MemoryWorker.__init__$   s     V
	r   c                    V ^8  d   QhRRRR/# )r   workzCallable[[], object]r   r   r   )r   s   "r   r   r   .   s     # #+ # #r   c                p    V P                   P                  4        V P                  P                  V4       R# )ze
Queue some work for to perform later; see L{createMemoryWorker}.

@param work: The work to perform.
N)r    checkr!   append)r"   r&   s   &&r   doMemoryWorker.do.   s&     	

T"r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   7   s     ) )d )r   c                x    V P                   P                  4        V P                  P                  \        4       R# )z
Quit this worker.
N)r    setr!   r)   
NoMoreWork)r"   s   &r   quitMemoryWorker.quit7   s$     	

Z(r   )r!   r    N)
r   r   r   r   __doc__listr#   r*   r0   r   r   r   r   r   r      s"     TX"#) )r   r   c                   V ^8  d   QhRR/# )r   r   z'tuple[MemoryWorker, Callable[[], bool]]r   )r   s   "r   r   r   ?   s      C r   c                 2   a R V3R llp \        4       oSV 3# )z
Create an L{IWorker} that does nothing but defer work, to be performed
later.

@return: a worker that will enqueue work to perform later, and a callable
    that will perform one element of that work.
c                   V ^8  d   QhRR/# )r   r   boolr   )r   s   "r   r   (createMemoryWorker.<locals>.__annotate__H   s      T r   c                    < SP                   '       g   R # SP                   ^ ,          p V \        J d   R # SP                   P                  ^ 4       V ! 4        R# )FT)r!   r/   pop)peekworkers    r   perform#createMemoryWorker.<locals>.performH   sB    q!:Ar   )r   )r=   r<   s    @r   createMemoryWorkerr?   ?   s!      ^FGr   N)r2   
__future__r   enumr   r   typingr   r   zope.interfacer   _conveniencer   	_ithreadsr	   r   r   r/   r   r?   r   r   r   <module>rF      sZ   
 #  $ &  'T  [[
  )  )  )Fr   