Files
goo-engine/source/blender/python/generic/python_compat.h
T
Campbell Barton 8299e073cf 4.2LTS: PyAPI: support Python 3.13
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
2025-05-19 10:12:24 +02:00

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