PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/msgpack.py |
""" Functions to work with MessagePack """ import logging log = logging.getLogger(__name__) HAS_MSGPACK = False try: import msgpack # There is a serialization issue on ARM and potentially other platforms for some msgpack bindings, check for it if ( msgpack.loads(msgpack.dumps([1, 2, 3], use_bin_type=False), use_list=True) is None ): raise ImportError HAS_MSGPACK = True except ImportError: try: import msgpack_pure as msgpack # pylint: disable=import-error HAS_MSGPACK = True except ImportError: pass # Don't exit if msgpack is not available, this is to make local mode work without msgpack # sys.exit(salt.defaults.exitcodes.EX_GENERIC) if HAS_MSGPACK and hasattr(msgpack, "exceptions"): exceptions = msgpack.exceptions else: class PackValueError(Exception): """ older versions of msgpack do not have PackValueError """ class _exceptions: """ older versions of msgpack do not have an exceptions module """ PackValueError = PackValueError() exceptions = _exceptions() # One-to-one mappings Packer = msgpack.Packer ExtType = msgpack.ExtType version = (0, 0, 0) if not HAS_MSGPACK else msgpack.version def _sanitize_msgpack_kwargs(kwargs): """ Clean up msgpack keyword arguments based on the version https://github.com/msgpack/msgpack-python/blob/master/ChangeLog.rst """ assert isinstance(kwargs, dict) if kwargs.pop("encoding", None) is not None: log.debug("removing unsupported `encoding` argument from msgpack call") return kwargs def _sanitize_msgpack_unpack_kwargs(kwargs): """ Clean up msgpack keyword arguments for unpack operations, based on the version https://github.com/msgpack/msgpack-python/blob/master/ChangeLog.rst """ assert isinstance(kwargs, dict) kwargs.setdefault("raw", True) kwargs.setdefault("strict_map_key", False) return _sanitize_msgpack_kwargs(kwargs) class Unpacker(msgpack.Unpacker): """ Wraps the msgpack.Unpacker and removes non-relevant arguments """ def __init__(self, *args, **kwargs): msgpack.Unpacker.__init__( self, *args, **_sanitize_msgpack_unpack_kwargs(kwargs) ) def pack(o, stream, **kwargs): """ .. versionadded:: 2018.3.4 Wraps msgpack.pack and ensures that the passed object is unwrapped if it is a proxy. By default, this function uses the msgpack module and falls back to msgpack_pure, if the msgpack is not available. """ # Writes to a stream, there is no return msgpack.pack(o, stream, **_sanitize_msgpack_kwargs(kwargs)) def packb(o, **kwargs): """ .. versionadded:: 2018.3.4 Wraps msgpack.packb and ensures that the passed object is unwrapped if it is a proxy. By default, this function uses the msgpack module and falls back to msgpack_pure, if the msgpack is not available. """ return msgpack.packb(o, **_sanitize_msgpack_kwargs(kwargs)) def unpack(stream, **kwargs): """ .. versionadded:: 2018.3.4 Wraps msgpack.unpack. By default, this function uses the msgpack module and falls back to msgpack_pure, if the msgpack is not available. """ return msgpack.unpack(stream, **_sanitize_msgpack_unpack_kwargs(kwargs)) def unpackb(packed, **kwargs): """ .. versionadded:: 2018.3.4 Wraps msgpack.unpack. By default, this function uses the msgpack module and falls back to msgpack_pure. """ return msgpack.unpackb(packed, **_sanitize_msgpack_unpack_kwargs(kwargs)) # alias for compatibility to simplejson/marshal/pickle. load = unpack loads = unpackb dump = pack dumps = packb