MCPcopy Index your code
hub / github.com/clips/pattern / Stream

Class Stream

pattern/web/__init__.py:539–572  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

537 setattr(object, method, new.instancemethod(function, object))
538
539class Stream(list):
540
541 def __init__(self, url, delimiter="\n", **kwargs):
542 """ Buffered stream of data from a given URL.
543 """
544 self.socket = URL(url).open(**kwargs)
545 self.buffer = ""
546 self.delimiter = delimiter
547
548 def update(self, bytes=1024):
549 """ Reads a number of bytes from the stream.
550 If a delimiter is encountered, calls Stream.parse() on the packet.
551 """
552 packets = []
553 self.buffer += self.socket.read(bytes)
554 self.buffer = self.buffer.split(self.delimiter, 1)
555 while len(self.buffer) > 1:
556 data = self.buffer[0]
557 data = self.parse(data)
558 if data is not None:
559 packets.append(data)
560 self.buffer = self.buffer[-1]
561 self.buffer = self.buffer.split(self.delimiter, 1)
562 self.buffer = self.buffer[-1]
563 self.extend(packets)
564 return packets
565
566 def parse(self, data):
567 """ Must be overridden in a subclass.
568 """
569 return data
570
571 def clear(self):
572 list.__init__(self, [])
573
574def stream(url, delimiter="\n", parse=lambda data: data, **kwargs):
575 """ Returns a new Stream with the given parse method.

Callers 1

streamFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…