[Python-checkins] bpo-35134: Remove the Include/code.h header file (GH-32385)

vstinner webhook-mailer at python.org
Wed Apr 6 20:29:56 EDT 2022


https://github.com/python/cpython/commit/85addfb9c6496eb3d26082348cf5aca848c877ef
commit: 85addfb9c6496eb3d26082348cf5aca848c877ef
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-04-07T02:29:52+02:00
summary:

bpo-35134: Remove the Include/code.h header file (GH-32385)

Remove the Include/code.h header file. C extensions should only
include the main <Python.h> header file.

Python.h includes directly Include/cpython/code.h instead.

files:
A Misc/NEWS.d/next/C API/2022-04-07-00-53-51.bpo-35134.zSjIzk.rst
D Include/code.h
M Doc/whatsnew/3.11.rst
M Include/Python.h
M Include/cpython/code.h
M Makefile.pre.in
M Objects/codeobject.c
M PCbuild/pythoncore.vcxproj
M PCbuild/pythoncore.vcxproj.filters
M Python/ceval.c
M Python/marshal.c
M Python/pythonrun.c
M Python/sysmodule.c
M Python/traceback.c

diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 4c9b32d9a9452..31cdf10f66656 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -1210,7 +1210,7 @@ Porting to Python 3.11
   explicitly include the header files after ``#include <Python.h>``.
   (Contributed by Victor Stinner in :issue:`45434`.)
 
-* The non-limited API files ``cellobject.h``, ``classobject.h``, ``context.h``,
+* The non-limited API files ``cellobject.h``, ``classobject.h``, ``code.h``, ``context.h``,
   ``funcobject.h``, ``genobject.h`` and ``longintrepr.h`` have been moved to
   the ``Include/cpython`` directory. Moreover, the ``eval.h`` header file was
   removed. These files must not be included directly, as they are already
diff --git a/Include/Python.h b/Include/Python.h
index 4dc2edb4dbbe2..52a7aac6ba6cb 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -68,7 +68,7 @@
 #include "cpython/classobject.h"
 #include "fileobject.h"
 #include "pycapsule.h"
-#include "code.h"
+#include "cpython/code.h"
 #include "pyframe.h"
 #include "traceback.h"
 #include "sliceobject.h"
diff --git a/Include/code.h b/Include/code.h
deleted file mode 100644
index 0245c32bc2544..0000000000000
--- a/Include/code.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Definitions for bytecode */
-
-#ifndef Py_CODE_H
-#define Py_CODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef Py_LIMITED_API
-#  define Py_CPYTHON_CODE_H
-#  include "cpython/code.h"
-#  undef Py_CPYTHON_CODE_H
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CODE_H */
diff --git a/Include/cpython/code.h b/Include/cpython/code.h
index 157678317931e..6dc2290ffeb5e 100644
--- a/Include/cpython/code.h
+++ b/Include/cpython/code.h
@@ -1,5 +1,10 @@
-#ifndef Py_CPYTHON_CODE_H
-#  error "this header file must not be included directly"
+/* Definitions for bytecode */
+
+#ifndef Py_LIMITED_API
+#ifndef Py_CODE_H
+#define Py_CODE_H
+#ifdef __cplusplus
+extern "C" {
 #endif
 
 /* Each instruction in a code object is a fixed-width value,
@@ -204,3 +209,9 @@ PyAPI_FUNC(int) _PyCode_GetExtra(PyObject *code, Py_ssize_t index,
                                  void **extra);
 PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index,
                                  void *extra);
+
+#ifdef __cplusplus
+}
+#endif
+#endif  // !Py_CODE_H
+#endif  // !Py_LIMITED_API
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 2f61259e69b8c..cb6e962045a04 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1450,7 +1450,6 @@ PYTHON_HEADERS= \
 		$(srcdir)/Include/bytearrayobject.h \
 		$(srcdir)/Include/bytesobject.h \
 		$(srcdir)/Include/ceval.h \
-		$(srcdir)/Include/code.h \
 		$(srcdir)/Include/codecs.h \
 		$(srcdir)/Include/compile.h \
 		$(srcdir)/Include/complexobject.h \
diff --git a/Misc/NEWS.d/next/C API/2022-04-07-00-53-51.bpo-35134.zSjIzk.rst b/Misc/NEWS.d/next/C API/2022-04-07-00-53-51.bpo-35134.zSjIzk.rst
new file mode 100644
index 0000000000000..93e6e32160462
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2022-04-07-00-53-51.bpo-35134.zSjIzk.rst	
@@ -0,0 +1,2 @@
+Remove the ``Include/code.h`` header file. C extensions should only include
+the main ``<Python.h>`` header file. Patch by Victor Stinner.
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index 7d50b40ec4536..e872b398e08c8 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -1,7 +1,6 @@
 #include <stdbool.h>
 
 #include "Python.h"
-#include "code.h"
 #include "opcode.h"
 #include "structmember.h"         // PyMemberDef
 #include "pycore_code.h"          // _PyCodeConstructor
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 6e51e17194d4d..cbd3936860120 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -129,7 +129,6 @@
     <ClInclude Include="..\Include\bytearrayobject.h" />
     <ClInclude Include="..\Include\bytesobject.h" />
     <ClInclude Include="..\Include\ceval.h" />
-    <ClInclude Include="..\Include\code.h" />
     <ClInclude Include="..\Include\codecs.h" />
     <ClInclude Include="..\Include\compile.h" />
     <ClInclude Include="..\Include\complexobject.h" />
diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters
index 5fe6a9de21c13..70af305222170 100644
--- a/PCbuild/pythoncore.vcxproj.filters
+++ b/PCbuild/pythoncore.vcxproj.filters
@@ -132,9 +132,6 @@
     <ClInclude Include="..\Include\objimpl.h">
       <Filter>Include</Filter>
     </ClInclude>
-    <ClInclude Include="..\Include\opcode.h">
-      <Filter>Include</Filter>
-    </ClInclude>
     <ClInclude Include="..\Include\osdefs.h">
       <Filter>Include</Filter>
     </ClInclude>
diff --git a/Python/ceval.c b/Python/ceval.c
index 487e09bc66417..5384aac5d6e6c 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -23,7 +23,6 @@
 #include "pycore_tuple.h"         // _PyTuple_ITEMS()
 #include "pycore_emscripten_signal.h"  // _Py_CHECK_EMSCRIPTEN_SIGNALS
 
-#include "code.h"
 #include "pycore_dict.h"
 #include "dictobject.h"
 #include "frameobject.h"
diff --git a/Python/marshal.c b/Python/marshal.c
index e7cf6553bd142..19abcc8ffe4b7 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -12,7 +12,6 @@
 #include "pycore_call.h"          // _PyObject_CallNoArgs()
 #include "pycore_code.h"          // _PyCode_New()
 #include "pycore_hashtable.h"     // _Py_hashtable_t
-#include "code.h"
 #include "marshal.h"              // Py_MARSHAL_VERSION
 
 /*[clinic input]
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 38ca952838a1f..d117b790dfdaa 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -25,7 +25,6 @@
 
 #include "token.h"                // INDENT
 #include "errcode.h"              // E_EOF
-#include "code.h"                 // PyCodeObject
 #include "marshal.h"              // PyMarshal_ReadLongFromFile()
 
 #ifdef MS_WINDOWS
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index de4e10a7e110c..ac44b803b23f5 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -31,7 +31,6 @@ Data members:
 #include "pycore_structseq.h"     // _PyStructSequence_InitType()
 #include "pycore_tuple.h"         // _PyTuple_FromArray()
 
-#include "code.h"
 #include "frameobject.h"          // PyFrame_GetBack()
 #include "pydtrace.h"
 #include "osdefs.h"               // DELIM
diff --git a/Python/traceback.c b/Python/traceback.c
index 0d0eb954c232f..488c1b17cf51f 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -3,7 +3,6 @@
 
 #include "Python.h"
 
-#include "code.h"                 // PyCode_Addr2Line etc
 #include "frameobject.h"          // PyFrame_GetBack()
 #include "pycore_ast.h"           // asdl_seq_*
 #include "pycore_call.h"          // _PyObject_CallMethodFormat()



More information about the Python-checkins mailing list