"""Define names for all type symbols known in the standard interpreter. | |
Types that are part of optional modules (e.g. array) are not listed. | |
""" | |
import sys | |
# Iterators in Python aren't a matter of type but of protocol. A large | |
# and changing number of builtin types implement *some* flavor of | |
# iterator. Don't check the type! Use hasattr to check for both | |
# "__iter__" and "next" attributes instead. | |
NoneType = type(None) | |
TypeType = type | |
ObjectType = object | |
IntType = int | |
LongType = long | |
FloatType = float | |
BooleanType = bool | |
try: | |
ComplexType = complex | |
except NameError: | |
pass | |
StringType = str | |
# StringTypes is already outdated. Instead of writing "type(x) in | |
# types.StringTypes", you should use "isinstance(x, basestring)". But | |
# we keep around for compatibility with Python 2.2. | |
try: | |
UnicodeType = unicode | |
StringTypes = (StringType, UnicodeType) | |
except NameError: | |
StringTypes = (StringType,) | |
BufferType = buffer | |
TupleType = tuple | |
ListType = list | |
DictType = DictionaryType = dict | |
def _f(): pass | |
FunctionType = type(_f) | |
LambdaType = type(lambda: None) # Same as FunctionType | |
CodeType = type(_f.func_code) | |
def _g(): | |
yield 1 | |
GeneratorType = type(_g()) | |
class _C: | |
def _m(self): pass | |
ClassType = type(_C) | |
UnboundMethodType = type(_C._m) # Same as MethodType | |
_x = _C() | |
InstanceType = type(_x) | |
MethodType = type(_x._m) | |
BuiltinFunctionType = type(len) | |
BuiltinMethodType = type([].append) # Same as BuiltinFunctionType | |
ModuleType = type(sys) | |
FileType = file | |
XRangeType = xrange | |
try: | |
raise TypeError | |
except TypeError: | |
tb = sys.exc_info()[2] | |
TracebackType = type(tb) | |
FrameType = type(tb.tb_frame) | |
del tb | |
SliceType = slice | |
EllipsisType = type(Ellipsis) | |
DictProxyType = type(TypeType.__dict__) | |
NotImplementedType = type(NotImplemented) | |
# For Jython, the following two types are identical | |
GetSetDescriptorType = type(FunctionType.func_code) | |
MemberDescriptorType = type(FunctionType.func_globals) | |
del sys, _f, _g, _C, _x # Not for export |