Exa-Networks/exabgp

exabgp 4.2.21 fails with py3.12

elajkat opened this issue · 11 comments

Hi,
We use exabgp for openstack/networking-bagpipe, currently 4.2.21 is pulled in and we started to test with py3.12 to have early warning for issues.
We see the following traceback with py3.12:

File "/home/lajoskatona/github/networking-bagpipe/.tox/py312/lib/python3.12/site-packages/exabgp/configuration/environment.py", line 318, in <module>
    from exabgp.vendoring.six.moves import configparser as ConfigParser
ModuleNotFoundError: No module named 'exabgp.vendoring.six.moves'

Example log can be found in Openstack CI (after few weeks these will be deleted):
https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_6ed/periodic-weekly/opendev.org/openstack/networking-bagpipe/master/openstack-tox-py312/6ed9024/job-output.txt

Just the traceback in a paste:
https://paste.opendev.org/show/bjcWycvJyWU4mut1rVoW/

I was able to reproduce the issue in a local env (Ubuntu 22.04) with py3.12 installed with pyenv.

$ pyenv latest 3.12
3.12.3
$ python3 --version
Python 3.12.3
$ git clone https://opendev.org/openstack/networking-bagpipe
....
$ cd networking-bagpipe
# Here I have to play a little to have all dependency like sqlite3 added to python, but I suppose any env with py312 works for the reproduction.
$ tox -epy312
.....
  File "/home/lajoskatona/github/networking-bagpipe/.tox/py312/lib/python3.12/site-packages/exabgp/configuration/environment.py", line 318, in <module>
    from exabgp.vendoring.six.moves import configparser as ConfigParser
ModuleNotFoundError: No module named 'exabgp.vendoring.six.moves'

================================================================================
The above traceback was encountered during test discovery which imports all the found test modules in the specified test_path.
ERROR: InvocationError for command /home/lajoskatona/github/networking-bagpipe/.tox/py312/bin/stestr run (exited with code 100)
__________________________________________________________________________________________ summary ___________________________________________________________________________________________
ERROR:   py312: commands failed
$

This appears to be the same issue as #1177 and was addressed via commit 3f867af to the 4.2 branch.

You should be able to apply the patch manually and test.

Thanks I will check it and come back with feedback.

Thanks the above pr and using branch 4.2 really solves the issue.
When we can expect a new release? (It is not that urgent officially we just experimentally test with py3.12, though some vendors use py3.12)

When we can expect a new release?

I don't think there is any schedule. Last estimate I recall seeing from Thomas was when he responded to a different issue was that a new tag for the 4.2 branch was waiting on his available time to review/revise/revert a RIB patch. As exabgp is not a fully resourced project, when that time might be found is unknowable. Only the very fortunate open source developers find enough round tuits.

Thanks for your efforts.

Thank you, @garybuhrmaster, for your help. I will leave this issue open until I can correctly resolve it.

Python 3.12 "breaks" the testing suite; this was fixed in the master but will need backporting.

Async servers do not close/return if an async function ends when run as a service and does not close the underlying writer. It was not necessary before 3.12.

This also need backporting to 4.2

3.12 was added to the CI. @elajkat are you happy to close this issue?

no news - good news.

@thomas-mangin : I checked it, locally 4.2.22 was pulled and I suppose openstack CI will use the same, thanks it is perfect.

I did not backport the change to 4.2.22 but if it is important for openstack, happy to do it. Sorry, i am mixing 3.6 and 3.12 - 3.12 is fine.