| 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 | del sys, _f, _g, _C, _x # Not for export |