Issue #789290: make sure that hash(2**63) == hash(2.**63) on 64-bit
[python.git] / Lib / types.py
blobea316fa3275d8f8cbb48679b84371fbb3703c305
1 """Define names for all type symbols known in the standard interpreter.
3 Types that are part of optional modules (e.g. array) are not listed.
4 """
5 import sys
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.
12 NoneType = type(None)
13 TypeType = type
14 ObjectType = object
16 IntType = int
17 LongType = long
18 FloatType = float
19 BooleanType = bool
20 try:
21 ComplexType = complex
22 except NameError:
23 pass
25 StringType = str
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,)
36 BufferType = buffer
38 TupleType = tuple
39 ListType = list
40 DictType = DictionaryType = dict
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
51 def _g():
52 yield 1
53 GeneratorType = type(_g())
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)
63 BuiltinFunctionType = type(len)
64 BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
66 ModuleType = type(sys)
67 FileType = file
68 XRangeType = xrange
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
83 SliceType = slice
84 EllipsisType = type(Ellipsis)
86 DictProxyType = type(TypeType.__dict__)
87 NotImplementedType = type(NotImplemented)
89 # For Jython, the following two types are identical
90 GetSetDescriptorType = type(FunctionType.func_code)
91 MemberDescriptorType = type(FunctionType.func_globals)
93 del sys, _f, _g, _C, _x # Not for export