Skip to content

Python 3.10 manylinux wheels #19630

Closed
Closed

Description

@hrnciar

Hello.

Could you please release CPython 3.10 manylinux wheels on PyPI?

Python 3.10.0 release candidate 1 was released this week: https://www.python.org/downloads/release/python-3100rc1/

It should be quite safe to release wheels for release candidate. ABI for Python 3.10 should be frozen from now on, even for bugfixes. From release notes:

There will be no ABI changes from this point forward in the 3.10 series and the goal is that there will be as few code changes as possible.

Thank You.

Activity

  1. tylerjereddy commented on Aug 10, 2021

    @tylerjereddy
    Contributor

    Matching issue in SciPy is cross-linked above--I'll keep an eye on what Chuck/the NumPy team decides to do.

  2. charris commented on Aug 10, 2021

    @charris
    Member

    To build wheels for 3.10 currently requires that it be available in manylinux2014 (linux), and azure (windows and mac). It was about three weeks after 3.9 was released before we could build wheels for all the platforms.

  3. charris commented on Aug 10, 2021

    @charris
    Member

    Note that rc1 did break a couple of NumPy tests.

  4. charris commented on Aug 10, 2021

    @charris
    Member

    Checking manylinux2014, likely the first out the door, they currently support 3.10.0b2. I imagine that will be updated in the next few weeks, maybe when rc2 comes out, if it comes out.

  5. charris commented on Aug 10, 2021

    @charris
    Member

    Hmm, it does look like manylinux2014 does support rc1.

    3.10.0rc1 is now in the latest images.
    ABI is now stable: https://www.python.org/downloads/release/python-3100rc1/

    There was no PR for that, it must have just been pushed. I think we can release linux wheels for that.

  6. charris commented on Aug 10, 2021

    @charris
    Member

    I can build manylinux2014 Python3.10.0rc1 wheels, but they can't be tested until 3.10 is added to the testing docker images. @matthew-brett @mattip Who does that?

  7. mattip commented on Aug 10, 2021

    @mattip
    Member

    I updated the docker images. The version available via apt get after adding the deadsnake apt repo is

    Python 3.10.0a6 (default, Mar  2 2021, 02:01:08) [GCC 5.4.0 20160609] on linux
    

    I hope that is recent enough? Note these are xenial images, but xenial is EOL. I guess I should update the whole thing to focal (20.04)

  8. hrnciar commented on Aug 10, 2021

    @hrnciar
    Author

    I updated the docker images. The version available via apt get after adding the deadsnake apt repo is

    Python 3.10.0a6 (default, Mar  2 2021, 02:01:08) [GCC 5.4.0 20160609] on linux
    

    I hope that is recent enough? Note these are xenial images, but xenial is EOL. I guess I should update the whole thing to focal (20.04)

    This seems quite outdated, the latest released version is Python 3.10.0rc1.

  9. mattip commented on Aug 10, 2021

    @mattip
    Member

    The 3.10rc1 is available in the focal images. But now a new problem: ubuntu has dropped 32-bit i686. How much longer will we ship wheels for that platform?

  10. hroncok commented on Aug 10, 2021

    @hroncok
    Contributor

    Honestly, I would not bother shipping 32-bit i686 wheels for recent Python versions. Ubuntu has dropped it, so did Fedora...

  11. charris commented on Aug 10, 2021

    @charris
    Member

    @mattip, I'm trying to recall why we use different images for building and testing, something to do with versions?

  12. charris commented on Aug 10, 2021

    @charris
    Member

    New error: undefined symbol: _PyGen_Send

    EDIT: Needs a more recent cython .

  13. charris commented on Aug 10, 2021

    @charris
    Member

    @mattip The 64 bit wheels on Intel now work, but we need multibuild/focal_arm64v8 for ARM64.

  14. charris commented on Aug 10, 2021

    @charris
    Member

    The Python 3.10 wheels for Intel 64 bit linux should be available from the nightly builds in an hour or so. You can install them like so:

    pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple numpy
    
  15. 19 remaining items

  16. encukou commented on Aug 19, 2021

    @encukou

    I understand that, but that's only a 2 month period.

    What other time period would you suggest to use? Your arguments could just as well apply to two years after the freeze.

  17. rgommers commented on Aug 19, 2021

    @rgommers
    Member

    Eh no, they don't. Most important Python projects are using a 3-9 month release cycle, with the typical spacing for minor releases being 6 months.

    @encukou I think you're missing the main point. I do not expect CPython to suddenly become ABI stable between minor releases, and a 2 month window is already a lot nicer than nothing. The problem is the expectation that it's okay to have tons of users upgrade to a new release and expect it to all work fine. What Fedora, Homebrew and the Windows App Store are doing is the main problem here, especially coupled with the expectation that it's a good idea to use all those Python install methods together with PyPI.

  18. encukou commented on Aug 19, 2021

    @encukou

    Ah, so the issue is in upgrading? Yes, I guess all Python distributors should either preserve the old version of Python on upgrade, or not make the upgrade automatic. (edit: I filed a Fedora bug)
    I thought we're talking more about new installs of Python – if we agree that new users should get 3.10 by default when 3.10 comes out, then we do need wheels for 3.10 soon.

    Most important Python projects are using a 3-9 month release cycle

    Important projects are also tested with alphas/betas. (Not necessarily by the upstream maintainers.) For rc1 they can either "just" build new wheels, or (in hopefully rare cases) make a point release with a specific fix.

    I do not expect CPython to suddenly become ABI stable between minor releases

    Not suddenly, but there is a limited API subset that is ABI stable, and there's a bunch of effort ongoing to make it more useful. I don't expect NumPy to use it any time soon – as it's be slower than the less stable API – but for some projects the performance/maintenance cost tradeoff should be worth it.

  19. rgommers commented on Aug 19, 2021

    @rgommers
    Member

    I thought we're talking more about new installs of Python – if we agree that new users should get 3.10 by default when 3.10 comes out, then we do need wheels for 3.10 soon.

    We are talking about both upgrades and new installs. New users should not get 3.10 by default on day 1. Unless they understand the tradeoffs and make a conscious choice that they want to be early adopters. But for something like the Windows App Store, that's certainly not the case. The default in Windows App Store should be 3.9.x for some time (1-3 months?) after 3.10 release date.

    There just aren't enough new/improved things in Python 3.10 that that outweighs some libraries not being installable at all and beginners wasting a lot of time.

    For rc1 they can either "just" build new wheels

    I'm sure you are well aware of how complex it is to build wheels in general, and that's why you're using quotes here. It takes a lot of work - we have to move the NumPy wheel build machinery from Azure DevOps to GitHub Actions it looks like for example. Projects more complex than NumPy may have other blockers: maintainer bandwidth, QA trajectories for any official binaries, size limit issues on PyPI that take weeks to get a response, etc.

    I suggest to make an inventory after the release of what is missing. My prediction is that despite requests like this issue and people spending time on it, there will be a lot of libraries especially for scientific computing and ML/AI, that will not be available for 3.10 by the release date.

  20. encukou commented on Aug 19, 2021

    @encukou

    The default in Windows App Store should be 3.9.x for some time (1-3 months?) after 3.10 release date.

    A Windows question would be for @brettcannon, I believe?

    Can/should we determine who new users are and separate them from old users who are better early adopters? (And should we rather use "early adopter" for users of things like Fedora Rawhide prereleases, which had 3.10 since the alphas?)

    AFAICS, the current schedule is the RC period (2 months) for the ecosystem to prepare & test, and the final release is for all users. I don't think we can improve that for 3.10. Should we add another release date for App-Store-like releases for 3.11?

    I'm sure you are well aware of how complex it is to build wheels in general, and that's why you're using quotes here.

    Yes, exactly.
    But there are also projects for which this is easier (or zero-effort if they're pure-python), but they're blocked by the more heavy-weight foundational projects. As I see it, NumPy is in a small category of hard+urgent packages.

    I suggest to make an inventory after the release of what is missing.

    Definiely.
    The 3.9 wheels issue was based on a user report; this one was filed proactively based on the "inventory" for 3.9.
    If you have any additions to the "inventory", let me know :)

  21. brettcannon commented on Aug 23, 2021

    @brettcannon

    Nope, a Windows question is a @zooba question.

  22. zooba commented on Aug 26, 2021

    @zooba
    Contributor

    Each Python version in the Windows Store is a separate app (much as I dislike that model, unfortunately the CPython release model forces it). People who want 3.10 have to explicitly look it up and install it, otherwise they are stuck on 3.n forever.

    Now, the default python.exe stub that ships with Windows gets updated on its own schedule. Right now, that's basically when I feel comfortable with ecosystem status (my current smoke test is "can I pip install jupyter ... and render a chart in a notebook"). If the ecosystem is lagging, it won't be switched - certainly doesn't happen automatically on the first day. However, it does happen instantly when I decide to do it, because Microsoft controls the version it goes to on the server side.

    There will be more downloads on day 0 from python.org than through the store stub ;)

  23. encukou commented on Sep 2, 2021

    @encukou

    my current smoke test is "can I pip install jupyter ... and render a chart in a notebook"

    Thanks! That's essentially the same packages we are looking at. It's nice to have a confirmation :)

  24. rgommers commented on Sep 2, 2021

    @rgommers
    Member

    Now, the default python.exe stub that ships with Windows gets updated on its own schedule. Right now, that's basically when I feel comfortable with ecosystem status (my current smoke test is "can I pip install jupyter ... and render a chart in a notebook"). If the ecosystem is lagging, it won't be switched - certainly doesn't happen automatically on the first day.

    That's great to hear, thanks for the explanation @zooba.

    If you have any additions to the "inventory", let me know :)

    Beyond what's in https://bugzilla.redhat.com/show_bug.cgi?id=1989081, I'd suggest (packages with compiled code only; pure Python stuff like Dask and Xarray will work already):

    • Accelerators: Cython, Numba
    • Other scientific computing libraries: CuPy, scikit-learn, scikit-image, statsmodels, spaCy
    • Deep learning libraries: PyTorch (I just opened an issue for it, linked above), TensorFlow, and JAX/jaxlib.
  25. hroncok commented on Sep 2, 2021

    @hroncok
    Contributor

    Cython has a pure Python universal wheel available, so the manylinux etc. wheel is not blocking, just faster.

  26. charris commented on Oct 7, 2021

    @charris
    Member

    Because NumPy wheels are still azure based, the main blocker for supporting new Python versions is their availability on azure for OS X and windows.

  27. rgommers commented on Oct 7, 2021

    @rgommers
    Member

    Did anyone look for other projects who run 3.10 Windows/macOS on Azure? The Windows App Store is supposed to have 3.10 final by now.

    Probably we should ensure we're migrated to GHA and cibuildwheel before the Python 3.11.0 release?

  28. hugovk commented on Oct 7, 2021

    @hugovk
    Contributor

    Azure Pipelines will have 3.10 next week when new images are released. Tracking issue:

    GitHub Actions and Azure Pipelines use the same images, but GHA can also install 3.10 on demand, and AZP cannot. Last year, they suggested upvoting this feature request for it to do so.

    (So GHA installs will be slightly faster next week when using pre-cached 3.10 instead of install on-demand.)

  29. hugovk commented on Oct 7, 2021

    @hugovk
    Contributor

    Having said that, does Azure Pipelines have 3.10-dev?

    Some CIs have -dev tracking nightly builds (Travis IIRC), others have it tracking most recent pre-release/release (GHA).

    In either case, would they be good enough for a release? Or at least to start work setting stuff up? Might find some bugs caused by the sudden introduction of a two-digit minor version number :)

  30. zooba commented on Oct 8, 2021

    @zooba
    Contributor

    In either case, would they be good enough for a release?

    These should be RC or later, so if they're not good enough for a release, we'd love to hear why (over on python-dev or https://discuss.python.org, but I'm happy to take if the answer is posted here).

    Changes during RC are usually less impactful than between .0 and .1 (and if they're not, everyone will be very thankful we made whatever fix was needed!), so it should be at least as safe as after release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions