| 1234567891011121314151617181920212223242526272829303132333435363738 |
- class BaseStream:
- def __init__(self, size=1024):
- self.size = size
- def read(self, size=1024):
- raise NotImplementedError('read method must be overridden')
- def __len__(self):
- raise NotImplementedError('__len__ method must be overridden')
- def __next__(self):
- raise NotImplementedError('__next__ method must be overridden')
- def __iter__(self):
- return self
- class _ReadableMc(type):
- def __instancecheck__(self, instance):
- if hasattr(instance, 'read') and hasattr(instance, '__iter__'):
- return True
- class READABLE(metaclass=_ReadableMc):
- pass
- class _WriteableMc(type):
- def __instancecheck__(self, instance):
- if hasattr(instance, 'write'):
- return True
- class WRITABLE(metaclass=_WriteableMc):
- pass
- STREAM_CLASS = (READABLE, WRITABLE)
|