§
    ¯õi  ã                  óÜ   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	Z	ddl
mZmZ erd dlmZmZmZmZ d d	lmZ d d
lmZ edd„¦   «         Z G d„ d¦  «        Zdd„Zedd„¦   «         ZdS )é    )ÚannotationsN)ÚOrderedDict)Úcontextmanager)ÚTYPE_CHECKINGé   )ÚConflictDetectorÚis_main_thread)ÚAsyncIteratorÚCallableÚ	GeneratorÚIterable)Ú	FrameType)ÚSelfÚsignalsúIterable[int]ÚhandlerúHCallable[[int, FrameType | None], object] | int | signal.Handlers | NoneÚreturnúGenerator[None, None, None]c              #  ó2  K  — i }	 t          | ¦  «        D ]}t          j        ||¦  «        ||<   Œd V — |                     ¦   «         D ]\  }}t          j        ||¦  «         Œd S # |                     ¦   «         D ]\  }}t          j        ||¦  «         Œw xY w©N)ÚsetÚsignalÚitems)r   r   Úoriginal_handlersÚsignumÚoriginal_handlers        úY/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/trio/_signals.pyÚ_signal_handlerr   6   sÎ   è è € ð
 Ðð4Ý˜'‘l”lð 	Gð 	GˆFÝ(.¬°f¸gÑ(FÔ(FÐ˜fÑ%Ð%Øˆˆˆà(9×(?Ò(?Ñ(AÔ(Að 	4ð 	4Ñ$ˆFÐ$ÝŒM˜&Ð"2Ñ3Ô3Ð3Ð3ð	4ð 	4øÐ(9×(?Ò(?Ñ(AÔ(Að 	4ð 	4Ñ$ˆFÐ$ÝŒM˜&Ð"2Ñ3Ô3Ð3Ð3ð	4øøøs   †.A% Á%1Bc                  ó6   — e Zd Zdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚSignalReceiverr   ÚNonec                ó¨   — t          ¦   «         | _        t          j                             ¦   «         | _        t          d¦  «        | _        d| _        d S )Nz8only one task can iterate on a signal receiver at a timeF)	r   Ú_pendingÚtrioÚlowlevelÚ
ParkingLotÚ_lotr   Ú_conflict_detectorÚ_closed©Úselfs    r   Ú__init__zSignalReceiver.__init__F   sD   € å0;±´ˆŒÝ”M×,Ò,Ñ.Ô.ˆŒ	Ý"2ØFñ#
ô #
ˆÔð ˆŒˆˆó    r   Úintc                ó†   — | j         rt          j        |¦  «         d S d | j        |<   | j                             ¦   «          d S r   )r*   r   Úraise_signalr$   r(   Úunpark)r,   r   s     r   Ú_addzSignalReceiver._addO   sI   € ØŒ<ð 	ÝÔ Ñ'Ô'Ð'Ð'Ð'à$(ˆDŒM˜&Ñ!ØŒI×ÒÑÔÐÐÐr.   c                ó:   ‡ ‡— d‰ _         dˆˆ fd„Š ‰¦   «          d S )NTr   r"   c                 ó²   •— ‰j         rN‰j                              d¬¦  «        \  } }	 t          j        | ¦  «          ‰¦   «          d S #  ‰¦   «          w xY wd S )NF©Úlast)r$   Úpopitemr   r1   )r   Ú_Údeliver_nextr,   s     €€r   r:   z9SignalReceiver._redeliver_remaining.<locals>.deliver_next^   sh   ø€ ØŒ}ð #Ø œM×1Ò1°uÐ1Ñ=Ô=‘	�˜ð#ÝÔ'¨Ñ/Ô/Ð/à �L‘N”N�N�N�Nø�L�L‘N”N�N�Nøøøð#ð #s   ¨A ÁA©r   r"   )r*   )r,   r:   s   `@r   Ú_redeliver_remainingz#SignalReceiver._redeliver_remainingV   sA   øø€ ð ˆŒð
	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	ˆ‰Œˆˆˆr.   r   c                ó   — | S r   © r+   s    r   Ú	__aiter__zSignalReceiver.__aiter__h   s   € Øˆr.   c              ƒ  óJ  K  — | j         rt          d¦  «        ‚| j        5  | j        s | j                             ¦   «         ƒ d {V —† n$t          j                             ¦   «         ƒ d {V —† | j         	                    d¬¦  «        \  }}|cd d d ¦  «         S # 1 swxY w Y   d S )Nz)open_signal_receiver block already exitedFr6   )
r*   ÚRuntimeErrorr)   r$   r(   Úparkr%   r&   Ú
checkpointr8   )r,   r   r9   s      r   Ú	__anext__zSignalReceiver.__anext__k   s  è è € ØŒ<ð 	LÝÐJÑKÔKÐKð Ô$ð 	ð 	Ø”=ð 1Ø”i—n’nÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&å”m×.Ò.Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Øœ×-Ò-°5Ð-Ñ9Ô9‰IˆF�AØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s    A+BÂBÂBNr;   )r   r/   r   r"   )r   r   )r   r/   )Ú__name__Ú
__module__Ú__qualname__r-   r3   r<   r?   rD   r>   r.   r   r!   r!   E   sx   € € € € € ðð ð ð ðð ð ð ðð ð ð ð$ð ð ð ðð ð ð ð ð r.   r!   ÚrecúAsyncIterator[int]r/   c                óX   — t          | t          ¦  «        sJ ‚t          | j        ¦  «        S )z/Helper for tests, not public or otherwise used.)Ú
isinstancer!   Úlenr$   )rH   s    r   Úget_pending_signal_countrM   z   s*   € õ �c�>Ñ*Ô*Ð*Ð*Ð*ÝˆsŒ|ÑÔÐr.   úsignal.Signals | intú)Generator[AsyncIterator[int], None, None]c               '  ó„  ‡‡K  — | st          d¦  «        ‚t          ¦   «         st          d¦  «        ‚t          j                             ¦   «         Št          ¦   «         Šdˆˆfd	„}	 t          | |¦  «        5  ‰V — d
d
d
¦  «         n# 1 swxY w Y   ‰                     ¦   «          d
S # ‰                     ¦   «          w xY w)aÞ  A context manager for catching signals.

    Entering this context manager starts listening for the given signals and
    returns an async iterator; exiting the context manager stops listening.

    The async iterator blocks until a signal arrives, and then yields it.

    Note that if you leave the ``with`` block while the iterator has
    unextracted signals still pending inside it, then they will be
    re-delivered using Python's regular signal handling logic. This avoids a
    race condition when signals arrives just before we exit the ``with``
    block.

    Args:
      signals: the signals to listen for.

    Raises:
      TypeError: if no signals were provided.

      RuntimeError: if you try to use this anywhere except Python's main
          thread. (This is a Python limitation.)

    Example:

      A common convention for Unix daemons is that they should reload their
      configuration when they receive a ``SIGHUP``. Here's a sketch of what
      that might look like using :func:`open_signal_receiver`::

         with trio.open_signal_receiver(signal.SIGHUP) as signal_aiter:
             async for signum in signal_aiter:
                 assert signum == signal.SIGHUP
                 reload_configuration()

    zNo signals were providedz]Sorry, open_signal_receiver is only possible when running in Python interpreter's main threadr   r/   ÚframeúFrameType | Noner   r"   c                óB   •— ‰                      ‰j        | d¬¦  «         d S )NT)Ú
idempotent)Úrun_sync_soonr3   )r   rQ   ÚqueueÚtokens     €€r   r   z%open_signal_receiver.<locals>.handler²   s&   ø€ Ø×Ò˜EœJ¨¸4ÐÑ@Ô@Ð@Ð@Ð@r.   N)r   r/   rQ   rR   r   r"   )	Ú	TypeErrorr	   rA   r%   r&   Úcurrent_trio_tokenr!   r   r<   )r   r   rV   rW   s     @@r   Úopen_signal_receiverrZ   �   s6  øøè è € ðL ð 4ÝÐ2Ñ3Ô3Ð3åÑÔð 
Ýð/ñ
ô 
ð 	
õ ŒM×,Ò,Ñ.Ô.€EÝÑÔ€EðAð Að Að Að Að Að Að%Ý˜W gÑ.Ô.ð 	ð 	ØˆKˆKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×"Ò"Ñ$Ô$Ð$Ð$Ð$øˆ×"Ò"Ñ$Ô$Ð$Ð$øøøs0   Á'B) Á7BÁ<B) ÂBÂB) ÂBÂB) Â)B?)r   r   r   r   r   r   )rH   rI   r   r/   )r   rN   r   rO   )Ú
__future__r   r   Úcollectionsr   Ú
contextlibr   Útypingr   r%   Ú_utilr   r	   Úcollections.abcr
   r   r   r   Útypesr   Útyping_extensionsr   r   r!   rM   rZ   r>   r.   r   ú<module>rc      sO  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  à €€€à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3àð 'ØLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLØÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&ðL ð4ð 4ð 4ñ „ð4ð2ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ðjð ð ð ð ð7%ð 7%ð 7%ñ „ð7%ð 7%ð 7%r.   