8299e073cf
PyAPI: support Python 3.13
- `_PySet_NextEntry` has been removed, use generic iterator access
which will has some additional overhead as it needs to create
an iterator to access the values.
- Add v3.13 compatibility defines to account for renaming:
_PyObject_LookupAttr -> PyObject_GetOptionalAttr
_PyLong_AsInt -> PyLong_AsInt
- Unfortunately use of Python's internal API needs to be used to
inspect op-codes in `bpy_driver.cc`.
Testing GLTF/FBX IO there isn't any significant performance impact
from these changes.
Resolves #123871.
---
Unbreak building with Python 3.12
Support for 3.13 [0] broke 3.12.
[0]: d9f38fca5f
---
Back port:
- 829b16e4f096717b831bde3110e06399772be876
- 8e18ee8276e47bd9aa139b218b394438b7df4530
Pull Request: https://projects.blender.org/blender/blender/pulls/139023
34 lines
714 B
C
34 lines
714 B
C
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup pygen
|
|
* \brief header-only compatibility defines.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Removes `intialized` member from Python 3.13+. */
|
|
#if PY_VERSION_HEX >= 0x030d0000
|
|
# define PY_ARG_PARSER_HEAD_COMPAT()
|
|
#elif PY_VERSION_HEX >= 0x030c0000
|
|
/* Add `intialized` member for Python 3.12+. */
|
|
# define PY_ARG_PARSER_HEAD_COMPAT() 0,
|
|
#else
|
|
# define PY_ARG_PARSER_HEAD_COMPAT()
|
|
#endif
|
|
|
|
/* Python 3.13 made some changes, use the "new" names. */
|
|
#if PY_VERSION_HEX < 0x030d0000
|
|
# define PyObject_GetOptionalAttr _PyObject_LookupAttr
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|