1
by Matthias Klose
Import upstream version 2.6.1 |
1 |
"""Define names for all type symbols known in the standard interpreter.
|
2 |
||
3 |
Types that are part of optional modules (e.g. array) are not listed.
|
|
4 |
"""
|
|
5 |
import 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 |
||
12 |
NoneType = type(None) |
|
13 |
TypeType = type |
|
14 |
ObjectType = object |
|
15 |
||
16 |
IntType = int |
|
17 |
LongType = long |
|
18 |
FloatType = float |
|
19 |
BooleanType = bool |
|
20 |
try: |
|
21 |
ComplexType = complex |
|
22 |
except NameError: |
|
23 |
pass
|
|
24 |
||
25 |
StringType = 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.
|
|
30 |
try: |
|
31 |
UnicodeType = unicode |
|
32 |
StringTypes = (StringType, UnicodeType) |
|
33 |
except NameError: |
|
34 |
StringTypes = (StringType,) |
|
35 |
||
36 |
BufferType = buffer |
|
37 |
||
38 |
TupleType = tuple |
|
39 |
ListType = list |
|
40 |
DictType = DictionaryType = dict |
|
41 |
||
42 |
def _f(): pass |
|
43 |
FunctionType = type(_f) |
|
44 |
LambdaType = type(lambda: None) # Same as FunctionType |
|
45 |
try: |
|
46 |
CodeType = type(_f.func_code) |
|
47 |
except RuntimeError: |
|
48 |
# Execution in restricted environment
|
|
49 |
pass
|
|
50 |
||
51 |
def _g(): |
|
52 |
yield 1 |
|
53 |
GeneratorType = type(_g()) |
|
54 |
||
55 |
class _C: |
|
56 |
def _m(self): pass |
|
57 |
ClassType = type(_C) |
|
58 |
UnboundMethodType = type(_C._m) # Same as MethodType |
|
59 |
_x = _C() |
|
60 |
InstanceType = type(_x) |
|
61 |
MethodType = type(_x._m) |
|
62 |
||
63 |
BuiltinFunctionType = type(len) |
|
64 |
BuiltinMethodType = type([].append) # Same as BuiltinFunctionType |
|
65 |
||
66 |
ModuleType = type(sys) |
|
67 |
FileType = file |
|
68 |
XRangeType = xrange |
|
69 |
||
70 |
try: |
|
71 |
raise TypeError |
|
72 |
except TypeError: |
|
73 |
try: |
|
74 |
tb = sys.exc_info()[2] |
|
75 |
TracebackType = type(tb) |
|
76 |
FrameType = type(tb.tb_frame) |
|
77 |
except AttributeError: |
|
78 |
# In the restricted environment, exc_info returns (None, None,
|
|
79 |
# None) Then, tb.tb_frame gives an attribute error
|
|
80 |
pass
|
|
81 |
tb = None; del tb |
|
82 |
||
83 |
SliceType = slice |
|
84 |
EllipsisType = type(Ellipsis) |
|
85 |
||
86 |
DictProxyType = type(TypeType.__dict__) |
|
87 |
NotImplementedType = type(NotImplemented) |
|
88 |
||
89 |
# For Jython, the following two types are identical
|
|
90 |
GetSetDescriptorType = type(FunctionType.func_code) |
|
91 |
MemberDescriptorType = type(FunctionType.func_globals) |
|
92 |
||
93 |
del sys, _f, _g, _C, _x # Not for export |