Python 2.7 has reached its end-of-life. Currently conda-build still supports installation into a Python 2.7 environment. In addition,the units tests are run against Python 2.7. I am proposing to drop support for installing conda-build into a Python 2.7 environment. It would still be possible to build Python 2.7 packages with future conda-build releases, but a Python 3 environment would be needed for installation.
At the same time it would be good to define the minimum Python 3 version. I am proposing that this minimum be Python 3.6 for the time being. Python 3.6 is proposed because:
The end result would be that future conda-build releases would require Python 3.6 or newer for installation. Again, building packages for older versions of Python, including 2.7, would still be supported. This change would only effect the environment where conda-build can be installed.
The benefits of dropping Python 2.7 and pre-3.6 version including the ability to simplify the source code using modern Python syntax a features. Additionally, the test matrix would be reduced allowing for quicker feedback from the CI on PRs.
What do others think?
This is a great idea, and totally reasonable for a build tool. It's worth looking at how well conda-build behaves in a non-base env (I think reasonably well).
Other packages have done a major version bump for dropping py2.7. Probably a good idea here. Are there other breaking changes that would be good to make with a major version bump?
This is a great idea, and totally reasonable for a build tool. It's worth looking at how well conda-build behaves in a non-base env (I think reasonably well).
My experience is that conda-build behaves well when installed into non-base environments provided you call it using conda-build .... conda build ... will try to use the version installed in the base environment.
Other packages have done a major version bump for dropping py2.7. Probably a good idea here. Are there other breaking changes that would be good to make with a major version bump?
Agreed, bumping the version to 4.0.0 is a good idea. I think there are a few un-used parameters in the conda_build.api function that could be removed with a major version bump. Making overlink checking on by default seems like another reasonable change.
Should we open a similar issue for conda as well?
Should we open a similar issue for conda as well?
For sure!
This sounds great! 馃挴馃槃
Given the favorable reaction to this proposal, I have created a 3.x branch for continued development of conda-build releases that support Python 2.7.
The master branch is now open to changes that do not support Python 2.7 or <3.6!
NEP 29 recommended dropping Python 3.5 support two months ago (2020-06-23).
Just to point this out: NEP 29 recommended dropping Python 3.6 support two months ago (2020-06-23).
We had a similar discussion about Python 3.6 in the conda-forge meeting recently.
One of the issues that came up is PyPy has not released a version with Python 3.7 yet. So dropping Python 3.7 would mean losing PyPy support, which we (conda-forge) decided we didn't want to do.
FWIW we have clarified the conda-forge policy regarding which Python versions are supported in the docs.
This isn't to say that conda or conda-build should or shouldn't follow this. Merely another data point to be aware of when considering Python 3.6 support.
Just to point this out: NEP 29 recommended dropping Python 3.6 support two months ago (2020-06-23).
Good catch, typo on my part I'll update the note with the date that was suggested for Python 3.5.
This proposal is the drop support for Python less than 3.6. Python 3.6 would still be supported. NEP 29 recommends dropping support for 3.6 in the PyData stack but I think it is worthwhile for conda-build to maintain compatibility for a bit longer.
Most helpful comment
Good catch, typo on my part I'll update the note with the date that was suggested for Python 3.5.
This proposal is the drop support for Python less than 3.6. Python 3.6 would still be supported. NEP 29 recommends dropping support for 3.6 in the PyData stack but I think it is worthwhile for conda-build to maintain compatibility for a bit longer.