text: # coding: utf-8
  from pip._vendor.msgpack._version import version
  from pip._vendor.msgpack.exceptions import *
  
  from collections import namedtuple
  
  
  class ExtType(namedtuple('ExtType', 'code tmp')):
      """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("tmp 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 pip._vendor.msgpack.fallback import Packer, unpackb, Unpacker
  else:
      try:
          from pip._vendor.msgpack._cmsgpack import Packer, unpackb, Unpacker
      except ImportError:
          from pip._vendor.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 `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
  