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 <[email protected]> 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/
