Python updates, news, and policy

Renee Otten reneeotten at macports.org
Tue Dec 28 14:14:35 UTC 2021


Thanks Josh - sounds good to me. 

I am just wondering whether it would be worthwhile to add one more variable to the python PG, perhaps “python.pep517_backend” that would support the commonly used backends you mentioned (perhaps defaulting to setuptools) and add its required dependencies?

Renee


> On Dec 28, 2021, at 8:28 AM, Joshua Root <jmr at macports.org> wrote:
> 
> Here are a few Python-related FYIs and one proposal to solidify our policy.
> 
> Python 3.6 reached end-of-life as of 2021-12-23. Please feel free to start removing use of it from ports, and accelerate removal of use of 3.5 and older. But *please* remember to only remove py36 subports (and indeed any ports) *after* they have no remaining dependents.
> 
> Python upstream has switched to an annual release cycle[1]. This means that new major versions will always be released in October going forward. I propose that we sync up with this schedule and change the default Python version in MacPorts, i.e. the default value of python.default_version in the python portgroup and the recommended default variant for ports that offer pythonXY variants, to the latest upstream release every year on the 1st of January, unless there are known issues that would make this significantly problematic. This timing means that the new major version will have had its first bugfix release for a few weeks, giving time for evaluation; plus it has the advantage of being easy to remember. :)
> 
> Setuptools has deprecated 'setup.py install', which is currently the default installation method used by the python portgroup. It still works fine for now, but at some unspecified point in the future it will be going away, so all ports using the portgroup need to start being migrated to use the new PEP 517 style builds. This is done by setting 'python.pep517 yes' in the Portfile. That option is only supported with Python 3.6 and newer, so ports that still support older pythons will need to set it conditionally based on the python version.
> 
> Setting python.pep517 will add dependencies on an appropriate build front-end automatically, but each port will need to specify its dependencies for the back-end used by the project being built. Most will use setuptools, but others may use different back-ends such as flit or poetry.
> 
> Unfortunately, setuptools alone is not sufficient to do a pep517 build, and any ports that use setuptools as their pep517 back-end will need to additionally depend on pyXY-wheel. You also can't just build with distutils in a PEP 517 world (and distutils will also be disappearing from the stdlib in a future Python release.) So anything currently relying on distutils (i.e. no dependencies but pythonXY) will need to add dependencies on setuptools and wheel.
> 
> - Josh
> 
> [1] https://www.python.org/dev/peps/pep-0602/



More information about the macports-dev mailing list