mirror of
https://github.com/markqvist/Reticulum.git
synced 2026-10-25 18:40:17 -04:00
Removed dead Python 2 code from umsgpack
This commit is contained in:
parent
d32ba8c1a1
commit
75cbc73f64
1 changed files with 16 additions and 217 deletions
233
RNS/vendor/umsgpack.py
vendored
233
RNS/vendor/umsgpack.py
vendored
|
|
@ -2,7 +2,7 @@
|
||||||
# https://github.com/vsergeev/u-msgpack-python
|
# https://github.com/vsergeev/u-msgpack-python
|
||||||
#
|
#
|
||||||
# u-msgpack-python is a lightweight MessagePack serializer and deserializer
|
# u-msgpack-python is a lightweight MessagePack serializer and deserializer
|
||||||
# module, compatible with both Python 2 and 3, as well CPython and PyPy
|
# module, compatible with Python 3, as well CPython and PyPy
|
||||||
# implementations of Python. u-msgpack-python is fully compliant with the
|
# implementations of Python. u-msgpack-python is fully compliant with the
|
||||||
# latest MessagePack specification.com/msgpack/msgpack/blob/master/spec.md). In
|
# latest MessagePack specification.com/msgpack/msgpack/blob/master/spec.md). In
|
||||||
# particular, it supports the new binary, UTF-8 string, and application ext
|
# particular, it supports the new binary, UTF-8 string, and application ext
|
||||||
|
|
@ -35,7 +35,7 @@ u-msgpack-python v2.7.1 - v at sergeev.io
|
||||||
https://github.com/vsergeev/u-msgpack-python
|
https://github.com/vsergeev/u-msgpack-python
|
||||||
|
|
||||||
u-msgpack-python is a lightweight MessagePack serializer and deserializer
|
u-msgpack-python is a lightweight MessagePack serializer and deserializer
|
||||||
module, compatible with both Python 2 and 3, as well CPython and PyPy
|
module, compatible with Python 3, as well CPython and PyPy
|
||||||
implementations of Python. u-msgpack-python is fully compliant with the
|
implementations of Python. u-msgpack-python is fully compliant with the
|
||||||
latest MessagePack specification.com/msgpack/msgpack/blob/master/spec.md). In
|
latest MessagePack specification.com/msgpack/msgpack/blob/master/spec.md). In
|
||||||
particular, it supports the new binary, UTF-8 string, and application ext
|
particular, it supports the new binary, UTF-8 string, and application ext
|
||||||
|
|
@ -49,10 +49,7 @@ import datetime
|
||||||
import sys
|
import sys
|
||||||
import io
|
import io
|
||||||
|
|
||||||
if sys.version_info[0:2] >= (3, 3):
|
from collections.abc import Hashable
|
||||||
from collections.abc import Hashable
|
|
||||||
else:
|
|
||||||
from collections import Hashable
|
|
||||||
|
|
||||||
__version__ = "2.7.1"
|
__version__ = "2.7.1"
|
||||||
"Module version string"
|
"Module version string"
|
||||||
|
|
@ -104,8 +101,6 @@ class Ext(object):
|
||||||
# Check data is type bytes or str
|
# Check data is type bytes or str
|
||||||
elif sys.version_info[0] == 3 and not isinstance(data, bytes):
|
elif sys.version_info[0] == 3 and not isinstance(data, bytes):
|
||||||
raise TypeError("ext data is not type \'bytes\'")
|
raise TypeError("ext data is not type \'bytes\'")
|
||||||
elif sys.version_info[0] == 2 and not isinstance(data, str):
|
|
||||||
raise TypeError("ext data is not type \'str\'")
|
|
||||||
|
|
||||||
self.type = type
|
self.type = type
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
@ -129,7 +124,7 @@ class Ext(object):
|
||||||
"""
|
"""
|
||||||
s = "Ext Object (Type: {:d}, Data: ".format(self.type)
|
s = "Ext Object (Type: {:d}, Data: ".format(self.type)
|
||||||
s += " ".join(["0x{:02}".format(ord(self.data[i:i + 1]))
|
s += " ".join(["0x{:02}".format(ord(self.data[i:i + 1]))
|
||||||
for i in xrange(min(len(self.data), 8))])
|
for i in range(min(len(self.data), 8))])
|
||||||
if len(self.data) > 8:
|
if len(self.data) > 8:
|
||||||
s += " ..."
|
s += " ..."
|
||||||
s += ")"
|
s += ")"
|
||||||
|
|
@ -452,94 +447,6 @@ def _pack_map(obj, fp, options):
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
|
|
||||||
# Pack for Python 2, with 'unicode' type, 'str' type, and 'long' type
|
|
||||||
def _pack2(obj, fp, **options):
|
|
||||||
"""
|
|
||||||
Serialize a Python object into MessagePack bytes.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
obj: a Python object
|
|
||||||
fp: a .write()-supporting file-like object
|
|
||||||
|
|
||||||
Kwargs:
|
|
||||||
ext_handlers (dict): dictionary of Ext handlers, mapping a custom type
|
|
||||||
to a callable that packs an instance of the type
|
|
||||||
into an Ext object
|
|
||||||
force_float_precision (str): "single" to force packing floats as
|
|
||||||
IEEE-754 single-precision floats,
|
|
||||||
"double" to force packing floats as
|
|
||||||
IEEE-754 double-precision floats.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
None.
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
UnsupportedType(PackException):
|
|
||||||
Object type not supported for packing.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
>>> f = open('test.bin', 'wb')
|
|
||||||
>>> umsgpack.pack({u"compact": True, u"schema": 0}, f)
|
|
||||||
>>>
|
|
||||||
"""
|
|
||||||
global compatibility
|
|
||||||
|
|
||||||
ext_handlers = options.get("ext_handlers")
|
|
||||||
|
|
||||||
if obj is None:
|
|
||||||
_pack_nil(obj, fp, options)
|
|
||||||
elif ext_handlers and obj.__class__ in ext_handlers:
|
|
||||||
_pack_ext(ext_handlers[obj.__class__](obj), fp, options)
|
|
||||||
elif obj.__class__ in _ext_class_to_type:
|
|
||||||
try:
|
|
||||||
_pack_ext(Ext(_ext_class_to_type[obj.__class__], obj.packb()), fp, options)
|
|
||||||
except AttributeError:
|
|
||||||
raise NotImplementedError("Ext serializable class {:s} is missing implementation of packb()".format(repr(obj.__class__)))
|
|
||||||
elif isinstance(obj, bool):
|
|
||||||
_pack_boolean(obj, fp, options)
|
|
||||||
elif isinstance(obj, (int, long)):
|
|
||||||
_pack_integer(obj, fp, options)
|
|
||||||
elif isinstance(obj, float):
|
|
||||||
_pack_float(obj, fp, options)
|
|
||||||
elif compatibility and isinstance(obj, unicode):
|
|
||||||
_pack_oldspec_raw(bytes(obj), fp, options)
|
|
||||||
elif compatibility and isinstance(obj, bytes):
|
|
||||||
_pack_oldspec_raw(obj, fp, options)
|
|
||||||
elif isinstance(obj, unicode):
|
|
||||||
_pack_string(obj, fp, options)
|
|
||||||
elif isinstance(obj, str):
|
|
||||||
_pack_binary(obj, fp, options)
|
|
||||||
elif isinstance(obj, (list, tuple)):
|
|
||||||
_pack_array(obj, fp, options)
|
|
||||||
elif isinstance(obj, dict):
|
|
||||||
_pack_map(obj, fp, options)
|
|
||||||
elif isinstance(obj, datetime.datetime):
|
|
||||||
_pack_ext_timestamp(obj, fp, options)
|
|
||||||
elif isinstance(obj, Ext):
|
|
||||||
_pack_ext(obj, fp, options)
|
|
||||||
elif ext_handlers:
|
|
||||||
# Linear search for superclass
|
|
||||||
t = next((t for t in ext_handlers.keys() if isinstance(obj, t)), None)
|
|
||||||
if t:
|
|
||||||
_pack_ext(ext_handlers[t](obj), fp, options)
|
|
||||||
else:
|
|
||||||
raise UnsupportedTypeException(
|
|
||||||
"unsupported type: {:s}".format(str(type(obj))))
|
|
||||||
elif _ext_class_to_type:
|
|
||||||
# Linear search for superclass
|
|
||||||
t = next((t for t in _ext_class_to_type if isinstance(obj, t)), None)
|
|
||||||
if t:
|
|
||||||
try:
|
|
||||||
_pack_ext(Ext(_ext_class_to_type[t], obj.packb()), fp, options)
|
|
||||||
except AttributeError:
|
|
||||||
raise NotImplementedError("Ext serializable class {:s} is missing implementation of packb()".format(repr(t)))
|
|
||||||
else:
|
|
||||||
raise UnsupportedTypeException("unsupported type: {:s}".format(str(type(obj))))
|
|
||||||
else:
|
|
||||||
raise UnsupportedTypeException("unsupported type: {:s}".format(str(type(obj))))
|
|
||||||
|
|
||||||
|
|
||||||
# Pack for Python 3, with unicode 'str' type, 'bytes' type, and no 'long' type
|
# Pack for Python 3, with unicode 'str' type, 'bytes' type, and no 'long' type
|
||||||
def _pack3(obj, fp, **options):
|
def _pack3(obj, fp, **options):
|
||||||
"""
|
"""
|
||||||
|
|
@ -627,40 +534,6 @@ def _pack3(obj, fp, **options):
|
||||||
raise UnsupportedTypeException(
|
raise UnsupportedTypeException(
|
||||||
"unsupported type: {:s}".format(str(type(obj))))
|
"unsupported type: {:s}".format(str(type(obj))))
|
||||||
|
|
||||||
|
|
||||||
def _packb2(obj, **options):
|
|
||||||
"""
|
|
||||||
Serialize a Python object into MessagePack bytes.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
obj: a Python object
|
|
||||||
|
|
||||||
Kwargs:
|
|
||||||
ext_handlers (dict): dictionary of Ext handlers, mapping a custom type
|
|
||||||
to a callable that packs an instance of the type
|
|
||||||
into an Ext object
|
|
||||||
force_float_precision (str): "single" to force packing floats as
|
|
||||||
IEEE-754 single-precision floats,
|
|
||||||
"double" to force packing floats as
|
|
||||||
IEEE-754 double-precision floats.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
A 'str' containing serialized MessagePack bytes.
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
UnsupportedType(PackException):
|
|
||||||
Object type not supported for packing.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
>>> umsgpack.packb({u"compact": True, u"schema": 0})
|
|
||||||
'\x82\xa7compact\xc3\xa6schema\x00'
|
|
||||||
>>>
|
|
||||||
"""
|
|
||||||
fp = io.BytesIO()
|
|
||||||
_pack2(obj, fp, **options)
|
|
||||||
return fp.getvalue()
|
|
||||||
|
|
||||||
|
|
||||||
def _packb3(obj, **options):
|
def _packb3(obj, **options):
|
||||||
"""
|
"""
|
||||||
Serialize a Python object into MessagePack bytes.
|
Serialize a Python object into MessagePack bytes.
|
||||||
|
|
@ -885,9 +758,9 @@ def _unpack_array(code, fp, options):
|
||||||
raise Exception("logic error, not array: 0x{:02x}".format(ord(code)))
|
raise Exception("logic error, not array: 0x{:02x}".format(ord(code)))
|
||||||
|
|
||||||
if options.get('use_tuple'):
|
if options.get('use_tuple'):
|
||||||
return tuple((_unpack(fp, options) for i in xrange(length)))
|
return tuple((_unpack(fp, options) for i in range(length)))
|
||||||
|
|
||||||
return [_unpack(fp, options) for i in xrange(length)]
|
return [_unpack(fp, options) for i in range(length)]
|
||||||
|
|
||||||
|
|
||||||
def _deep_list_to_tuple(obj):
|
def _deep_list_to_tuple(obj):
|
||||||
|
|
@ -907,7 +780,7 @@ def _unpack_map(code, fp, options):
|
||||||
raise Exception("logic error, not map: 0x{:02x}".format(ord(code)))
|
raise Exception("logic error, not map: 0x{:02x}".format(ord(code)))
|
||||||
|
|
||||||
d = {} if not options.get('use_ordered_dict') else collections.OrderedDict()
|
d = {} if not options.get('use_ordered_dict') else collections.OrderedDict()
|
||||||
for _ in xrange(length):
|
for _ in range(length):
|
||||||
# Unpack key
|
# Unpack key
|
||||||
k = _unpack(fp, options)
|
k = _unpack(fp, options)
|
||||||
|
|
||||||
|
|
@ -938,53 +811,6 @@ def _unpack(fp, options):
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
|
|
||||||
def _unpack2(fp, **options):
|
|
||||||
"""
|
|
||||||
Deserialize MessagePack bytes into a Python object.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
fp: a .read()-supporting file-like object
|
|
||||||
|
|
||||||
Kwargs:
|
|
||||||
ext_handlers (dict): dictionary of Ext handlers, mapping integer Ext
|
|
||||||
type to a callable that unpacks an instance of
|
|
||||||
Ext into an object
|
|
||||||
use_ordered_dict (bool): unpack maps into OrderedDict, instead of
|
|
||||||
unordered dict (default False)
|
|
||||||
use_tuple (bool): unpacks arrays into tuples, instead of lists (default
|
|
||||||
False)
|
|
||||||
allow_invalid_utf8 (bool): unpack invalid strings into instances of
|
|
||||||
InvalidString, for access to the bytes
|
|
||||||
(default False)
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
A Python object.
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
InsufficientDataException(UnpackException):
|
|
||||||
Insufficient data to unpack the serialized object.
|
|
||||||
InvalidStringException(UnpackException):
|
|
||||||
Invalid UTF-8 string encountered during unpacking.
|
|
||||||
UnsupportedTimestampException(UnpackException):
|
|
||||||
Unsupported timestamp format encountered during unpacking.
|
|
||||||
ReservedCodeException(UnpackException):
|
|
||||||
Reserved code encountered during unpacking.
|
|
||||||
UnhashableKeyException(UnpackException):
|
|
||||||
Unhashable key encountered during map unpacking.
|
|
||||||
The serialized map cannot be deserialized into a Python dictionary.
|
|
||||||
DuplicateKeyException(UnpackException):
|
|
||||||
Duplicate key encountered during map unpacking.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
>>> f = open('test.bin', 'rb')
|
|
||||||
>>> umsgpack.unpackb(f)
|
|
||||||
{u'compact': True, u'schema': 0}
|
|
||||||
>>>
|
|
||||||
"""
|
|
||||||
return _unpack(fp, options)
|
|
||||||
|
|
||||||
|
|
||||||
def _unpack3(fp, **options):
|
def _unpack3(fp, **options):
|
||||||
"""
|
"""
|
||||||
Deserialize MessagePack bytes into a Python object.
|
Deserialize MessagePack bytes into a Python object.
|
||||||
|
|
@ -1149,27 +975,11 @@ def __init():
|
||||||
global _utc_tzinfo
|
global _utc_tzinfo
|
||||||
global _float_precision
|
global _float_precision
|
||||||
global _unpack_dispatch_table
|
global _unpack_dispatch_table
|
||||||
global xrange
|
|
||||||
|
|
||||||
# Compatibility mode for handling strings/bytes with the old specification
|
# Compatibility mode for handling strings/bytes with the old specification
|
||||||
compatibility = False
|
compatibility = False
|
||||||
|
|
||||||
if sys.version_info[0] == 3:
|
_utc_tzinfo = datetime.timezone.utc
|
||||||
_utc_tzinfo = datetime.timezone.utc
|
|
||||||
else:
|
|
||||||
class UTC(datetime.tzinfo):
|
|
||||||
ZERO = datetime.timedelta(0)
|
|
||||||
|
|
||||||
def utcoffset(self, dt):
|
|
||||||
return UTC.ZERO
|
|
||||||
|
|
||||||
def tzname(self, dt):
|
|
||||||
return "UTC"
|
|
||||||
|
|
||||||
def dst(self, dt):
|
|
||||||
return UTC.ZERO
|
|
||||||
|
|
||||||
_utc_tzinfo = UTC()
|
|
||||||
|
|
||||||
# Calculate an aware epoch datetime
|
# Calculate an aware epoch datetime
|
||||||
_epoch = datetime.datetime(1970, 1, 1, tzinfo=_utc_tzinfo)
|
_epoch = datetime.datetime(1970, 1, 1, tzinfo=_utc_tzinfo)
|
||||||
|
|
@ -1181,25 +991,14 @@ def __init():
|
||||||
_float_precision = "single"
|
_float_precision = "single"
|
||||||
|
|
||||||
# Map packb and unpackb to the appropriate version
|
# Map packb and unpackb to the appropriate version
|
||||||
if sys.version_info[0] == 3:
|
pack = _pack3
|
||||||
pack = _pack3
|
packb = _packb3
|
||||||
packb = _packb3
|
dump = _pack3
|
||||||
dump = _pack3
|
dumps = _packb3
|
||||||
dumps = _packb3
|
unpack = _unpack3
|
||||||
unpack = _unpack3
|
unpackb = _unpackb3
|
||||||
unpackb = _unpackb3
|
load = _unpack3
|
||||||
load = _unpack3
|
loads = _unpackb3
|
||||||
loads = _unpackb3
|
|
||||||
xrange = range
|
|
||||||
else:
|
|
||||||
pack = _pack2
|
|
||||||
packb = _packb2
|
|
||||||
dump = _pack2
|
|
||||||
dumps = _packb2
|
|
||||||
unpack = _unpack2
|
|
||||||
unpackb = _unpackb2
|
|
||||||
load = _unpack2
|
|
||||||
loads = _unpackb2
|
|
||||||
|
|
||||||
# Build a dispatch table for fast lookup of unpacking function
|
# Build a dispatch table for fast lookup of unpacking function
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue