• [gentoo-dev] Python 3.11 is ready to enter PYTHON_COMPAT (and other Pyt

    From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to All on Fri May 13 18:00:02 2022
    Hi, everyone.

    TL;DR:

    1. Gentoo eclasses now support Python 3.11 in ~arch. Please start
    testing your packages. (It's going to be stabilized once it leaves
    beta, i.e. sometime Nov-Dec.)

    2. We're switching to Python 3.10 in the beginning of June, so if you
    haven't ported your packages yet, please hurry.

    3. While updating your packages, please switch to DISTUTILS_USE_PEP517
    build.

    For help, please consult our docs:
    https://projects.gentoo.org/python/guide/


    ===================================
    Python 3.11 now supported in Gentoo
    ===================================
    Python 3.11.0b1 has been released recently. This means upstream feature
    freeze (i.e. technically no breaking changes, unless they do some last-
    minute reverts like with 3.10.0 final). This in turn we can start
    testing packages and marking them as 3.11 happy.

    We've already have ported some initial packages (which nowadays means
    tons of packages). My experience so far is that Python 3.11 is rather painless, compared to previous releases. What usually breaks are gross
    hacks or deprecations ignored for years (both common in Python ecosystem
    but not that common).

    Bad news is that for one useful package, you may end up having to deal
    with half a dozen unmaintained, broken NIH dependencies. Good news is
    that we're not alone with this, and neither we're the first ones to
    fight Python 3.11. So if something's broken, then there's a good chance
    that either it's already fixed in the upstream VCS repository or someone
    has made a pull request/patch for it.

    My usual recommendation is to prefer fixing problems over skipping
    tests. However, if something is important enough and the test failures
    are minor compared to the package's functionality, you can use
    EPYTEST_IGNORE and EPYTEST_DESELECT to skip broken tests conditionally
    to Python version. Sometimes it also makes sense to skip some
    dependency (python_gen_cond_dep) and possibly tests depending on it
    (using has_version). You can find some examples in the Guide, as well
    as by grepping the existing ebuilds.

    One package we haven't ported yet (and that we would really prefer not
    to port) is dev-python/nose. It's unmaintained for years, we're already carrying a ton of patches to keep it working and with Python 3.11, it's
    once again a mess. Plus, the code itself is a mess full of hacks. Good
    news is: 3.11 broke it completely, so upstreams can't just ignore
    the problem ("it works in my virtualenv"), so there's some hope they
    will be for switching to another test runner. That is, unless you're
    dealing with yet another unmaintained NIH dependency of an unmaintained
    NIH dependency. But there's some chance that you should be able to get
    it running with pytest easily or with a reasonably small patch.

    I'd also like to ask you to update your packages to EAPI 8 (if possible)
    and DISTUTILS_USE_PEP517 while touching them. Setuptools has deprecated `setup.py install` that the legacy builds are using long time ago. It
    doesn't look like it's going to stop working anytime soon but it's
    better to avoid running into last minute porting.

    The new flags are currently stable-masked on all profiles. Python
    3.11.0 final release is planned for October 2022. We're probably going
    to stabilize it sometime after, then work on unmasking the flags.


    =============================================
    Python 3.10 coming as the default interpreter =============================================
    As announced before, we're going to be switching to Python 3.10
    in the beginning of June 2022. There shouldn't be any unplanned delay,
    and all the most important packages are ready.

    If you haven't ported your packages, please do so ASAP.

    If something isn't suitable for Python 3.10, it's probably a good idea
    to give the users an early warning that it's likely to be lastrited
    at some point.

    If you need help, please don't hesitate to ask on #gentoo-python.
    We can help, point you at the right docs or good examples of ebuilds.


    TIA for all you help and have fun with new Pythons!

    --
    Best regards,
    Michał Górny

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)