You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.1 KiB
90 lines
2.1 KiB
"""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 |
|
|
|
# StringTypes is already outdated. Instead of writing "type(x) in |
|
# types.StringTypes", you should use "isinstance(x, basestring)". But |
|
# we keep around for compatibility with Python 2.2. |
|
try: |
|
UnicodeType = unicode |
|
StringTypes = (StringType, UnicodeType) |
|
except NameError: |
|
StringTypes = (StringType,) |
|
|
|
BufferType = 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 = xrange |
|
|
|
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 = slice |
|
EllipsisType = type(Ellipsis) |
|
|
|
DictProxyType = type(TypeType.__dict__) |
|
NotImplementedType = type(NotImplemented) |
|
|
|
del sys, _f, _C, _x # Not for export
|
|
|