1"""Define names for all type symbols known in the standard interpreter.
2
3Types that are part of optional modules (e.g. array) are not listed.
4"""
5import sys
6
7# Iterators in Python aren't a matter of type but of protocol.  A large
8# and changing number of builtin types implement *some* flavor of
9# iterator.  Don't check the type!  Use hasattr to check for both
10# "__iter__" and "next" attributes instead.
11
12NoneType = type(None)
13TypeType = type
14ObjectType = object
15
16IntType = int
17LongType = long
18FloatType = float
19BooleanType = bool
20try:
21    ComplexType = complex
22except NameError:
23    pass
24
25StringType = str
26
27# StringTypes is already outdated.  Instead of writing "type(x) in
28# types.StringTypes", you should use "isinstance(x, basestring)".  But
29# we keep around for compatibility with Python 2.2.
30try:
31    UnicodeType = unicode
32    StringTypes = (StringType, UnicodeType)
33except NameError:
34    StringTypes = (StringType,)
35
36BufferType = buffer
37
38TupleType = tuple
39ListType = list
40DictType = DictionaryType = dict
41
42def _f(): pass
43FunctionType = type(_f)
44LambdaType = type(lambda: None)         # Same as FunctionType
45CodeType = type(_f.func_code)
46
47def _g():
48    yield 1
49GeneratorType = type(_g())
50
51class _C:
52    def _m(self): pass
53ClassType = type(_C)
54UnboundMethodType = type(_C._m)         # Same as MethodType
55_x = _C()
56InstanceType = type(_x)
57MethodType = type(_x._m)
58
59BuiltinFunctionType = type(len)
60BuiltinMethodType = type([].append)     # Same as BuiltinFunctionType
61
62ModuleType = type(sys)
63FileType = file
64XRangeType = xrange
65
66try:
67    raise TypeError
68except TypeError:
69    tb = sys.exc_info()[2]
70    TracebackType = type(tb)
71    FrameType = type(tb.tb_frame)
72    del tb
73
74SliceType = slice
75EllipsisType = type(Ellipsis)
76
77DictProxyType = type(TypeType.__dict__)
78NotImplementedType = type(NotImplemented)
79
80# For Jython, the following two types are identical
81GetSetDescriptorType = type(FunctionType.func_code)
82MemberDescriptorType = type(FunctionType.func_globals)
83
84del sys, _f, _g, _C, _x                           # Not for export
85