From 958a2cb0d1b5e47fe2010dc4e4ac8a3ac5f36bac Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 27 Nov 2020 15:51:18 +0000 Subject: [PATCH 01/10] Add requirements/ dir ... containing all top-level (*.in) and concrete requirements.txt, the latter parametrized by python version. We have a bunch of dependencies that are only needed on specific python versions (e.g. backports like dataclasses, importlib_resources, etc). We use conditional environment markers for those in the top-level requirements.in files. pip-compile does not yet support generating a combined requirements.txt file where differences across python versions/platforms/archs are reconciled using environmet markers: https://github.com/jazzband/pip-tools/issues/826 They currently recommend running pip-compile on each targeted python environment generating as many concrete requirements.txt files https://github.com/jazzband/pip-tools/pull/651 So this is what I have done here. --- dev-requirements.in | 11 -------- requirements/dev-requirements.in | 9 +++++++ requirements/install-requirements.in | 6 +++++ requirements/python3.6-requirements.txt | 34 +++++++++++++++++++++++++ requirements/python3.7-requirements.txt | 33 ++++++++++++++++++++++++ requirements/python3.8-requirements.txt | 31 ++++++++++++++++++++++ requirements/python3.9-requirements.txt | 25 ++++++++++++++++++ 7 files changed, 138 insertions(+), 11 deletions(-) delete mode 100644 dev-requirements.in create mode 100644 requirements/dev-requirements.in create mode 100644 requirements/install-requirements.in create mode 100644 requirements/python3.6-requirements.txt create mode 100644 requirements/python3.7-requirements.txt create mode 100644 requirements/python3.8-requirements.txt create mode 100644 requirements/python3.9-requirements.txt diff --git a/dev-requirements.in b/dev-requirements.in deleted file mode 100644 index fd92443..0000000 --- a/dev-requirements.in +++ /dev/null @@ -1,11 +0,0 @@ -# This file only declares the top-level development requirements. -# Run `pip-compile --upgrade dev-requirements.in` to generate the dev-requirements.txt -# file, which is used to set up the CI environment. -# The pip-compile script is part of the pip-tools package: -# https://github.com/jazzband/pip-tools - -black -pytest -# As of November 2020, pytype requires: Python <3.9, >=3.6 -# https://pypi.org/project/pytype/2020.11.23 -pytype; python_version < '3.9' diff --git a/requirements/dev-requirements.in b/requirements/dev-requirements.in new file mode 100644 index 0000000..84715fe --- /dev/null +++ b/requirements/dev-requirements.in @@ -0,0 +1,9 @@ +# This file only declares the top-level development requirements. +# Run `pip-compile-all.sh` to generate the concrete py3*-requirements.txt +# files that are used to set up the tox and CI environments. + +black +pytest +# As of November 2020, pytype requires: Python <3.9, >=3.6 +# https://pypi.org/project/pytype/2020.11.23 +pytype; python_version < '3.9' diff --git a/requirements/install-requirements.in b/requirements/install-requirements.in new file mode 100644 index 0000000..c263826 --- /dev/null +++ b/requirements/install-requirements.in @@ -0,0 +1,6 @@ +# Only list here top-level runtime dependencies. +# Run `pip-compile-all.sh` to generate the concrete py3*-requirements.txt +# files that are used to set up the tox and CI environments. +dataclasses>=0.7; python_version < '3.7' +lxml>=4.0 +skia-pathops>=0.4.1 diff --git a/requirements/python3.6-requirements.txt b/requirements/python3.6-requirements.txt new file mode 100644 index 0000000..0f15caa --- /dev/null +++ b/requirements/python3.6-requirements.txt @@ -0,0 +1,34 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file=requirements/python3.6-requirements.txt requirements/dev-requirements.in requirements/install-requirements.in +# +appdirs==1.4.4 # via black +attrs==20.3.0 # via pytest, pytype +black==20.8b1 # via -r requirements/dev-requirements.in +click==7.1.2 # via black +dataclasses==0.8 ; python_version < "3.7" # via -r requirements/install-requirements.in, black +decorator==4.4.2 # via networkx +importlab==0.5.1 # via pytype +importlib-metadata==3.1.0 # via pluggy, pytest +iniconfig==1.1.1 # via pytest +lxml==4.6.2 # via -r requirements/install-requirements.in +mypy-extensions==0.4.3 # via black +networkx==2.5 # via importlab +ninja==1.10.0.post2 # via pytype +packaging==20.4 # via pytest +pathspec==0.8.1 # via black +pluggy==0.13.1 # via pytest +py==1.9.0 # via pytest +pyparsing==2.4.7 # via packaging +pytest==6.1.2 # via -r requirements/dev-requirements.in +pytype==2020.11.23 ; python_version < "3.9" # via -r requirements/dev-requirements.in +pyyaml==5.3.1 # via pytype +regex==2020.11.13 # via black +six==1.15.0 # via importlab, packaging, pytype +skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in +toml==0.10.2 # via black, pytest +typed-ast==1.4.1 # via black, pytype +typing-extensions==3.7.4.3 # via black +zipp==3.4.0 # via importlib-metadata diff --git a/requirements/python3.7-requirements.txt b/requirements/python3.7-requirements.txt new file mode 100644 index 0000000..17c1989 --- /dev/null +++ b/requirements/python3.7-requirements.txt @@ -0,0 +1,33 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file=requirements/python3.7-requirements.txt requirements/dev-requirements.in requirements/install-requirements.in +# +appdirs==1.4.4 # via black +attrs==20.3.0 # via pytest, pytype +black==20.8b1 # via -r requirements/dev-requirements.in +click==7.1.2 # via black +decorator==4.4.2 # via networkx +importlab==0.5.1 # via pytype +importlib-metadata==3.1.0 # via pluggy, pytest +iniconfig==1.1.1 # via pytest +lxml==4.6.2 # via -r requirements/install-requirements.in +mypy-extensions==0.4.3 # via black +networkx==2.5 # via importlab +ninja==1.10.0.post2 # via pytype +packaging==20.4 # via pytest +pathspec==0.8.1 # via black +pluggy==0.13.1 # via pytest +py==1.9.0 # via pytest +pyparsing==2.4.7 # via packaging +pytest==6.1.2 # via -r requirements/dev-requirements.in +pytype==2020.11.23 ; python_version < "3.9" # via -r requirements/dev-requirements.in +pyyaml==5.3.1 # via pytype +regex==2020.11.13 # via black +six==1.15.0 # via importlab, packaging, pytype +skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in +toml==0.10.2 # via black, pytest +typed-ast==1.4.1 # via black, pytype +typing-extensions==3.7.4.3 # via black +zipp==3.4.0 # via importlib-metadata diff --git a/requirements/python3.8-requirements.txt b/requirements/python3.8-requirements.txt new file mode 100644 index 0000000..ca0381e --- /dev/null +++ b/requirements/python3.8-requirements.txt @@ -0,0 +1,31 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file=requirements/python3.8-requirements.txt requirements/dev-requirements.in requirements/install-requirements.in +# +appdirs==1.4.4 # via black +attrs==20.3.0 # via pytest, pytype +black==20.8b1 # via -r requirements/dev-requirements.in +click==7.1.2 # via black +decorator==4.4.2 # via networkx +importlab==0.5.1 # via pytype +iniconfig==1.1.1 # via pytest +lxml==4.6.2 # via -r requirements/install-requirements.in +mypy-extensions==0.4.3 # via black +networkx==2.5 # via importlab +ninja==1.10.0.post2 # via pytype +packaging==20.4 # via pytest +pathspec==0.8.1 # via black +pluggy==0.13.1 # via pytest +py==1.9.0 # via pytest +pyparsing==2.4.7 # via packaging +pytest==6.1.2 # via -r requirements/dev-requirements.in +pytype==2020.11.23 ; python_version < "3.9" # via -r requirements/dev-requirements.in +pyyaml==5.3.1 # via pytype +regex==2020.11.13 # via black +six==1.15.0 # via importlab, packaging, pytype +skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in +toml==0.10.2 # via black, pytest +typed-ast==1.4.1 # via black, pytype +typing-extensions==3.7.4.3 # via black diff --git a/requirements/python3.9-requirements.txt b/requirements/python3.9-requirements.txt new file mode 100644 index 0000000..4a44d4a --- /dev/null +++ b/requirements/python3.9-requirements.txt @@ -0,0 +1,25 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file=requirements/python3.9-requirements.txt requirements/dev-requirements.in requirements/install-requirements.in +# +appdirs==1.4.4 # via black +attrs==20.3.0 # via pytest +black==20.8b1 # via -r requirements/dev-requirements.in +click==7.1.2 # via black +iniconfig==1.1.1 # via pytest +lxml==4.6.2 # via -r requirements/install-requirements.in +mypy-extensions==0.4.3 # via black +packaging==20.4 # via pytest +pathspec==0.8.1 # via black +pluggy==0.13.1 # via pytest +py==1.9.0 # via pytest +pyparsing==2.4.7 # via packaging +pytest==6.1.2 # via -r requirements/dev-requirements.in +regex==2020.11.13 # via black +six==1.15.0 # via packaging +skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in +toml==0.10.2 # via black, pytest +typed-ast==1.4.1 # via black +typing-extensions==3.7.4.3 # via black From a972b7d43fada609509cae402c5b3769d9aedc7d Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 27 Nov 2020 18:11:45 +0000 Subject: [PATCH 02/10] setup.py: read install_requires and extras_require from external requirements.in files pip-compile setup.py doesn't support environment markers ('; python_version < 3.7'), whereas it does when compiling from requirements.in files. So we read top-level dependencies from external *.in files and stick them in the setup.py install_requires and extras_require keywords. The 'dev' extra is new. One can now do `pip install -e .[dev]` and have all the development requirements installed alongside the current module. This is handy for developers bootstrapping a new venv to work on. It's a common practice among python developers. --- setup.py | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index 135f485..d0dbd78 100644 --- a/setup.py +++ b/setup.py @@ -12,11 +12,36 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Just a toy, enough setuptools to be able to install. -""" from setuptools import setup, find_packages +import os.path -setup( + +def readlines(filename): + # Return a file's list of lines excluding # comments + lines = [] + with open(filename, "r") as fp: + for line in fp: + line, _, _ = line.partition("#") + line = line.strip() + if not line: + continue + lines.append(line) + return lines + + +# Store top-level depedencies in external requirements.in files, so that +# pip-compile can use them to compile requirements.txt files with full +# dependency graph exploded and all versions pinned (for reproducible tests). +# pip-compile support for setup.py is quite limited: it ignores extras_require, +# as well as environment markers from install_requires: +# https://github.com/jazzband/pip-tools/issues/625 +# https://github.com/jazzband/pip-tools/issues/908 +# https://github.com/jazzband/pip-tools/issues/1139 +install_deps = readlines(os.path.join("requirements", "install-requirements.in")) +develop_deps = readlines(os.path.join("requirements", "dev-requirements.in")) + + +setup_args = dict( name="picosvg", use_scm_version={"write_to": "src/picosvg/_version.py"}, package_dir={'': 'src'}, @@ -26,13 +51,11 @@ 'picosvg=picosvg.picosvg:main', ], }, - setup_requires=["setuptools_scm"], - install_requires=[ - "dataclasses>=0.7; python_version < '3.7'", - "lxml>=4.0", - "skia-pathops>=0.4.1", - ], + install_requires=install_deps, + extras_require={ + "dev": develop_deps, + }, python_requires=">=3.6", # this is for type checker to use our inline type hints: @@ -47,3 +70,7 @@ "meant for use playing with COLR fonts" ), ) + + +if __name__ == "__main__": + setup(**setup_args) From 96f93298d40b9d3f39dbc95124686597ddeb62df Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 27 Nov 2020 18:14:02 +0000 Subject: [PATCH 03/10] tox.ini: install python-specific requirements.txt --- tox.ini | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tox.ini b/tox.ini index 259abd0..3d733fe 100644 --- a/tox.ini +++ b/tox.ini @@ -6,8 +6,9 @@ ; # Only runs the linter checks ; $ tox -e py38 ; # Runs all tests against python3.8 only -; $ tox -e py -; # Runs tests against the python interpreter where tox itself was installed +; $ export TOXENV=py39 +; $ tox +; # If present use $TOXENV environment variable envlist = lint, py3{6,7,8,9} ; if any of the requested python interpreters is unavailable (e.g. on the local dev @@ -15,23 +16,24 @@ envlist = lint, py3{6,7,8,9} skip_missing_interpreters = true [testenv] +description = Run pytest against the specified python version +; install pinned dependencies specific for each python version: e.g. if tox env +; is named `py39`, it will install from `python3.9-requirements.txt` file, etc. deps = - -r dev-requirements.txt - -r requirements.txt + -r requirements/{basepython}-requirements.txt ; downloads the latest pip, setuptools and wheel when creating the venv download = true ; any arguments passed to tox command line after the '--' separator are passed through -; to pytest: e.g. `tox -e py -- -vv --lf -x` +; to pytest: e.g. `tox -e py39 -- -vv --lf -x` commands = pytest {posargs} [testenv:lint] -; no need to install current package for static linter, formatter, typechecker, etc. +description = Check python style and typing annotation +; no need to install current package for static analysis tool skip_install = true ; use the latest python that pytype supports basepython = python3.8 -deps = - -r dev-requirements.txt commands = black --check --diff src tests pytype From dbc6dabf8bf17fae982a57097d7415c6142a9b4d Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 27 Nov 2020 18:16:14 +0000 Subject: [PATCH 04/10] add tox command to update all py*-requirements.txt files This is handy when any top-level deps change. The shell script is just a shorthand for the longish tox command --- requirements/pip-compile-all.sh | 5 +++++ tox.ini | 10 ++++++++++ 2 files changed, 15 insertions(+) create mode 100755 requirements/pip-compile-all.sh diff --git a/requirements/pip-compile-all.sh b/requirements/pip-compile-all.sh new file mode 100755 index 0000000..39ba146 --- /dev/null +++ b/requirements/pip-compile-all.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# Run pip-compile to freeze all py3*-requirements.txt files. +# You should run this every time any top-level requirements in either +# install-requirements.in or dev-requirements.in are added, removed or changed. +tox --parallel -e 'py3{6,7,8,9}-requirements' diff --git a/tox.ini b/tox.ini index 3d733fe..dfab86a 100644 --- a/tox.ini +++ b/tox.ini @@ -37,3 +37,13 @@ basepython = python3.8 commands = black --check --diff src tests pytype + +; Re-run this every time top-level *-requirements.in change +[testenv:py3{6,7,8,9}-requirements] +description = Update pinned requirements.txt files +skip_install = true +deps = pip-tools +commands = + pip-compile --upgrade -o requirements/{basepython}-requirements.txt \ + requirements/install-requirements.in \ + requirements/dev-requirements.in From 989c1ee41a54db322b28e4781116b56478e00ec8 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 27 Nov 2020 18:19:37 +0000 Subject: [PATCH 05/10] tox.ini: usedevelop=true if tox env name contains '-dev' particle tox -e py39-dev will install in editable mode (for when one is in a rush). One can also use this as a way to quickly bootstrap a development virtual environment. E.g. after running the above command, a new venv is created in .tox/py39-dev with all the pinned requirements installed and the current module installed in editable mode, ready for editing source files and running directly the pytest command therein --- tox.ini | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tox.ini b/tox.ini index dfab86a..19d2cc1 100644 --- a/tox.ini +++ b/tox.ini @@ -17,6 +17,11 @@ skip_missing_interpreters = true [testenv] description = Run pytest against the specified python version +; if the tox environment name contains `dev` (e.g. `py39-dev`), pip install the +; current package in editable mode (-e .) +usedevelop = + dev: true + !dev: false ; install pinned dependencies specific for each python version: e.g. if tox env ; is named `py39`, it will install from `python3.9-requirements.txt` file, etc. deps = From 79ffc42408df68df9da1fe0a1632733b263d9baf Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 27 Nov 2020 18:22:28 +0000 Subject: [PATCH 06/10] ci: export TOXENV variable to select current GH python The generic invocation 'tox -e py' does not work any more, because we now install dependencies using python-version-specific requirements.txt files and we need to know the exact python major.minor version. Thus we set TOXENV environment variable such that invoking 'tox' without additional -e options will run only the specified python version. --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 35b7303..ea3b620 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,8 +35,12 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install tox run: pip install tox + - name: Set TOXENV for current python + run: | + TOXENV=$(python -c "import sys; print(f'py{sys.version_info.major}{sys.version_info.minor}')") + echo "TOXENV=$TOXENV" >> "$GITHUB_ENV" - name: Run the tests - run: tox -e py + run: tox deploy: # only run if the commit is tagged... if: startsWith(github.ref, 'refs/tags/v') From f0f97c3730952852554f3e34244d8da9778a9ee7 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Tue, 1 Dec 2020 15:58:57 +0000 Subject: [PATCH 07/10] read supported pythons from tox.ini envlist Using tox -l command to list them, so we have a single source of truth for what are the versions that we support. And we only need to change one file when, e.g., python3.10 is out. --- requirements/pip-compile-all.sh | 58 ++++++++++++++++++++++++++++++--- tox.ini | 10 ------ 2 files changed, 54 insertions(+), 14 deletions(-) diff --git a/requirements/pip-compile-all.sh b/requirements/pip-compile-all.sh index 39ba146..fb45fef 100755 --- a/requirements/pip-compile-all.sh +++ b/requirements/pip-compile-all.sh @@ -1,5 +1,55 @@ -#!/bin/sh -# Run pip-compile to freeze all py3*-requirements.txt files. -# You should run this every time any top-level requirements in either +#!/bin/bash +# Runs pip-compile to freeze requirements.txt for all supported pythons +# that are listed in the tox.ini default envlist. +# It is recommended to run this every time any top-level requirements in either # install-requirements.in or dev-requirements.in are added, removed or changed. -tox --parallel -e 'py3{6,7,8,9}-requirements' +# The script requires that all the supported python3.X binaries are installed +# locally and available on $PATH. +# It also requires that the venv module is present in all of them, in order to +# create the temporary virtual environment where to install pip-compile. +# On most python distributions venv is part of the standard library, however on +# some Linux distros (e.g. Debian) it needs to be installed separately. + +set -e + +SRCDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1; pwd -P)" +TOXINI="$(dirname "${SRCDIR}")/tox.ini" +TMPDIR="$(mktemp -d)" + +function compile_requirements { + local python_cmd=${1} + echo "Updating ${python_cmd}-requirements.txt" + + "${python_cmd}" -m venv "${TMPDIR}/${python_cmd}-venv" + + local venv_bin="${TMPDIR}/${python_cmd}-venv/bin" + local pip_cmd="${venv_bin}/pip" + "${pip_cmd}" install -qq pip-tools + + local pip_compile_cmd="${venv_bin}/pip-compile" + "${pip_compile_cmd}" -q --upgrade -o "${SRCDIR}/${python_cmd}-requirements.txt" \ + "${SRCDIR}/install-requirements.in" \ + "${SRCDIR}/dev-requirements.in" +} + + +running=false +# `tox -l` prints all the environments listed in the tox.ini's default 'envlist' +for toxenv in $(tox -c "${TOXINI}" -l); do + if [[ $toxenv =~ py([0-9])([0-9]+) ]]; then + version_major=${BASH_REMATCH[1]} + version_minor=${BASH_REMATCH[2]} + compile_requirements "python${version_major}.${version_minor}" & + running=true + fi +done + +if $running; then + sleep 0.5 + echo "Please wait while all the requirements files are updated..." + wait + echo "Done!" +fi + +# clean up after us before leaving +rm -r "${TMPDIR}" diff --git a/tox.ini b/tox.ini index 19d2cc1..15de9fa 100644 --- a/tox.ini +++ b/tox.ini @@ -42,13 +42,3 @@ basepython = python3.8 commands = black --check --diff src tests pytype - -; Re-run this every time top-level *-requirements.in change -[testenv:py3{6,7,8,9}-requirements] -description = Update pinned requirements.txt files -skip_install = true -deps = pip-tools -commands = - pip-compile --upgrade -o requirements/{basepython}-requirements.txt \ - requirements/install-requirements.in \ - requirements/dev-requirements.in From 7ddf048110fdeabbc9f3386d9fa82509f0061bd5 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Tue, 1 Dec 2020 15:59:31 +0000 Subject: [PATCH 08/10] Add .tox/ workdir to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 578d881..193d375 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ build/ dist/ .eggs/ src/picosvg/_version.py +.tox/ From 170a772f2cf36044b32b1953a231e1c11e5653a7 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Tue, 1 Dec 2020 16:28:25 +0000 Subject: [PATCH 09/10] expect script to be run from root dir and use relative paths throughout otherwise pip-compile will write full absolute paths in the generated requirements.txt.. --- requirements/pip-compile-all.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/requirements/pip-compile-all.sh b/requirements/pip-compile-all.sh index fb45fef..74fd920 100755 --- a/requirements/pip-compile-all.sh +++ b/requirements/pip-compile-all.sh @@ -3,7 +3,8 @@ # that are listed in the tox.ini default envlist. # It is recommended to run this every time any top-level requirements in either # install-requirements.in or dev-requirements.in are added, removed or changed. -# The script requires that all the supported python3.X binaries are installed +# The script must be run from the same directory where tox.ini file is located, +# and it requires that all the supported python3.X binaries are installed # locally and available on $PATH. # It also requires that the venv module is present in all of them, in order to # create the temporary virtual environment where to install pip-compile. @@ -12,8 +13,6 @@ set -e -SRCDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1; pwd -P)" -TOXINI="$(dirname "${SRCDIR}")/tox.ini" TMPDIR="$(mktemp -d)" function compile_requirements { @@ -27,15 +26,17 @@ function compile_requirements { "${pip_cmd}" install -qq pip-tools local pip_compile_cmd="${venv_bin}/pip-compile" - "${pip_compile_cmd}" -q --upgrade -o "${SRCDIR}/${python_cmd}-requirements.txt" \ - "${SRCDIR}/install-requirements.in" \ - "${SRCDIR}/dev-requirements.in" + "${pip_compile_cmd}" -q --upgrade \ + -o requirements/${python_cmd}-requirements.txt \ + requirements/install-requirements.in \ + requirements/dev-requirements.in } +[ -f "tox.ini" ] || { echo "ERROR: tox.ini file not found" ; exit 1; } running=false # `tox -l` prints all the environments listed in the tox.ini's default 'envlist' -for toxenv in $(tox -c "${TOXINI}" -l); do +for toxenv in $(tox -l); do if [[ $toxenv =~ py([0-9])([0-9]+) ]]; then version_major=${BASH_REMATCH[1]} version_minor=${BASH_REMATCH[2]} From 85e1a698e0def1d4f2bd352899e30da357620721 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Tue, 1 Dec 2020 16:29:41 +0000 Subject: [PATCH 10/10] run pip-compile-all.sh to update requirements --- requirements/python3.6-requirements.txt | 4 ++-- requirements/python3.7-requirements.txt | 4 ++-- requirements/python3.8-requirements.txt | 4 ++-- requirements/python3.9-requirements.txt | 3 +-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/requirements/python3.6-requirements.txt b/requirements/python3.6-requirements.txt index 0f15caa..fbb039a 100644 --- a/requirements/python3.6-requirements.txt +++ b/requirements/python3.6-requirements.txt @@ -17,7 +17,7 @@ lxml==4.6.2 # via -r requirements/install-requirements.in mypy-extensions==0.4.3 # via black networkx==2.5 # via importlab ninja==1.10.0.post2 # via pytype -packaging==20.4 # via pytest +packaging==20.7 # via pytest pathspec==0.8.1 # via black pluggy==0.13.1 # via pytest py==1.9.0 # via pytest @@ -26,7 +26,7 @@ pytest==6.1.2 # via -r requirements/dev-requirements.in pytype==2020.11.23 ; python_version < "3.9" # via -r requirements/dev-requirements.in pyyaml==5.3.1 # via pytype regex==2020.11.13 # via black -six==1.15.0 # via importlab, packaging, pytype +six==1.15.0 # via importlab, pytype skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in toml==0.10.2 # via black, pytest typed-ast==1.4.1 # via black, pytype diff --git a/requirements/python3.7-requirements.txt b/requirements/python3.7-requirements.txt index 17c1989..cf5c008 100644 --- a/requirements/python3.7-requirements.txt +++ b/requirements/python3.7-requirements.txt @@ -16,7 +16,7 @@ lxml==4.6.2 # via -r requirements/install-requirements.in mypy-extensions==0.4.3 # via black networkx==2.5 # via importlab ninja==1.10.0.post2 # via pytype -packaging==20.4 # via pytest +packaging==20.7 # via pytest pathspec==0.8.1 # via black pluggy==0.13.1 # via pytest py==1.9.0 # via pytest @@ -25,7 +25,7 @@ pytest==6.1.2 # via -r requirements/dev-requirements.in pytype==2020.11.23 ; python_version < "3.9" # via -r requirements/dev-requirements.in pyyaml==5.3.1 # via pytype regex==2020.11.13 # via black -six==1.15.0 # via importlab, packaging, pytype +six==1.15.0 # via importlab, pytype skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in toml==0.10.2 # via black, pytest typed-ast==1.4.1 # via black, pytype diff --git a/requirements/python3.8-requirements.txt b/requirements/python3.8-requirements.txt index ca0381e..929c25d 100644 --- a/requirements/python3.8-requirements.txt +++ b/requirements/python3.8-requirements.txt @@ -15,7 +15,7 @@ lxml==4.6.2 # via -r requirements/install-requirements.in mypy-extensions==0.4.3 # via black networkx==2.5 # via importlab ninja==1.10.0.post2 # via pytype -packaging==20.4 # via pytest +packaging==20.7 # via pytest pathspec==0.8.1 # via black pluggy==0.13.1 # via pytest py==1.9.0 # via pytest @@ -24,7 +24,7 @@ pytest==6.1.2 # via -r requirements/dev-requirements.in pytype==2020.11.23 ; python_version < "3.9" # via -r requirements/dev-requirements.in pyyaml==5.3.1 # via pytype regex==2020.11.13 # via black -six==1.15.0 # via importlab, packaging, pytype +six==1.15.0 # via importlab, pytype skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in toml==0.10.2 # via black, pytest typed-ast==1.4.1 # via black, pytype diff --git a/requirements/python3.9-requirements.txt b/requirements/python3.9-requirements.txt index 4a44d4a..f88ef1d 100644 --- a/requirements/python3.9-requirements.txt +++ b/requirements/python3.9-requirements.txt @@ -11,14 +11,13 @@ click==7.1.2 # via black iniconfig==1.1.1 # via pytest lxml==4.6.2 # via -r requirements/install-requirements.in mypy-extensions==0.4.3 # via black -packaging==20.4 # via pytest +packaging==20.7 # via pytest pathspec==0.8.1 # via black pluggy==0.13.1 # via pytest py==1.9.0 # via pytest pyparsing==2.4.7 # via packaging pytest==6.1.2 # via -r requirements/dev-requirements.in regex==2020.11.13 # via black -six==1.15.0 # via packaging skia-pathops==0.5.1.post1 # via -r requirements/install-requirements.in toml==0.10.2 # via black, pytest typed-ast==1.4.1 # via black