mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			84 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.
 | 
						|
"""
 | 
						|
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 = 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
 |