mirror of
				https://github.com/msgpack/msgpack-python.git
				synced 2025-10-31 09:30:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # coding: utf-8
 | |
| from msgpack._version import version
 | |
| from msgpack.exceptions import *
 | |
| 
 | |
| 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)
 | |
| 
 | |
| 
 | |
| import os
 | |
| if os.environ.get('MSGPACK_PUREPYTHON'):
 | |
|     from msgpack.fallback import Packer, unpackb, Unpacker
 | |
| else:
 | |
|     try:
 | |
|         from msgpack._packer import Packer
 | |
|         from msgpack._unpacker import unpackb, Unpacker
 | |
|     except ImportError:
 | |
|         from msgpack.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 `packed` contains extra bytes.
 | |
|     See :class:`Unpacker` for options.
 | |
|     """
 | |
|     return unpackb(stream.read(), **kwargs)
 | |
| 
 | |
| 
 | |
| # alias for compatibility to simplejson/marshal/pickle.
 | |
| load = unpack
 | |
| loads = unpackb
 | |
| 
 | |
| dump = pack
 | |
| dumps = packb
 | 
