aboutsummaryrefslogtreecommitdiff
path: root/frozen_deps/Cryptodome/Util/py3compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'frozen_deps/Cryptodome/Util/py3compat.py')
-rw-r--r--frozen_deps/Cryptodome/Util/py3compat.py34
1 files changed, 22 insertions, 12 deletions
diff --git a/frozen_deps/Cryptodome/Util/py3compat.py b/frozen_deps/Cryptodome/Util/py3compat.py
index 40ef752..9a982e9 100644
--- a/frozen_deps/Cryptodome/Util/py3compat.py
+++ b/frozen_deps/Cryptodome/Util/py3compat.py
@@ -78,6 +78,8 @@ if sys.version_info[0] == 2:
return s
elif isinstance(s, bytearray):
return bytes(s)
+ elif isinstance(s, memoryview):
+ return s.tobytes()
else:
return ''.join(s)
def tostr(bs):
@@ -85,17 +87,11 @@ if sys.version_info[0] == 2:
def byte_string(s):
return isinstance(s, str)
- # In Pyton 2.x, StringIO is a stand-alone module
- from StringIO import StringIO as BytesIO
+ from StringIO import StringIO
+ BytesIO = StringIO
from sys import maxint
- if sys.version_info[1] < 7:
- import types
- _memoryview = types.NoneType
- else:
- _memoryview = memoryview
-
iter_range = xrange
def is_native_int(x):
@@ -104,8 +100,15 @@ if sys.version_info[0] == 2:
def is_string(x):
return isinstance(x, basestring)
+ def is_bytes(x):
+ return isinstance(x, str) or \
+ isinstance(x, bytearray) or \
+ isinstance(x, memoryview)
+
ABC = abc.ABCMeta('ABC', (object,), {'__slots__': ()})
+ FileNotFoundError = IOError
+
else:
def b(s):
return s.encode("latin-1") # utf-8 would cause some side-effects we don't want
@@ -125,6 +128,8 @@ else:
return bytes(s)
elif isinstance(s,str):
return s.encode(encoding)
+ elif isinstance(s, memoryview):
+ return s.tobytes()
else:
return bytes([s])
def tostr(bs):
@@ -132,12 +137,10 @@ else:
def byte_string(s):
return isinstance(s, bytes)
- # In Python 3.x, StringIO is a sub-module of io
from io import BytesIO
+ from io import StringIO
from sys import maxsize as maxint
- _memoryview = memoryview
-
iter_range = range
def is_native_int(x):
@@ -146,14 +149,21 @@ else:
def is_string(x):
return isinstance(x, str)
+ def is_bytes(x):
+ return isinstance(x, bytes) or \
+ isinstance(x, bytearray) or \
+ isinstance(x, memoryview)
+
from abc import ABC
+ FileNotFoundError = FileNotFoundError
+
def _copy_bytes(start, end, seq):
"""Return an immutable copy of a sequence (byte string, byte array, memoryview)
in a certain interval [start:seq]"""
- if isinstance(seq, _memoryview):
+ if isinstance(seq, memoryview):
return seq[start:end].tobytes()
elif isinstance(seq, bytearray):
return bytes(seq[start:end])