blob: 08cbb830821b6fd00d6c84c5140aa79df0fbb821 [file] [log] [blame]
Georg Brandle5a32dc2007-12-21 08:16:54 +00001"""
2Define names for built-in types that aren't directly accessible as a builtin.
Guido van Rossume7b146f2000-02-04 15:28:42 +00003"""
Guido van Rossum85d89451994-06-23 11:53:27 +00004import sys
5
Tim Peters26991a72001-09-25 22:02:03 +00006# Iterators in Python aren't a matter of type but of protocol. A large
7# and changing number of builtin types implement *some* flavor of
8# iterator. Don't check the type! Use hasattr to check for both
Georg Brandla18af4e2007-04-21 15:47:16 +00009# "__iter__" and "__next__" attributes instead.
Tim Peters26991a72001-09-25 22:02:03 +000010
Guido van Rossumadc940e1994-09-29 10:04:43 +000011def _f(): pass
12FunctionType = type(_f)
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000013LambdaType = type(lambda: None) # Same as FunctionType
Guido van Rossuma8add0e2007-05-14 22:03:55 +000014CodeType = type(_f.__code__)
Victor Stinner0db176f2012-04-16 00:16:30 +020015MappingProxyType = type(type.__dict__)
Guido van Rossum85d89451994-06-23 11:53:27 +000016
Tim Peters264c6592004-07-18 00:08:11 +000017def _g():
Tim Peters3e7b1a02001-06-25 19:46:25 +000018 yield 1
Tim Peters264c6592004-07-18 00:08:11 +000019GeneratorType = type(_g())
Tim Peters3e7b1a02001-06-25 19:46:25 +000020
Guido van Rossumadc940e1994-09-29 10:04:43 +000021class _C:
Guido van Rossum898c9151997-09-04 22:12:34 +000022 def _m(self): pass
Guido van Rossum65810fe2006-05-26 19:12:38 +000023MethodType = type(_C()._m)
Guido van Rossum85d89451994-06-23 11:53:27 +000024
Guido van Rossumadc940e1994-09-29 10:04:43 +000025BuiltinFunctionType = type(len)
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000026BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
Guido van Rossum85d89451994-06-23 11:53:27 +000027
28ModuleType = type(sys)
Guido van Rossum85d89451994-06-23 11:53:27 +000029
30try:
Guido van Rossum898c9151997-09-04 22:12:34 +000031 raise TypeError
Guido van Rossum85d89451994-06-23 11:53:27 +000032except TypeError:
Guido van Rossuma8add0e2007-05-14 22:03:55 +000033 tb = sys.exc_info()[2]
34 TracebackType = type(tb)
35 FrameType = type(tb.tb_frame)
Guido van Rossumf15d1591997-09-29 23:22:12 +000036 tb = None; del tb
Guido van Rossum85d89451994-06-23 11:53:27 +000037
Christian Heimes5e696852008-04-09 08:37:03 +000038# For Jython, the following two types are identical
39GetSetDescriptorType = type(FunctionType.__code__)
40MemberDescriptorType = type(FunctionType.__globals__)
Thomas Wouters0e3f5912006-08-11 14:57:12 +000041
42del sys, _f, _g, _C, # Not for export