GraKeL icon indicating copy to clipboard operation
GraKeL copied to clipboard

Release wheels for Python 3.8+

Open eddiebergman opened this issue 3 years ago • 3 comments

Is your feature request related to a problem? Please describe. A set of major packages built on numpy are not releasing newer version for 3.7 anymore since numpy stop supporting 3.7 a while ago (26 Dec, 2021). This has a knock on effect to sci-kit learn and scipy and any other numpy packages. You can see this by the most recent release files of numpy.

This means that any package that requires GraKel is no longer compatible with any package that requires a more up to date scipy, scikit-learn, etc... as they will conflict in their required numpy versions. These necessitate python 3.8 or greater.

Describe the solution you'd like Release builds for cp38, cp39 and cp310 as well. I tried looking through your ci files to see if I could find where they would be included but I mainly work with github actions so I'm not too familiar.

Describe alternatives you've considered If package A wants to support python 3.8, a newer numpy version and GraKel, they would effectively have to build and ship wheels that somehow include GraKel but this adds a lot of overhead to what should otherwise not need to be a compiled package.

Additional context You might also consider releasing macosx_universal wheels to support the M based series of processors for newer macs. They can be compiled on a normal mac but just take longer to compile.

I have done so with github actions and cibuildwheel but I'm not sure what your build system for releases look like, just leaving it here for reference.

CC: @DaStoll Best, Eddie

eddiebergman avatar Aug 19 '22 13:08 eddiebergman

Hi @eddiebergman! That would be great!

Well the deployment script on travis which builds the wheels is this:

https://github.com/ysig/GraKeL/blob/master/.travis.yml

As you can see it launches parallel instances:

https://github.com/ysig/GraKeL/blob/master/.travis.yml#L32

I have no objection updating this to recent distros!

The install env scripts are here:

https://github.com/ysig/GraKeL/tree/master/ci_scripts/circleci

each script is run by each process. I have no objection doing it with git actions.

By the time the library was developed > 3 years ago we followed the same deployment procedure from scikit (so it's sure that it would be outdated).

ysig avatar Sep 12 '22 12:09 ysig

Thanks for pointing it out!

I think the only thing required would be to add some lines here where we also include the more modern python versions and then create a new release on PyPi with these wheels in it (not sure if you have this part automated) https://github.com/ysig/GraKeL/blob/33ffff18d99c13f8afc0438a5691cb1206b119fb/.travis.yml#L24-L34

Sound reasonable? I can make a short PR for it

eddiebergman avatar Sep 12 '22 12:09 eddiebergman

We can add flags for newer distros to support newer versions in the install script, I'm not sure though if other things will break. If you can build locally a wheel with newer libs it would be great and then run a PR modifying the install script with an if case (if needed).

Also please move the changes here too: https://github.com/ysig/GraKeL/blob/master/appveyor.yml so we have Windows wheels too. (Yeah basically nobody uses them but we have been religious in keeping them for tutorials as well as completeness and scikit-learn compatibility.)

Also checkout whether requirements.txt is outdated (normally it shouldn't be). Thanks!

ysig avatar Sep 12 '22 13:09 ysig