# coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function import inspect import sys if sys.version_info < (3,): str_cls = unicode # noqa byte_cls = str int_types = (int, long) # noqa def bytes_to_list(byte_string): return [ord(b) for b in byte_string] chr_cls = chr else: str_cls = str byte_cls = bytes int_types = int bytes_to_list = list def chr_cls(num): return bytes([num]) def type_name(value): """ Returns a user-readable name for the type of an object :param value: A value to get the type name of :return: A unicode string of the object's type name """ if inspect.isclass(value): cls = value else: cls = value.__class__ if cls.__module__ in set(['builtins', '__builtin__']): return cls.__name__ return '%s.%s' % (cls.__module__, cls.__name__)