| 
									
										
										
										
											1991-02-19 12:39:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-08 17:25:55 +00:00
										 |  |  | #ifndef Py_MODSUPPORT_H
 | 
					
						
							|  |  |  | #define Py_MODSUPPORT_H
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1990-10-14 12:07:46 +00:00
										 |  |  | /* Module support interface */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 04:37:55 +02:00
										 |  |  | #include <stdarg.h>               // va_list
 | 
					
						
							| 
									
										
										
										
											1994-08-01 11:34:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-02-15 17:27:45 +00:00
										 |  |  | /* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
 | 
					
						
							|  |  |  |    to mean Py_ssize_t */ | 
					
						
							|  |  |  | #ifdef PY_SSIZE_T_CLEAN
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  | #define PyArg_Parse                     _PyArg_Parse_SizeT
 | 
					
						
							|  |  |  | #define PyArg_ParseTuple                _PyArg_ParseTuple_SizeT
 | 
					
						
							|  |  |  | #define PyArg_ParseTupleAndKeywords     _PyArg_ParseTupleAndKeywords_SizeT
 | 
					
						
							|  |  |  | #define PyArg_VaParse                   _PyArg_VaParse_SizeT
 | 
					
						
							|  |  |  | #define PyArg_VaParseTupleAndKeywords   _PyArg_VaParseTupleAndKeywords_SizeT
 | 
					
						
							|  |  |  | #define Py_BuildValue                   _Py_BuildValue_SizeT
 | 
					
						
							|  |  |  | #define Py_VaBuildValue                 _Py_VaBuildValue_SizeT
 | 
					
						
							| 
									
										
										
										
											2006-02-15 17:27:45 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-24 00:00:30 +02:00
										 |  |  | /* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */ | 
					
						
							|  |  |  | #if !defined(PY_SSIZE_T_CLEAN) || !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
 | 
					
						
							| 
									
										
										
										
											2005-12-10 18:50:16 +00:00
										 |  |  | PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...); | 
					
						
							| 
									
										
										
										
											2013-05-12 23:08:28 -05:00
										 |  |  | PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...); | 
					
						
							| 
									
										
										
										
											2002-08-12 07:21:58 +00:00
										 |  |  | PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *, | 
					
						
							| 
									
										
										
										
											2006-02-27 16:46:16 +00:00
										 |  |  |                                                   const char *, char **, ...); | 
					
						
							| 
									
										
										
										
											2017-01-24 21:27:12 +02:00
										 |  |  | PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list); | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *, | 
					
						
							|  |  |  |                                                   const char *, char **, va_list); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2010-04-24 18:21:17 +00:00
										 |  |  | PyAPI_FUNC(int) PyArg_ValidateKeywordArguments(PyObject *); | 
					
						
							| 
									
										
										
										
											2006-03-01 04:06:10 +00:00
										 |  |  | PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...); | 
					
						
							| 
									
										
										
										
											2005-12-10 18:50:16 +00:00
										 |  |  | PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...); | 
					
						
							| 
									
										
										
										
											2006-04-21 10:40:58 +00:00
										 |  |  | PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...); | 
					
						
							| 
									
										
										
										
											2017-01-24 21:27:12 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-17 02:33:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-10 18:50:16 +00:00
										 |  |  | PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list); | 
					
						
							| 
									
										
										
										
											2016-08-14 10:52:18 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-04 13:59:15 +01:00
										 |  |  | // Add an attribute with name 'name' and value 'obj' to the module 'mod.
 | 
					
						
							|  |  |  | // On success, return 0 on success.
 | 
					
						
							|  |  |  | // On error, raise an exception and return -1.
 | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyModule_AddObjectRef(PyObject *mod, const char *name, PyObject *value); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Similar to PyModule_AddObjectRef() but steal a reference to 'obj'
 | 
					
						
							|  |  |  | // (Py_DECREF(obj)) on success (if it returns 0).
 | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyModule_AddObject(PyObject *mod, const char *, PyObject *value); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-10 18:50:16 +00:00
										 |  |  | PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long); | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *); | 
					
						
							| 
									
										
										
										
											2022-04-21 23:00:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-23 01:17:34 +09:00
										 |  |  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03090000
 | 
					
						
							|  |  |  | /* New in 3.9 */ | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyModule_AddType(PyObject *module, PyTypeObject *type); | 
					
						
							|  |  |  | #endif /* Py_LIMITED_API */
 | 
					
						
							| 
									
										
										
										
											2022-04-21 23:00:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 60176-60209 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r60178 | georg.brandl | 2008-01-21 22:05:49 +0100 (Mon, 21 Jan 2008) | 2 lines
  #1715: include sub-extension modules in pydoc text output.
........
  r60179 | georg.brandl | 2008-01-21 22:14:21 +0100 (Mon, 21 Jan 2008) | 2 lines
  Add a "const" to make gcc happy.
........
  r60180 | georg.brandl | 2008-01-21 22:19:07 +0100 (Mon, 21 Jan 2008) | 2 lines
  Add the correct build dir when building with pydebug.
........
  r60181 | georg.brandl | 2008-01-21 22:23:15 +0100 (Mon, 21 Jan 2008) | 3 lines
  Patch #1720595: add T_BOOL to the range of structmember types.
  Patch by Angelo Mottola, reviewed by MvL, tests by me.
........
  r60182 | georg.brandl | 2008-01-21 22:28:32 +0100 (Mon, 21 Jan 2008) | 2 lines
  Reformat some ugly code.
........
  r60187 | brett.cannon | 2008-01-22 00:50:16 +0100 (Tue, 22 Jan 2008) | 4 lines
  Make's MAKEFLAGS variable is set to a string containing the single-letter
  arguments to Make. This means there are no hyphens. Fix the '-s' check to
  silence distutils to now work.
........
  r60188 | gregory.p.smith | 2008-01-22 01:19:41 +0100 (Tue, 22 Jan 2008) | 3 lines
  accepts and closes issue #1221598: adds an optional callback to ftplib.FTP
  storbinary() and storlines() methods.
........
  r60189 | gregory.p.smith | 2008-01-22 02:12:02 +0100 (Tue, 22 Jan 2008) | 2 lines
  Replace spam.acquire() try: ... finally: spam.release() with "with spam:"
........
  r60190 | gregory.p.smith | 2008-01-22 02:20:42 +0100 (Tue, 22 Jan 2008) | 4 lines
  - Fix Issue #1703448: A joined thread could show up in the
    threading.enumerate() list after the join() for a brief period until
    it actually exited.
........
  r60193 | georg.brandl | 2008-01-22 08:53:31 +0100 (Tue, 22 Jan 2008) | 2 lines
  Fix \xhh specs, #1889.
........
  r60198 | christian.heimes | 2008-01-22 16:01:25 +0100 (Tue, 22 Jan 2008) | 1 line
  Fixed a missing (X) in define
........
  r60199 | christian.heimes | 2008-01-22 16:25:18 +0100 (Tue, 22 Jan 2008) | 2 lines
  Don't repeat yourself
  Added the macros PyModule_AddIntMacro and PyModule_AddStringMacro. They shorten PyModule_AddIntConstant(m, "AF_INET", AF_INET) to PyModule_AddIntMacro(m, AF_INET)
........
  r60201 | raymond.hettinger | 2008-01-22 20:51:41 +0100 (Tue, 22 Jan 2008) | 1 line
  Document when to use izip_longest().
........
  r60202 | georg.brandl | 2008-01-22 20:56:03 +0100 (Tue, 22 Jan 2008) | 2 lines
  Fix for #1087741 patch.
........
  r60203 | raymond.hettinger | 2008-01-22 21:18:53 +0100 (Tue, 22 Jan 2008) | 1 line
  Give zip() the same guarantee as izip() for left-to-right evaluation.
........
  r60204 | raymond.hettinger | 2008-01-22 23:09:26 +0100 (Tue, 22 Jan 2008) | 1 line
  Improve variable name in sample code
........
  r60205 | gregory.p.smith | 2008-01-23 00:15:34 +0100 (Wed, 23 Jan 2008) | 2 lines
  docstring and comment updates suggested by Giampaolo Rodola'
........
  r60207 | raymond.hettinger | 2008-01-23 01:04:40 +0100 (Wed, 23 Jan 2008) | 1 line
  Let pprint() support sets and frozensets (suggested by David Mertz).
........
  r60208 | guido.van.rossum | 2008-01-23 02:18:27 +0100 (Wed, 23 Jan 2008) | 4 lines
  I'm tired of these tests breaking at Google due to our large number of
  users and groups in LDAP/NIS.  So I'm limiting the extra-heavy part of
  the tests to passwd/group files with at most 1000 entries.
........
											
										 
											2008-01-23 08:24:23 +00:00
										 |  |  | #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
 | 
					
						
							|  |  |  | #define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
 | 
					
						
							| 
									
										
										
										
											2015-06-02 19:06:47 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
 | 
					
						
							|  |  |  | /* New in 3.5 */ | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  | PyAPI_FUNC(int) PyModule_SetDocString(PyObject *, const char *); | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyModule_AddFunctions(PyObject *, PyMethodDef *); | 
					
						
							|  |  |  | PyAPI_FUNC(int) PyModule_ExecDef(PyObject *module, PyModuleDef *def); | 
					
						
							| 
									
										
										
										
											2015-06-02 19:06:47 -04:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2006-02-15 17:27:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-29 14:47:46 +00:00
										 |  |  | #define Py_CLEANUP_SUPPORTED 0x20000
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-02-28 19:02:24 +00:00
										 |  |  | #define PYTHON_API_VERSION 1013
 | 
					
						
							|  |  |  | #define PYTHON_API_STRING "1013"
 | 
					
						
							| 
									
										
										
										
											1995-01-09 17:47:20 +00:00
										 |  |  | /* The API version is maintained (independently from the Python version)
 | 
					
						
							|  |  |  |    so we can detect mismatches between the interpreter and dynamically | 
					
						
							| 
									
										
										
										
											2000-07-16 12:04:32 +00:00
										 |  |  |    loaded modules.  These are diagnosed by an error message but | 
					
						
							| 
									
										
										
										
											1996-07-30 16:41:02 +00:00
										 |  |  |    the module is still loaded (because the mismatch can only be tested | 
					
						
							|  |  |  |    after loading the module).  The error message is intended to | 
					
						
							|  |  |  |    explain the core dump a few seconds later. | 
					
						
							| 
									
										
										
										
											1995-01-09 17:47:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-08-22 22:55:47 +00:00
										 |  |  |    The symbol PYTHON_API_STRING defines the same value as a string | 
					
						
							|  |  |  |    literal.  *** PLEASE MAKE SURE THE DEFINITIONS MATCH. *** | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-09 17:47:20 +00:00
										 |  |  |    Please add a line or two to the top of this log for each API | 
					
						
							|  |  |  |    version change: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    22-Feb-2006  MvL     1013    PEP 353 - long indices for sequence lengths | 
					
						
							| 
									
										
										
										
											2006-02-28 19:02:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    19-Aug-2002  GvR     1012    Changes to string object struct for | 
					
						
							|  |  |  |                                 interning changes, saving 3 bytes. | 
					
						
							| 
									
										
										
										
											2002-08-19 21:43:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    17-Jul-2001  GvR     1011    Descr-branch, just to be on the safe side | 
					
						
							| 
									
										
										
										
											2001-08-02 04:15:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-25 22:13:34 +00:00
										 |  |  |    25-Jan-2001  FLD     1010    Parameters added to PyCode_New() and | 
					
						
							|  |  |  |                                 PyFrame_New(); Python 2.1a2 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-29 01:46:45 +00:00
										 |  |  |    14-Mar-2000  GvR     1009    Unicode API added | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    3-Jan-1999   GvR     1007    Decided to change back!  (Don't reuse 1008!) | 
					
						
							| 
									
										
										
										
											1999-01-03 12:40:24 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    3-Dec-1998   GvR     1008    Python 1.5.2b1 | 
					
						
							| 
									
										
										
										
											1998-12-03 18:18:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    18-Jan-1997  GvR     1007    string interning and other speedups | 
					
						
							| 
									
										
										
										
											1997-01-18 07:54:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    11-Oct-1996  GvR     renamed Py_Ellipses to Py_Ellipsis :-( | 
					
						
							| 
									
										
										
										
											1996-10-11 16:25:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    30-Jul-1996  GvR     Slice and ellipses syntax added | 
					
						
							| 
									
										
										
										
											1996-07-30 16:41:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    23-Jul-1996  GvR     For 1.4 -- better safe than sorry this time :-) | 
					
						
							| 
									
										
										
										
											1996-07-30 16:41:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    7-Nov-1995   GvR     Keyword arguments (should've been done at 1.3 :-( ) | 
					
						
							| 
									
										
										
										
											1996-01-12 00:49:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    10-Jan-1995  GvR     Renamed globals to new naming scheme | 
					
						
							| 
									
										
										
										
											1995-01-12 11:45:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |    9-Jan-1995   GvR     Initial version (incompatible with older API) | 
					
						
							| 
									
										
										
										
											1995-01-09 17:47:20 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | /* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of
 | 
					
						
							|  |  |  |    Python 3, it will stay at the value of 3; changes to the limited API | 
					
						
							|  |  |  |    must be performed in a strictly backwards-compatible manner. */ | 
					
						
							|  |  |  | #define PYTHON_ABI_VERSION 3
 | 
					
						
							|  |  |  | #define PYTHON_ABI_STRING "3"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-08-22 22:55:47 +00:00
										 |  |  | #ifdef Py_TRACE_REFS
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |  /* When we are tracing reference counts, rename module creation functions so
 | 
					
						
							| 
									
										
										
										
											2006-02-15 17:27:45 +00:00
										 |  |  |     modules compiled with incompatible settings will generate a | 
					
						
							|  |  |  |     link-time error. */ | 
					
						
							| 
									
										
										
										
											2009-06-01 21:16:17 +00:00
										 |  |  |  #define PyModule_Create2 PyModule_Create2TraceRefs
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |  #define PyModule_FromDefAndSpec2 PyModule_FromDefAndSpec2TraceRefs
 | 
					
						
							| 
									
										
										
										
											1996-08-22 22:55:47 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-24 17:51:59 +01:00
										 |  |  | PyAPI_FUNC(PyObject *) PyModule_Create2(PyModuleDef*, int apiver); | 
					
						
							| 
									
										
										
										
											1993-07-28 09:05:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #ifdef Py_LIMITED_API
 | 
					
						
							|  |  |  | #define PyModule_Create(module) \
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |         PyModule_Create2(module, PYTHON_ABI_VERSION) | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2008-06-11 05:26:20 +00:00
										 |  |  | #define PyModule_Create(module) \
 | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  |         PyModule_Create2(module, PYTHON_API_VERSION) | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-02 19:06:47 -04:00
										 |  |  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
 | 
					
						
							|  |  |  | /* New in 3.5 */ | 
					
						
							| 
									
										
										
										
											2015-05-23 22:24:10 +10:00
										 |  |  | PyAPI_FUNC(PyObject *) PyModule_FromDefAndSpec2(PyModuleDef *def, | 
					
						
							|  |  |  |                                                 PyObject *spec, | 
					
						
							|  |  |  |                                                 int module_api_version); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef Py_LIMITED_API
 | 
					
						
							|  |  |  | #define PyModule_FromDefAndSpec(module, spec) \
 | 
					
						
							|  |  |  |     PyModule_FromDefAndSpec2(module, spec, PYTHON_ABI_VERSION) | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #define PyModule_FromDefAndSpec(module, spec) \
 | 
					
						
							|  |  |  |     PyModule_FromDefAndSpec2(module, spec, PYTHON_API_VERSION) | 
					
						
							| 
									
										
										
										
											2015-06-02 19:06:47 -04:00
										 |  |  | #endif /* Py_LIMITED_API */
 | 
					
						
							| 
									
										
										
										
											2022-04-21 23:00:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-02 19:06:47 -04:00
										 |  |  | #endif /* New in 3.5 */
 | 
					
						
							| 
									
										
										
										
											1998-06-27 18:21:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #ifndef Py_LIMITED_API
 | 
					
						
							| 
									
										
										
										
											2022-04-21 23:00:26 +02:00
										 |  |  | #  define Py_CPYTHON_MODSUPPORT_H
 | 
					
						
							|  |  |  | #  include "cpython/modsupport.h"
 | 
					
						
							|  |  |  | #  undef Py_CPYTHON_MODSUPPORT_H
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:14:31 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1997-11-19 18:51:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1993-07-28 09:05:47 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | #endif /* !Py_MODSUPPORT_H */
 |