ó
    Ö›‘h�  ã                  óº   • S r SSKJr  SSKJrJr  SSKJrJr  SSK	J
r
  SSKJr  SSKJr   " S	 S
\5      r\R                   r\
" \5       " S S5      5       rSS jrg)z>
Implementation of an in-memory worker that defers execution.
é    )Úannotations)ÚEnumÚauto)ÚCallableÚLiteral)Úimplementeré   )ÚQuit)ÚIExclusiveWorkerc                  ó"   • \ rS rSr\" 5       rSrg)ÚNoMoreé   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   ÚWorkÚ__static_attributes__r   ó    Ú\C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/_threads/_memory.pyr   r      s	   † Ù‹6ƒDr   r   c                  óB   • \ rS rSrSr\4   SS jjrS	S jrS
S jrSr	g)ÚMemoryWorkeré   zl
An L{IWorker} that queues work for later performance.

@ivar _quit: a flag indicating
@type _quit: L{Quit}
c                ó:   • [        5       U l        U" 5       U l        g)z
Create a L{MemoryWorker}.
N)r
   Ú_quitÚ_pending)ÚselfÚpendings     r   Ú__init__ÚMemoryWorker.__init__$   s   € ô “VˆŒ
Ù›	ˆ�r   c                ón   • U R                   R                  5         U R                  R                  U5        g)ze
Queue some work for to perform later; see L{createMemoryWorker}.

@param work: The work to perform.
N)r   Úcheckr   Úappend)r   Úworks     r   ÚdoÚMemoryWorker.do.   s&   € ð 	�
‰
×ÑÔØ�‰×Ñ˜TÕ"r   c                óv   • U R                   R                  5         U R                  R                  [        5        g)z
Quit this worker.
N)r   Úsetr   r$   Ú
NoMoreWork)r   s    r   ÚquitÚMemoryWorker.quit7   s$   € ð 	�
‰
�‰ÔØ�‰×ÑœZÕ(r   )r   r   N)r   z?Callable[[], list[Callable[[], object] | Literal[NoMore.Work]]]ÚreturnÚNone)r%   zCallable[[], object]r-   r.   )r-   r.   )
r   r   r   r   Ú__doc__Úlistr    r&   r+   r   r   r   r   r   r      s/   † ñð TXð"àPð"ð 
õ"ô#÷)r   r   c                 ó0   ^• SU4S jjn [        5       mTU 4$ )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                 ó    >• TR                   (       d  gTR                   S   n U [        L a  gTR                   R                  S5        U " 5         g)NFr   T)r   r*   Úpop)ÚpeekÚworkers    €r   ÚperformÚ#createMemoryWorker.<locals>.performH   s@   ø€ Ø��ØØ�‰˜qÑ!ˆØ”:ÒØØ�‰×Ñ˜AÔÙŒØr   )r-   Úbool)r   )r6   r5   s    @r   ÚcreateMemoryWorkerr9   ?   s   ø€ ÷ô ‹^€FØ�GÐÐr   N)r-   z'tuple[MemoryWorker, Callable[[], bool]])r/   Ú
__future__r   Úenumr   r   Útypingr   r   Úzope.interfacer   Ú_conveniencer
   Ú	_ithreadsr   r   r   r*   r   r9   r   r   r   Ú<module>r@      sZ   ðñ
õ #ç ß $å &å Ý 'ôˆTô ð �[‰[€
ñ ÐÓ÷ )ð  )ó ð )õFr   