llvmlite icon indicating copy to clipboard operation
llvmlite copied to clipboard

Update versioneer to enable Python 3.11

Open oscargus opened this issue 3 years ago • 13 comments

Updated versioneer as old versions of it use configparser.SafeConfigParser which is removed in Python 3.11.

oscargus avatar Jan 20 '22 08:01 oscargus

There is a hack in here to avoid updating the newly copied _version.py file since it is no longer copied before trying to update it.

I think it is related to executing build_ext as part of build, which no longer seems possible (looking at the previous tests, it is clear that build_ext did not try to update this file, which the new version seems to do) but really no idea. Probably it is better to change in setup.py, but then this will really only become a problem next time versioneer has to be updated...

oscargus avatar Jan 20 '22 09:01 oscargus

Updated to latest version.

oscargus avatar Apr 15 '22 07:04 oscargus

@oscargus we are starting to prep for 3.11 support slowly. We haven't noticed any failures in our initial testing. Do you have an idea where and why this may break on 3.11 w/o this patch? Thank you!

esc avatar Oct 25 '22 17:10 esc

I do not really recall anything other than what I stated originally. It uses configparser.SafeConfigParser which apparently is removed in Python 3.11.

But if it works, then I guess that there is no immediate point in changing. However, from a quick check it doesn't look like you are testing with 3.11 now (nor any PR?)?

Anyway, if you are in that process, I can try to update once again since I think that there is a newer version of versioneer.

oscargus avatar Oct 25 '22 17:10 oscargus

I do not really recall anything other than what I stated originally. It uses configparser.SafeConfigParser which apparently is removed in Python 3.11.

OK, we will have to double check.

But if it works, then I guess that there is no immediate point in changing. However, from a quick check it doesn't look like you are testing with 3.11 now (nor any PR?)?

It was a bit tricky to test with Python 3.11 since Numba/llvmlite are a bit unique in this respect. We have been testing against the RCs for a few months however. The results and information on how we achieved this are here:

https://github.com/numba/numba/issues/8304

Anyway, if you are in that process, I can try to update once again since I think that there is a newer version of versioneer.

Probably a good idea, thank you.

esc avatar Oct 26 '22 07:10 esc

I checked a bit further and it may be that your version of versioneer is so old so that it doesn't even use SafeConfigParser... So in that case there may be no need for it.

Unless of course you want to bump it for other reasons... :-)

(Replacing

* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, and pypy

with

* Compatible with: Python 3.7, 3.8, 3.9, 3.10 and pypy3

is a possible motivation as well, and I assume that it has developed. But does indeed not seem required.)

(I made an effort updating versioneer once I was informed about the issue in a number of relevant packages, although I must admit that I didn't really consider this case.)

oscargus avatar Oct 26 '22 08:10 oscargus

Note that it doesn't state 3.11, but it is the latest available version (0.27) and it doesn't use SafeConfigParser.

oscargus avatar Oct 26 '22 08:10 oscargus

Note that it doesn't state 3.11, but it is the latest available version (0.27) and it doesn't use SafeConfigParser.

Perhaps then it is better to wait for a 3.11 compat. release?

esc avatar Oct 26 '22 13:10 esc

Maybe. They just added formal testing for 3.11 https://github.com/python-versioneer/python-versioneer/pull/348

All I can say is that other packages have upgraded and works well. Here is the PR that started it: https://github.com/aesara-devs/aesara/pull/721

You are on 0.12, SafeConfigParser was introduced in 0.15 https://github.com/python-versioneer/python-versioneer/commit/1fe079a9e0e9f4a7b7b748062ccadf08b1912544, and the issue has been fixed since 0.19(?) https://github.com/python-versioneer/python-versioneer/pull/207

oscargus avatar Oct 26 '22 15:10 oscargus

Maybe. They just added formal testing for 3.11 python-versioneer/python-versioneer#348

All I can say is that other packages have upgraded and works well. Here is the PR that started it: aesara-devs/aesara#721

You are on 0.12, SafeConfigParser was introduced in 0.15 python-versioneer/python-versioneer@1fe079a, and the issue has been fixed since 0.19(?) python-versioneer/python-versioneer#207

OK, well, if nothing is actually broken broken, then perhaps we could just wait until smth. actually breaks?

esc avatar Oct 27 '22 09:10 esc

Your call for sure.

(I usually update dependencies for the sake of it every now and then, unless it breaks something, but there is of course also the other way around. And this is not really a dependency in the traditional way either.)

oscargus avatar Oct 27 '22 10:10 oscargus

Your call for sure.

(I usually update dependencies for the sake of it every now and then, unless it breaks something, but there is of course also the other way around. And this is not really a dependency in the traditional way either.)

Once we get CI testing for llvmlite for Python 3.11 going I'd suggest to try to update the vendored versioneer code to a Python 3.11 compatible version. Does that make sense?

You can subscribe to https://github.com/numba/llvmlite/issues/885 for updates on when this will happen.

esc avatar Nov 10 '22 17:11 esc

@oscargus llvmlite 0.40.0 was released already and supports Python 3.11 -- do you want to give this another spin.

esc avatar Jun 09 '23 11:06 esc