Python 3.11 gives SystemError: type Boost.Python.enum has the Py_TPFLAGS_HAVE_GC flag but has no traverse function

Abierto
#400 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp, python
Área
api, backend

Línea de trabajo

Comienza en libs/python/src/object/enum.cpp, en la línea Py_TPFLAGS_HAVE_GC, y reproduce el fallo de importación de Python 3.11 utilizando la compilación de Boost 1.80 para MSVC indicada. Compara el comportamiento con y sin ese flag y, a continuación, verifica que el binding se importe correctamente en Python 3.11 sin romper las versiones de Python compatibles anteriormente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Up to Python 3.10 our Boost Python binding ran fine.
As of Python 3.11 we get the following error upon import of the binding;

SystemError: type Boost.Python.enum has the Py_TPFLAGS_HAVE_GC flag but has no traverse function

Running;
Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
boost_1_80_0
b2 -j%NUMBER_OF_PROCESSORS% python=3.11 --with-python --stage-libdir=lib64-msvc-14.3 --build-type=complete toolset=msvc-14.3 address-model=64 architecture=x86 debug-symbols=on stage

If I remove line 116 of libs\python\src\object\enum.cpp I don't get the error.


          #if PY_VERSION_HEX < 0x03000000
              | Py_TPFLAGS_CHECKTYPES
          #endif
              | Py_TPFLAGS_HAVE_GC                    /* <============== remove this line */
              | Py_TPFLAGS_BASETYPE,                  /* tp_flags */

Is it safe to do this?

Lenguaje dominante
C++
Estrellas
537
Forks
223
Merge medio
11 h 22 min
PR fusionados (30 d)
2

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de boostorg/python

Todos los issues de boostorg/python

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.