| """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 |
| try: |
| UnicodeType = unicode |
| StringTypes = (StringType, UnicodeType) |
| except NameError: |
| StringTypes = (StringType,) |
| |
| BufferType = type(buffer('')) |
| |
| TupleType = tuple |
| ListType = list |
| DictType = DictionaryType = dict |
| |
| def _f(): pass |
| FunctionType = type(_f) |
| LambdaType = type(lambda: None) # Same as FunctionType |
| try: |
| CodeType = type(_f.func_code) |
| except RuntimeError: |
| # Execution in restricted environment |
| pass |
| |
| def g(): |
| yield 1 |
| GeneratorType = type(g()) |
| del 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 = type(xrange(0)) |
| |
| try: |
| raise TypeError |
| except TypeError: |
| try: |
| tb = sys.exc_info()[2] |
| TracebackType = type(tb) |
| FrameType = type(tb.tb_frame) |
| except AttributeError: |
| # In the restricted environment, exc_info returns (None, None, |
| # None) Then, tb.tb_frame gives an attribute error |
| pass |
| tb = None; del tb |
| |
| SliceType = type(slice(0)) |
| EllipsisType = type(Ellipsis) |
| |
| DictProxyType = type(TypeType.__dict__) |
| |
| del sys, _f, _C, _x # Not for export |