1ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh"""Define names for all type symbols known in the standard interpreter. 2ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 3ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehTypes that are part of optional modules (e.g. array) are not listed. 4ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh""" 5ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehimport sys 6ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 7ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# Iterators in Python aren't a matter of type but of protocol. A large 8ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# and changing number of builtin types implement *some* flavor of 9ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# iterator. Don't check the type! Use hasattr to check for both 10ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# "__iter__" and "next" attributes instead. 11ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 12ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehNoneType = type(None) 13ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehTypeType = type 14ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehObjectType = object 15ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 16ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehIntType = int 17ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLongType = long 18ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehFloatType = float 19ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBooleanType = bool 20ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehtry: 21ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ComplexType = complex 22ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehexcept NameError: 23ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh pass 24ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 25ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehStringType = str 26ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 27ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# StringTypes is already outdated. Instead of writing "type(x) in 28ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# types.StringTypes", you should use "isinstance(x, basestring)". But 29ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# we keep around for compatibility with Python 2.2. 30ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehtry: 31ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh UnicodeType = unicode 32ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh StringTypes = (StringType, UnicodeType) 33ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehexcept NameError: 34ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh StringTypes = (StringType,) 35ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 36ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBufferType = buffer 37ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 38ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehTupleType = tuple 39ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehListType = list 40ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehDictType = DictionaryType = dict 41ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 42ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef _f(): pass 43ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehFunctionType = type(_f) 44ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLambdaType = type(lambda: None) # Same as FunctionType 45ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehCodeType = type(_f.func_code) 46ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 47ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef _g(): 48ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh yield 1 49ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehGeneratorType = type(_g()) 50ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 51ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass _C: 52ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def _m(self): pass 53ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehClassType = type(_C) 54ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehUnboundMethodType = type(_C._m) # Same as MethodType 55ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh_x = _C() 56ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehInstanceType = type(_x) 57ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehMethodType = type(_x._m) 58ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 59ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBuiltinFunctionType = type(len) 60ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBuiltinMethodType = type([].append) # Same as BuiltinFunctionType 61ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 62ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehModuleType = type(sys) 63ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehFileType = file 64ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehXRangeType = xrange 65ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 66ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehtry: 67ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh raise TypeError 68ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehexcept TypeError: 69ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh tb = sys.exc_info()[2] 70ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh TracebackType = type(tb) 71ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh FrameType = type(tb.tb_frame) 72ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh del tb 73ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 74ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehSliceType = slice 75ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehEllipsisType = type(Ellipsis) 76ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 77ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehDictProxyType = type(TypeType.__dict__) 78ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehNotImplementedType = type(NotImplemented) 79ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 80ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# For Jython, the following two types are identical 81ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehGetSetDescriptorType = type(FunctionType.func_code) 82ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehMemberDescriptorType = type(FunctionType.func_globals) 83ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 84ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdel sys, _f, _g, _C, _x # Not for export 85