ϪfndZddlmZddlmZmZddlmZddlm Z m Z dZ ee Gdd Z y ) z' Log observer that maintains a buffer. )deque)DequeOptional) implementer) ILogObserverLogEventicJeZdZdZefdeeddfdZdeddfdZ de ddfd Z y) 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}] >>> sizereturnNc&t||_y)zx @param size: The maximum number of events to buffer. If L{None}, the buffer is unbounded. )maxlenN)r_buffer)selfr s 8/usr/lib/python3/dist-packages/twisted/logger/_buffer.py__init__z"LimitedHistoryLogObserver.__init__%s ).T(: eventc:|jj|y)N)rappend)rrs r__call__z"LimitedHistoryLogObserver.__call__,s E"r otherObserverc6|jD] }|| y)z Re-play the buffered events to another log observer. @param otherObserver: An observer to replay events to. N)r)rrrs rreplayToz"LimitedHistoryLogObserver.replayTo/s \\ !E %  !r) __name__ __module__ __qualname____doc___DEFAULT_BUFFER_MAXIMUMrintrr rrrrrr r sJ .E;Xc];;#h#4#!l!t!rr N) r collectionsrtypingrrzope.interfacer _interfacesrr r r r"rrr's< "&/# \"!"!"!r