From 189e09f782b4684ef5f440c94a5a06693ccb1400 Mon Sep 17 00:00:00 2001 From: AraHaan Date: Wed, 8 Jan 2025 14:26:41 -0500 Subject: [PATCH] Moved all internal headers to a single internal header. This should help make it easier to vendor later. --- .gitignore | 3 +++ include/pyawaitable/_pyawaitable.h | 20 ++++++++++++++++++++ include/pyawaitable/array.h | 3 --- include/pyawaitable/awaitableobject.h | 5 ----- include/pyawaitable/backport.h | 5 ++--- include/pyawaitable/coro.h | 2 -- include/pyawaitable/genwrapper.h | 3 --- include/pyawaitable/values.h | 2 -- include/pyawaitable/with.h | 3 --- src/_pyawaitable/array.c | 2 +- src/_pyawaitable/awaitable.c | 9 +-------- src/_pyawaitable/backport.c | 3 +-- src/_pyawaitable/coro.c | 6 +----- src/_pyawaitable/genwrapper.c | 6 +----- src/_pyawaitable/mod.c | 7 +------ src/_pyawaitable/values.c | 8 +------- src/_pyawaitable/with.c | 5 +---- src/pyawaitable/pyawaitable.h | 2 ++ 18 files changed, 35 insertions(+), 59 deletions(-) create mode 100644 include/pyawaitable/_pyawaitable.h diff --git a/.gitignore b/.gitignore index e728fa7..5998cd1 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ build/ test.py a.py vgcore* + +# Other Visual Studio stuff. +pcbuild/ diff --git a/include/pyawaitable/_pyawaitable.h b/include/pyawaitable/_pyawaitable.h new file mode 100644 index 0000000..1dadbdc --- /dev/null +++ b/include/pyawaitable/_pyawaitable.h @@ -0,0 +1,20 @@ +#ifndef PYAWAITABLE__PYAWAITABLE_H +#define PYAWAITABLE__PYAWAITABLE_H + +#include +#include +#include +#include + +#include "array.h" +#include "awaitableobject.h" +#include "backport.h" +#include "genwrapper.h" +#include "coro.h" +#include "values.h" +#include "with.h" + +#define PYAWAITABLE_BEING_BUILT +#include + +#endif diff --git a/include/pyawaitable/array.h b/include/pyawaitable/array.h index 795fcda..1fc61ab 100644 --- a/include/pyawaitable/array.h +++ b/include/pyawaitable/array.h @@ -1,9 +1,6 @@ #ifndef PYAWAITABLE_ARRAY_H #define PYAWAITABLE_ARRAY_H -#include -#include - #define pyawaitable_array_DEFAULT_SIZE 16 /* diff --git a/include/pyawaitable/awaitableobject.h b/include/pyawaitable/awaitableobject.h index 9567d90..c150b1e 100644 --- a/include/pyawaitable/awaitableobject.h +++ b/include/pyawaitable/awaitableobject.h @@ -1,11 +1,6 @@ #ifndef PYAWAITABLE_AWAITABLE_H #define PYAWAITABLE_AWAITABLE_H -#include -#include - -#include - typedef int (*awaitcallback)(PyObject *, PyObject *); typedef int (*awaitcallback_err)(PyObject *, PyObject *); diff --git a/include/pyawaitable/backport.h b/include/pyawaitable/backport.h index 82c517c..2db20fe 100644 --- a/include/pyawaitable/backport.h +++ b/include/pyawaitable/backport.h @@ -1,9 +1,8 @@ #ifndef PYAWAITABLE_BACKPORT_H #define PYAWAITABLE_BACKPORT_H -#include - -#ifndef _PyObject_Vectorcall +/* assume after Python 3.11 that PyObject_Vectorcall is always available even in the (stable) limited API. */ +#if !defined(_PyObject_Vectorcall) && PY_VERSION_HEX < 0x030C0000 #define PYAWAITABLE_NEEDS_VECTORCALL PyObject *_PyObject_VectorcallBackport( PyObject *obj, diff --git a/include/pyawaitable/coro.h b/include/pyawaitable/coro.h index 5646d7e..2dd2c9c 100644 --- a/include/pyawaitable/coro.h +++ b/include/pyawaitable/coro.h @@ -1,8 +1,6 @@ #ifndef PYAWAITABLE_CORO_H #define PYAWAITABLE_CORO_H -#include - extern PyMethodDef pyawaitable_methods[]; extern PyAsyncMethods pyawaitable_async_methods; diff --git a/include/pyawaitable/genwrapper.h b/include/pyawaitable/genwrapper.h index 967eee7..d9a83e5 100644 --- a/include/pyawaitable/genwrapper.h +++ b/include/pyawaitable/genwrapper.h @@ -1,9 +1,6 @@ #ifndef PYAWAITABLE_GENWRAPPER_H #define PYAWAITABLE_GENWRAPPER_H -#include -#include - extern PyTypeObject _PyAwaitableGenWrapperType; typedef struct _GenWrapperObject diff --git a/include/pyawaitable/values.h b/include/pyawaitable/values.h index 80b2848..28b1992 100644 --- a/include/pyawaitable/values.h +++ b/include/pyawaitable/values.h @@ -1,8 +1,6 @@ #ifndef PYAWAITABLE_VALUES_H #define PYAWAITABLE_VALUES_H -#include // PyObject, Py_ssize_t - #define SAVE(name) int name(PyObject * awaitable, Py_ssize_t nargs, ...) #define UNPACK(name) int name(PyObject * awaitable, ...) #define SET(name, tp) \ diff --git a/include/pyawaitable/with.h b/include/pyawaitable/with.h index c472d47..78859cb 100644 --- a/include/pyawaitable/with.h +++ b/include/pyawaitable/with.h @@ -1,9 +1,6 @@ #ifndef PYAWAITABLE_WITH_H #define PYAWAITABLE_WITH_H -#include // PyObject -#include // awaitcallback, awaitcallback_err - int pyawaitable_async_with_impl( PyObject *aw, diff --git a/src/_pyawaitable/array.c b/src/_pyawaitable/array.c index 14865c0..b4884db 100644 --- a/src/_pyawaitable/array.c +++ b/src/_pyawaitable/array.c @@ -1,4 +1,4 @@ -#include +#include static inline void call_deallocator_maybe(pyawaitable_array *array, Py_ssize_t index) diff --git a/src/_pyawaitable/awaitable.c b/src/_pyawaitable/awaitable.c index 25bc741..7b0cdfd 100644 --- a/src/_pyawaitable/awaitable.c +++ b/src/_pyawaitable/awaitable.c @@ -1,11 +1,4 @@ -#include -#include - -#include -#include -#include -#include -#include +#include PyDoc_STRVAR( awaitable_doc, diff --git a/src/_pyawaitable/backport.c b/src/_pyawaitable/backport.c index f3a1545..0ae0e03 100644 --- a/src/_pyawaitable/backport.c +++ b/src/_pyawaitable/backport.c @@ -1,5 +1,4 @@ -#include -#include +#include #ifdef PYAWAITABLE_NEEDS_VECTORCALL PyObject * diff --git a/src/_pyawaitable/coro.c b/src/_pyawaitable/coro.c index e569b1b..0b18ff5 100644 --- a/src/_pyawaitable/coro.c +++ b/src/_pyawaitable/coro.c @@ -1,8 +1,4 @@ -#include -#include -#include -#include -#include +#include static PyObject * awaitable_send_with_arg(PyObject *self, PyObject *value) diff --git a/src/_pyawaitable/genwrapper.c b/src/_pyawaitable/genwrapper.c index 36fdeb5..b1dd067 100644 --- a/src/_pyawaitable/genwrapper.c +++ b/src/_pyawaitable/genwrapper.c @@ -1,8 +1,4 @@ -#include -#include -#include -#include -#include +#include #define DONE(cb) \ do { cb->done = true; \ Py_CLEAR(cb->coro); \ diff --git a/src/_pyawaitable/mod.c b/src/_pyawaitable/mod.c index 10e9907..588f310 100644 --- a/src/_pyawaitable/mod.c +++ b/src/_pyawaitable/mod.c @@ -1,9 +1,4 @@ -#include -#include -#include -#include -#include -#include +#include #define ADD_TYPE(tp) \ do \ { \ diff --git a/src/_pyawaitable/values.c b/src/_pyawaitable/values.c index df95373..0102862 100644 --- a/src/_pyawaitable/values.c +++ b/src/_pyawaitable/values.c @@ -1,10 +1,4 @@ -#include -#include - -#include -#include -#include -#include +#include #define NOTHING diff --git a/src/_pyawaitable/with.c b/src/_pyawaitable/with.c index d01c7d6..1f73e53 100644 --- a/src/_pyawaitable/with.c +++ b/src/_pyawaitable/with.c @@ -1,7 +1,4 @@ -#include -#include -#include -#include +#include static int async_with_inner(PyObject *aw, PyObject *res) diff --git a/src/pyawaitable/pyawaitable.h b/src/pyawaitable/pyawaitable.h index 6f6209b..ef91cb5 100644 --- a/src/pyawaitable/pyawaitable.h +++ b/src/pyawaitable/pyawaitable.h @@ -54,6 +54,7 @@ typedef struct _pyawaitable_abi ); } PyAwaitableABI; +#ifndef PYAWAITABLE_BEING_BUILT #ifdef PYAWAITABLE_THIS_FILE_INIT PyAwaitableABI *pyawaitable_abi = NULL; #else @@ -154,5 +155,6 @@ pyawaitable_vendor_init(PyObject *mod) ); return -1; } +#endif #endif