mirror of
https://github.com/python/cpython.git
synced 2025-08-05 17:39:02 +00:00

Rather than add umpteen new obscure internal Iter types, got rid of all of them. See the new comment.
86 lines
1.9 KiB
Python
86 lines
1.9 KiB
Python
"""Define names for all type symbols known in the standard interpreter.
|
|
|
|
Types that are part of optional modules (e.g. array) are not listed.
|
|
"""
|
|
from __future__ import generators
|
|
|
|
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
|
|
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 = dictionary
|
|
|
|
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
|