stream.py 949 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # -*- coding: utf-8 -*-
  2. from Tea.converter import py2
  3. if py2:
  4. from _io import BytesIO
  5. else:
  6. from _io import (
  7. TextIOWrapper,
  8. BufferedReader, BytesIO,
  9. BufferedWriter
  10. )
  11. class BaseStream(object):
  12. def __init__(self, size=1024):
  13. self.size = size
  14. def read(self, size=1024):
  15. raise NotImplementedError('read method must be overridden')
  16. def __len__(self):
  17. raise NotImplementedError('__len__ method must be overridden')
  18. def next(self):
  19. raise NotImplementedError('__next__ method must be overridden')
  20. def __iter__(self):
  21. return self
  22. if py2:
  23. STREAM_CLASS = (file, BaseStream, BytesIO)
  24. READABLE = (BaseStream, file, BytesIO)
  25. WRITABLE = (file, )
  26. else:
  27. STREAM_CLASS = (TextIOWrapper, BufferedReader, BaseStream, BytesIO)
  28. READABLE = (BaseStream, BufferedReader, BytesIO)
  29. WRITABLE = (BufferedWriter,)