chore: Python 3.9.0 final, Python 3.7 constraints (#440)
* chore: update to 3.9.0 final * chore: add python 3.7 constraints * chore: missed one image due to travis-ci fail Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com> Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
This commit is contained in:
co-authored by
Matthieu Darbois
parent
015f382418
commit
9fbe8186f9
@@ -19,7 +19,7 @@ subprocess.check_call([
|
|||||||
'--upgrade',
|
'--upgrade',
|
||||||
'cibuildwheel/resources/constraints.in',
|
'cibuildwheel/resources/constraints.in',
|
||||||
])
|
])
|
||||||
for python_version in ['27', '35', '36']:
|
for python_version in ['27', '35', '36', '37']:
|
||||||
subprocess.check_call([
|
subprocess.check_call([
|
||||||
f'./env{python_version}/bin/pip-compile',
|
f'./env{python_version}/bin/pip-compile',
|
||||||
'--allow-unsafe',
|
'--allow-unsafe',
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi
|
|||||||
PythonConfiguration(version='3.6', identifier='cp36-macosx_x86_64', url='https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg'),
|
PythonConfiguration(version='3.6', identifier='cp36-macosx_x86_64', url='https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg'),
|
||||||
PythonConfiguration(version='3.7', identifier='cp37-macosx_x86_64', url='https://www.python.org/ftp/python/3.7.8/python-3.7.8-macosx10.9.pkg'),
|
PythonConfiguration(version='3.7', identifier='cp37-macosx_x86_64', url='https://www.python.org/ftp/python/3.7.8/python-3.7.8-macosx10.9.pkg'),
|
||||||
PythonConfiguration(version='3.8', identifier='cp38-macosx_x86_64', url='https://www.python.org/ftp/python/3.8.4/python-3.8.4-macosx10.9.pkg'),
|
PythonConfiguration(version='3.8', identifier='cp38-macosx_x86_64', url='https://www.python.org/ftp/python/3.8.4/python-3.8.4-macosx10.9.pkg'),
|
||||||
PythonConfiguration(version='3.9', identifier='cp39-macosx_x86_64', url='https://www.python.org/ftp/python/3.9.0/python-3.9.0rc1-macosx10.9.pkg'),
|
PythonConfiguration(version='3.9', identifier='cp39-macosx_x86_64', url='https://www.python.org/ftp/python/3.9.0/python-3.9.0-macosx10.9.pkg'),
|
||||||
# PyPy
|
# PyPy
|
||||||
PythonConfiguration(version='2.7', identifier='pp27-macosx_x86_64', url='https://downloads.python.org/pypy/pypy2.7-v7.3.2-osx64.tar.bz2'),
|
PythonConfiguration(version='2.7', identifier='pp27-macosx_x86_64', url='https://downloads.python.org/pypy/pypy2.7-v7.3.2-osx64.tar.bz2'),
|
||||||
PythonConfiguration(version='3.6', identifier='pp36-macosx_x86_64', url='https://downloads.python.org/pypy/pypy3.6-v7.3.2-osx64.tar.bz2'),
|
PythonConfiguration(version='3.6', identifier='pp36-macosx_x86_64', url='https://downloads.python.org/pypy/pypy3.6-v7.3.2-osx64.tar.bz2'),
|
||||||
|
|||||||
@@ -10,17 +10,17 @@ contextlib2==0.6.0.post1 # via importlib-metadata, importlib-resources
|
|||||||
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.1 # via virtualenv
|
distlib==0.3.1 # via virtualenv
|
||||||
filelock==3.0.12 # via virtualenv
|
filelock==3.0.12 # via virtualenv
|
||||||
importlib-metadata==1.7.0 # via virtualenv
|
importlib-metadata==2.0.0 # via virtualenv
|
||||||
importlib-resources==3.0.0 # via virtualenv
|
importlib-resources==3.0.0 # via virtualenv
|
||||||
pathlib2==2.3.5 # via importlib-metadata, importlib-resources, virtualenv
|
pathlib2==2.3.5 # via importlib-metadata, importlib-resources, virtualenv
|
||||||
scandir==1.10.0 # via pathlib2
|
scandir==1.10.0 # via pathlib2
|
||||||
singledispatch==3.4.0.3 # via importlib-resources
|
singledispatch==3.4.0.3 # via importlib-resources
|
||||||
six==1.15.0 # via pathlib2, virtualenv
|
six==1.15.0 # via pathlib2, virtualenv
|
||||||
typing==3.7.4.3 # via importlib-resources
|
typing==3.7.4.3 # via importlib-resources
|
||||||
virtualenv==20.0.31 # via -r cibuildwheel/resources/constraints.in
|
virtualenv==20.0.33 # via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
||||||
zipp==1.2.0 # via importlib-metadata, importlib-resources
|
zipp==1.2.0 # via importlib-metadata, importlib-resources
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==20.2.2 # via -r cibuildwheel/resources/constraints.in
|
pip==20.2.3 # via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==44.1.1 # via -r cibuildwheel/resources/constraints.in
|
setuptools==44.1.1 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -8,13 +8,13 @@ appdirs==1.4.4 # via virtualenv
|
|||||||
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.1 # via virtualenv
|
distlib==0.3.1 # via virtualenv
|
||||||
filelock==3.0.12 # via virtualenv
|
filelock==3.0.12 # via virtualenv
|
||||||
importlib-metadata==1.7.0 # via virtualenv
|
importlib-metadata==2.0.0 # via virtualenv
|
||||||
importlib-resources==3.0.0 # via virtualenv
|
importlib-resources==3.0.0 # via virtualenv
|
||||||
six==1.15.0 # via virtualenv
|
six==1.15.0 # via virtualenv
|
||||||
virtualenv==20.0.31 # via -r cibuildwheel/resources/constraints.in
|
virtualenv==20.0.33 # via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
||||||
zipp==1.2.0 # via importlib-metadata, importlib-resources
|
zipp==1.2.0 # via importlib-metadata, importlib-resources
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==20.2.2 # via -r cibuildwheel/resources/constraints.in
|
pip==20.2.3 # via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -8,13 +8,13 @@ appdirs==1.4.4 # via virtualenv
|
|||||||
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.1 # via virtualenv
|
distlib==0.3.1 # via virtualenv
|
||||||
filelock==3.0.12 # via virtualenv
|
filelock==3.0.12 # via virtualenv
|
||||||
importlib-metadata==1.7.0 # via virtualenv
|
importlib-metadata==2.0.0 # via virtualenv
|
||||||
importlib-resources==3.0.0 # via virtualenv
|
importlib-resources==3.0.0 # via virtualenv
|
||||||
six==1.15.0 # via virtualenv
|
six==1.15.0 # via virtualenv
|
||||||
virtualenv==20.0.31 # via -r cibuildwheel/resources/constraints.in
|
virtualenv==20.0.33 # via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
||||||
zipp==3.1.0 # via importlib-metadata, importlib-resources
|
zipp==3.3.0 # via importlib-metadata, importlib-resources
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==20.2.2 # via -r cibuildwheel/resources/constraints.in
|
pip==20.2.3 # via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# bin/update_constraints.py
|
||||||
|
#
|
||||||
|
appdirs==1.4.4 # via virtualenv
|
||||||
|
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
distlib==0.3.1 # via virtualenv
|
||||||
|
filelock==3.0.12 # via virtualenv
|
||||||
|
importlib-metadata==2.0.0 # via virtualenv
|
||||||
|
six==1.15.0 # via virtualenv
|
||||||
|
virtualenv==20.0.33 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
||||||
|
zipp==3.3.0 # via importlib-metadata
|
||||||
|
|
||||||
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
|
pip==20.2.3 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
||||||
@@ -8,12 +8,10 @@ appdirs==1.4.4 # via virtualenv
|
|||||||
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.3.1 # via virtualenv
|
distlib==0.3.1 # via virtualenv
|
||||||
filelock==3.0.12 # via virtualenv
|
filelock==3.0.12 # via virtualenv
|
||||||
importlib-metadata==1.7.0 # via virtualenv
|
|
||||||
six==1.15.0 # via virtualenv
|
six==1.15.0 # via virtualenv
|
||||||
virtualenv==20.0.31 # via -r cibuildwheel/resources/constraints.in
|
virtualenv==20.0.33 # via -r cibuildwheel/resources/constraints.in
|
||||||
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
wheel==0.35.1 # via -r cibuildwheel/resources/constraints.in, delocate
|
||||||
zipp==3.1.0 # via importlib-metadata
|
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
pip==20.2.2 # via -r cibuildwheel/resources/constraints.in
|
pip==20.2.3 # via -r cibuildwheel/resources/constraints.in
|
||||||
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
setuptools==50.3.0 # via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -1,22 +1,21 @@
|
|||||||
[x86_64]
|
[x86_64]
|
||||||
manylinux1 = quay.io/pypa/manylinux1_x86_64:2020-09-26-9f151ab
|
manylinux1 = quay.io/pypa/manylinux1_x86_64:2020-10-06-c4a4a7c
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2020-09-26-58cbbcd
|
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2020-10-06-786a931
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2020-09-26-7f7a14f
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2020-10-06-b2ca7a1
|
||||||
|
|
||||||
[i686]
|
[i686]
|
||||||
manylinux1 = quay.io/pypa/manylinux1_i686:2020-09-26-9f151ab
|
manylinux1 = quay.io/pypa/manylinux1_i686:2020-10-06-c4a4a7c
|
||||||
manylinux2010 = quay.io/pypa/manylinux2010_i686:2020-09-26-58cbbcd
|
manylinux2010 = quay.io/pypa/manylinux2010_i686:2020-10-06-786a931
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2020-09-26-7f7a14f
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2020-10-06-b2ca7a1
|
||||||
|
|
||||||
[pypy_x86_64]
|
[pypy_x86_64]
|
||||||
manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-09-26-8f210b5
|
manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-09-26-8f210b5
|
||||||
|
|
||||||
[aarch64]
|
[aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2020-09-26-7f7a14f
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2020-10-06-b2ca7a1
|
||||||
|
|
||||||
[ppc64le]
|
[ppc64le]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2020-09-26-7f7a14f
|
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2020-10-06-b2ca7a1
|
||||||
|
|
||||||
[s390x]
|
[s390x]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2020-09-26-7f7a14f
|
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2020-10-06-b2ca7a1
|
||||||
|
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi
|
|||||||
PythonConfiguration(version='3.7.8', arch='64', identifier='cp37-win_amd64', url=None),
|
PythonConfiguration(version='3.7.8', arch='64', identifier='cp37-win_amd64', url=None),
|
||||||
PythonConfiguration(version='3.8.4', arch='32', identifier='cp38-win32', url=None),
|
PythonConfiguration(version='3.8.4', arch='32', identifier='cp38-win32', url=None),
|
||||||
PythonConfiguration(version='3.8.4', arch='64', identifier='cp38-win_amd64', url=None),
|
PythonConfiguration(version='3.8.4', arch='64', identifier='cp38-win_amd64', url=None),
|
||||||
PythonConfiguration(version='3.9.0-rc1', arch='32', identifier='cp39-win32', url=None),
|
PythonConfiguration(version='3.9.0', arch='32', identifier='cp39-win32', url=None),
|
||||||
PythonConfiguration(version='3.9.0-rc1', arch='64', identifier='cp39-win_amd64', url=None),
|
PythonConfiguration(version='3.9.0', arch='64', identifier='cp39-win_amd64', url=None),
|
||||||
# PyPy
|
# PyPy
|
||||||
PythonConfiguration(version='2.7', arch='32', identifier='pp27-win32', url='https://downloads.python.org/pypy/pypy2.7-v7.3.2-win32.zip'),
|
PythonConfiguration(version='2.7', arch='32', identifier='pp27-win32', url='https://downloads.python.org/pypy/pypy2.7-v7.3.2-win32.zip'),
|
||||||
PythonConfiguration(version='3.6', arch='32', identifier='pp36-win32', url='https://downloads.python.org/pypy/pypy3.6-v7.3.2-win32.zip'),
|
PythonConfiguration(version='3.6', arch='32', identifier='pp36-win32', url='https://downloads.python.org/pypy/pypy3.6-v7.3.2-win32.zip'),
|
||||||
|
|||||||
@@ -38,29 +38,69 @@ cibuildwheel's _minimal_ example configs can be tested on a simple project on ci
|
|||||||
|
|
||||||
To test minimal configs, make sure you have a clean git repo, then run the script:
|
To test minimal configs, make sure you have a clean git repo, then run the script:
|
||||||
|
|
||||||
|
```bash
|
||||||
bin/run_example_ci_configs.py
|
bin/run_example_ci_configs.py
|
||||||
|
```
|
||||||
|
|
||||||
The script will create an isolated 'orphan' commit containing all the minimal config CI files, and a simple C extension project, and push that to a branch on the `origin` repo. The project's CI is already set up to run on branch push, so will begin testing.
|
The script will create an isolated 'orphan' commit containing all the minimal config CI files, and a simple C extension project, and push that to a branch on the `origin` repo. The project's CI is already set up to run on branch push, so will begin testing.
|
||||||
|
|
||||||
The script then outputs a Markdown table that can be copy/pasted into a PR to monitor and record the test.
|
The script then outputs a Markdown table that can be copy/pasted into a PR to monitor and record the test.
|
||||||
|
|
||||||
|
## Preparing environments
|
||||||
|
|
||||||
|
The dependency update script in the next section requires multiple python versions installed. One way to do this is to use `pyenv`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pyenv install 2.7.18
|
||||||
|
pyenv install 3.5.9
|
||||||
|
pyenv install 3.6.11
|
||||||
|
pyenv install 3.7.8
|
||||||
|
# Optionally add 3.8 and make it the local version;
|
||||||
|
# otherwise assuming 3.8+ already is your current python version
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, you need to make the required virtual environments:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$(pyenv prefix 2.7.18)/bin/python -m pip install virtualenv
|
||||||
|
$(pyenv prefix 2.7.18)/bin/python -m virtualenv env27
|
||||||
|
$(pyenv prefix 3.5.9)/bin/python -m venv env35
|
||||||
|
$(pyenv prefix 3.6.11)/bin/python -m venv env36
|
||||||
|
$(pyenv prefix 3.7.8)/bin/python -m venv env37
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- Note for fish users: use zsh/bash for these lines for now, there's not a nice one-line fish replacement -->
|
||||||
|
|
||||||
|
And, you need to install the requirements into each environment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
for f in env*/bin/pip; do $f install pip-tools; done
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Making a release
|
## Making a release
|
||||||
|
|
||||||
Before making a release, ensure pinned dependencies are up-to-date. Run the script:
|
Before making a release, ensure pinned dependencies are up-to-date. Run the script:
|
||||||
|
|
||||||
|
```bash
|
||||||
bin/make_dependency_update_pr.py
|
bin/make_dependency_update_pr.py
|
||||||
|
```
|
||||||
|
|
||||||
If updates are needed, this will push a PR with those updates for the CI to test. Once green, merge this PR.
|
If updates are needed, this will push a PR with those updates for the CI to test. Once green, merge this PR.
|
||||||
|
|
||||||
Then, increment the project version number using:
|
Then, increment the project version number using:
|
||||||
|
|
||||||
|
```bash
|
||||||
bin/bump_version.py
|
bin/bump_version.py
|
||||||
|
```
|
||||||
|
|
||||||
You'll be prompted to enter the new version number. Update the changelog when prompted. The script will create a 'bump version' commit and version tag.
|
You'll be prompted to enter the new version number. Update the changelog when prompted. The script will create a 'bump version' commit and version tag.
|
||||||
|
|
||||||
Finally, cut the release and upload to PyPI/Github.
|
Finally, cut the release and upload to PyPI/Github.
|
||||||
|
|
||||||
|
```bash
|
||||||
rm -rf dist
|
rm -rf dist
|
||||||
python setup.py sdist bdist_wheel
|
python setup.py sdist bdist_wheel
|
||||||
twine upload dist/*
|
twine upload dist/*
|
||||||
git push && git push --tags
|
git push && git push --tags
|
||||||
|
```
|
||||||
|
|||||||
@@ -66,6 +66,9 @@ def test_pinned_versions(tmp_path, python_version):
|
|||||||
elif python_version == '3.6':
|
elif python_version == '3.6':
|
||||||
constraint_filename = 'constraints-python36.txt'
|
constraint_filename = 'constraints-python36.txt'
|
||||||
build_pattern = '[cp]p36-*'
|
build_pattern = '[cp]p36-*'
|
||||||
|
elif python_version == '3.7':
|
||||||
|
constraint_filename = 'constraints-python37.txt'
|
||||||
|
build_pattern = '[cp]p37-*'
|
||||||
else:
|
else:
|
||||||
constraint_filename = 'constraints.txt'
|
constraint_filename = 'constraints.txt'
|
||||||
build_pattern = '[cp]p38-*'
|
build_pattern = '[cp]p38-*'
|
||||||
|
|||||||
Reference in New Issue
Block a user