boaviztapi
boaviztapi copied to clipboard
Python 3.12 support
Bug description
Wa cannot currently install boaviztapi when using python 3.12
To Reproduce
pyenv install 3.12.0
pyenv shell 3.12.0
make install
When installing numpy, the process fails with the follwing error :
• Installing numpy (1.24.4): Failed
ChefBuildError
Backend 'setuptools.build_meta:__legacy__' is not available.
Traceback (most recent call last):
File "/Users/pierre/.local/pipx/venvs/poetry/lib/python3.12/site-packages/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
obj = import_module(mod_path)
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.12.0/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1304, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 994, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/private/var/folders/tp/y92gnztn1tb4r1q1spmz44d00000gn/T/tmpnwxg8483/.venv/lib/python3.12/site-packages/setuptools/__init__.py", line 10, in <module>
import distutils.core
ModuleNotFoundError: No module named 'distutils'
at ~/.local/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/installation/chef.py:164 in _prepare
160│
161│ error = ChefBuildError("\n\n".join(message_parts))
162│
163│ if error is not None:
→ 164│ raise error from None
165│
166│ return path
167│
168│ def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:
Note: This error originates from the build backend, and is likely not a problem with poetry but with numpy (1.24.4) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 "numpy (==1.24.4)"'.
Solution
- python 3.12 is only supported by numpy >= 1.26
- updating numpy requires updating scipy as well
- but scipy is constrained by the version of python we want to support (currently 3.8) : we cannot update scipy if we want to keep supporting python 3.8
As a consequence we need to choose between supporting python 3.8 or python 3.12.
I would say that supporting 3.12 is not really urgent for the moment, we can probably wait a few month before supporting it , and deprecating 3.8 at the same time.
Just for summary:
- end of life (end of security patches) of Python 3.8 is Oct 2024
- end of life (end of security patches) of Python 3.12 is Oct 2028
https://devguide.python.org/versions/