stream.py 892 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. class BaseStream:
  2. def __init__(self, size=1024):
  3. self.size = size
  4. def read(self, size=1024):
  5. raise NotImplementedError('read method must be overridden')
  6. def __len__(self):
  7. raise NotImplementedError('__len__ method must be overridden')
  8. def __next__(self):
  9. raise NotImplementedError('__next__ method must be overridden')
  10. def __iter__(self):
  11. return self
  12. class _ReadableMc(type):
  13. def __instancecheck__(self, instance):
  14. if hasattr(instance, 'read') and hasattr(instance, '__iter__'):
  15. return True
  16. class READABLE(metaclass=_ReadableMc):
  17. pass
  18. class _WriteableMc(type):
  19. def __instancecheck__(self, instance):
  20. if hasattr(instance, 'write'):
  21. return True
  22. class WRITABLE(metaclass=_WriteableMc):
  23. pass
  24. STREAM_CLASS = (READABLE, WRITABLE)