mirror of
				https://github.com/msgpack/msgpack-python.git
				synced 2025-11-04 03:20:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# coding: utf-8
 | 
						|
from ._version import version
 | 
						|
from .exceptions import *
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
from collections import namedtuple
 | 
						|
 | 
						|
 | 
						|
class ExtType(namedtuple('ExtType', 'code data')):
 | 
						|
    """ExtType represents ext type in msgpack."""
 | 
						|
    def __new__(cls, code, data):
 | 
						|
        if not isinstance(code, int):
 | 
						|
            raise TypeError("code must be int")
 | 
						|
        if not isinstance(data, bytes):
 | 
						|
            raise TypeError("data must be bytes")
 | 
						|
        if not 0 <= code <= 127:
 | 
						|
            raise ValueError("code must be 0~127")
 | 
						|
        return super(ExtType, cls).__new__(cls, code, data)
 | 
						|
 | 
						|
 | 
						|
if os.environ.get('MSGPACK_PUREPYTHON') or sys.version_info[0] == 2:
 | 
						|
    from .fallback import Packer, unpackb, Unpacker
 | 
						|
else:
 | 
						|
    try:
 | 
						|
        from ._cmsgpack import Packer, unpackb, Unpacker
 | 
						|
    except ImportError:
 | 
						|
        from .fallback import Packer, unpackb, Unpacker
 | 
						|
 | 
						|
 | 
						|
def pack(o, stream, **kwargs):
 | 
						|
    """
 | 
						|
    Pack object `o` and write it to `stream`
 | 
						|
 | 
						|
    See :class:`Packer` for options.
 | 
						|
    """
 | 
						|
    packer = Packer(**kwargs)
 | 
						|
    stream.write(packer.pack(o))
 | 
						|
 | 
						|
 | 
						|
def packb(o, **kwargs):
 | 
						|
    """
 | 
						|
    Pack object `o` and return packed bytes
 | 
						|
 | 
						|
    See :class:`Packer` for options.
 | 
						|
    """
 | 
						|
    return Packer(**kwargs).pack(o)
 | 
						|
 | 
						|
 | 
						|
def unpack(stream, **kwargs):
 | 
						|
    """
 | 
						|
    Unpack an object from `stream`.
 | 
						|
 | 
						|
    Raises `ExtraData` when `stream` contains extra bytes.
 | 
						|
    See :class:`Unpacker` for options.
 | 
						|
    """
 | 
						|
    data = stream.read()
 | 
						|
    return unpackb(data, **kwargs)
 | 
						|
 | 
						|
 | 
						|
# alias for compatibility to simplejson/marshal/pickle.
 | 
						|
load = unpack
 | 
						|
loads = unpackb
 | 
						|
 | 
						|
dump = pack
 | 
						|
dumps = packb
 |