You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.1KB

  1. import sys
  2. PY3 = sys.version_info[0] == 3
  3. try:
  4. from itertools import izip
  5. xrange = xrange
  6. except ImportError:
  7. # py3
  8. izip = zip
  9. xrange = range
  10. # end handle python version
  11. try:
  12. # Python 2
  13. buffer = buffer
  14. memoryview = buffer
  15. # Assume no memory view ...
  16. def to_bytes(i):
  17. return i
  18. except NameError:
  19. # Python 3 has no `buffer`; only `memoryview`
  20. # However, it's faster to just slice the object directly, maybe it keeps a view internally
  21. def buffer(obj, offset, size=None):
  22. if size is None:
  23. # return memoryview(obj)[offset:]
  24. return obj[offset:]
  25. else:
  26. # return memoryview(obj)[offset:offset+size]
  27. return obj[offset:offset + size]
  28. # end buffer reimplementation
  29. # smmap can return memory view objects, which can't be compared as buffers/bytes can ...
  30. def to_bytes(i):
  31. if isinstance(i, memoryview):
  32. return i.tobytes()
  33. return i
  34. memoryview = memoryview
  35. try:
  36. MAXSIZE = sys.maxint
  37. except AttributeError:
  38. MAXSIZE = sys.maxsize