fzi-forschungszentrum-informatik / Lanelet2

Map handling framework for automated driving
BSD 3-Clause "New" or "Revised" License
800 stars 328 forks source link

Python 3.12 Support #354

Closed fabikonsti closed 1 month ago

fabikonsti commented 3 months ago

Hi, will there be support for Python 3.12? If so, when is this planned?

immel-f commented 2 months ago

Hi, sorry for the late reply. Python 3.12 is currently not tested and built against in the CI. Releasing binaries for a new Python version can get a lot more complicated here than for pure python packages because of the dependencies towards external libraries that are included in the wheel.

You could try to build the wheel yourself like in the CI for Python 3.12, which may just work immediately or get very complicated :sweat_smile: . I can currently not give a time estimate when we would get around to implementing that, however we would be happy to accept contributions regarding Python 3.12 support

kopp commented 1 month ago

I've added a very naive branch that tries to build for python 3.12 at https://github.com/kopp/Lanelet2/tree/feature/python-3.12 but this seems to fail due to https://github.com/fzi-forschungszentrum-informatik/Lanelet2/issues/361 .

kopp commented 1 month ago

ok, I seem to be able to generate a python3.12 compatible wheel. Find it attached here: lanelet2-1.2.2-cp312-cp312-manylinux_2_31_x86_64.whl.zip

I built this using

docker buildx build --file .github/conan_dockerfile/Dockerfile --target lanelet2_conan_with_pip_wheel --build-arg FROM=conanio/gcc10:latest --build-arg PY_VERSION=3.12 --build-arg PLATFORM=manylinux_2_31_x86_64 --build-arg CONAN_ARGS=--require-override=boost/1.81.0 --tag lanelet2:py312 .

on Ubuntu 20.04 on this branch.

I can run it in python 3.12:

% docker run --rm -it --entrypoint bash python:3.12
root@54ff4fd6fa6c:/# pip install /tmp/lanelet2-1.2.2-cp312-cp312-manylinux_2_31_x86_64.whl 
Processing /tmp/lanelet2-1.2.2-cp312-cp312-manylinux_2_31_x86_64.whl
Installing collected packages: lanelet2
Successfully installed lanelet2-1.2.2
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
root@54ff4fd6fa6c:/# python
Python 3.12.7 (main, Oct  1 2024, 22:28:30) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lanelet2
>>> from lanelet2.core import Point3d
>>> from lanelet2.geometry import distance
>>> p1 = Point3d(49, 8, 402)
>>> p2 = Point3d(51, 9, 301)
>>> distance(p1, p2)
101.00495037373169
kopp commented 1 month ago

@immel-f : do you plan do to a release with python 3.12 support (#363) in the near future (I see #368 to fix the cd ;))? If so, is there an 'estimated time to deployment'? 😇

immel-f commented 1 month ago

Yes, I planned to do the release directly after merging the 3.12 support PR, however changes in external dependencies keep breaking the CI/CD pipeline 🙈 . We have to have a code owner review for every change we merge to master, so making changes to the repository can take a bit longer, sorry for that. If you need the wheel urgently for something, you can also directly install it from the built CD articfact wheel files (the 3.12 version is also in there)

poggenhans commented 1 month ago

closed with #364