blob: ab354d1a715d9f7e13acc6aa8e89cb520f3a8280 [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__)
Guido van Rossum85d89451994-06-23 11:53:27 +000015
Tim Peters264c6592004-07-18 00:08:11 +000016def _g():
Tim Peters3e7b1a02001-06-25 19:46:25 +000017 yield 1
Tim Peters264c6592004-07-18 00:08:11 +000018GeneratorType = type(_g())
Tim Peters3e7b1a02001-06-25 19:46:25 +000019
Guido van Rossumadc940e1994-09-29 10:04:43 +000020class _C:
Guido van Rossum898c9151997-09-04 22:12:34 +000021 def _m(self): pass
Guido van Rossum65810fe2006-05-26 19:12:38 +000022MethodType = type(_C()._m)
Guido van Rossum85d89451994-06-23 11:53:27 +000023
Guido van Rossumadc940e1994-09-29 10:04:43 +000024BuiltinFunctionType = type(len)
Guido van Rossum45e2fbc1998-03-26 21:13:24 +000025BuiltinMethodType = type([].append) # Same as BuiltinFunctionType
Guido van Rossum85d89451994-06-23 11:53:27 +000026
27ModuleType = type(sys)
Guido van Rossum85d89451994-06-23 11:53:27 +000028
29try:
Guido van Rossum898c9151997-09-04 22:12:34 +000030 raise TypeError
Guido van Rossum85d89451994-06-23 11:53:27 +000031except TypeError:
Guido van Rossuma8add0e2007-05-14 22:03:55 +000032 tb = sys.exc_info()[2]
33 TracebackType = type(tb)
34 FrameType = type(tb.tb_frame)
Guido van Rossumf15d1591997-09-29 23:22:12 +000035 tb = None; del tb
Guido van Rossum85d89451994-06-23 11:53:27 +000036
Christian Heimes5e696852008-04-09 08:37:03 +000037# For Jython, the following two types are identical
38GetSetDescriptorType = type(FunctionType.__code__)
39MemberDescriptorType = type(FunctionType.__globals__)
Thomas Wouters0e3f5912006-08-11 14:57:12 +000040
41del sys, _f, _g, _C, # Not for export