
    h                     n    S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	J
r
  Sr\" \	5       " S S	5      5       rg
)z'
Log observer that maintains a buffer.
    )deque)DequeOptional)implementer   )ILogObserverLogEventi   c                   Z    \ rS rSrSr\4S\\   SS4S jjrS\	SS4S jr
S	\SS4S
 jrSrg)LimitedHistoryLogObserver   a  
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                      [        US9U l        g)z`
@param size: The maximum number of events to buffer.  If L{None}, the
    buffer is unbounded.
)maxlenN)r   _buffer)selfr   s     ]/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/logger/_buffer.py__init__"LimitedHistoryLogObserver.__init__%   s    
 ).T(:    eventc                 :    U R                   R                  U5        g )N)r   append)r   r   s     r   __call__"LimitedHistoryLogObserver.__call__,   s    E"r   otherObserverc                 :    U R                    H  nU" U5        M     g)zn
Re-play the buffered events to another log observer.

@param otherObserver: An observer to replay events to.
Nr   )r   r   r   s      r   replayTo"LimitedHistoryLogObserver.replayTo/   s     \\E%  "r   r   )__name__
__module____qualname____firstlineno____doc___DEFAULT_BUFFER_MAXIMUMr   intr   r	   r   r   r   __static_attributes__ r   r   r   r      sJ      .E ;Xc] ; ;#h #4 #!l !t !r   r   N)r%   collectionsr   typingr   r   zope.interfacer   _interfacesr   r	   r&   r   r)   r   r   <module>r.      s<   
  " & /#  \"! "! "!r   