blob: 4c49ba393976410de590e61122969b0e37736c6d [file] [log] [blame]
Guido van Rossume7b146f2000-02-04 15:28:42 +00001"""Define names for all type symbols known in the standard interpreter.
2
3Types that are part of optional modules (e.g. array) are not listed.
4"""
Guido van Rossum85d89451994-06-23 11:53:27 +00005import sys
6
Tim Peters26991a72001-09-25 22:02:03 +00007# Iterators in Python aren't a matter of type but of protocol. A large
8# and changing number of builtin types implement *some* flavor of
9# iterator. Don't check the type! Use hasattr to check for both
Georg Brandla18af4e2007-04-21 15:47:16 +000010# "__iter__" and "__next__" attributes instead.
Tim Peters26991a72001-09-25 22:02:03 +000011
Guido van Rossum85d89451994-06-23 11:53:27 +000012NoneType = type(None)
Tim Peters6d6c1a32001-08-02 04:15:00 +000013TypeType = type
14ObjectType = object
Guido van Rossum85d89451994-06-23 11:53:27 +000015
Martin v. Löwisff885562001-08-08 16:02:01 +000016IntType = int
Guido van Rossume2a383d2007-01-15 16:59:06 +000017LongType = int
Martin v. Löwisff885562001-08-08 16:02:01 +000018FloatType = float
Skip Montanaro012ed5d2002-05-21 23:17:12 +000019BooleanType = bool
Guido van Rossum0f6f8121996-02-13 00:04:31 +000020try:
Martin v. Löwisff885562001-08-08 16:02:01 +000021 ComplexType = complex
Guido van Rossum0f6f8121996-02-13 00:04:31 +000022except NameError:
Guido van Rossum898c9151997-09-04 22:12:34 +000023 pass
Guido van Rossum85d89451994-06-23 11:53:27 +000024
Guido van Rossumbea18cc2002-06-14 20:41:17 +000025BufferType = buffer
Guido van Rossum85d89451994-06-23 11:53:27 +000026
Martin v. Löwisff885562001-08-08 16:02:01 +000027TupleType = tuple
Tim Peters6d6c1a32001-08-02 04:15:00 +000028ListType = list
Tim Petersa427a2b2001-10-29 22:25:45 +000029DictType = DictionaryType = dict
Guido van Rossum85d89451994-06-23 11:53:27 +000030
Guido van Rossumadc940e1994-09-29 10:04:43 +000031def _f(): pass
32FunctionType = type(_f)
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000033LambdaType = type(lambda: None) # Same as FunctionType
Guido van Rossuma8add0e2007-05-14 22:03:55 +000034CodeType = type(_f.__code__)
Guido van Rossum85d89451994-06-23 11:53:27 +000035
Tim Peters264c6592004-07-18 00:08:11 +000036def _g():
Tim Peters3e7b1a02001-06-25 19:46:25 +000037 yield 1
Tim Peters264c6592004-07-18 00:08:11 +000038GeneratorType = type(_g())
Tim Peters3e7b1a02001-06-25 19:46:25 +000039
Guido van Rossumadc940e1994-09-29 10:04:43 +000040class _C:
Guido van Rossum898c9151997-09-04 22:12:34 +000041 def _m(self): pass
Guido van Rossum13257902007-06-07 23:15:56 +000042ClassType = type
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000043UnboundMethodType = type(_C._m) # Same as MethodType
Guido van Rossum65810fe2006-05-26 19:12:38 +000044MethodType = type(_C()._m)
Guido van Rossum85d89451994-06-23 11:53:27 +000045
Guido van Rossumadc940e1994-09-29 10:04:43 +000046BuiltinFunctionType = type(len)
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000047BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
Guido van Rossum85d89451994-06-23 11:53:27 +000048
49ModuleType = type(sys)
Guido van Rossum85d89451994-06-23 11:53:27 +000050
51try:
Guido van Rossum898c9151997-09-04 22:12:34 +000052 raise TypeError
Guido van Rossum85d89451994-06-23 11:53:27 +000053except TypeError:
Guido van Rossuma8add0e2007-05-14 22:03:55 +000054 tb = sys.exc_info()[2]
55 TracebackType = type(tb)
56 FrameType = type(tb.tb_frame)
Guido van Rossumf15d1591997-09-29 23:22:12 +000057 tb = None; del tb
Guido van Rossum85d89451994-06-23 11:53:27 +000058
Guido van Rossumbea18cc2002-06-14 20:41:17 +000059SliceType = slice
Guido van Rossume449af71996-10-11 16:25:41 +000060EllipsisType = type(Ellipsis)
Guido van Rossum8741b2b1996-10-11 16:00:06 +000061
Tim Peters6d6c1a32001-08-02 04:15:00 +000062DictProxyType = type(TypeType.__dict__)
Just van Rossumba205332003-02-10 19:38:33 +000063NotImplementedType = type(NotImplemented)
Tim Peters6d6c1a32001-08-02 04:15:00 +000064
Thomas Wouters0e3f5912006-08-11 14:57:12 +000065# Extension types defined in a C helper module. XXX There may be no
66# equivalent in implementations other than CPython, so it seems better to
67# leave them undefined then to set them to e.g. None.
68try:
69 import _types
70except ImportError:
71 pass
72else:
73 GetSetDescriptorType = type(_types.Helper.getter)
74 MemberDescriptorType = type(_types.Helper.member)
75 del _types
76
77del sys, _f, _g, _C, # Not for export