lyst / lyst/lightfm

Can't install on Python 3.12

Open
#709 11 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
5.1k
Forks
724
PR merge metrics
No merged PRs in 30d

Description

I tried to install the `lightfm` package on Python 3.12

```
$ python -m venv venv
$ source venv/bin/activate
$ pip install lightfm
Collecting lightfm
Using cached lightfm-1.17.tar.gz (316 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... error
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [20 lines of output]
Traceback (most recent call last):
File "/tmp/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in
main()
File "/tmp/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=['wheel'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 487, in run_setup
super().run_setup(setup_script=setup_script)
File "/tmp/pip-build-env-lgz3q2o2/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 311, in run_setup
exec(code, locals())
File "", line 11, in
AttributeError: 'dict' object has no attribute '__LIGHTFM_SETUP__'
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
```

I tried installing wheel and setuptools beforehand, and I get another different error:

Logs after installing setuptools and wheel

```
pip install lightfm
Collecting lightfm
Using cached lightfm-1.17.tar.gz (316 kB)
Preparing metadata (setup.py) ... done
Collecting numpy (from lightfm)
Using cached numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
Collecting scipy>=0.17.0 (from lightfm)
Using cached scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
Collecting requests (from lightfm)
Using cached requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting scikit-learn (from lightfm)
Using cached scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting charset-normalizer<4,>=2 (from requests->lightfm)
Using cached charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
Collecting idna<4,>=2.5 (from requests->lightfm)
Using cached idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting urllib3<3,>=1.21.1 (from requests->lightfm)
Using cached urllib3-2.2.1-py3-none-any.whl.metadata (6.4 kB)
Collecting certifi>=2017.4.17 (from requests->lightfm)
Using cached certifi-2024.2.2-py3-none-any.whl.metadata (2.2 kB)
Collecting joblib>=1.2.0 (from scikit-learn->lightfm)
Using cached joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
Collecting threadpoolctl>=2.0.0 (from scikit-learn->lightfm)
Using cached threadpoolctl-3.5.0-py3-none-any.whl.metadata (13 kB)
Using cached scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (38.2 MB)
Using cached numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB)
Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Using cached scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)
Using cached certifi-2024.2.2-py3-none-any.whl (163 kB)
Using cached charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141 kB)
Using cached idna-3.7-py3-none-any.whl (66 kB)
Using cached joblib-1.4.2-py3-none-any.whl (301 kB)
Using cached threadpoolctl-3.5.0-py3-none-any.whl (18 kB)
Using cached urllib3-2.2.1-py3-none-any.whl (121 kB)
Building wheels for collected packages: lightfm
Building wheel for lightfm (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [224 lines of output]
/tmp/venv/lib/python3.12/site-packages/setuptools/dist.py:476: SetuptoolsDeprecationWarning: Invalid dash-separated options
!!

********************************************************************************
Usage of dash-separated 'description-file' will not be supported in future
versions. Please use the underscore name 'description_file' instead.

By 2024-Sep-26, you need to update your project and remove deprecated calls
or your builds will no longer be supported.

See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
********************************************************************************

!!
opt = self.warn_dash_deprecation(opt, section)
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-312
creating build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/__init__.py -> build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/_lightfm_fast.py -> build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/cross_validation.py -> build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/data.py -> build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/evaluation.py -> build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/lightfm.py -> build/lib.linux-x86_64-cpython-312/lightfm
creating build/lib.linux-x86_64-cpython-312/lightfm/datasets
copying lightfm/datasets/__init__.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
copying lightfm/datasets/_common.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
copying lightfm/datasets/movielens.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
copying lightfm/datasets/stackexchange.py -> build/lib.linux-x86_64-cpython-312/lightfm/datasets
copying lightfm/_lightfm_fast_no_openmp.c -> build/lib.linux-x86_64-cpython-312/lightfm
copying lightfm/_lightfm_fast_openmp.c -> build/lib.linux-x86_64-cpython-312/lightfm
running build_ext
building 'lightfm._lightfm_fast_openmp' extension
creating build/temp.linux-x86_64-cpython-312
creating build/temp.linux-x86_64-cpython-312/lightfm
gcc -fno-strict-overflow -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -I/tmp/venv/include -I/usr/include/python3.12 -c lightfm/_lightfm_fast_openmp.c -o build/temp.linux-x86_64-cpython-312/lightfm/_lightfm_fast_openmp.o -ffast-math -march=native -fopenmp
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_9CSRMatrix_2__reduce_cython__’:
lightfm/_lightfm_fast_openmp.c:3597:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
3597 | __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_CSRMatrix); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.12/dictobject.h:90,
from /usr/include/python3.12/Python.h:64,
from lightfm/_lightfm_fast_openmp.c:22:
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:3643:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
3643 | __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_CSRMatrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_11FastLightFM_2__reduce_cython__’:
lightfm/_lightfm_fast_openmp.c:4491:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
4491 | __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_n_s_pyx_unpickle_FastLightFM); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 13, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:4537:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
4537 | __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_pyx_unpickle_FastLightFM); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 15, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_2fit_warp’:
lightfm/_lightfm_fast_openmp.c:7025:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
7025 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 819, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:7030:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
7030 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 819, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:7108:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
7108 | __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 820, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_4fit_warp_kos’:
lightfm/_lightfm_fast_openmp.c:7922:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
7922 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 950, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:7927:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
7927 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 950, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:8005:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
8005 | __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 951, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf_7lightfm_20_lightfm_fast_openmp_6fit_bpr’:
lightfm/_lightfm_fast_openmp.c:8929:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
8929 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1108, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:8934:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
8934 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1108, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:9012:3: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
9012 | __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1109, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_pf___pyx_MemviewEnum___reduce_cython__’:
lightfm/_lightfm_fast_openmp.c:14112:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
14112 | __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:14158:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
14158 | __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__pyx_memview_slice’:
lightfm/_lightfm_fast_openmp.c:19295:3: warning: ‘Py_OptimizeFlag’ is deprecated [-Wdeprecated-declarations]
19295 | if (unlikely(!Py_OptimizeFlag)) {
| ^~
In file included from /usr/include/python3.12/Python.h:48:
/usr/include/python3.12/cpython/pydebug.h:13:37: note: declared here
13 | Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
| ^~~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_get_tp_dict_version’:
lightfm/_lightfm_fast_openmp.c:27791:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
27791 | return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
| ^~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_get_object_dict_version’:
lightfm/_lightfm_fast_openmp.c:27803:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
27803 | return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
| ^~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_object_dict_version_matches’:
lightfm/_lightfm_fast_openmp.c:27807:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
27807 | if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
| ^~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx__GetModuleGlobalName’:
lightfm/_lightfm_fast_openmp.c:27824:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
27824 | __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_Raise’:
lightfm/_lightfm_fast_openmp.c:28344:34: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘curexc_traceback’
28344 | PyObject* tmp_tb = tstate->curexc_traceback;
| ^~
lightfm/_lightfm_fast_openmp.c:28347:19: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘curexc_traceback’
28347 | tstate->curexc_traceback = tb;
| ^~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_AddObjC’:
lightfm/_lightfm_fast_openmp.c:28981:51: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
28981 | const digit* digits = ((PyLongObject*)op1)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_CLineForTraceback’:
lightfm/_lightfm_fast_openmp.c:29295:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
29295 | __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c:29295:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
29295 | __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
22 | Py_DEPRECATED(3.12) uint64_t ma_version_tag;
| ^~~~~~~~~~~~~~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_As_int’:
lightfm/_lightfm_fast_openmp.c:30607:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
30607 | const digit* digits = ((PyLongObject*)x)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c:30662:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
30662 | const digit* digits = ((PyLongObject*)x)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_As_long’:
lightfm/_lightfm_fast_openmp.c:30803:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
30803 | const digit* digits = ((PyLongObject*)x)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c:30858:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
30858 | const digit* digits = ((PyLongObject*)x)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyInt_As_char’:
lightfm/_lightfm_fast_openmp.c:31037:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
31037 | const digit* digits = ((PyLongObject*)x)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c:31092:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
31092 | const digit* digits = ((PyLongObject*)x)->ob_digit;
| ^~
lightfm/_lightfm_fast_openmp.c: In function ‘__Pyx_PyIndex_AsSsize_t’:
lightfm/_lightfm_fast_openmp.c:31443:45: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
31443 | const digit* digits = ((PyLongObject*)b)->ob_digit;
| ^~
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for lightfm
Running setup.py clean for lightfm
Failed to build lightfm
ERROR: Could not build wheels for lightfm, which is required to install pyproject.toml-based projects
```

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing `pip install lightfm` on Python 3.12 and inspect the repository's `setup.py` and the generated extension sources under `lightfm/`, especially `lightfm/_lightfm_fast_openmp.c`. The work is done when LightFM builds and installs successfully on Python 3.12 without the reported setup or compilation errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.