§
    ò³\dù  ã                   ó‚   — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 dZ ee	¦  «         G d„ d	¦  «        ¦   «         Zd
S )z'
Log observer that maintains a buffer.
é    )Údeque)ÚDequeÚOptional)Úimplementeré   )ÚILogObserverÚLogEventi   c                   óR   — e Zd ZdZefdee         ddfd„Zdeddfd„Z	de
ddfd	„ZdS )
ÚLimitedHistoryLogObserveraÁ  
    L{ILogObserver} that stores events in a buffer of a fixed size::

        >>> from twisted.logger import LimitedHistoryLogObserver
        >>> history = LimitedHistoryLogObserver(5)
        >>> for n in range(10): history({'n': n})
        ...
        >>> repeats = []
        >>> history.replayTo(repeats.append)
        >>> len(repeats)
        5
        >>> repeats
        [{'n': 5}, {'n': 6}, {'n': 7}, {'n': 8}, {'n': 9}]
        >>>
    ÚsizeÚreturnNc                 ó0   — t          |¬¦  «        | _        dS )zx
        @param size: The maximum number of events to buffer.  If L{None}, the
            buffer is unbounded.
        )ÚmaxlenN)r   Ú_buffer)Úselfr   s     ú6lib/python3.11/site-packages/twisted/logger/_buffer.pyÚ__init__z"LimitedHistoryLogObserver.__init__%   s   € õ
 ).°TÐ(:Ñ(:Ô(:ˆŒˆˆó    Úeventc                 ó:   — | j                              |¦  «         d S )N)r   Úappend)r   r   s     r   Ú__call__z"LimitedHistoryLogObserver.__call__,   s   € ØŒ×Ò˜EÑ"Ô"Ð"Ð"Ð"r   ÚotherObserverc                 ó0   — | j         D ]} ||¦  «         ŒdS )z†
        Re-play the buffered events to another log observer.

        @param otherObserver: An observer to replay events to.
        N)r   )r   r   r   s      r   ÚreplayToz"LimitedHistoryLogObserver.replayTo/   s2   € ð ”\ð 	!ð 	!ˆEØˆM˜%Ñ Ô Ð Ð ð	!ð 	!r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_DEFAULT_BUFFER_MAXIMUMr   Úintr   r	   r   r   r   © r   r   r   r      s“   € € € € € ðð ð  .Eð ;ð ;˜X cœ]ð ;Èð ;ð ;ð ;ð ;ð#˜hð #¨4ð #ð #ð #ð #ð! lð !°tð !ð !ð !ð !ð !ð !r   r   N)r   Úcollectionsr   Útypingr   r   Úzope.interfacer   Ú_interfacesr   r	   r    r   r"   r   r   ú<module>r'      s´   ðð
ð ð Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à &Ð &Ð &Ð &Ð &Ð &à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à#Ð ð €ˆ\ÑÔð"!ð "!ð "!ð "!ð "!ñ "!ô "!ñ Ôð"!ð "!ð "!r   