From 7cae89e43a4773896a4353777208736f29c480bd Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 18:37:56 +0100 Subject: [PATCH 01/20] Add .editorconfig --- .editorconfig | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..cb83070 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,26 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[Makefile] +indent_size = 4 +indent_style = tab + +[*.robot] +indent_size = 4 +indent_style = tab + +[*.{py,pyi,rst,toml}] +indent_size = 4 + +[*.md] +trim_trailing_whitespace = false + +[*.{diff,patch}] +trim_trailing_whitespace = false From 6a12fd2f5b5fcd0941eb12bf4af1706f4cd8624f Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 18:38:41 +0100 Subject: [PATCH 02/20] Ignore IDE files --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 909093a..2c5ff7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ -*.pyc *.DS_Store *.egg-info +*.pyc +.idea +.python-version build dist From 070ea77cbf04300951db70342532ac44d0b554f5 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 18:38:50 +0100 Subject: [PATCH 03/20] Add poetry to makefile --- Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0583f1e..f5afbbe 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,14 @@ clean: find . -name '*.pyc' -exec rm \{\} \; deps: - pip install --upgrade pip build twine + @python -m pip install --upgrade \ + nox \ + nox-poetry \ + pip \ + poet-plugin \ + poetry \ + setuptools \ + wheel install: deps @# Install OpenFisca-Extension-Template for development. From a9c92ffe3d4189eb9c9b3abca46519b9a717b463 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 19:25:41 +0100 Subject: [PATCH 04/20] Add pyproject.toml file --- Makefile | 40 +++++++++---------- pyproject.toml | 23 +++++++++++ .../openfisca_extension_template}/__init__.py | 0 .../parameters/__init__.py | 0 .../local_town/child_allowance/amount.yaml | 0 .../local_town/child_allowance/index.yaml | 0 .../parameters/local_town/index.yaml | 0 .../variables/__init__.py | 0 .../variables}/local_benefit.py | 0 .../variables/local_benefit_test.yaml | 0 10 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 pyproject.toml rename {openfisca_extension_template => src/openfisca_extension_template}/__init__.py (100%) create mode 100644 src/openfisca_extension_template/parameters/__init__.py rename {openfisca_extension_template => src/openfisca_extension_template}/parameters/local_town/child_allowance/amount.yaml (100%) rename {openfisca_extension_template => src/openfisca_extension_template}/parameters/local_town/child_allowance/index.yaml (100%) rename {openfisca_extension_template => src/openfisca_extension_template}/parameters/local_town/index.yaml (100%) create mode 100644 src/openfisca_extension_template/variables/__init__.py rename {openfisca_extension_template => src/openfisca_extension_template/variables}/local_benefit.py (100%) rename openfisca_extension_template/tests/local_benefit.yaml => src/openfisca_extension_template/variables/local_benefit_test.yaml (100%) diff --git a/Makefile b/Makefile index f5afbbe..ac6b604 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,7 @@ -all: test +.DEFAULT_GOAL := test uninstall: - pip freeze | grep -v "^-e" | xargs pip uninstall -y - -clean: - rm -rf build dist - find . -name '*.pyc' -exec rm \{\} \; + @python -m pip freeze | grep -v "^-e" | xargs pip uninstall -y deps: @python -m pip install --upgrade \ @@ -18,26 +14,30 @@ deps: wheel install: deps - @# Install OpenFisca-Extension-Template for development. - @# `make install` installs the editable version of OpenFisca-Extension-Template. - @# This allows contributors to test as they code. - pip install --editable .[dev] --upgrade + @# Install OpenFisca-Extension-Template for development. `make install` + @# installs the editable version of OpenFisca-Extension-Template. This + @# allows contributors to test as they code. + @python -m pip install --editable .[dev] --upgrade + +compile: + @python -m compileall -q src + +clean: + @rm -rf build dist + @find . -name '*.pyc' -exec rm \{\} \; + +format: + @# Do not analyse .gitignored files. + @python -m poetry run autopep8 `git ls-files | grep "\.py$$"` build: clean deps @# Install OpenFisca-Extension-Template for deployment and publishing. @# `make build` allows us to be be sure tests are run against the packaged version @# of OpenFisca-Extension-Template, the same we put in the hands of users and reusers. - python -m build - pip uninstall --yes openfisca-extension-template - find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; - -check-syntax-errors: - python -m compileall -q . + @python -m build + @python -m pip uninstall --yes openfisca-extension-template + @find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; -format-style: - @# Do not analyse .gitignored files. - @# `make` needs `$$` to output `$`. Ref: http://stackoverflow.com/questions/2382764. - autopep8 `git ls-files | grep "\.py$$"` check-style: @# Do not analyse .gitignored files. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..0d10c81 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[tool.poetry] +name = "OpenFisca-Extension-Template" +version = "1.3.10" +description = "An extension adding new variables to a country package." +license = "AGPL-3.0-only" +authors = ["OpenFisca Team "] +maintainers = ["OpenFisca Team "] +readme = "README.md" +homepage = "https://openfisca.org" +repository = "https://github.com/openfisca/extension-template" +documentation = "https://openfisca.org/doc" +keywords = ["microsimulation", "tax", "benefit", "rac", "rules-as-code"] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: GNU Affero General Public License v3", + "Operating System :: POSIX", + "Programming Language :: Python", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Topic :: Scientific/Engineering :: Information Analysis", + ] +packages = [{include = "openfisca_extension_template", from = "src"}] diff --git a/openfisca_extension_template/__init__.py b/src/openfisca_extension_template/__init__.py similarity index 100% rename from openfisca_extension_template/__init__.py rename to src/openfisca_extension_template/__init__.py diff --git a/src/openfisca_extension_template/parameters/__init__.py b/src/openfisca_extension_template/parameters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/openfisca_extension_template/parameters/local_town/child_allowance/amount.yaml b/src/openfisca_extension_template/parameters/local_town/child_allowance/amount.yaml similarity index 100% rename from openfisca_extension_template/parameters/local_town/child_allowance/amount.yaml rename to src/openfisca_extension_template/parameters/local_town/child_allowance/amount.yaml diff --git a/openfisca_extension_template/parameters/local_town/child_allowance/index.yaml b/src/openfisca_extension_template/parameters/local_town/child_allowance/index.yaml similarity index 100% rename from openfisca_extension_template/parameters/local_town/child_allowance/index.yaml rename to src/openfisca_extension_template/parameters/local_town/child_allowance/index.yaml diff --git a/openfisca_extension_template/parameters/local_town/index.yaml b/src/openfisca_extension_template/parameters/local_town/index.yaml similarity index 100% rename from openfisca_extension_template/parameters/local_town/index.yaml rename to src/openfisca_extension_template/parameters/local_town/index.yaml diff --git a/src/openfisca_extension_template/variables/__init__.py b/src/openfisca_extension_template/variables/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/openfisca_extension_template/local_benefit.py b/src/openfisca_extension_template/variables/local_benefit.py similarity index 100% rename from openfisca_extension_template/local_benefit.py rename to src/openfisca_extension_template/variables/local_benefit.py diff --git a/openfisca_extension_template/tests/local_benefit.yaml b/src/openfisca_extension_template/variables/local_benefit_test.yaml similarity index 100% rename from openfisca_extension_template/tests/local_benefit.yaml rename to src/openfisca_extension_template/variables/local_benefit_test.yaml From aba5edbca83b23fd5dc0d6e38a5c987f6fc9c27d Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 19:28:21 +0100 Subject: [PATCH 05/20] Fix lint --- Makefile | 12 +++++------- .../parameters/__init__.py | 1 + .../variables/__init__.py | 1 + 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index ac6b604..67c3d0c 100644 --- a/Makefile +++ b/Makefile @@ -30,6 +30,11 @@ format: @# Do not analyse .gitignored files. @python -m poetry run autopep8 `git ls-files | grep "\.py$$"` +lint: + @# Do not analyse .gitignored files. + @python -m poetry run flake8 `git ls-files | grep "\.py$$"` + @python -m poetry run pylint `git ls-files | grep "\.py$$"` + build: clean deps @# Install OpenFisca-Extension-Template for deployment and publishing. @# `make build` allows us to be be sure tests are run against the packaged version @@ -38,12 +43,5 @@ build: clean deps @python -m pip uninstall --yes openfisca-extension-template @find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; - -check-style: - @# Do not analyse .gitignored files. - @# `make` needs `$$` to output `$`. Ref: http://stackoverflow.com/questions/2382764. - flake8 `git ls-files | grep "\.py$$"` - pylint `git ls-files | grep "\.py$$"` - test: clean check-syntax-errors check-style openfisca test openfisca_extension_template/tests --country-package openfisca_country_template --extensions openfisca_extension_template diff --git a/src/openfisca_extension_template/parameters/__init__.py b/src/openfisca_extension_template/parameters/__init__.py index e69de29..f60ef44 100644 --- a/src/openfisca_extension_template/parameters/__init__.py +++ b/src/openfisca_extension_template/parameters/__init__.py @@ -0,0 +1 @@ +"""Root of the parameters folder.""" diff --git a/src/openfisca_extension_template/variables/__init__.py b/src/openfisca_extension_template/variables/__init__.py index e69de29..38fdba8 100644 --- a/src/openfisca_extension_template/variables/__init__.py +++ b/src/openfisca_extension_template/variables/__init__.py @@ -0,0 +1 @@ +"""Root of the variables folder.""" From 1474c09aae99627db957645f002b040aa1c1cd41 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 20:46:24 +0100 Subject: [PATCH 06/20] Fix test --- Makefile | 19 +- poetry.lock | 1245 ++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 44 +- 3 files changed, 1297 insertions(+), 11 deletions(-) create mode 100644 poetry.lock diff --git a/Makefile b/Makefile index 67c3d0c..746ddf6 100644 --- a/Makefile +++ b/Makefile @@ -8,16 +8,13 @@ deps: nox \ nox-poetry \ pip \ - poet-plugin \ - poetry \ - setuptools \ - wheel + poetry install: deps @# Install OpenFisca-Extension-Template for development. `make install` @# installs the editable version of OpenFisca-Extension-Template. This @# allows contributors to test as they code. - @python -m pip install --editable .[dev] --upgrade + @python -m poetry install --extras "test" compile: @python -m compileall -q src @@ -26,15 +23,20 @@ clean: @rm -rf build dist @find . -name '*.pyc' -exec rm \{\} \; -format: +format: compile clean @# Do not analyse .gitignored files. @python -m poetry run autopep8 `git ls-files | grep "\.py$$"` -lint: +lint: compile clean @# Do not analyse .gitignored files. @python -m poetry run flake8 `git ls-files | grep "\.py$$"` @python -m poetry run pylint `git ls-files | grep "\.py$$"` +test: format lint + @python -m poetry run openfisca test `git ls-files | grep "test\.yaml$$"` \ + --country-package openfisca_country_template \ + --extensions openfisca_extension_template + build: clean deps @# Install OpenFisca-Extension-Template for deployment and publishing. @# `make build` allows us to be be sure tests are run against the packaged version @@ -42,6 +44,3 @@ build: clean deps @python -m build @python -m pip uninstall --yes openfisca-extension-template @find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; - -test: clean check-syntax-errors check-style - openfisca test openfisca_extension_template/tests --country-package openfisca_country_template --extensions openfisca_extension_template diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..2beaeed --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1245 @@ +[[package]] +name = "astor" +version = "0.8.1" +description = "Read/rewrite/write Python ASTs" +category = "main" +optional = true +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[[package]] +name = "astroid" +version = "2.12.12" +description = "An abstract syntax tree for Python with inference support." +category = "main" +optional = true +python-versions = ">=3.7.2" + +[package.dependencies] +lazy-object-proxy = ">=1.4.0" +typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""} +typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} +wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} + +[[package]] +name = "atomicwrites" +version = "1.4.1" +description = "Atomic file writes." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "22.1.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] + +[[package]] +name = "autopep8" +version = "2.0.0" +description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +pycodestyle = ">=2.9.1" +tomli = "*" + +[[package]] +name = "click" +version = "7.1.2" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" + +[[package]] +name = "dill" +version = "0.3.6" +description = "serialize all of python" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.extras] +graph = ["objgraph (>=1.7.2)"] + +[[package]] +name = "dpath" +version = "2.0.6" +description = "Filesystem-like pathing and searching for dictionaries" +category = "main" +optional = false +python-versions = ">=3" + +[[package]] +name = "flake8" +version = "5.0.4" +description = "the modular source code checker: pep8 pyflakes and co" +category = "main" +optional = true +python-versions = ">=3.6.1" + +[package.dependencies] +importlib-metadata = {version = ">=1.1.0,<4.3", markers = "python_version < \"3.8\""} +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" + +[[package]] +name = "flake8-bugbear" +version = "22.10.27" +description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +flake8 = ">=3.0.0" + +[package.extras] +dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "tox"] + +[[package]] +name = "flake8-builtins" +version = "2.0.0" +description = "Check for python builtins being used as variables or parameters." +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +flake8 = "*" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "flake8-coding" +version = "1.3.2" +description = "Adds coding magic comment checks to flake8" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "flake8-commas" +version = "2.1.0" +description = "Flake8 lint for trailing commas." +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +flake8 = ">=2" + +[[package]] +name = "flake8-comprehensions" +version = "3.10.1" +description = "A flake8 plugin to help you write better list/set/dict comprehensions." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +flake8 = ">=3.0,<3.2.0 || >3.2.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + +[[package]] +name = "flake8-docstrings" +version = "1.6.0" +description = "Extension for flake8 which uses pydocstyle to check docstrings" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +flake8 = ">=3" +pydocstyle = ">=2.1" + +[[package]] +name = "flake8-import-order" +version = "0.18.1" +description = "Flake8 and pylama plugin that checks the ordering of import statements." +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +pycodestyle = "*" +setuptools = "*" + +[[package]] +name = "flake8-print" +version = "5.0.0" +description = "print statement checker plugin for flake8" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +flake8 = ">=3.0" +pycodestyle = "*" + +[[package]] +name = "flake8-quotes" +version = "3.3.1" +description = "Flake8 lint for quotes." +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "flake8-simplify" +version = "0.19.3" +description = "flake8 plugin which checks for code that can be simplified" +category = "main" +optional = true +python-versions = ">=3.6.1" + +[package.dependencies] +astor = ">=0.1" +flake8 = ">=3.7" +importlib-metadata = {version = ">=0.9", markers = "python_version < \"3.8\""} + +[[package]] +name = "flake8-use-fstring" +version = "1.4" +description = "Flake8 plugin for string formatting style." +category = "main" +optional = true +python-versions = ">=3.6" + +[package.dependencies] +flake8 = ">=3" + +[package.extras] +ci = ["coverage (>=4.0.0,<5.0.0)", "coveralls", "flake8-builtins", "flake8-commas", "flake8-fixme", "flake8-print", "flake8-quotes", "flake8-todo", "pytest (>=4)", "pytest-cov (>=2)"] +dev = ["coverage (>=4.0.0,<5.0.0)", "flake8-builtins", "flake8-commas", "flake8-fixme", "flake8-print", "flake8-quotes", "flake8-todo", "pytest (>=4)", "pytest-cov (>=2)"] +test = ["coverage (>=4.0.0,<5.0.0)", "flake8-builtins", "flake8-commas", "flake8-fixme", "flake8-print", "flake8-quotes", "flake8-todo", "pytest (>=4)", "pytest-cov (>=2)"] + +[[package]] +name = "flask" +version = "1.1.4" +description = "A simple framework for building complex web applications." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +click = ">=5.1,<8.0" +itsdangerous = ">=0.24,<2.0" +Jinja2 = ">=2.10.1,<3.0" +Werkzeug = ">=0.15,<2.0" + +[package.extras] +dev = ["coverage", "pallets-sphinx-themes", "pytest", "sphinx", "sphinx-issues", "sphinxcontrib-log-cabinet", "tox"] +docs = ["pallets-sphinx-themes", "sphinx", "sphinx-issues", "sphinxcontrib-log-cabinet"] +dotenv = ["python-dotenv"] + +[[package]] +name = "flask-cors" +version = "3.0.10" +description = "A Flask extension adding a decorator for CORS support" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +Flask = ">=0.9" +Six = "*" + +[[package]] +name = "gunicorn" +version = "20.1.0" +description = "WSGI HTTP Server for UNIX" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +setuptools = ">=3.0" + +[package.extras] +eventlet = ["eventlet (>=0.24.1)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +tornado = ["tornado (>=0.2)"] + +[[package]] +name = "importlib-metadata" +version = "4.2.0" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517", "pyfakefs", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"] + +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "main" +optional = true +python-versions = ">=3.6.1,<4.0" + +[package.extras] +colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile-deprecated-finder = ["pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + +[[package]] +name = "itsdangerous" +version = "1.1.0" +description = "Various helpers to pass data to untrusted environments and back." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "jinja2" +version = "2.11.3" +description = "A very fast and expressive template engine." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[package.extras] +i18n = ["Babel (>=0.8)"] + +[[package]] +name = "lazy-object-proxy" +version = "1.8.0" +description = "A fast and thorough lazy object proxy." +category = "main" +optional = true +python-versions = ">=3.7" + +[[package]] +name = "markupsafe" +version = "2.0.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "more-itertools" +version = "9.0.0" +description = "More routines for operating on iterables, beyond itertools" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "nptyping" +version = "1.4.4" +description = "Type hints for Numpy." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +numpy = "*" +typish = ">=1.7.0" + +[package.extras] +test = ["autoflake", "codecov", "coverage", "isort", "pycodestyle", "pylint", "pytest", "radon", "scons", "xenon"] + +[[package]] +name = "numexpr" +version = "2.8.4" +description = "Fast numerical expression evaluator for NumPy" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.13.3" + +[[package]] +name = "numpy" +version = "1.20.3" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "openfisca-core" +version = "35.9.0" +description = "A versatile microsimulation free software" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +dpath = ">=1.5.0,<3.0.0" +flask = {version = "1.1.4", optional = true, markers = "extra == \"web-api\""} +flask-cors = {version = "3.0.10", optional = true, markers = "extra == \"web-api\""} +gunicorn = {version = ">=20.0.0,<21.0.0", optional = true, markers = "extra == \"web-api\""} +markupsafe = {version = "2.0.1", optional = true, markers = "extra == \"web-api\""} +nptyping = "1.4.4" +numexpr = ">=2.7.0,<=3.0" +numpy = ">=1.11,<1.21" +psutil = ">=5.4.7,<6.0.0" +pytest = ">=4.4.1,<6.0.0" +PyYAML = ">=3.10" +sortedcontainers = "2.2.2" +typing-extensions = "3.10.0.2" +werkzeug = {version = ">=1.0.0,<2.0.0", optional = true, markers = "extra == \"web-api\""} + +[package.extras] +dev = ["autopep8 (>=1.4.0,<1.6.0)", "coverage (==6.0.2)", "darglint (==1.8.0)", "flake8 (>=4.0.0,<4.1.0)", "flake8-bugbear (>=19.3.0,<20.0.0)", "flake8-docstrings (==1.6.0)", "flake8-print (>=3.1.0,<4.0.0)", "flake8-rst-docstrings (==0.2.3)", "flask (==1.1.4)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "markupsafe (==2.0.1)", "mypy (==0.910)", "openfisca-country-template (>=3.10.0,<4.0.0)", "openfisca-extension-template (>=1.2.0rc0,<2.0.0)", "pycodestyle (>=2.8.0,<2.9.0)", "pylint (==2.10.2)", "werkzeug (>=1.0.0,<2.0.0)"] +tracker = ["openfisca-tracker (==0.4.0)"] +web-api = ["flask (==1.1.4)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "markupsafe (==2.0.1)", "werkzeug (>=1.0.0,<2.0.0)"] + +[[package]] +name = "openfisca-country-template" +version = "3.13.2" +description = "OpenFisca tax and benefit system for Country-Template" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +OpenFisca-Core = {version = ">=35.0.0,<36.0.0", extras = ["web-api"]} + +[package.extras] +dev = ["autopep8 (>=1.5.4,<2.0.0)", "flake8 (>=3.8.0,<4.0.0)", "flake8-bugbear (>=20.1.0,<22.0.0)", "flake8-builtins (>=1.5.0,<2.0.0)", "flake8-coding (>=1.3.0,<2.0.0)", "flake8-commas (>=2.0.0,<3.0.0)", "flake8-comprehensions (>=3.2.0,<4.0.0)", "flake8-docstrings (>=1.5.0,<2.0.0)", "flake8-import-order (>=0.18.0,<1.0.0)", "flake8-print (>=3.1.0,<5.0.0)", "flake8-quotes (>=3.2.0,<4.0.0)", "flake8-simplify (>=0.9.0,<1.0.0)", "flake8-use-fstring (>=1.1.0,<2.0.0)", "pycodestyle (>=2.6.0,<3.0.0)", "pylint (>=2.6.0,<3.0.0)"] + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "platformdirs" +version = "2.5.4" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"] +test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] + +[[package]] +name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +name = "psutil" +version = "5.9.4" +description = "Cross-platform lib for process and system monitoring in Python." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pycodestyle" +version = "2.9.1" +description = "Python style guide checker" +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "pydocstyle" +version = "6.1.1" +description = "Python docstring style checker" +category = "main" +optional = true +python-versions = ">=3.6" + +[package.dependencies] +snowballstemmer = "*" + +[package.extras] +toml = ["toml"] + +[[package]] +name = "pyflakes" +version = "2.5.0" +description = "passive checker of Python programs" +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "pylint" +version = "2.15.5" +description = "python code static checker" +category = "main" +optional = true +python-versions = ">=3.7.2" + +[package.dependencies] +astroid = ">=2.12.12,<=2.14.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = ">=0.2" +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=17.4.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.extras] +checkqa-mypy = ["mypy (==v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "setuptools" +version = "65.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "main" +optional = true +python-versions = "*" + +[[package]] +name = "sortedcontainers" +version = "2.2.2" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = true +python-versions = ">=3.7" + +[[package]] +name = "tomlkit" +version = "0.11.6" +description = "Style preserving TOML library" +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "typed-ast" +version = "1.5.4" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "typing-extensions" +version = "3.10.0.2" +description = "Backported and Experimental Type Hints for Python 3.5+" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "typish" +version = "1.9.3" +description = "Functionality for types" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +test = ["codecov", "coverage", "mypy", "nptyping (>=1.3.0)", "numpy", "pycodestyle", "pylint", "pytest"] + +[[package]] +name = "wcwidth" +version = "0.2.5" +description = "Measures the displayed width of unicode strings in a terminal" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "werkzeug" +version = "1.0.1" +description = "The comprehensive WSGI web application library." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage", "pallets-sphinx-themes", "pytest", "pytest-timeout", "sphinx", "sphinx-issues", "tox"] +watchdog = ["watchdog"] + +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "main" +optional = true +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "zipp" +version = "3.10.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[extras] +test = ["autopep8", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-import-order", "flake8-print", "flake8-quotes", "flake8-simplify", "flake8-use-fstring", "pycodestyle", "pylint"] + +[metadata] +lock-version = "1.1" +python-versions = "~3.7.2 || ~3.8 || ~3.9" +content-hash = "04e6a22d365b006e28c559e3d309f1106aeff9e7bf4a1f60700fb00a1f9f233b" + +[metadata.files] +astor = [ + {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, + {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, +] +astroid = [ + {file = "astroid-2.12.12-py3-none-any.whl", hash = "sha256:72702205200b2a638358369d90c222d74ebc376787af8fb2f7f2a86f7b5cc85f"}, + {file = "astroid-2.12.12.tar.gz", hash = "sha256:1c00a14f5a3ed0339d38d2e2e5b74ea2591df5861c0936bb292b84ccf3a78d83"}, +] +atomicwrites = [ + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] +attrs = [ + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, +] +autopep8 = [ + {file = "autopep8-2.0.0-py2.py3-none-any.whl", hash = "sha256:ad924b42c2e27a1ac58e432166cc4588f5b80747de02d0d35b1ecbd3e7d57207"}, + {file = "autopep8-2.0.0.tar.gz", hash = "sha256:8b1659c7f003e693199f52caffdc06585bb0716900bbc6a7442fd931d658c077"}, +] +click = [ + {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, + {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, +] +colorama = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +dill = [ + {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, + {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, +] +dpath = [ + {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, + {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, +] +flake8 = [ + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, +] +flake8-bugbear = [ + {file = "flake8-bugbear-22.10.27.tar.gz", hash = "sha256:a6708608965c9e0de5fff13904fed82e0ba21ac929fe4896459226a797e11cd5"}, + {file = "flake8_bugbear-22.10.27-py3-none-any.whl", hash = "sha256:6ad0ab754507319060695e2f2be80e6d8977cfcea082293089a9226276bd825d"}, +] +flake8-builtins = [ + {file = "flake8-builtins-2.0.0.tar.gz", hash = "sha256:98833fa16139a75cd4913003492a9bd9a61c6f8ac146c3db12a2ebaf420dade3"}, + {file = "flake8_builtins-2.0.0-py3-none-any.whl", hash = "sha256:39bfa3badb5e8d22f92baf4e0ea1b816707245233846932d6b13e81fc6f673e8"}, +] +flake8-coding = [ + {file = "flake8-coding-1.3.2.tar.gz", hash = "sha256:b8f4d5157a8f74670e6cfea732c3d9f4291a4e994c8701d2c55f787c6e6cb741"}, + {file = "flake8_coding-1.3.2-py2.py3-none-any.whl", hash = "sha256:79704112c44d09d4ab6c8965e76a20c3f7073d52146db60303bce777d9612260"}, +] +flake8-commas = [ + {file = "flake8-commas-2.1.0.tar.gz", hash = "sha256:940441ab8ee544df564ae3b3f49f20462d75d5c7cac2463e0b27436e2050f263"}, + {file = "flake8_commas-2.1.0-py2.py3-none-any.whl", hash = "sha256:ebb96c31e01d0ef1d0685a21f3f0e2f8153a0381430e748bf0bbbb5d5b453d54"}, +] +flake8-comprehensions = [ + {file = "flake8-comprehensions-3.10.1.tar.gz", hash = "sha256:412052ac4a947f36b891143430fef4859705af11b2572fbb689f90d372cf26ab"}, + {file = "flake8_comprehensions-3.10.1-py3-none-any.whl", hash = "sha256:d763de3c74bc18a79c039a7ec732e0a1985b0c79309ceb51e56401ad0a2cd44e"}, +] +flake8-docstrings = [ + {file = "flake8-docstrings-1.6.0.tar.gz", hash = "sha256:9fe7c6a306064af8e62a055c2f61e9eb1da55f84bb39caef2b84ce53708ac34b"}, + {file = "flake8_docstrings-1.6.0-py2.py3-none-any.whl", hash = "sha256:99cac583d6c7e32dd28bbfbef120a7c0d1b6dde4adb5a9fd441c4227a6534bde"}, +] +flake8-import-order = [ + {file = "flake8-import-order-0.18.1.tar.gz", hash = "sha256:a28dc39545ea4606c1ac3c24e9d05c849c6e5444a50fb7e9cdd430fc94de6e92"}, + {file = "flake8_import_order-0.18.1-py2.py3-none-any.whl", hash = "sha256:90a80e46886259b9c396b578d75c749801a41ee969a235e163cfe1be7afd2543"}, +] +flake8-print = [ + {file = "flake8-print-5.0.0.tar.gz", hash = "sha256:76915a2a389cc1c0879636c219eb909c38501d3a43cc8dae542081c9ba48bdf9"}, + {file = "flake8_print-5.0.0-py3-none-any.whl", hash = "sha256:84a1a6ea10d7056b804221ac5e62b1cee1aefc897ce16f2e5c42d3046068f5d8"}, +] +flake8-quotes = [ + {file = "flake8-quotes-3.3.1.tar.gz", hash = "sha256:633adca6fb8a08131536af0d750b44d6985b9aba46f498871e21588c3e6f525a"}, +] +flake8-simplify = [ + {file = "flake8_simplify-0.19.3-py3-none-any.whl", hash = "sha256:1057320e9312d75849541fee822900d27bcad05b2405edc84713affee635629e"}, + {file = "flake8_simplify-0.19.3.tar.gz", hash = "sha256:2fb083bf5142a98d9c9554755cf2f56f8926eb4a33eae30c0809041b1546879e"}, +] +flake8-use-fstring = [ + {file = "flake8-use-fstring-1.4.tar.gz", hash = "sha256:6550bf722585eb97dffa8343b0f1c372101f5c4ab5b07ebf0edd1c79880cdd39"}, +] +flask = [ + {file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"}, + {file = "Flask-1.1.4.tar.gz", hash = "sha256:0fbeb6180d383a9186d0d6ed954e0042ad9f18e0e8de088b2b419d526927d196"}, +] +flask-cors = [ + {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"}, + {file = "Flask_Cors-3.0.10-py2.py3-none-any.whl", hash = "sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438"}, +] +gunicorn = [ + {file = "gunicorn-20.1.0-py3-none-any.whl", hash = "sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e"}, + {file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"}, +] +importlib-metadata = [ + {file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"}, + {file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"}, +] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] +itsdangerous = [ + {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, + {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, +] +jinja2 = [ + {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, + {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, +] +lazy-object-proxy = [ + {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"}, + {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"}, + {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"}, + {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"}, + {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"}, + {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"}, + {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"}, + {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"}, + {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, +] +markupsafe = [ + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, + {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, +] +mccabe = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] +more-itertools = [ + {file = "more-itertools-9.0.0.tar.gz", hash = "sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab"}, + {file = "more_itertools-9.0.0-py3-none-any.whl", hash = "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41"}, +] +nptyping = [ + {file = "nptyping-1.4.4-py3-none-any.whl", hash = "sha256:8128473b8ba0e65f3d6edc727cd99024e162edcf7e8a0ea8f9dfa6b070934d14"}, +] +numexpr = [ + {file = "numexpr-2.8.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a75967d46b6bd56455dd32da6285e5ffabe155d0ee61eef685bbfb8dafb2e484"}, + {file = "numexpr-2.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db93cf1842f068247de631bfc8af20118bf1f9447cd929b531595a5e0efc9346"}, + {file = "numexpr-2.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bca95f4473b444428061d4cda8e59ac564dc7dc6a1dea3015af9805c6bc2946"}, + {file = "numexpr-2.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e34931089a6bafc77aaae21f37ad6594b98aa1085bb8b45d5b3cd038c3c17d9"}, + {file = "numexpr-2.8.4-cp310-cp310-win32.whl", hash = "sha256:f3a920bfac2645017110b87ddbe364c9c7a742870a4d2f6120b8786c25dc6db3"}, + {file = "numexpr-2.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:6931b1e9d4f629f43c14b21d44f3f77997298bea43790cfcdb4dd98804f90783"}, + {file = "numexpr-2.8.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9400781553541f414f82eac056f2b4c965373650df9694286b9bd7e8d413f8d8"}, + {file = "numexpr-2.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ee9db7598dd4001138b482342b96d78110dd77cefc051ec75af3295604dde6a"}, + {file = "numexpr-2.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff5835e8af9a212e8480003d731aad1727aaea909926fd009e8ae6a1cba7f141"}, + {file = "numexpr-2.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:655d84eb09adfee3c09ecf4a89a512225da153fdb7de13c447404b7d0523a9a7"}, + {file = "numexpr-2.8.4-cp311-cp311-win32.whl", hash = "sha256:5538b30199bfc68886d2be18fcef3abd11d9271767a7a69ff3688defe782800a"}, + {file = "numexpr-2.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:3f039321d1c17962c33079987b675fb251b273dbec0f51aac0934e932446ccc3"}, + {file = "numexpr-2.8.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c867cc36cf815a3ec9122029874e00d8fbcef65035c4a5901e9b120dd5d626a2"}, + {file = "numexpr-2.8.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:059546e8f6283ccdb47c683101a890844f667fa6d56258d48ae2ecf1b3875957"}, + {file = "numexpr-2.8.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:845a6aa0ed3e2a53239b89c1ebfa8cf052d3cc6e053c72805e8153300078c0b1"}, + {file = "numexpr-2.8.4-cp37-cp37m-win32.whl", hash = "sha256:a38664e699526cb1687aefd9069e2b5b9387da7feac4545de446141f1ef86f46"}, + {file = "numexpr-2.8.4-cp37-cp37m-win_amd64.whl", hash = "sha256:eaec59e9bf70ff05615c34a8b8d6c7bd042bd9f55465d7b495ea5436f45319d0"}, + {file = "numexpr-2.8.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b318541bf3d8326682ebada087ba0050549a16d8b3fa260dd2585d73a83d20a7"}, + {file = "numexpr-2.8.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b076db98ca65eeaf9bd224576e3ac84c05e451c0bd85b13664b7e5f7b62e2c70"}, + {file = "numexpr-2.8.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f12cc851240f7911a47c91aaf223dba753e98e46dff3017282e633602e76a7"}, + {file = "numexpr-2.8.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c368aa35ae9b18840e78b05f929d3a7b3abccdba9630a878c7db74ca2368339"}, + {file = "numexpr-2.8.4-cp38-cp38-win32.whl", hash = "sha256:b96334fc1748e9ec4f93d5fadb1044089d73fb08208fdb8382ed77c893f0be01"}, + {file = "numexpr-2.8.4-cp38-cp38-win_amd64.whl", hash = "sha256:a6d2d7740ae83ba5f3531e83afc4b626daa71df1ef903970947903345c37bd03"}, + {file = "numexpr-2.8.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:77898fdf3da6bb96aa8a4759a8231d763a75d848b2f2e5c5279dad0b243c8dfe"}, + {file = "numexpr-2.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df35324666b693f13a016bc7957de7cc4d8801b746b81060b671bf78a52b9037"}, + {file = "numexpr-2.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ac9cfe6d0078c5fc06ba1c1bbd20b8783f28c6f475bbabd3cad53683075cab"}, + {file = "numexpr-2.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df3a1f6b24214a1ab826e9c1c99edf1686c8e307547a9aef33910d586f626d01"}, + {file = "numexpr-2.8.4-cp39-cp39-win32.whl", hash = "sha256:7d71add384adc9119568d7e9ffa8a35b195decae81e0abf54a2b7779852f0637"}, + {file = "numexpr-2.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:9f096d707290a6a00b6ffdaf581ee37331109fb7b6c8744e9ded7c779a48e517"}, + {file = "numexpr-2.8.4.tar.gz", hash = "sha256:d5432537418d18691b9115d615d6daa17ee8275baef3edf1afbbf8bc69806147"}, +] +numpy = [ + {file = "numpy-1.20.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:70eb5808127284c4e5c9e836208e09d685a7978b6a216db85960b1a112eeace8"}, + {file = "numpy-1.20.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6ca2b85a5997dabc38301a22ee43c82adcb53ff660b89ee88dded6b33687e1d8"}, + {file = "numpy-1.20.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c5bf0e132acf7557fc9bb8ded8b53bbbbea8892f3c9a1738205878ca9434206a"}, + {file = "numpy-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db250fd3e90117e0312b611574cd1b3f78bec046783195075cbd7ba9c3d73f16"}, + {file = "numpy-1.20.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:637d827248f447e63585ca3f4a7d2dfaa882e094df6cfa177cc9cf9cd6cdf6d2"}, + {file = "numpy-1.20.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8b7bb4b9280da3b2856cb1fc425932f46fba609819ee1c62256f61799e6a51d2"}, + {file = "numpy-1.20.3-cp37-cp37m-win32.whl", hash = "sha256:67d44acb72c31a97a3d5d33d103ab06d8ac20770e1c5ad81bdb3f0c086a56cf6"}, + {file = "numpy-1.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:43909c8bb289c382170e0282158a38cf306a8ad2ff6dfadc447e90f9961bef43"}, + {file = "numpy-1.20.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f1452578d0516283c87608a5a5548b0cdde15b99650efdfd85182102ef7a7c17"}, + {file = "numpy-1.20.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6e51534e78d14b4a009a062641f465cfaba4fdcb046c3ac0b1f61dd97c861b1b"}, + {file = "numpy-1.20.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e515c9a93aebe27166ec9593411c58494fa98e5fcc219e47260d9ab8a1cc7f9f"}, + {file = "numpy-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1c09247ccea742525bdb5f4b5ceeacb34f95731647fe55774aa36557dbb5fa4"}, + {file = "numpy-1.20.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66fbc6fed94a13b9801fb70b96ff30605ab0a123e775a5e7a26938b717c5d71a"}, + {file = "numpy-1.20.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ea9cff01e75a956dbee133fa8e5b68f2f92175233de2f88de3a682dd94deda65"}, + {file = "numpy-1.20.3-cp38-cp38-win32.whl", hash = "sha256:f39a995e47cb8649673cfa0579fbdd1cdd33ea497d1728a6cb194d6252268e48"}, + {file = "numpy-1.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:1676b0a292dd3c99e49305a16d7a9f42a4ab60ec522eac0d3dd20cdf362ac010"}, + {file = "numpy-1.20.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:830b044f4e64a76ba71448fce6e604c0fc47a0e54d8f6467be23749ac2cbd2fb"}, + {file = "numpy-1.20.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:55b745fca0a5ab738647d0e4db099bd0a23279c32b31a783ad2ccea729e632df"}, + {file = "numpy-1.20.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5d050e1e4bc9ddb8656d7b4f414557720ddcca23a5b88dd7cff65e847864c400"}, + {file = "numpy-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9c65473ebc342715cb2d7926ff1e202c26376c0dcaaee85a1fd4b8d8c1d3b2f"}, + {file = "numpy-1.20.3-cp39-cp39-win32.whl", hash = "sha256:16f221035e8bd19b9dc9a57159e38d2dd060b48e93e1d843c49cb370b0f415fd"}, + {file = "numpy-1.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:6690080810f77485667bfbff4f69d717c3be25e5b11bb2073e76bb3f578d99b4"}, + {file = "numpy-1.20.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e465afc3b96dbc80cf4a5273e5e2b1e3451286361b4af70ce1adb2984d392f9"}, + {file = "numpy-1.20.3.zip", hash = "sha256:e55185e51b18d788e49fe8305fd73ef4470596b33fc2c1ceb304566b99c71a69"}, +] +openfisca-core = [ + {file = "OpenFisca-Core-35.9.0.tar.gz", hash = "sha256:9509cf7733fd3a1ab6225a3b6f799e595ce928a9bdcfc4d863a3e9bd0f920380"}, + {file = "OpenFisca_Core-35.9.0-py3-none-any.whl", hash = "sha256:433125c6700842ebb7d2a77a81e1f7a69b1a669b2a6c70e41fbc133582869738"}, +] +openfisca-country-template = [ + {file = "OpenFisca-Country-Template-3.13.2.tar.gz", hash = "sha256:7c21c7bca96bbfc79b5c5437fbd859bf6c4877b3eba6d12790b8c2816ad3bde7"}, + {file = "OpenFisca_Country_Template-3.13.2-py3-none-any.whl", hash = "sha256:eaee5792979c5f4b0b737882571de6938e5c910aad2ae1fc5a7c894e44f1397c"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +platformdirs = [ + {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, + {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, +] +pluggy = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] +psutil = [ + {file = "psutil-5.9.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8"}, + {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe"}, + {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549"}, + {file = "psutil-5.9.4-cp27-cp27m-win32.whl", hash = "sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad"}, + {file = "psutil-5.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94"}, + {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24"}, + {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7"}, + {file = "psutil-5.9.4-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7"}, + {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1"}, + {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08"}, + {file = "psutil-5.9.4-cp36-abi3-win32.whl", hash = "sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff"}, + {file = "psutil-5.9.4-cp36-abi3-win_amd64.whl", hash = "sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4"}, + {file = "psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e"}, + {file = "psutil-5.9.4.tar.gz", hash = "sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pycodestyle = [ + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, +] +pydocstyle = [ + {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, + {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, +] +pyflakes = [ + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, +] +pylint = [ + {file = "pylint-2.15.5-py3-none-any.whl", hash = "sha256:c2108037eb074334d9e874dc3c783752cc03d0796c88c9a9af282d0f161a1004"}, + {file = "pylint-2.15.5.tar.gz", hash = "sha256:3b120505e5af1d06a5ad76b55d8660d44bf0f2fc3c59c2bdd94e39188ee3a4df"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pytest = [ + {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, + {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, +] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, + {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, + {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, + {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, + {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] +setuptools = [ + {file = "setuptools-65.5.1-py3-none-any.whl", hash = "sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31"}, + {file = "setuptools-65.5.1.tar.gz", hash = "sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +snowballstemmer = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] +sortedcontainers = [ + {file = "sortedcontainers-2.2.2-py2.py3-none-any.whl", hash = "sha256:c633ebde8580f241f274c1f8994a665c0e54a17724fecd0cae2f079e09c36d3f"}, + {file = "sortedcontainers-2.2.2.tar.gz", hash = "sha256:4e73a757831fc3ca4de2859c422564239a31d8213d09a2a666e375807034d2ba"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +tomlkit = [ + {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, + {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, +] +typed-ast = [ + {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, + {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, + {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, + {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, + {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, + {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, + {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, + {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, + {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, + {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, +] +typing-extensions = [ + {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, + {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"}, + {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"}, +] +typish = [ + {file = "typish-1.9.3-py3-none-any.whl", hash = "sha256:03cfee5e6eb856dbf90244e18f4e4c41044c8790d5779f4e775f63f982e2f896"}, +] +wcwidth = [ + {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, + {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, +] +werkzeug = [ + {file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"}, + {file = "Werkzeug-1.0.1.tar.gz", hash = "sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"}, +] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] +zipp = [ + {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"}, + {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"}, +] diff --git a/pyproject.toml b/pyproject.toml index 0d10c81..09c767e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [tool.poetry] -name = "OpenFisca-Extension-Template" +name = "openfisca_extension_template" version = "1.3.10" description = "An extension adding new variables to a country package." license = "AGPL-3.0-only" @@ -21,3 +21,45 @@ classifiers = [ "Topic :: Scientific/Engineering :: Information Analysis", ] packages = [{include = "openfisca_extension_template", from = "src"}] + +[tool.poetry.dependencies] +python = "~3.7.2 || ~3.8 || ~3.9" +openfisca_country_template = "^3.8.0" +autopep8 = {version = "^2.0.0", optional = true} +flake8 = {version = "^5.0.0", optional = true} +flake8-bugbear = {version = "^22.10.0", optional = true} +flake8-builtins = {version = "2.0.0", optional = true} +flake8-coding = {version = "^1.3.0", optional = true} +flake8-commas = {version = "^2.1.0", optional = true} +flake8-comprehensions = {version = "^3.10.0", optional = true} +flake8-docstrings = {version = "^1.6.0", optional = true} +flake8-import-order = {version = "^0.18.0", optional = true} +flake8-print = {version = "^5.0.0", optional = true} +flake8-quotes = {version = "^3.3.0", optional = true} +flake8-simplify = {version = "^0.19.0", optional = true} +flake8-use-fstring = {version = "^1.4.0", optional = true} +pycodestyle = {version = "^2.9.0", optional = true} +pylint = {version = "^2.15.0", optional = true} + +[tool.poetry.extras] +test = [ + "autopep8", + "flake8", + "flake8-bugbear", + "flake8-builtins", + "flake8-coding", + "flake8-commas", + "flake8-comprehensions", + "flake8-docstrings", + "flake8-import-order", + "flake8-print", + "flake8-quotes", + "flake8-simplify", + "flake8-use-fstring", + "pycodestyle", + "pylint", + ] + +[build-system] +requires = ["poetry-core >= 1.2.0"] +build-backend = "poetry.core.masonry.api" From 1114bdf12005a8b25297901330ec9fbb08616b8e Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Tue, 15 Nov 2022 21:20:30 +0100 Subject: [PATCH 07/20] Add nox --- noxfile.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 noxfile.py diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 0000000..276332f --- /dev/null +++ b/noxfile.py @@ -0,0 +1,16 @@ +"""Nox config file.""" + +import nox +import nox_poetry + +nox.options.reuse_existing_virtualenvs = True + + +@nox_poetry.session +@nox.parametrize("python", ("3.7.15", "3.8.15", "3.9.15")) +def test(session): + """Run tests.""" + + session.run("make", "install", external = True, silent = True) + session.install(".", silent = True) + session.run("make", "test", external = True) From 9088cd8c2bb1409e81baaeab041a55b6aa4b0307 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 00:51:49 +0100 Subject: [PATCH 08/20] Harmonise with core --- Makefile | 18 +- noxfile.py | 7 +- poetry.lock | 199 +++++++++++++++--- pyproject.toml | 101 ++++++++- setup.cfg | 37 ---- setup.py | 61 ------ .../variables/local_benefit.py | 41 ++-- 7 files changed, 310 insertions(+), 154 deletions(-) delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/Makefile b/Makefile index 746ddf6..73ffc44 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ install: deps @# Install OpenFisca-Extension-Template for development. `make install` @# installs the editable version of OpenFisca-Extension-Template. This @# allows contributors to test as they code. - @python -m poetry install --extras "test" + @python -m poetry install --all-extras compile: @python -m compileall -q src @@ -25,22 +25,30 @@ clean: format: compile clean @# Do not analyse .gitignored files. + @python -m poetry run isort `git ls-files | grep "\.py$$"` @python -m poetry run autopep8 `git ls-files | grep "\.py$$"` + @python -m poetry run pyupgrade `git ls-files | grep "\.py$$"` \ + --py37-plus \ + --keep-runtime-typing + +type: compile clean + @# Do not analyse .gitignored files. + @python -m poetry run mypy `git ls-files | grep "\.py$$"` lint: compile clean @# Do not analyse .gitignored files. @python -m poetry run flake8 `git ls-files | grep "\.py$$"` @python -m poetry run pylint `git ls-files | grep "\.py$$"` -test: format lint +test: format type lint @python -m poetry run openfisca test `git ls-files | grep "test\.yaml$$"` \ --country-package openfisca_country_template \ --extensions openfisca_extension_template -build: clean deps +build: compile clean deps @# Install OpenFisca-Extension-Template for deployment and publishing. @# `make build` allows us to be be sure tests are run against the packaged version @# of OpenFisca-Extension-Template, the same we put in the hands of users and reusers. - @python -m build + @python -m poetry build @python -m pip uninstall --yes openfisca-extension-template - @find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; + @find dist -name "*.whl" -exec pip install --force-reinstall {} \; diff --git a/noxfile.py b/noxfile.py index 276332f..bd35e00 100644 --- a/noxfile.py +++ b/noxfile.py @@ -3,14 +3,13 @@ import nox import nox_poetry -nox.options.reuse_existing_virtualenvs = True +nox.options.reuse_existing_virtualenvs = False @nox_poetry.session @nox.parametrize("python", ("3.7.15", "3.8.15", "3.9.15")) def test(session): """Run tests.""" - - session.run("make", "install", external = True, silent = True) - session.install(".", silent = True) + session.run("make", "install", external = True) + session.install(".") session.run("make", "test", external = True) diff --git a/poetry.lock b/poetry.lock index 2beaeed..016b1ba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -70,6 +70,14 @@ category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +[[package]] +name = "darglint" +version = "1.8.1" +description = "A utility for ensuring Google-style docstrings stay up to date with the source code." +category = "main" +optional = true +python-versions = ">=3.6,<4.0" + [[package]] name = "dill" version = "0.3.6" @@ -81,6 +89,14 @@ python-versions = ">=3.7" [package.extras] graph = ["objgraph (>=1.7.2)"] +[[package]] +name = "docutils" +version = "0.19" +description = "Docutils -- Python Documentation Utilities" +category = "main" +optional = true +python-versions = ">=3.7" + [[package]] name = "dpath" version = "2.0.6" @@ -179,39 +195,44 @@ flake8 = ">=3" pydocstyle = ">=2.1" [[package]] -name = "flake8-import-order" -version = "0.18.1" -description = "Flake8 and pylama plugin that checks the ordering of import statements." +name = "flake8-print" +version = "5.0.0" +description = "print statement checker plugin for flake8" category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] +flake8 = ">=3.0" pycodestyle = "*" -setuptools = "*" [[package]] -name = "flake8-print" -version = "5.0.0" -description = "print statement checker plugin for flake8" +name = "flake8-pyproject" +version = "1.1.0.post0" +description = "Flake8 plug-in loading the configuration from pyproject.toml" category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] -flake8 = ">=3.0" -pycodestyle = "*" +Flake8 = ">=5,<6" +TOMLi = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +test = ["pyTest", "pyTest-cov"] [[package]] -name = "flake8-quotes" -version = "3.3.1" -description = "Flake8 lint for quotes." +name = "flake8-rst-docstrings" +version = "0.2.7" +description = "Python docstring reStructuredText (RST) validator" category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] -flake8 = "*" +flake8 = ">=3.0.0" +pygments = "*" +restructuredtext-lint = "*" [[package]] name = "flake8-simplify" @@ -374,6 +395,34 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "mypy" +version = "0.991" +description = "Optional static typing for Python" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typed-ast = {version = ">=1.4.0,<2", markers = "python_version < \"3.8\""} +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" +optional = true +python-versions = "*" + [[package]] name = "nptyping" version = "1.4.4" @@ -537,6 +586,17 @@ category = "main" optional = true python-versions = ">=3.6" +[[package]] +name = "pygments" +version = "2.13.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = true +python-versions = ">=3.6" + +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pylint" version = "2.15.5" @@ -594,6 +654,17 @@ wcwidth = "*" checkqa-mypy = ["mypy (==v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +[[package]] +name = "pyupgrade" +version = "3.2.2" +description = "A tool to automatically upgrade syntax for newer versions." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +tokenize-rt = ">=3.2.0" + [[package]] name = "pyyaml" version = "6.0" @@ -602,6 +673,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "restructuredtext-lint" +version = "1.4.0" +description = "reStructuredText linter" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +docutils = ">=0.11,<1.0" + [[package]] name = "setuptools" version = "65.5.1" @@ -639,6 +721,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "tokenize-rt" +version = "5.0.0" +description = "A wrapper around the stdlib `tokenize` which roundtrips." +category = "main" +optional = true +python-versions = ">=3.7" + [[package]] name = "tomli" version = "2.0.1" @@ -723,12 +813,14 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -test = ["autopep8", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-import-order", "flake8-print", "flake8-quotes", "flake8-simplify", "flake8-use-fstring", "pycodestyle", "pylint"] +format = ["autopep8", "isort", "pyupgrade"] +lint = ["darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-pyproject", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "pycodestyle", "pylint"] +type = ["mypy"] [metadata] lock-version = "1.1" python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "04e6a22d365b006e28c559e3d309f1106aeff9e7bf4a1f60700fb00a1f9f233b" +content-hash = "c2e862cde52f906c8a43aeb6cdf68b4add4180a18de79da57637ec2d0ef46167" [metadata.files] astor = [ @@ -758,10 +850,18 @@ colorama = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +darglint = [ + {file = "darglint-1.8.1-py3-none-any.whl", hash = "sha256:5ae11c259c17b0701618a20c3da343a3eb98b3bc4b5a83d31cdd94f5ebdced8d"}, + {file = "darglint-1.8.1.tar.gz", hash = "sha256:080d5106df149b199822e7ee7deb9c012b49891538f14a11be681044f0bb20da"}, +] dill = [ {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, ] +docutils = [ + {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, + {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, +] dpath = [ {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, @@ -794,16 +894,16 @@ flake8-docstrings = [ {file = "flake8-docstrings-1.6.0.tar.gz", hash = "sha256:9fe7c6a306064af8e62a055c2f61e9eb1da55f84bb39caef2b84ce53708ac34b"}, {file = "flake8_docstrings-1.6.0-py2.py3-none-any.whl", hash = "sha256:99cac583d6c7e32dd28bbfbef120a7c0d1b6dde4adb5a9fd441c4227a6534bde"}, ] -flake8-import-order = [ - {file = "flake8-import-order-0.18.1.tar.gz", hash = "sha256:a28dc39545ea4606c1ac3c24e9d05c849c6e5444a50fb7e9cdd430fc94de6e92"}, - {file = "flake8_import_order-0.18.1-py2.py3-none-any.whl", hash = "sha256:90a80e46886259b9c396b578d75c749801a41ee969a235e163cfe1be7afd2543"}, -] flake8-print = [ {file = "flake8-print-5.0.0.tar.gz", hash = "sha256:76915a2a389cc1c0879636c219eb909c38501d3a43cc8dae542081c9ba48bdf9"}, {file = "flake8_print-5.0.0-py3-none-any.whl", hash = "sha256:84a1a6ea10d7056b804221ac5e62b1cee1aefc897ce16f2e5c42d3046068f5d8"}, ] -flake8-quotes = [ - {file = "flake8-quotes-3.3.1.tar.gz", hash = "sha256:633adca6fb8a08131536af0d750b44d6985b9aba46f498871e21588c3e6f525a"}, +flake8-pyproject = [ + {file = "flake8_pyproject-1.1.0.post0-py3-none-any.whl", hash = "sha256:55bc7cbb4272dca45ba42521954452be9d443237fa9b78a09d0424bbd5c94fab"}, +] +flake8-rst-docstrings = [ + {file = "flake8-rst-docstrings-0.2.7.tar.gz", hash = "sha256:2740067ab9237559dd45a3434d8c987792c7b259ca563621a3b95efe201f5382"}, + {file = "flake8_rst_docstrings-0.2.7-py3-none-any.whl", hash = "sha256:5d56075dce360bcc9c6775bfe7cb431aa395de600ca7e8d40580a28d50b2a803"}, ] flake8-simplify = [ {file = "flake8_simplify-0.19.3-py3-none-any.whl", hash = "sha256:1057320e9312d75849541fee822900d27bcad05b2405edc84713affee635629e"}, @@ -940,6 +1040,42 @@ more-itertools = [ {file = "more-itertools-9.0.0.tar.gz", hash = "sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab"}, {file = "more_itertools-9.0.0-py3-none-any.whl", hash = "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41"}, ] +mypy = [ + {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, + {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, + {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, + {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, + {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, + {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, + {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, + {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, + {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, + {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, + {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, + {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, + {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, + {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, + {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, + {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, + {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, + {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, + {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, + {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, + {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, + {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, + {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] nptyping = [ {file = "nptyping-1.4.4-py3-none-any.whl", hash = "sha256:8128473b8ba0e65f3d6edc727cd99024e162edcf7e8a0ea8f9dfa6b070934d14"}, ] @@ -1053,6 +1189,10 @@ pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] +pygments = [ + {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, + {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, +] pylint = [ {file = "pylint-2.15.5-py3-none-any.whl", hash = "sha256:c2108037eb074334d9e874dc3c783752cc03d0796c88c9a9af282d0f161a1004"}, {file = "pylint-2.15.5.tar.gz", hash = "sha256:3b120505e5af1d06a5ad76b55d8660d44bf0f2fc3c59c2bdd94e39188ee3a4df"}, @@ -1065,6 +1205,10 @@ pytest = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, ] +pyupgrade = [ + {file = "pyupgrade-3.2.2-py2.py3-none-any.whl", hash = "sha256:16c0e3a6ac2d83cd0fd30c138af5504918c59d584344f60a15d5f8009b11a0ed"}, + {file = "pyupgrade-3.2.2.tar.gz", hash = "sha256:6bfa246fb9d94e490fad37980bcfc05b9494183ff29d9100ef4f7f22a952ce67"}, +] pyyaml = [ {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, @@ -1107,6 +1251,9 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] +restructuredtext-lint = [ + {file = "restructuredtext_lint-1.4.0.tar.gz", hash = "sha256:1b235c0c922341ab6c530390892eb9e92f90b9b75046063e047cacfb0f050c45"}, +] setuptools = [ {file = "setuptools-65.5.1-py3-none-any.whl", hash = "sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31"}, {file = "setuptools-65.5.1.tar.gz", hash = "sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f"}, @@ -1123,6 +1270,10 @@ sortedcontainers = [ {file = "sortedcontainers-2.2.2-py2.py3-none-any.whl", hash = "sha256:c633ebde8580f241f274c1f8994a665c0e54a17724fecd0cae2f079e09c36d3f"}, {file = "sortedcontainers-2.2.2.tar.gz", hash = "sha256:4e73a757831fc3ca4de2859c422564239a31d8213d09a2a666e375807034d2ba"}, ] +tokenize-rt = [ + {file = "tokenize_rt-5.0.0-py2.py3-none-any.whl", hash = "sha256:c67772c662c6b3dc65edf66808577968fb10badfc2042e3027196bed4daf9e5a"}, + {file = "tokenize_rt-5.0.0.tar.gz", hash = "sha256:3160bc0c3e8491312d0485171dea861fc160a240f5f5766b72a1165408d10740"}, +] tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, diff --git a/pyproject.toml b/pyproject.toml index 09c767e..69859be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,25 +25,32 @@ packages = [{include = "openfisca_extension_template", from = "src"}] [tool.poetry.dependencies] python = "~3.7.2 || ~3.8 || ~3.9" openfisca_country_template = "^3.8.0" +pyyaml = "^6.0" autopep8 = {version = "^2.0.0", optional = true} +darglint = {version ="^1.8.1", optional = true} flake8 = {version = "^5.0.0", optional = true} flake8-bugbear = {version = "^22.10.0", optional = true} flake8-builtins = {version = "2.0.0", optional = true} flake8-coding = {version = "^1.3.0", optional = true} flake8-commas = {version = "^2.1.0", optional = true} flake8-comprehensions = {version = "^3.10.0", optional = true} -flake8-docstrings = {version = "^1.6.0", optional = true} -flake8-import-order = {version = "^0.18.0", optional = true} +flake8-docstrings = {version ="^1.6.0", optional = true} flake8-print = {version = "^5.0.0", optional = true} -flake8-quotes = {version = "^3.3.0", optional = true} +flake8-pyproject = {version = "^1.1.0.post0", optional = true} +flake8-rst-docstrings = {version ="^0.2.7", optional = true} flake8-simplify = {version = "^0.19.0", optional = true} flake8-use-fstring = {version = "^1.4.0", optional = true} +isort = {version = "^5.10.1", optional = true} +mypy = {version = "^0.991", optional = true} pycodestyle = {version = "^2.9.0", optional = true} pylint = {version = "^2.15.0", optional = true} +pyupgrade = {version = "^3.2.2", optional = true} [tool.poetry.extras] -test = [ - "autopep8", +format = ["autopep8", "isort", "pyupgrade"] +type = ["mypy"] +lint = [ + "darglint", "flake8", "flake8-bugbear", "flake8-builtins", @@ -51,15 +58,95 @@ test = [ "flake8-commas", "flake8-comprehensions", "flake8-docstrings", - "flake8-import-order", "flake8-print", - "flake8-quotes", + "flake8-pyproject", + "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "pycodestyle", "pylint", ] +[tool.autopep8] +aggressive = 3 +hang-closing = true +ignore = [ + "D101", # Variables already provide label/description + "D107", # We do not document __init__ method + "D401", # We do not require the imperative mood + "E128", # We prefer hang-closing visual indents + "E251", # We prefer `function(x = 1)` over `function(x=1)` + "W503", # We break lines before binary operators (Knuth's style) + ] +in-place = true +recursive = true +no-accept-encodings = true +strictness = "short" + +[tool.isort] +case_sensitive = true +force_alphabetical_sort_within_sections = false +group_by_package = true +include_trailing_comma = true +known_first_party = ["openfisca_extension_template"] +known_2nd_party = ["openfisca_country_template"] +known_typing = ["mypy", "mypy_extensions"] +multi_line_output = 8 +py_version = 37 +sections = [ + "FUTURE", + "TYPING", + "STDLIB", + "THIRDPARTY", + "2ND_PARTY", + "FIRSTPARTY", + "LOCALFOLDER", + ] + +[tool.flake8] +hang-closing = true +ignore = [ + "D101", # Variables already provide label/description + "D107", # We do not document the __init__ method + "D401", # We do not require the imperative mood + "E128", # We prefer hang-closing visual indents + "E251", # We prefer `function(x = 1)` over `function(x=1)` + "W503", # We break lines before binary operators (Knuth's style) + ] +no-accept-encodings = true +strictness = "short" + +[tool.pylint."MASTER"] +load-plugins = ["pylint.extensions.no_self_use"] + +[tool.pylint."STRING"] +check-quote-consistency = true +check-str-concat-over-line-jumps = true + +[tool.pylint."MESSAGE CONTROL"] +disable = [ + "C0103", # We snake case variables and reforms + "C0115", # We already labelise variables + "E1101", # False positive, as members are defined dynamically, + "R6301" + ] +score = "no" + +[tool.mypy] +ignore_missing_imports = true +install_types = true +non_interactive = true +strict = false + +[tool.pytest.ini_options] +addopts = [ + "--disable-pytest-warnings", + "--exitfirst", + "--quiet", + "--showlocals", + "--tb=long", + ] + [build-system] requires = ["poetry-core >= 1.2.0"] build-backend = "poetry.core.masonry.api" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index c3380b1..0000000 --- a/setup.cfg +++ /dev/null @@ -1,37 +0,0 @@ -; D101: Variables already provide label/description -; D107: We do not document __init__ method -; D401: We do not require the imperative mood -; E128/133: We prefer hang-closing visual indents -; E251: We prefer `function(x = 1)` over `function(x=1)` -; E501: We do not enforce a maximum line length -; W503/4: We break lines before binary operators (Knuth's style) - -[flake8] -hang-closing = true -ignore = D101,D107,D401,E128,E251,E501,W503 -in-place = true -inline-quotes = " -multiline-quotes = """ -no-accept-encodings = true -import-order-style = appnexus -application-import-names = openfisca_extension_template -application-package-names = openfisca_core,openfisca_country_template - -; C0103: We (still) snake case variables and reforms -; C0115: Variables already provide label/description -; C0301: We do not enforce a maximum line length -; E0213: This requires changes in OpenFisca-Core -; E1101: False positive, as entities have members -; E1102: False positive, as entities are callable -; W0621: We name variable values the variable name -; W1203: We prefer to log with f-strings - -[pylint.message_control] -disable = C0103,C0115,C0301,E0213,E1101,E1102,W0621,W1203 -score = no - -[tool:pytest] -addopts = --showlocals --exitfirst --doctest-modules -testpaths = openfisca_extension_template/tests -python_files = **/*.py -filterwarnings = ignore::DeprecationWarning diff --git a/setup.py b/setup.py deleted file mode 100644 index 925a475..0000000 --- a/setup.py +++ /dev/null @@ -1,61 +0,0 @@ -"""This file contains your extension package's metadata and dependencies.""" - -from pathlib import Path - -from setuptools import find_packages, setup - -# Read the contents of our README file for PyPi -this_directory = Path(__file__).parent -long_description = (this_directory / "README.md").read_text() # pylint: disable=W1514 - -setup( - name = "OpenFisca-Extension-Template", - version = "1.3.10", - author = "OpenFisca Team", - author_email = "contact@openfisca.org", - classifiers = [ - "Development Status :: 5 - Production/Stable", - "License :: OSI Approved :: GNU Affero General Public License v3", - "Operating System :: POSIX", - "Programming Language :: Python", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Topic :: Scientific/Engineering :: Information Analysis", - ], - description = "An OpenFisca extension that adds some variables to an already-existing tax and benefit system", - long_description=long_description, - long_description_content_type="text/markdown", - keywords = "benefit microsimulation social tax", - license = "http://www.fsf.org/licensing/licenses/agpl-3.0.html", - license_files = ("LICENSE",), - url = "https://github.com/openfisca/extension-template", - include_package_data = True, # Will read MANIFEST.in - data_files = [ - ("share/openfisca/openfisca-extension-template", ["CHANGELOG.md", "README.md"]), - ], - install_requires = [ - "OpenFisca-Country-Template >= 3.8.0, < 4", - ], - extras_require = { - "dev": [ - "autopep8 >= 1.5.4, < 2.0.0", - "flake8 >= 3.8.0, < 4.0.0", - "flake8-bugbear >= 20.1.0, < 22.0.0", - "flake8-builtins >= 1.5.0, < 2.0.0", - "flake8-coding >= 1.3.0, < 2.0.0", - "flake8-commas >= 2.0.0, < 3.0.0", - "flake8-comprehensions >= 3.2.0, < 4.0.0", - "flake8-docstrings >= 1.5.0, < 2.0.0", - "flake8-import-order >= 0.18.0, < 1.0.0", - "flake8-print >= 3.1.0, < 5.0.0", - "flake8-quotes >= 3.2.0, < 4.0.0", - "flake8-simplify >= 0.9.0, < 1.0.0", - "flake8-use-fstring >= 1.1.0, < 2.0.0", - "pylint >= 2.6.0, < 3.0.0", - "pycodestyle >= 2.6.0, < 3.0.0", - ], - }, - packages = find_packages(), - ) diff --git a/src/openfisca_extension_template/variables/local_benefit.py b/src/openfisca_extension_template/variables/local_benefit.py index 78eb611..6d211cc 100644 --- a/src/openfisca_extension_template/variables/local_benefit.py +++ b/src/openfisca_extension_template/variables/local_benefit.py @@ -1,32 +1,41 @@ -""" -This file defines an additional variable for the modelled legislation. +"""This file defines an additional variable for the modelled legislation. A variable is a property of an Entity such as a Person, a Household… See https://openfisca.org/doc/key-concepts/variables.html + """ -# Import from openfisca-core the Python objects used to code the legislation in OpenFisca +# Import from openfisca-core the Python objects used to code the legislation +from openfisca_core import periods, variables + # Import the entities specifically defined for this tax and benefit system -from openfisca_core.periods import MONTH -from openfisca_core.variables import Variable -from openfisca_country_template.entities import Household +from openfisca_country_template import entities -class local_town_child_allowance(Variable): +class local_town_child_allowance(variables.Variable): value_type = float - entity = Household - definition_period = MONTH + entity = entities.Household + definition_period = periods.MONTH label = "Local benefit: a fixed amount by child each month" - def formula(famille, period, parameters): - """ - Local benefit. + def formula(self, period, parameters): + """Local benefit. Extensions can only add variables and parameters to the tax and benefit - system: they cannot modify or neutralize existing ones. + system (they cannot modify or neutralize existing ones). + + Args: + period: The period of the variable. + parameters: Parameters that are used in the formula. + + Returns: + The amount per child multiplied by the number of children, for each + household in `family`. + """ - nb_children = famille.nb_persons(role = Household.CHILD) - amount_by_child = parameters(period).local_town.child_allowance.amount + nb_children = self.nb_persons(role = entities.Household.CHILD) + + amount_per_child = parameters(period).local_town.child_allowance.amount - return nb_children * amount_by_child + return nb_children * amount_per_child From 23b4680b39d769ecadb6607652c9ce97ec1940e3 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 01:06:20 +0100 Subject: [PATCH 09/20] Add github actions --- .github/dependabot.yml | 15 --------------- .github/workflows/test.yaml | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 15 deletions(-) delete mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/test.yaml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index ec29e4a..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: 2 -updates: -- package-ecosystem: pip - directory: "/" - schedule: - interval: daily - time: "00:00" - timezone: Europe/Paris - open-pull-requests-limit: 2 - reviewers: - - sandcha - - fpagnoux - - Morendil - labels: - - kind:dependencies diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..19d8c6b --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,33 @@ +name: Test + +on: [ push ] + +jobs: + test: + strategy: + fail-fast: true + matrix: + python: [3.7.15, 3.8.15, 3.9.15] + os: [ubuntu-latest, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + name: test-${{ matrix.python }}-${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Install dependencies + run: make deps + + - name: Run tests + run: nox -s "test(python=${{ matrix.python }})" From 78095045991febc80d1c0f843f7e48cf3cdb5ff2 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 01:10:32 +0100 Subject: [PATCH 10/20] Fix version numbers --- .github/workflows/test.yaml | 4 ++-- noxfile.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 19d8c6b..140d604 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -7,7 +7,7 @@ jobs: strategy: fail-fast: true matrix: - python: [3.7.15, 3.8.15, 3.9.15] + python: [3.7.9, 3.8.10, 3.9.13] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} @@ -30,4 +30,4 @@ jobs: run: make deps - name: Run tests - run: nox -s "test(python=${{ matrix.python }})" + run: nox -s "test(python='${{ matrix.python }}')" diff --git a/noxfile.py b/noxfile.py index bd35e00..1d9571a 100644 --- a/noxfile.py +++ b/noxfile.py @@ -7,7 +7,7 @@ @nox_poetry.session -@nox.parametrize("python", ("3.7.15", "3.8.15", "3.9.15")) +@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) def test(session): """Run tests.""" session.run("make", "install", external = True) From 0d20e8481df38401a6ce61b7fd3cd4e0a6efa95d Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 01:27:58 +0100 Subject: [PATCH 11/20] Fix make test --- Makefile | 10 +++++----- noxfile.py | 3 +-- poetry.lock | 6 ++---- pyproject.toml | 8 +++++--- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 73ffc44..1a1896a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .DEFAULT_GOAL := test uninstall: - @python -m pip freeze | grep -v "^-e" | xargs pip uninstall -y + @pip freeze | grep -v "^-e" | sed "s/@.*//" | xargs pip uninstall -y deps: @python -m pip install --upgrade \ @@ -41,14 +41,14 @@ lint: compile clean @python -m poetry run pylint `git ls-files | grep "\.py$$"` test: format type lint - @python -m poetry run openfisca test `git ls-files | grep "test\.yaml$$"` \ + @python -m poetry run openfisca test `git ls-files | grep "_test\.yaml$$"` \ --country-package openfisca_country_template \ --extensions openfisca_extension_template build: compile clean deps @# Install OpenFisca-Extension-Template for deployment and publishing. - @# `make build` allows us to be be sure tests are run against the packaged version - @# of OpenFisca-Extension-Template, the same we put in the hands of users and reusers. + @# `make build` allows us to test against the packaged version of + @# of OpenFisca-Extension-Template, the same we put in the hands of users. @python -m poetry build @python -m pip uninstall --yes openfisca-extension-template - @find dist -name "*.whl" -exec pip install --force-reinstall {} \; + @find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; diff --git a/noxfile.py b/noxfile.py index 1d9571a..e3ceae3 100644 --- a/noxfile.py +++ b/noxfile.py @@ -10,6 +10,5 @@ @nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) def test(session): """Run tests.""" - session.run("make", "install", external = True) - session.install(".") + session.run("make", "build", external = True) session.run("make", "test", external = True) diff --git a/poetry.lock b/poetry.lock index 016b1ba..2529e60 100644 --- a/poetry.lock +++ b/poetry.lock @@ -813,14 +813,12 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -format = ["autopep8", "isort", "pyupgrade"] -lint = ["darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-pyproject", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "pycodestyle", "pylint"] -type = ["mypy"] +dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-pyproject", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "isort", "mypy", "pycodestyle", "pylint", "pyupgrade"] [metadata] lock-version = "1.1" python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "c2e862cde52f906c8a43aeb6cdf68b4add4180a18de79da57637ec2d0ef46167" +content-hash = "fc3a4a322d4a2158d4505098055f98cb4925cbc5786646d5520a5a985638e05d" [metadata.files] astor = [ diff --git a/pyproject.toml b/pyproject.toml index 69859be..8a1498f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,9 +47,8 @@ pylint = {version = "^2.15.0", optional = true} pyupgrade = {version = "^3.2.2", optional = true} [tool.poetry.extras] -format = ["autopep8", "isort", "pyupgrade"] -type = ["mypy"] -lint = [ +dev = [ + "autopep8", "darglint", "flake8", "flake8-bugbear", @@ -63,8 +62,11 @@ lint = [ "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", + "isort", + "mypy", "pycodestyle", "pylint", + "pyupgrade", ] [tool.autopep8] From 7c1479985a235a7e8234b857f2cec59637aaefb5 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 02:26:01 +0100 Subject: [PATCH 12/20] Fix deps compatibility --- .github/workflows/test.yaml | 2 +- Makefile | 14 +- noxfile.py | 1 + poetry.lock | 386 +++++++++++++++--------------------- pyproject.toml | 33 +-- setup.cfg | 17 ++ 6 files changed, 193 insertions(+), 260 deletions(-) create mode 100644 setup.cfg diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 140d604..ed48c15 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -27,7 +27,7 @@ jobs: architecture: x64 - name: Install dependencies - run: make deps + run: make dependencies - name: Run tests run: nox -s "test(python='${{ matrix.python }}')" diff --git a/Makefile b/Makefile index 1a1896a..7d429d8 100644 --- a/Makefile +++ b/Makefile @@ -3,14 +3,10 @@ uninstall: @pip freeze | grep -v "^-e" | sed "s/@.*//" | xargs pip uninstall -y -deps: - @python -m pip install --upgrade \ - nox \ - nox-poetry \ - pip \ - poetry - -install: deps +dependencies: + @python -m pip install --upgrade nox nox-poetry pip poetry + +install: dependencies @# Install OpenFisca-Extension-Template for development. `make install` @# installs the editable version of OpenFisca-Extension-Template. This @# allows contributors to test as they code. @@ -45,7 +41,7 @@ test: format type lint --country-package openfisca_country_template \ --extensions openfisca_extension_template -build: compile clean deps +build: compile clean @# Install OpenFisca-Extension-Template for deployment and publishing. @# `make build` allows us to test against the packaged version of @# of OpenFisca-Extension-Template, the same we put in the hands of users. diff --git a/noxfile.py b/noxfile.py index e3ceae3..894d6f3 100644 --- a/noxfile.py +++ b/noxfile.py @@ -10,5 +10,6 @@ @nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) def test(session): """Run tests.""" + session.run("make", "dependencies", external = True) session.run("make", "build", external = True) session.run("make", "test", external = True) diff --git a/poetry.lock b/poetry.lock index 2529e60..c735d0c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,23 +44,27 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy [[package]] name = "autopep8" -version = "2.0.0" +version = "1.5.7" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" category = "main" optional = true python-versions = "*" [package.dependencies] -pycodestyle = ">=2.9.1" -tomli = "*" +pycodestyle = ">=2.7.0" +toml = "*" [[package]] name = "click" -version = "7.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "colorama" @@ -99,25 +103,25 @@ python-versions = ">=3.7" [[package]] name = "dpath" -version = "2.0.6" +version = "1.5.0" description = "Filesystem-like pathing and searching for dictionaries" category = "main" optional = false -python-versions = ">=3" +python-versions = "*" [[package]] name = "flake8" -version = "5.0.4" +version = "3.9.2" description = "the modular source code checker: pep8 pyflakes and co" category = "main" optional = true -python-versions = ">=3.6.1" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [package.dependencies] -importlib-metadata = {version = ">=1.1.0,<4.3", markers = "python_version < \"3.8\""} -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.7.0,<2.8.0" +pyflakes = ">=2.3.0,<2.4.0" [[package]] name = "flake8-bugbear" @@ -206,21 +210,6 @@ python-versions = ">=3.7" flake8 = ">=3.0" pycodestyle = "*" -[[package]] -name = "flake8-pyproject" -version = "1.1.0.post0" -description = "Flake8 plug-in loading the configuration from pyproject.toml" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.dependencies] -Flake8 = ">=5,<6" -TOMLi = {version = "*", markers = "python_version < \"3.11\""} - -[package.extras] -test = ["pyTest", "pyTest-cov"] - [[package]] name = "flake8-rst-docstrings" version = "0.2.7" @@ -265,17 +254,17 @@ test = ["coverage (>=4.0.0,<5.0.0)", "flake8-builtins", "flake8-commas", "flake8 [[package]] name = "flask" -version = "1.1.4" +version = "1.1.2" description = "A simple framework for building complex web applications." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] -click = ">=5.1,<8.0" -itsdangerous = ">=0.24,<2.0" -Jinja2 = ">=2.10.1,<3.0" -Werkzeug = ">=0.15,<2.0" +click = ">=5.1" +itsdangerous = ">=0.24" +Jinja2 = ">=2.10.1" +Werkzeug = ">=0.15" [package.extras] dev = ["coverage", "pallets-sphinx-themes", "pytest", "sphinx", "sphinx-issues", "sphinxcontrib-log-cabinet", "tox"] @@ -313,19 +302,20 @@ tornado = ["tornado (>=0.2)"] [[package]] name = "importlib-metadata" -version = "4.2.0" +version = "4.13.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pep517", "pyfakefs", "pytest (>=4.6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +perf = ["ipython"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] [[package]] name = "isort" @@ -343,25 +333,25 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "itsdangerous" -version = "1.1.0" -description = "Various helpers to pass data to untrusted environments and back." +version = "2.1.2" +description = "Safely pass data to untrusted environments and back." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.7" [[package]] name = "jinja2" -version = "2.11.3" +version = "3.1.2" description = "A very fast and expressive template engine." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" [package.dependencies] -MarkupSafe = ">=0.23" +MarkupSafe = ">=2.0" [package.extras] -i18n = ["Babel (>=0.8)"] +i18n = ["Babel (>=2.7)"] [[package]] name = "lazy-object-proxy" @@ -373,19 +363,19 @@ python-versions = ">=3.7" [[package]] name = "markupsafe" -version = "2.0.1" +version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "mccabe" -version = "0.7.0" +version = "0.6.1" description = "McCabe checker, plugin for flake8" category = "main" optional = true -python-versions = ">=3.6" +python-versions = "*" [[package]] name = "more-itertools" @@ -397,7 +387,7 @@ python-versions = ">=3.7" [[package]] name = "mypy" -version = "0.991" +version = "0.990" description = "Optional static typing for Python" category = "main" optional = true @@ -423,21 +413,6 @@ category = "main" optional = true python-versions = "*" -[[package]] -name = "nptyping" -version = "1.4.4" -description = "Type hints for Numpy." -category = "main" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -numpy = "*" -typish = ">=1.7.0" - -[package.extras] -test = ["autoflake", "codecov", "coverage", "isort", "pycodestyle", "pylint", "pytest", "radon", "scons", "xenon"] - [[package]] name = "numexpr" version = "2.8.4" @@ -459,32 +434,29 @@ python-versions = ">=3.7" [[package]] name = "openfisca-core" -version = "35.9.0" +version = "35.5.5" description = "A versatile microsimulation free software" category = "main" optional = false python-versions = "*" [package.dependencies] -dpath = ">=1.5.0,<3.0.0" -flask = {version = "1.1.4", optional = true, markers = "extra == \"web-api\""} +dpath = ">=1.5.0,<2.0.0" +flask = {version = "1.1.2", optional = true, markers = "extra == \"web-api\""} flask-cors = {version = "3.0.10", optional = true, markers = "extra == \"web-api\""} gunicorn = {version = ">=20.0.0,<21.0.0", optional = true, markers = "extra == \"web-api\""} -markupsafe = {version = "2.0.1", optional = true, markers = "extra == \"web-api\""} -nptyping = "1.4.4" numexpr = ">=2.7.0,<=3.0" numpy = ">=1.11,<1.21" psutil = ">=5.4.7,<6.0.0" pytest = ">=4.4.1,<6.0.0" PyYAML = ">=3.10" sortedcontainers = "2.2.2" -typing-extensions = "3.10.0.2" werkzeug = {version = ">=1.0.0,<2.0.0", optional = true, markers = "extra == \"web-api\""} [package.extras] -dev = ["autopep8 (>=1.4.0,<1.6.0)", "coverage (==6.0.2)", "darglint (==1.8.0)", "flake8 (>=4.0.0,<4.1.0)", "flake8-bugbear (>=19.3.0,<20.0.0)", "flake8-docstrings (==1.6.0)", "flake8-print (>=3.1.0,<4.0.0)", "flake8-rst-docstrings (==0.2.3)", "flask (==1.1.4)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "markupsafe (==2.0.1)", "mypy (==0.910)", "openfisca-country-template (>=3.10.0,<4.0.0)", "openfisca-extension-template (>=1.2.0rc0,<2.0.0)", "pycodestyle (>=2.8.0,<2.9.0)", "pylint (==2.10.2)", "werkzeug (>=1.0.0,<2.0.0)"] +dev = ["autopep8 (>=1.4.0,<1.6.0)", "darglint (==1.8.0)", "flake8 (>=3.9.0,<4.0.0)", "flake8-bugbear (>=19.3.0,<20.0.0)", "flake8-docstrings (==1.6.0)", "flake8-print (>=3.1.0,<4.0.0)", "flake8-rst-docstrings (<1.0.0)", "flask (==1.1.2)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "mypy (>=0.701,<0.800)", "openfisca-country-template (>=3.10.0,<4.0.0)", "openfisca-extension-template (>=1.2.0rc0,<2.0.0)", "pylint (==2.10.2)", "pytest-cov (>=2.6.1,<3.0.0)", "werkzeug (>=1.0.0,<2.0.0)"] tracker = ["openfisca-tracker (==0.4.0)"] -web-api = ["flask (==1.1.4)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "markupsafe (==2.0.1)", "werkzeug (>=1.0.0,<2.0.0)"] +web-api = ["flask (==1.1.2)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "werkzeug (>=1.0.0,<2.0.0)"] [[package]] name = "openfisca-country-template" @@ -558,11 +530,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "pycodestyle" -version = "2.9.1" +version = "2.7.0" description = "Python style guide checker" category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pydocstyle" @@ -580,11 +552,11 @@ toml = ["toml"] [[package]] name = "pyflakes" -version = "2.5.0" +version = "2.3.1" description = "passive checker of Python programs" category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pygments" @@ -729,6 +701,14 @@ category = "main" optional = true python-versions = ">=3.7" +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" +optional = true +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + [[package]] name = "tomli" version = "2.0.1" @@ -755,22 +735,11 @@ python-versions = ">=3.6" [[package]] name = "typing-extensions" -version = "3.10.0.2" -description = "Backported and Experimental Type Hints for Python 3.5+" -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "typish" -version = "1.9.3" -description = "Functionality for types" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false -python-versions = "*" - -[package.extras] -test = ["codecov", "coverage", "mypy", "nptyping (>=1.3.0)", "numpy", "pycodestyle", "pylint", "pytest"] +python-versions = ">=3.7" [[package]] name = "wcwidth" @@ -813,12 +782,12 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-pyproject", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "isort", "mypy", "pycodestyle", "pylint", "pyupgrade"] +dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "importlib-metadata", "isort", "mypy", "pycodestyle", "pylint", "pyupgrade"] [metadata] lock-version = "1.1" python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "fc3a4a322d4a2158d4505098055f98cb4925cbc5786646d5520a5a985638e05d" +content-hash = "63996348fb5eb835695fe1f94db57896fc8f1cdf3edc1639c9311a52af101d94" [metadata.files] astor = [ @@ -837,12 +806,12 @@ attrs = [ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] autopep8 = [ - {file = "autopep8-2.0.0-py2.py3-none-any.whl", hash = "sha256:ad924b42c2e27a1ac58e432166cc4588f5b80747de02d0d35b1ecbd3e7d57207"}, - {file = "autopep8-2.0.0.tar.gz", hash = "sha256:8b1659c7f003e693199f52caffdc06585bb0716900bbc6a7442fd931d658c077"}, + {file = "autopep8-1.5.7-py2.py3-none-any.whl", hash = "sha256:aa213493c30dcdac99537249ee65b24af0b2c29f2e83cd8b3f68760441ed0db9"}, + {file = "autopep8-1.5.7.tar.gz", hash = "sha256:276ced7e9e3cb22e5d7c14748384a5cf5d9002257c0ed50c0e075b68011bb6d0"}, ] click = [ - {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, - {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] colorama = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, @@ -861,12 +830,11 @@ docutils = [ {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] dpath = [ - {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, - {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, + {file = "dpath-1.5.0.tar.gz", hash = "sha256:496615b4ea84236d18e0d286122de74869a60e0f87e2c7ec6787ff286c48361b"}, ] flake8 = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, + {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, ] flake8-bugbear = [ {file = "flake8-bugbear-22.10.27.tar.gz", hash = "sha256:a6708608965c9e0de5fff13904fed82e0ba21ac929fe4896459226a797e11cd5"}, @@ -896,9 +864,6 @@ flake8-print = [ {file = "flake8-print-5.0.0.tar.gz", hash = "sha256:76915a2a389cc1c0879636c219eb909c38501d3a43cc8dae542081c9ba48bdf9"}, {file = "flake8_print-5.0.0-py3-none-any.whl", hash = "sha256:84a1a6ea10d7056b804221ac5e62b1cee1aefc897ce16f2e5c42d3046068f5d8"}, ] -flake8-pyproject = [ - {file = "flake8_pyproject-1.1.0.post0-py3-none-any.whl", hash = "sha256:55bc7cbb4272dca45ba42521954452be9d443237fa9b78a09d0424bbd5c94fab"}, -] flake8-rst-docstrings = [ {file = "flake8-rst-docstrings-0.2.7.tar.gz", hash = "sha256:2740067ab9237559dd45a3434d8c987792c7b259ca563621a3b95efe201f5382"}, {file = "flake8_rst_docstrings-0.2.7-py3-none-any.whl", hash = "sha256:5d56075dce360bcc9c6775bfe7cb431aa395de600ca7e8d40580a28d50b2a803"}, @@ -911,8 +876,8 @@ flake8-use-fstring = [ {file = "flake8-use-fstring-1.4.tar.gz", hash = "sha256:6550bf722585eb97dffa8343b0f1c372101f5c4ab5b07ebf0edd1c79880cdd39"}, ] flask = [ - {file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"}, - {file = "Flask-1.1.4.tar.gz", hash = "sha256:0fbeb6180d383a9186d0d6ed954e0042ad9f18e0e8de088b2b419d526927d196"}, + {file = "Flask-1.1.2-py2.py3-none-any.whl", hash = "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"}, + {file = "Flask-1.1.2.tar.gz", hash = "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060"}, ] flask-cors = [ {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"}, @@ -923,20 +888,20 @@ gunicorn = [ {file = "gunicorn-20.1.0.tar.gz", hash = "sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.2.0-py3-none-any.whl", hash = "sha256:057e92c15bc8d9e8109738a48db0ccb31b4d9d5cfbee5a8670879a30be66304b"}, - {file = "importlib_metadata-4.2.0.tar.gz", hash = "sha256:b7e52a1f8dec14a75ea73e0891f3060099ca1d8e6a462a4dff11c3e119ea1b31"}, + {file = "importlib_metadata-4.13.0-py3-none-any.whl", hash = "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116"}, + {file = "importlib_metadata-4.13.0.tar.gz", hash = "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d"}, ] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] itsdangerous = [ - {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, - {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, + {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, + {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, ] jinja2 = [ - {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, - {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] lazy-object-proxy = [ {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, @@ -960,123 +925,91 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, ] markupsafe = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] mccabe = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] more-itertools = [ {file = "more-itertools-9.0.0.tar.gz", hash = "sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab"}, {file = "more_itertools-9.0.0-py3-none-any.whl", hash = "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41"}, ] mypy = [ - {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, - {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, - {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, - {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, - {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, - {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, - {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, - {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, - {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, - {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, - {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, - {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, - {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, - {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, - {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, - {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, - {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, - {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, - {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, - {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, - {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, - {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, - {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, - {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, - {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, - {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, - {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, + {file = "mypy-0.990-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aaf1be63e0207d7d17be942dcf9a6b641745581fe6c64df9a38deb562a7dbafa"}, + {file = "mypy-0.990-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d555aa7f44cecb7ea3c0ac69d58b1a5afb92caa017285a8e9c4efbf0518b61b4"}, + {file = "mypy-0.990-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f694d6d09a460b117dccb6857dda269188e3437c880d7b60fa0014fa872d1e9"}, + {file = "mypy-0.990-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:269f0dfb6463b8780333310ff4b5134425157ef0d2b1d614015adaf6d6a7eabd"}, + {file = "mypy-0.990-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8798c8ed83aa809f053abff08664bdca056038f5a02af3660de00b7290b64c47"}, + {file = "mypy-0.990-cp310-cp310-win_amd64.whl", hash = "sha256:47a9955214615108c3480a500cfda8513a0b1cd3c09a1ed42764ca0dd7b931dd"}, + {file = "mypy-0.990-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4a8a6c10f4c63fbf6ad6c03eba22c9331b3946a4cec97f008e9ffb4d3b31e8e2"}, + {file = "mypy-0.990-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd2dd3730ba894ec2a2082cc703fbf3e95a08479f7be84912e3131fc68809d46"}, + {file = "mypy-0.990-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7da0005e47975287a92b43276e460ac1831af3d23032c34e67d003388a0ce8d0"}, + {file = "mypy-0.990-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262c543ef24deb10470a3c1c254bb986714e2b6b1a67d66daf836a548a9f316c"}, + {file = "mypy-0.990-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ff201a0c6d3ea029d73b1648943387d75aa052491365b101f6edd5570d018ea"}, + {file = "mypy-0.990-cp311-cp311-win_amd64.whl", hash = "sha256:1767830da2d1afa4e62b684647af0ff79b401f004d7fa08bc5b0ce2d45bcd5ec"}, + {file = "mypy-0.990-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6826d9c4d85bbf6d68cb279b561de6a4d8d778ca8e9ab2d00ee768ab501a9852"}, + {file = "mypy-0.990-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46897755f944176fbc504178422a5a2875bbf3f7436727374724842c0987b5af"}, + {file = "mypy-0.990-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0680389c34284287fe00e82fc8bccdea9aff318f7e7d55b90d967a13a9606013"}, + {file = "mypy-0.990-cp37-cp37m-win_amd64.whl", hash = "sha256:b08541a06eed35b543ae1a6b301590eb61826a1eb099417676ddc5a42aa151c5"}, + {file = "mypy-0.990-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:be88d665e76b452c26fb2bdc3d54555c01226fba062b004ede780b190a50f9db"}, + {file = "mypy-0.990-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b8f4a8213b1fd4b751e26b59ae0e0c12896568d7e805861035c7a15ed6dc9eb"}, + {file = "mypy-0.990-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b6f85c2ad378e3224e017904a051b26660087b3b76490d533b7344f1546d3ff"}, + {file = "mypy-0.990-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ee5f99817ee70254e7eb5cf97c1b11dda29c6893d846c8b07bce449184e9466"}, + {file = "mypy-0.990-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49082382f571c3186ce9ea0bd627cb1345d4da8d44a8377870f4442401f0a706"}, + {file = "mypy-0.990-cp38-cp38-win_amd64.whl", hash = "sha256:aba38e3dd66bdbafbbfe9c6e79637841928ea4c79b32e334099463c17b0d90ef"}, + {file = "mypy-0.990-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9d851c09b981a65d9d283a8ccb5b1d0b698e580493416a10942ef1a04b19fd37"}, + {file = "mypy-0.990-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d847dd23540e2912d9667602271e5ebf25e5788e7da46da5ffd98e7872616e8e"}, + {file = "mypy-0.990-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc6019808580565040cd2a561b593d7c3c646badd7e580e07d875eb1bf35c695"}, + {file = "mypy-0.990-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3150d409609a775c8cb65dbe305c4edd7fe576c22ea79d77d1454acd9aeda8"}, + {file = "mypy-0.990-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3227f14fe943524f5794679156488f18bf8d34bfecd4623cf76bc55958d229c5"}, + {file = "mypy-0.990-cp39-cp39-win_amd64.whl", hash = "sha256:c76c769c46a1e6062a84837badcb2a7b0cdb153d68601a61f60739c37d41cc74"}, + {file = "mypy-0.990-py3-none-any.whl", hash = "sha256:8f1940325a8ed460ba03d19ab83742260fa9534804c317224e5d4e5aa588e2d6"}, + {file = "mypy-0.990.tar.gz", hash = "sha256:72382cb609142dba3f04140d016c94b4092bc7b4d98ca718740dc989e5271b8d"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -nptyping = [ - {file = "nptyping-1.4.4-py3-none-any.whl", hash = "sha256:8128473b8ba0e65f3d6edc727cd99024e162edcf7e8a0ea8f9dfa6b070934d14"}, -] numexpr = [ {file = "numexpr-2.8.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a75967d46b6bd56455dd32da6285e5ffabe155d0ee61eef685bbfb8dafb2e484"}, {file = "numexpr-2.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db93cf1842f068247de631bfc8af20118bf1f9447cd929b531595a5e0efc9346"}, @@ -1136,8 +1069,7 @@ numpy = [ {file = "numpy-1.20.3.zip", hash = "sha256:e55185e51b18d788e49fe8305fd73ef4470596b33fc2c1ceb304566b99c71a69"}, ] openfisca-core = [ - {file = "OpenFisca-Core-35.9.0.tar.gz", hash = "sha256:9509cf7733fd3a1ab6225a3b6f799e595ce928a9bdcfc4d863a3e9bd0f920380"}, - {file = "OpenFisca_Core-35.9.0-py3-none-any.whl", hash = "sha256:433125c6700842ebb7d2a77a81e1f7a69b1a669b2a6c70e41fbc133582869738"}, + {file = "OpenFisca_Core-35.5.5-py3-none-any.whl", hash = "sha256:8921878709dfb98944d87f319a183cdf1a79d07f49491e885d60e24c88649387"}, ] openfisca-country-template = [ {file = "OpenFisca-Country-Template-3.13.2.tar.gz", hash = "sha256:7c21c7bca96bbfc79b5c5437fbd859bf6c4877b3eba6d12790b8c2816ad3bde7"}, @@ -1176,16 +1108,16 @@ py = [ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] pycodestyle = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, + {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, + {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, ] pydocstyle = [ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, ] pyflakes = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, + {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, + {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] pygments = [ {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, @@ -1272,6 +1204,10 @@ tokenize-rt = [ {file = "tokenize_rt-5.0.0-py2.py3-none-any.whl", hash = "sha256:c67772c662c6b3dc65edf66808577968fb10badfc2042e3027196bed4daf9e5a"}, {file = "tokenize_rt-5.0.0.tar.gz", hash = "sha256:3160bc0c3e8491312d0485171dea861fc160a240f5f5766b72a1165408d10740"}, ] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] tomli = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -1307,12 +1243,8 @@ typed-ast = [ {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, ] typing-extensions = [ - {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, - {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"}, - {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"}, -] -typish = [ - {file = "typish-1.9.3-py3-none-any.whl", hash = "sha256:03cfee5e6eb856dbf90244e18f4e4c41044c8790d5779f4e775f63f982e2f896"}, + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, diff --git a/pyproject.toml b/pyproject.toml index 8a1498f..7630351 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,9 +26,9 @@ packages = [{include = "openfisca_extension_template", from = "src"}] python = "~3.7.2 || ~3.8 || ~3.9" openfisca_country_template = "^3.8.0" pyyaml = "^6.0" -autopep8 = {version = "^2.0.0", optional = true} -darglint = {version ="^1.8.1", optional = true} -flake8 = {version = "^5.0.0", optional = true} +autopep8 = {version = "^1.5.0", optional = true} +darglint = {version ="^1.8.0", optional = true} +flake8 = {version = "^3.9.0", optional = true} flake8-bugbear = {version = "^22.10.0", optional = true} flake8-builtins = {version = "2.0.0", optional = true} flake8-coding = {version = "^1.3.0", optional = true} @@ -36,15 +36,15 @@ flake8-commas = {version = "^2.1.0", optional = true} flake8-comprehensions = {version = "^3.10.0", optional = true} flake8-docstrings = {version ="^1.6.0", optional = true} flake8-print = {version = "^5.0.0", optional = true} -flake8-pyproject = {version = "^1.1.0.post0", optional = true} -flake8-rst-docstrings = {version ="^0.2.7", optional = true} +flake8-rst-docstrings = {version ="^0.2.0", optional = true} flake8-simplify = {version = "^0.19.0", optional = true} flake8-use-fstring = {version = "^1.4.0", optional = true} -isort = {version = "^5.10.1", optional = true} -mypy = {version = "^0.991", optional = true} -pycodestyle = {version = "^2.9.0", optional = true} +importlib-metadata = {version = "^4.13.0", python = "~3.7", optional = true} +isort = {version = "^5.10.0", optional = true} +mypy = {version = "^0.990", optional = true} +pycodestyle = {version = "^2.7.0", optional = true} pylint = {version = "^2.15.0", optional = true} -pyupgrade = {version = "^3.2.2", optional = true} +pyupgrade = {version = "^3.2.0", optional = true} [tool.poetry.extras] dev = [ @@ -58,10 +58,10 @@ dev = [ "flake8-comprehensions", "flake8-docstrings", "flake8-print", - "flake8-pyproject", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", + "importlib-metadata", "isort", "mypy", "pycodestyle", @@ -105,19 +105,6 @@ sections = [ "LOCALFOLDER", ] -[tool.flake8] -hang-closing = true -ignore = [ - "D101", # Variables already provide label/description - "D107", # We do not document the __init__ method - "D401", # We do not require the imperative mood - "E128", # We prefer hang-closing visual indents - "E251", # We prefer `function(x = 1)` over `function(x=1)` - "W503", # We break lines before binary operators (Knuth's style) - ] -no-accept-encodings = true -strictness = "short" - [tool.pylint."MASTER"] load-plugins = ["pylint.extensions.no_self_use"] diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..c9eb0d2 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,17 @@ +[flake8] +hang-closing = True +ignore = + ; Variables already provide label/description + D101, + ; We do not document the __init__ method + D107, + ; We do not require the imperative mood + D401, + ; We prefer hang-closing visual indents + E128, + ; We prefer `function(x = 1)` over `function(x=1)` + E251, + ; We break lines before binary operators (Knuth's style) + W503, +no-accept-encodings = True +strictness = short From 83dbd8fe938ddca742f1dd23e64a094068fc13e9 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 02:39:26 +0100 Subject: [PATCH 13/20] Fix shell --- Makefile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Makefile b/Makefile index 7d429d8..bb23a90 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,11 @@ +ifeq ($(OS),Windows_NT) + SHELL := bash.exe +else + SHELL := /usr/bin/env bash +endif + +.SHELLFLAGS := -eo pipefail -c + .DEFAULT_GOAL := test uninstall: From 68a0d65017f5e490cc1e9955837d046dddeb642b Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 03:24:46 +0100 Subject: [PATCH 14/20] Add caching --- .github/workflows/test.yaml | 49 ++++++++++++++++++++++++++++++++++--- Makefile | 18 ++++++++------ ] | 17 +++++++++++++ noxfile.py | 27 +++++++++++++++++--- 4 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 ] diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ed48c15..4c8b66c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -9,6 +9,13 @@ jobs: matrix: python: [3.7.9, 3.8.10, 3.9.13] os: [ubuntu-latest, macos-latest, windows-latest] + include: + - os: ubuntu-latest + path: ~/.cache/pip + - os: macos-latest + path: ~/Library/Caches/pip + - os: windows-latest + path: ~\AppData\Local\pip\Cache runs-on: ${{ matrix.os }} @@ -26,8 +33,44 @@ jobs: python-version: ${{ matrix.python }} architecture: x64 - - name: Install dependencies + - name: Cache dependencies + id: cache-deps + uses: actions/cache@v3 + with: + path: ${{ matrix.path }} + key: ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('Makefile') }} + restore-keys: | + ${{ matrix.python }}-${{ matrix.os }}- + + - name: Dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' run: make dependencies - - name: Run tests - run: nox -s "test(python='${{ matrix.python }}')" + - name: Cache install + id: cache-install + uses: actions/cache@v3 + with: + path: ${{ matrix.path }} + key: ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('poetry.lock') }} + restore-keys: | + ${{ matrix.python }}-${{ matrix.os }}- + + - name: Install + if: steps.cache-install.outputs.cache-hit != 'true' + run: make install + + - name: Cache Build + id: cache-build + uses: actions/cache@v3 + with: + path: ${{ matrix.path }} + key: ${{ matrix.python }}-${{ matrix.os }}-${{ github.sha }} + restore-keys: | + ${{ matrix.python }}-${{ matrix.os }}- + + - name: Build + if: steps.cache-build.outputs.cache-hit != 'true' + run: make build + + - name: Test + run: make test diff --git a/Makefile b/Makefile index bb23a90..e5b499d 100644 --- a/Makefile +++ b/Makefile @@ -8,13 +8,13 @@ endif .DEFAULT_GOAL := test +dependencies: + @python -m pip install --upgrade nox pip poetry nox-poetry + uninstall: @pip freeze | grep -v "^-e" | sed "s/@.*//" | xargs pip uninstall -y -dependencies: - @python -m pip install --upgrade nox nox-poetry pip poetry - -install: dependencies +install: @# Install OpenFisca-Extension-Template for development. `make install` @# installs the editable version of OpenFisca-Extension-Template. This @# allows contributors to test as they code. @@ -45,9 +45,10 @@ lint: compile clean @python -m poetry run pylint `git ls-files | grep "\.py$$"` test: format type lint - @python -m poetry run openfisca test `git ls-files | grep "_test\.yaml$$"` \ - --country-package openfisca_country_template \ - --extensions openfisca_extension_template + @python -m poetry run \ + openfisca test `git ls-files | grep "_test\.yaml$$"` \ + --country-package openfisca_country_template \ + --extensions openfisca_extension_template build: compile clean @# Install OpenFisca-Extension-Template for deployment and publishing. @@ -55,4 +56,5 @@ build: compile clean @# of OpenFisca-Extension-Template, the same we put in the hands of users. @python -m poetry build @python -m pip uninstall --yes openfisca-extension-template - @find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; + @find dist -name "*.whl" \ + -exec pip install --force-reinstall --no-dependencies {} \; diff --git a/] b/] new file mode 100644 index 0000000..3552a58 --- /dev/null +++ b/] @@ -0,0 +1,17 @@ +Add caching + +# Please enter the commit message for your changes. Lines starting +# with '#' will be ignored, and an empty message aborts the commit. +# +# Date: Wed Nov 16 03:24:46 2022 +0100 +# +# On branch use-poetry-and-poet +# Your branch and 'origin/use-poetry-and-poet' have diverged, +# and have 1 and 1 different commits each, respectively. +# (use "git pull" to merge the remote branch into yours) +# +# Changes to be committed: +# modified: .github/workflows/test.yaml +# modified: Makefile +# modified: noxfile.py +# diff --git a/noxfile.py b/noxfile.py index 894d6f3..f6af5a3 100644 --- a/noxfile.py +++ b/noxfile.py @@ -1,15 +1,34 @@ """Nox config file.""" -import nox -import nox_poetry +import nox # pylint: disable=import-error +import nox_poetry # pylint: disable=import-error -nox.options.reuse_existing_virtualenvs = False +nox.options.reuse_existing_virtualenvs = True @nox_poetry.session @nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) -def test(session): +def dependencies(session): """Run tests.""" session.run("make", "dependencies", external = True) + + +@nox_poetry.session +@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) +def install(session): + """Run tests.""" + session.run("make", "install", external = True) + + +@nox_poetry.session +@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) +def build(session): + """Run tests.""" session.run("make", "build", external = True) + + +@nox_poetry.session +@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) +def test(session): + """Run tests.""" session.run("make", "test", external = True) From d46dac8c69c2440ae78d8bbb8df6be21b88b8bac Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 18:19:01 +0100 Subject: [PATCH 15/20] Refactor python tests --- .editorconfig | 2 +- Makefile | 3 +- ] | 17 -- poetry.lock | 231 +++++++++++------- pyproject.toml | 2 + .../parameters/__init__.py | 1 - .../local_town_child_allowance.py} | 0 .../test_local_town_child_allowance.yaml} | 0 .../tests/test-api.sh | 24 ++ .../variables/__init__.py | 1 - 10 files changed, 176 insertions(+), 105 deletions(-) delete mode 100644 ] delete mode 100644 src/openfisca_extension_template/parameters/__init__.py rename src/openfisca_extension_template/{variables/local_benefit.py => rules/local_benefit/local_town_child_allowance.py} (100%) rename src/openfisca_extension_template/{variables/local_benefit_test.yaml => rules/local_benefit/test_local_town_child_allowance.yaml} (100%) create mode 100755 src/openfisca_extension_template/tests/test-api.sh delete mode 100644 src/openfisca_extension_template/variables/__init__.py diff --git a/.editorconfig b/.editorconfig index cb83070..f5783bf 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,7 +16,7 @@ indent_style = tab indent_size = 4 indent_style = tab -[*.{py,pyi,rst,toml}] +[*.{sh,py,pyi,rst,toml}] indent_size = 4 [*.md] diff --git a/Makefile b/Makefile index e5b499d..59a4e98 100644 --- a/Makefile +++ b/Makefile @@ -46,9 +46,10 @@ lint: compile clean test: format type lint @python -m poetry run \ - openfisca test `git ls-files | grep "_test\.yaml$$"` \ + openfisca test `git ls-files | grep "test_.*\.yaml$$"` \ --country-package openfisca_country_template \ --extensions openfisca_extension_template + @sh src/openfisca_extension_template_tests/test-api.sh build: compile clean @# Install OpenFisca-Extension-Template for deployment and publishing. diff --git a/] b/] deleted file mode 100644 index 3552a58..0000000 --- a/] +++ /dev/null @@ -1,17 +0,0 @@ -Add caching - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# -# Date: Wed Nov 16 03:24:46 2022 +0100 -# -# On branch use-poetry-and-poet -# Your branch and 'origin/use-poetry-and-poet' have diverged, -# and have 1 and 1 different commits each, respectively. -# (use "git pull" to merge the remote branch into yours) -# -# Changes to be committed: -# modified: .github/workflows/test.yaml -# modified: Makefile -# modified: noxfile.py -# diff --git a/poetry.lock b/poetry.lock index c735d0c..b2c5153 100644 --- a/poetry.lock +++ b/poetry.lock @@ -56,15 +56,11 @@ toml = "*" [[package]] name = "click" -version = "8.1.3" +version = "7.1.2" description = "Composable command line interface toolkit" category = "main" optional = false -python-versions = ">=3.7" - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "colorama" @@ -103,11 +99,11 @@ python-versions = ">=3.7" [[package]] name = "dpath" -version = "1.5.0" +version = "2.0.6" description = "Filesystem-like pathing and searching for dictionaries" category = "main" optional = false -python-versions = "*" +python-versions = ">=3" [[package]] name = "flake8" @@ -254,17 +250,17 @@ test = ["coverage (>=4.0.0,<5.0.0)", "flake8-builtins", "flake8-commas", "flake8 [[package]] name = "flask" -version = "1.1.2" +version = "1.1.4" description = "A simple framework for building complex web applications." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] -click = ">=5.1" -itsdangerous = ">=0.24" -Jinja2 = ">=2.10.1" -Werkzeug = ">=0.15" +click = ">=5.1,<8.0" +itsdangerous = ">=0.24,<2.0" +Jinja2 = ">=2.10.1,<3.0" +Werkzeug = ">=0.15,<2.0" [package.extras] dev = ["coverage", "pallets-sphinx-themes", "pytest", "sphinx", "sphinx-issues", "sphinxcontrib-log-cabinet", "tox"] @@ -333,25 +329,25 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "itsdangerous" -version = "2.1.2" -description = "Safely pass data to untrusted environments and back." +version = "1.1.0" +description = "Various helpers to pass data to untrusted environments and back." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "jinja2" -version = "3.1.2" +version = "2.11.3" description = "A very fast and expressive template engine." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] -MarkupSafe = ">=2.0" +MarkupSafe = ">=0.23" [package.extras] -i18n = ["Babel (>=2.7)"] +i18n = ["Babel (>=0.8)"] [[package]] name = "lazy-object-proxy" @@ -363,11 +359,11 @@ python-versions = ">=3.7" [[package]] name = "markupsafe" -version = "2.1.1" +version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [[package]] name = "mccabe" @@ -413,6 +409,21 @@ category = "main" optional = true python-versions = "*" +[[package]] +name = "nptyping" +version = "1.4.4" +description = "Type hints for Numpy." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +numpy = "*" +typish = ">=1.7.0" + +[package.extras] +test = ["autoflake", "codecov", "coverage", "isort", "pycodestyle", "pylint", "pytest", "radon", "scons", "xenon"] + [[package]] name = "numexpr" version = "2.8.4" @@ -434,29 +445,32 @@ python-versions = ">=3.7" [[package]] name = "openfisca-core" -version = "35.5.5" +version = "35.9.0" description = "A versatile microsimulation free software" category = "main" optional = false python-versions = "*" [package.dependencies] -dpath = ">=1.5.0,<2.0.0" -flask = {version = "1.1.2", optional = true, markers = "extra == \"web-api\""} +dpath = ">=1.5.0,<3.0.0" +flask = {version = "1.1.4", optional = true, markers = "extra == \"web-api\""} flask-cors = {version = "3.0.10", optional = true, markers = "extra == \"web-api\""} gunicorn = {version = ">=20.0.0,<21.0.0", optional = true, markers = "extra == \"web-api\""} +markupsafe = {version = "2.0.1", optional = true, markers = "extra == \"web-api\""} +nptyping = "1.4.4" numexpr = ">=2.7.0,<=3.0" numpy = ">=1.11,<1.21" psutil = ">=5.4.7,<6.0.0" pytest = ">=4.4.1,<6.0.0" PyYAML = ">=3.10" sortedcontainers = "2.2.2" +typing-extensions = "3.10.0.2" werkzeug = {version = ">=1.0.0,<2.0.0", optional = true, markers = "extra == \"web-api\""} [package.extras] -dev = ["autopep8 (>=1.4.0,<1.6.0)", "darglint (==1.8.0)", "flake8 (>=3.9.0,<4.0.0)", "flake8-bugbear (>=19.3.0,<20.0.0)", "flake8-docstrings (==1.6.0)", "flake8-print (>=3.1.0,<4.0.0)", "flake8-rst-docstrings (<1.0.0)", "flask (==1.1.2)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "mypy (>=0.701,<0.800)", "openfisca-country-template (>=3.10.0,<4.0.0)", "openfisca-extension-template (>=1.2.0rc0,<2.0.0)", "pylint (==2.10.2)", "pytest-cov (>=2.6.1,<3.0.0)", "werkzeug (>=1.0.0,<2.0.0)"] +dev = ["autopep8 (>=1.4.0,<1.6.0)", "coverage (==6.0.2)", "darglint (==1.8.0)", "flake8 (>=4.0.0,<4.1.0)", "flake8-bugbear (>=19.3.0,<20.0.0)", "flake8-docstrings (==1.6.0)", "flake8-print (>=3.1.0,<4.0.0)", "flake8-rst-docstrings (==0.2.3)", "flask (==1.1.4)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "markupsafe (==2.0.1)", "mypy (==0.910)", "openfisca-country-template (>=3.10.0,<4.0.0)", "openfisca-extension-template (>=1.2.0rc0,<2.0.0)", "pycodestyle (>=2.8.0,<2.9.0)", "pylint (==2.10.2)", "werkzeug (>=1.0.0,<2.0.0)"] tracker = ["openfisca-tracker (==0.4.0)"] -web-api = ["flask (==1.1.2)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "werkzeug (>=1.0.0,<2.0.0)"] +web-api = ["flask (==1.1.4)", "flask-cors (==3.0.10)", "gunicorn (>=20.0.0,<21.0.0)", "markupsafe (==2.0.1)", "werkzeug (>=1.0.0,<2.0.0)"] [[package]] name = "openfisca-country-template" @@ -735,11 +749,22 @@ python-versions = ">=3.6" [[package]] name = "typing-extensions" -version = "4.4.0" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "3.10.0.2" +description = "Backported and Experimental Type Hints for Python 3.5+" category = "main" optional = false -python-versions = ">=3.7" +python-versions = "*" + +[[package]] +name = "typish" +version = "1.9.3" +description = "Functionality for types" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +test = ["codecov", "coverage", "mypy", "nptyping (>=1.3.0)", "numpy", "pycodestyle", "pylint", "pytest"] [[package]] name = "wcwidth" @@ -782,12 +807,12 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "importlib-metadata", "isort", "mypy", "pycodestyle", "pylint", "pyupgrade"] +dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "importlib-metadata", "isort", "mypy", "openfisca-core", "pycodestyle", "pylint", "pyupgrade"] [metadata] lock-version = "1.1" python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "63996348fb5eb835695fe1f94db57896fc8f1cdf3edc1639c9311a52af101d94" +content-hash = "235b10fb9a10701c1f13a56f2b16acbd386357941287285658f49dd2fb75f69c" [metadata.files] astor = [ @@ -810,8 +835,8 @@ autopep8 = [ {file = "autopep8-1.5.7.tar.gz", hash = "sha256:276ced7e9e3cb22e5d7c14748384a5cf5d9002257c0ed50c0e075b68011bb6d0"}, ] click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, + {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, ] colorama = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, @@ -830,7 +855,8 @@ docutils = [ {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] dpath = [ - {file = "dpath-1.5.0.tar.gz", hash = "sha256:496615b4ea84236d18e0d286122de74869a60e0f87e2c7ec6787ff286c48361b"}, + {file = "dpath-2.0.6-py3-none-any.whl", hash = "sha256:8c439bb1c3b3222427e9b8812701cd99a0ef3415ddbb7c03a2379f6989a03965"}, + {file = "dpath-2.0.6.tar.gz", hash = "sha256:5a1ddae52233fbc8ef81b15fb85073a81126bb43698d3f3a1b6aaf561a46cdc0"}, ] flake8 = [ {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, @@ -876,8 +902,8 @@ flake8-use-fstring = [ {file = "flake8-use-fstring-1.4.tar.gz", hash = "sha256:6550bf722585eb97dffa8343b0f1c372101f5c4ab5b07ebf0edd1c79880cdd39"}, ] flask = [ - {file = "Flask-1.1.2-py2.py3-none-any.whl", hash = "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"}, - {file = "Flask-1.1.2.tar.gz", hash = "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060"}, + {file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"}, + {file = "Flask-1.1.4.tar.gz", hash = "sha256:0fbeb6180d383a9186d0d6ed954e0042ad9f18e0e8de088b2b419d526927d196"}, ] flask-cors = [ {file = "Flask-Cors-3.0.10.tar.gz", hash = "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"}, @@ -896,12 +922,12 @@ isort = [ {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, ] itsdangerous = [ - {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"}, - {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"}, + {file = "itsdangerous-1.1.0-py2.py3-none-any.whl", hash = "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"}, + {file = "itsdangerous-1.1.0.tar.gz", hash = "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"}, ] jinja2 = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, + {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, ] lazy-object-proxy = [ {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, @@ -925,46 +951,75 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, ] markupsafe = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, + {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, ] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, @@ -1010,6 +1065,9 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] +nptyping = [ + {file = "nptyping-1.4.4-py3-none-any.whl", hash = "sha256:8128473b8ba0e65f3d6edc727cd99024e162edcf7e8a0ea8f9dfa6b070934d14"}, +] numexpr = [ {file = "numexpr-2.8.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a75967d46b6bd56455dd32da6285e5ffabe155d0ee61eef685bbfb8dafb2e484"}, {file = "numexpr-2.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db93cf1842f068247de631bfc8af20118bf1f9447cd929b531595a5e0efc9346"}, @@ -1069,7 +1127,8 @@ numpy = [ {file = "numpy-1.20.3.zip", hash = "sha256:e55185e51b18d788e49fe8305fd73ef4470596b33fc2c1ceb304566b99c71a69"}, ] openfisca-core = [ - {file = "OpenFisca_Core-35.5.5-py3-none-any.whl", hash = "sha256:8921878709dfb98944d87f319a183cdf1a79d07f49491e885d60e24c88649387"}, + {file = "OpenFisca-Core-35.9.0.tar.gz", hash = "sha256:9509cf7733fd3a1ab6225a3b6f799e595ce928a9bdcfc4d863a3e9bd0f920380"}, + {file = "OpenFisca_Core-35.9.0-py3-none-any.whl", hash = "sha256:433125c6700842ebb7d2a77a81e1f7a69b1a669b2a6c70e41fbc133582869738"}, ] openfisca-country-template = [ {file = "OpenFisca-Country-Template-3.13.2.tar.gz", hash = "sha256:7c21c7bca96bbfc79b5c5437fbd859bf6c4877b3eba6d12790b8c2816ad3bde7"}, @@ -1243,8 +1302,12 @@ typed-ast = [ {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, ] typing-extensions = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, + {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"}, + {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"}, +] +typish = [ + {file = "typish-1.9.3-py3-none-any.whl", hash = "sha256:03cfee5e6eb856dbf90244e18f4e4c41044c8790d5779f4e775f63f982e2f896"}, ] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, diff --git a/pyproject.toml b/pyproject.toml index 7630351..f93066e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,7 @@ flake8-use-fstring = {version = "^1.4.0", optional = true} importlib-metadata = {version = "^4.13.0", python = "~3.7", optional = true} isort = {version = "^5.10.0", optional = true} mypy = {version = "^0.990", optional = true} +openfisca-core = {extras = ["web-api"], version = "^35.9.0", optional = true} pycodestyle = {version = "^2.7.0", optional = true} pylint = {version = "^2.15.0", optional = true} pyupgrade = {version = "^3.2.0", optional = true} @@ -64,6 +65,7 @@ dev = [ "importlib-metadata", "isort", "mypy", + "openfisca-core", "pycodestyle", "pylint", "pyupgrade", diff --git a/src/openfisca_extension_template/parameters/__init__.py b/src/openfisca_extension_template/parameters/__init__.py deleted file mode 100644 index f60ef44..0000000 --- a/src/openfisca_extension_template/parameters/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Root of the parameters folder.""" diff --git a/src/openfisca_extension_template/variables/local_benefit.py b/src/openfisca_extension_template/rules/local_benefit/local_town_child_allowance.py similarity index 100% rename from src/openfisca_extension_template/variables/local_benefit.py rename to src/openfisca_extension_template/rules/local_benefit/local_town_child_allowance.py diff --git a/src/openfisca_extension_template/variables/local_benefit_test.yaml b/src/openfisca_extension_template/rules/local_benefit/test_local_town_child_allowance.yaml similarity index 100% rename from src/openfisca_extension_template/variables/local_benefit_test.yaml rename to src/openfisca_extension_template/rules/local_benefit/test_local_town_child_allowance.yaml diff --git a/src/openfisca_extension_template/tests/test-api.sh b/src/openfisca_extension_template/tests/test-api.sh new file mode 100755 index 0000000..2620f7d --- /dev/null +++ b/src/openfisca_extension_template/tests/test-api.sh @@ -0,0 +1,24 @@ +#! /usr/bin/env bash + +PORT=5000 +ENDPOINT=spec + +openfisca serve \ + --country-package openfisca_country_template \ + --extensions openfisca_extension_template \ + --port $PORT & + +server_pid=$! + +curl \ + --retry-connrefused \ + --retry 10 \ + --retry-delay 5 \ + --fail http://127.0.0.1:$PORT/$ENDPOINT \ + | python -m json.tool > /dev/null + +result=$? + +kill $server_pid + +exit $? diff --git a/src/openfisca_extension_template/variables/__init__.py b/src/openfisca_extension_template/variables/__init__.py deleted file mode 100644 index 38fdba8..0000000 --- a/src/openfisca_extension_template/variables/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Root of the variables folder.""" From 5ba817d09eca828e7c31ccd47a59bdbcb66c49da Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 19:08:30 +0100 Subject: [PATCH 16/20] Update README.md --- .github/workflows/test.yaml | 37 ++++++++------------- Makefile | 66 ++++++++++++++++++------------------- README.md | 16 +++++++-- noxfile.py | 34 ++++++------------- poetry.lock | 34 ++++++++++++++++++- pyproject.toml | 2 ++ 6 files changed, 105 insertions(+), 84 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4c8b66c..c878c77 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -33,44 +33,35 @@ jobs: python-version: ${{ matrix.python }} architecture: x64 - - name: Cache dependencies + - name: Cache deps id: cache-deps uses: actions/cache@v3 with: path: ${{ matrix.path }} - key: ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('Makefile') }} + key: ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('Makefile') }}-${{ hashFiles('poetry.lock') }} restore-keys: | + ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('Makefile') }}- ${{ matrix.python }}-${{ matrix.os }}- - name: Dependencies if: steps.cache-deps.outputs.cache-hit != 'true' - run: make dependencies + run: make install-deps - - name: Cache install - id: cache-install + - name: Cache dist + id: cache-dist uses: actions/cache@v3 with: - path: ${{ matrix.path }} - key: ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('poetry.lock') }} - restore-keys: | - ${{ matrix.python }}-${{ matrix.os }}- - - - name: Install - if: steps.cache-install.outputs.cache-hit != 'true' - run: make install - - - name: Cache Build - id: cache-build - uses: actions/cache@v3 - with: - path: ${{ matrix.path }} + path: ${{ 'dist' }} key: ${{ matrix.python }}-${{ matrix.os }}-${{ github.sha }} restore-keys: | ${{ matrix.python }}-${{ matrix.os }}- - - name: Build - if: steps.cache-build.outputs.cache-hit != 'true' - run: make build + - name: Build dist + if: steps.cache-dist.outputs.cache-hit != 'true' + run: make build-dst + + - name: Install + run: make install-dst - name: Test - run: make test + run: make test-suite diff --git a/Makefile b/Makefile index 59a4e98..dc0bf77 100644 --- a/Makefile +++ b/Makefile @@ -5,57 +5,55 @@ else endif .SHELLFLAGS := -eo pipefail -c +.DEFAULT_GOAL := all -.DEFAULT_GOAL := test - -dependencies: - @python -m pip install --upgrade nox pip poetry nox-poetry +all: install-deps install-src test-suite +test-suite: format type lint test uninstall: - @pip freeze | grep -v "^-e" | sed "s/@.*//" | xargs pip uninstall -y + pip freeze | grep -v "^-e" | sed "s/@.*//" | xargs pip uninstall -y + +install-deps: + python -m pip install --upgrade nox pip poetry nox-poetry -install: +install-src: compile clean @# Install OpenFisca-Extension-Template for development. `make install` @# installs the editable version of OpenFisca-Extension-Template. This @# allows contributors to test as they code. - @python -m poetry install --all-extras + python -m poetry install --all-extras -compile: - @python -m compileall -q src +build-dst: compile clean + @# `make build` allows us to test against the packaged version of + @# of OpenFisca-Extension-Template, the same we put in the hands of users. + python -m poetry build -clean: - @rm -rf build dist - @find . -name '*.pyc' -exec rm \{\} \; +install-dst: + @# Install OpenFisca-Extension-Template for deployment and publishing. + python -m pip uninstall --yes openfisca-extension-template + find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; format: compile clean @# Do not analyse .gitignored files. - @python -m poetry run isort `git ls-files | grep "\.py$$"` - @python -m poetry run autopep8 `git ls-files | grep "\.py$$"` - @python -m poetry run pyupgrade `git ls-files | grep "\.py$$"` \ - --py37-plus \ - --keep-runtime-typing + python -m poetry run isort `git ls-files | grep "\.py$$"` + python -m poetry run autopep8 `git ls-files | grep "\.py$$"` + python -m poetry run pyupgrade `git ls-files | grep "\.py$$"` --py37-plus --keep-runtime-typing type: compile clean @# Do not analyse .gitignored files. - @python -m poetry run mypy `git ls-files | grep "\.py$$"` + python -m poetry run mypy `git ls-files | grep "\.py$$"` lint: compile clean @# Do not analyse .gitignored files. - @python -m poetry run flake8 `git ls-files | grep "\.py$$"` - @python -m poetry run pylint `git ls-files | grep "\.py$$"` + python -m poetry run flake8 `git ls-files | grep "\.py$$"` + python -m poetry run pylint `git ls-files | grep "\.py$$"` -test: format type lint - @python -m poetry run \ - openfisca test `git ls-files | grep "test_.*\.yaml$$"` \ - --country-package openfisca_country_template \ - --extensions openfisca_extension_template - @sh src/openfisca_extension_template_tests/test-api.sh +test: compile clean + python -m poetry run openfisca test `git ls-files | grep "test_.*\.yaml$$"` --country-package openfisca_country_template --extensions openfisca_extension_template + sh src/openfisca_extension_template/tests/test-api.sh -build: compile clean - @# Install OpenFisca-Extension-Template for deployment and publishing. - @# `make build` allows us to test against the packaged version of - @# of OpenFisca-Extension-Template, the same we put in the hands of users. - @python -m poetry build - @python -m pip uninstall --yes openfisca-extension-template - @find dist -name "*.whl" \ - -exec pip install --force-reinstall --no-dependencies {} \; +compile: + @python -m compileall -q src + +clean: + @rm -rf build dist + @find . -name '*.pyc' -exec rm \{\} \; diff --git a/README.md b/README.md index a102b93..aa5b22b 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This repository is here to help you bootstrap your own OpenFisca [extension](htt To install your extension, run: ```sh -make install +make install-deps install-src ``` ## Testing @@ -22,9 +22,21 @@ make install You can make sure that everything is working by running the provided tests: ```sh -make test +make test-suite ``` > [Learn more about tests](http://openfisca.org/doc/coding-the-legislation/writing_yaml_tests.html). Your extension package is now installed and ready! + +## Troubleshooting + +OpenFisca is tested to run under `x64`; with Python `+3.7.9`, `+3.8.10`, and +`+3.9.13`; and on `OS X`, `Linux`, and `Windows`. If your contributions fail +in Github Actions, try to reproduce these errors with the follwing command: + +```sh +python -m nox -s +``` + +> You'll need to have Python `3.7.9`, `3.8.10`, and `3.9.13` installed. \ No newline at end of file diff --git a/noxfile.py b/noxfile.py index f6af5a3..fc62f11 100644 --- a/noxfile.py +++ b/noxfile.py @@ -3,32 +3,18 @@ import nox # pylint: disable=import-error import nox_poetry # pylint: disable=import-error -nox.options.reuse_existing_virtualenvs = True +nox.options.reuse_existing_virtualenvs = False @nox_poetry.session @nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) -def dependencies(session): +def e2e(session): """Run tests.""" - session.run("make", "dependencies", external = True) - - -@nox_poetry.session -@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) -def install(session): - """Run tests.""" - session.run("make", "install", external = True) - - -@nox_poetry.session -@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) -def build(session): - """Run tests.""" - session.run("make", "build", external = True) - - -@nox_poetry.session -@nox.parametrize("python", ("3.7.9", "3.8.10", "3.9.13")) -def test(session): - """Run tests.""" - session.run("make", "test", external = True) + session.run( + "make", + "install-deps", + "build-dst", + "install-dst", + "test-suite", + external = True, + ) diff --git a/poetry.lock b/poetry.lock index b2c5153..c21c0f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -640,6 +640,19 @@ wcwidth = "*" checkqa-mypy = ["mypy (==v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +[[package]] +name = "pytest-sugar" +version = "0.9.6" +description = "pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly)." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +packaging = ">=14.1" +pytest = ">=2.9" +termcolor = ">=1.1.0" + [[package]] name = "pyupgrade" version = "3.2.2" @@ -707,6 +720,17 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "termcolor" +version = "2.1.0" +description = "ANSI color formatting for output in terminal" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-cov"] + [[package]] name = "tokenize-rt" version = "5.0.0" @@ -812,7 +836,7 @@ dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "f [metadata] lock-version = "1.1" python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "235b10fb9a10701c1f13a56f2b16acbd386357941287285658f49dd2fb75f69c" +content-hash = "ff4da34374f8eeca3377ad8b6fbd761e1535d73bc0613bb9318d4ef9079c949d" [metadata.files] astor = [ @@ -1194,6 +1218,10 @@ pytest = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, ] +pytest-sugar = [ + {file = "pytest-sugar-0.9.6.tar.gz", hash = "sha256:c4793495f3c32e114f0f5416290946c316eb96ad5a3684dcdadda9267e59b2b8"}, + {file = "pytest_sugar-0.9.6-py2.py3-none-any.whl", hash = "sha256:30e5225ed2b3cc988a8a672f8bda0fc37bcd92d62e9273937f061112b3f2186d"}, +] pyupgrade = [ {file = "pyupgrade-3.2.2-py2.py3-none-any.whl", hash = "sha256:16c0e3a6ac2d83cd0fd30c138af5504918c59d584344f60a15d5f8009b11a0ed"}, {file = "pyupgrade-3.2.2.tar.gz", hash = "sha256:6bfa246fb9d94e490fad37980bcfc05b9494183ff29d9100ef4f7f22a952ce67"}, @@ -1259,6 +1287,10 @@ sortedcontainers = [ {file = "sortedcontainers-2.2.2-py2.py3-none-any.whl", hash = "sha256:c633ebde8580f241f274c1f8994a665c0e54a17724fecd0cae2f079e09c36d3f"}, {file = "sortedcontainers-2.2.2.tar.gz", hash = "sha256:4e73a757831fc3ca4de2859c422564239a31d8213d09a2a666e375807034d2ba"}, ] +termcolor = [ + {file = "termcolor-2.1.0-py3-none-any.whl", hash = "sha256:91dd04fdf661b89d7169cefd35f609b19ca931eb033687eaa647cef1ff177c49"}, + {file = "termcolor-2.1.0.tar.gz", hash = "sha256:b80df54667ce4f48c03fe35df194f052dc27a541ebbf2544e4d6b47b5d6949c4"}, +] tokenize-rt = [ {file = "tokenize_rt-5.0.0-py2.py3-none-any.whl", hash = "sha256:c67772c662c6b3dc65edf66808577968fb10badfc2042e3027196bed4daf9e5a"}, {file = "tokenize_rt-5.0.0.tar.gz", hash = "sha256:3160bc0c3e8491312d0485171dea861fc160a240f5f5766b72a1165408d10740"}, diff --git a/pyproject.toml b/pyproject.toml index f93066e..32f92b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ mypy = {version = "^0.990", optional = true} openfisca-core = {extras = ["web-api"], version = "^35.9.0", optional = true} pycodestyle = {version = "^2.7.0", optional = true} pylint = {version = "^2.15.0", optional = true} +pytest-sugar = {version = "^0.9.0", optional = true} pyupgrade = {version = "^3.2.0", optional = true} [tool.poetry.extras] @@ -68,6 +69,7 @@ dev = [ "openfisca-core", "pycodestyle", "pylint", + "pytest-sugar", "pyupgrade", ] From 88b80e2d18de317a9ca5ccf0d27bea278506dc57 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Wed, 16 Nov 2022 23:05:42 +0100 Subject: [PATCH 17/20] Add smoke test to github actions --- .github/workflows/push.yaml | 80 +++++++++++++++++++++++++++++++++++++ .github/workflows/test.yaml | 67 ------------------------------- Makefile | 1 - 3 files changed, 80 insertions(+), 68 deletions(-) create mode 100644 .github/workflows/push.yaml delete mode 100644 .github/workflows/test.yaml diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml new file mode 100644 index 0000000..a048d7a --- /dev/null +++ b/.github/workflows/push.yaml @@ -0,0 +1,80 @@ +on: [ push ] + +jobs: + push: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python: [3.7.9, 3.8.10, 3.9.13] + include: + - os: ubuntu-latest + bin: /opt/hostedtoolcache/Python/ + pip: ~/.cache/pip + poetry: ~/.cache/pypoetry/virtualenvs + - os: macos-latest + bin: ~/hostedtoolcache/Python/ + pip: ~/Library/Caches/pip + poetry: ~/Library/Caches/pypoetry/virtualenvs + - os: windows-latest + bin: C:\hostedtoolcache\windows\python\ + pip: ~\AppData\Local\pip\Cache + poetry: ~\AppData\Local\pypoetry\Cache\virtualenvs + + runs-on: ${{ matrix.os }} + + name: push-${{ matrix.python }}-${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Cache Bin + id: cache-bin + uses: actions/cache@v3 + with: + path: ${{ matrix.bin }}${{ matrix.python }} + key: bin-${{ matrix.os }}-${{ matrix.python }} + + - name: Cache Pip + id: cache-pip + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }} + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Poetry + id: cache-poetry + uses: actions/cache@v3 + with: + path: ${{ matrix.poetry }} + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Dependencies + run: make install-deps + + - name: Build dist + run: make build-dst + + - name: Install + run: make install-dst + + - name: Lint + run: make lint + + - name: Type + run: make type + + - name: Test + run: make test + + - name: Smoke test + run: ./src/openfisca_extension_template/tests/test-api.sh diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index c878c77..0000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,67 +0,0 @@ -name: Test - -on: [ push ] - -jobs: - test: - strategy: - fail-fast: true - matrix: - python: [3.7.9, 3.8.10, 3.9.13] - os: [ubuntu-latest, macos-latest, windows-latest] - include: - - os: ubuntu-latest - path: ~/.cache/pip - - os: macos-latest - path: ~/Library/Caches/pip - - os: windows-latest - path: ~\AppData\Local\pip\Cache - - runs-on: ${{ matrix.os }} - - name: test-${{ matrix.python }}-${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Python setup - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - architecture: x64 - - - name: Cache deps - id: cache-deps - uses: actions/cache@v3 - with: - path: ${{ matrix.path }} - key: ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('Makefile') }}-${{ hashFiles('poetry.lock') }} - restore-keys: | - ${{ matrix.python }}-${{ matrix.os }}-${{ hashFiles('Makefile') }}- - ${{ matrix.python }}-${{ matrix.os }}- - - - name: Dependencies - if: steps.cache-deps.outputs.cache-hit != 'true' - run: make install-deps - - - name: Cache dist - id: cache-dist - uses: actions/cache@v3 - with: - path: ${{ 'dist' }} - key: ${{ matrix.python }}-${{ matrix.os }}-${{ github.sha }} - restore-keys: | - ${{ matrix.python }}-${{ matrix.os }}- - - - name: Build dist - if: steps.cache-dist.outputs.cache-hit != 'true' - run: make build-dst - - - name: Install - run: make install-dst - - - name: Test - run: make test-suite diff --git a/Makefile b/Makefile index dc0bf77..9c49c06 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,6 @@ lint: compile clean test: compile clean python -m poetry run openfisca test `git ls-files | grep "test_.*\.yaml$$"` --country-package openfisca_country_template --extensions openfisca_extension_template - sh src/openfisca_extension_template/tests/test-api.sh compile: @python -m compileall -q src From fffdfa13ca076e834631d2c751bfc8bef8f1a443 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Thu, 17 Nov 2022 02:02:16 +0100 Subject: [PATCH 18/20] Optimise workflow cache --- .github/workflows/push.yaml | 43 ++++++++++--------- Makefile | 12 ++++-- noxfile.py | 1 + poetry.lock | 8 ++-- .../tests/test-api.sh | 2 +- 5 files changed, 36 insertions(+), 30 deletions(-) diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index a048d7a..50a661c 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -9,21 +9,22 @@ jobs: python: [3.7.9, 3.8.10, 3.9.13] include: - os: ubuntu-latest - bin: /opt/hostedtoolcache/Python/ - pip: ~/.cache/pip - poetry: ~/.cache/pypoetry/virtualenvs + pip: /opt/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ - os: macos-latest - bin: ~/hostedtoolcache/Python/ - pip: ~/Library/Caches/pip - poetry: ~/Library/Caches/pypoetry/virtualenvs + pip: ~/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ - os: windows-latest - bin: C:\hostedtoolcache\windows\python\ - pip: ~\AppData\Local\pip\Cache - poetry: ~\AppData\Local\pypoetry\Cache\virtualenvs + pip: C:\hostedtoolcache\windows\python\ + bin: \x64\scripts\ + lib: \x64\lib\ runs-on: ${{ matrix.os }} - - name: push-${{ matrix.python }}-${{ matrix.os }} + name: push-${{ matrix.os }}-${{ matrix.python }} + env: + POETRY_VIRTUALENVS_IN_PROJECT: true steps: - name: Checkout @@ -32,24 +33,21 @@ jobs: fetch-depth: 0 - name: Cache Bin - id: cache-bin uses: actions/cache@v3 with: - path: ${{ matrix.bin }}${{ matrix.python }} - key: bin-${{ matrix.os }}-${{ matrix.python }} + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} + key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} - - name: Cache Pip - id: cache-pip + - name: Cache Lib uses: actions/cache@v3 with: - path: ${{ matrix.pip }} - key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} + key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} - name: Cache Poetry - id: cache-poetry uses: actions/cache@v3 with: - path: ${{ matrix.poetry }} + path: .venv key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} - name: Python setup @@ -58,9 +56,12 @@ jobs: python-version: ${{ matrix.python }} architecture: x64 - - name: Dependencies + - name: Install dependencies run: make install-deps + - name: Install extras + run: make install-xtra + - name: Build dist run: make build-dst diff --git a/Makefile b/Makefile index 9c49c06..b330658 100644 --- a/Makefile +++ b/Makefile @@ -7,20 +7,25 @@ endif .SHELLFLAGS := -eo pipefail -c .DEFAULT_GOAL := all -all: install-deps install-src test-suite +all: install-deps install-xtra install-src test-suite test-suite: format type lint test uninstall: pip freeze | grep -v "^-e" | sed "s/@.*//" | xargs pip uninstall -y + python -m pip cache purge install-deps: python -m pip install --upgrade nox pip poetry nox-poetry +install-xtra: compile clean + @# Install OpenFisca-Extension-Template extra dependencies. + python -m poetry install --no-root --all-extras + install-src: compile clean @# Install OpenFisca-Extension-Template for development. `make install` @# installs the editable version of OpenFisca-Extension-Template. This @# allows contributors to test as they code. - python -m poetry install --all-extras + python -m poetry install --only-root --all-extras build-dst: compile clean @# `make build` allows us to test against the packaged version of @@ -29,8 +34,7 @@ build-dst: compile clean install-dst: @# Install OpenFisca-Extension-Template for deployment and publishing. - python -m pip uninstall --yes openfisca-extension-template - find dist -name "*.whl" -exec pip install --force-reinstall {}[dev] \; + find dist -name "*.whl" -exec python -m poetry run pip install --no-deps --force-reinstall {} \; format: compile clean @# Do not analyse .gitignored files. diff --git a/noxfile.py b/noxfile.py index fc62f11..e945626 100644 --- a/noxfile.py +++ b/noxfile.py @@ -13,6 +13,7 @@ def e2e(session): session.run( "make", "install-deps", + "install-xtra", "build-dst", "install-dst", "test-suite", diff --git a/poetry.lock b/poetry.lock index c21c0f1..fccb229 100644 --- a/poetry.lock +++ b/poetry.lock @@ -645,7 +645,7 @@ name = "pytest-sugar" version = "0.9.6" description = "pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly)." category = "main" -optional = false +optional = true python-versions = "*" [package.dependencies] @@ -725,7 +725,7 @@ name = "termcolor" version = "2.1.0" description = "ANSI color formatting for output in terminal" category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.extras] @@ -831,12 +831,12 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "importlib-metadata", "isort", "mypy", "openfisca-core", "pycodestyle", "pylint", "pyupgrade"] +dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "flake8-coding", "flake8-commas", "flake8-comprehensions", "flake8-docstrings", "flake8-print", "flake8-rst-docstrings", "flake8-simplify", "flake8-use-fstring", "importlib-metadata", "isort", "mypy", "openfisca-core", "pycodestyle", "pylint", "pytest-sugar", "pyupgrade"] [metadata] lock-version = "1.1" python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "ff4da34374f8eeca3377ad8b6fbd761e1535d73bc0613bb9318d4ef9079c949d" +content-hash = "5b03f402bc6d7a92294e4ad364ddc459b7bf902b26a4a49bebca7a9118867a98" [metadata.files] astor = [ diff --git a/src/openfisca_extension_template/tests/test-api.sh b/src/openfisca_extension_template/tests/test-api.sh index 2620f7d..7ee8e9d 100755 --- a/src/openfisca_extension_template/tests/test-api.sh +++ b/src/openfisca_extension_template/tests/test-api.sh @@ -3,7 +3,7 @@ PORT=5000 ENDPOINT=spec -openfisca serve \ +python -m poetry run openfisca serve \ --country-package openfisca_country_template \ --extensions openfisca_extension_template \ --port $PORT & From 4f351f574fa1d3fdfd55e96b168cab6a0c320fd7 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Thu, 17 Nov 2022 05:13:45 +0100 Subject: [PATCH 19/20] Split workflows --- .github/workflows/_lint.yaml | 66 +++++++++++++++++++++++++ .github/workflows/_test.yaml | 74 ++++++++++++++++++++++++++++ .github/workflows/_type.yaml | 66 +++++++++++++++++++++++++ .github/workflows/_web-api.yaml | 75 +++++++++++++++++++++++++++++ .github/workflows/push.yaml | 85 ++++----------------------------- 5 files changed, 291 insertions(+), 75 deletions(-) create mode 100644 .github/workflows/_lint.yaml create mode 100644 .github/workflows/_test.yaml create mode 100644 .github/workflows/_type.yaml create mode 100644 .github/workflows/_web-api.yaml diff --git a/.github/workflows/_lint.yaml b/.github/workflows/_lint.yaml new file mode 100644 index 0000000..a207d39 --- /dev/null +++ b/.github/workflows/_lint.yaml @@ -0,0 +1,66 @@ +name: Lint + +on: [ workflow_call ] + +jobs: + lint: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest] + python: [3.7.9, 3.8.10, 3.9.13] + include: + - os: ubuntu-latest + pip: /opt/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + + runs-on: ${{ matrix.os }} + name: lint-${{ matrix.os }}-${{ matrix.python }} + env: + POETRY_VIRTUALENVS_IN_PROJECT: true + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Cache Bin + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} + key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Lib + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} + key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Poetry + uses: actions/cache@v3 + with: + path: .venv + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Install dependencies + run: make install-deps + + - name: Install extras + run: make install-xtra + + - name: Build dist + run: make build-dst + + - name: Install + run: make install-dst + + - name: Lint + run: make lint diff --git a/.github/workflows/_test.yaml b/.github/workflows/_test.yaml new file mode 100644 index 0000000..2f890aa --- /dev/null +++ b/.github/workflows/_test.yaml @@ -0,0 +1,74 @@ +name: Test + +on: [ workflow_call ] + +jobs: + test: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python: [3.7.9, 3.8.10, 3.9.13] + include: + - os: ubuntu-latest + pip: /opt/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + - os: macos-latest + pip: ~/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + - os: windows-latest + pip: C:\hostedtoolcache\windows\python\ + bin: \x64\scripts\ + lib: \x64\lib\ + + runs-on: ${{ matrix.os }} + name: test-${{ matrix.os }}-${{ matrix.python }} + env: + POETRY_VIRTUALENVS_IN_PROJECT: true + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Cache Bin + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} + key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Lib + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} + key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Poetry + uses: actions/cache@v3 + with: + path: .venv + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Install dependencies + run: make install-deps + + - name: Install extras + run: make install-xtra + + - name: Build dist + run: make build-dst + + - name: Install + run: make install-dst + + - name: Test + run: make test diff --git a/.github/workflows/_type.yaml b/.github/workflows/_type.yaml new file mode 100644 index 0000000..5abc10a --- /dev/null +++ b/.github/workflows/_type.yaml @@ -0,0 +1,66 @@ +name: Type + +on: [ workflow_call ] + +jobs: + type: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest] + python: [3.7.9, 3.8.10, 3.9.13] + include: + - os: ubuntu-latest + pip: /opt/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + + runs-on: ${{ matrix.os }} + name: type-${{ matrix.os }}-${{ matrix.python }} + env: + POETRY_VIRTUALENVS_IN_PROJECT: true + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Cache Bin + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} + key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Lib + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} + key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Poetry + uses: actions/cache@v3 + with: + path: .venv + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Install dependencies + run: make install-deps + + - name: Install extras + run: make install-xtra + + - name: Build dist + run: make build-dst + + - name: Install + run: make install-dst + + - name: Type + run: make type diff --git a/.github/workflows/_web-api.yaml b/.github/workflows/_web-api.yaml new file mode 100644 index 0000000..daa2e84 --- /dev/null +++ b/.github/workflows/_web-api.yaml @@ -0,0 +1,75 @@ +name: Web API + +on: [ workflow_call ] + +jobs: + web-api: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python: [3.7.9, 3.8.10, 3.9.13] + include: + - os: ubuntu-latest + pip: /opt/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + - os: macos-latest + pip: ~/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + - os: windows-latest + pip: C:\hostedtoolcache\windows\python\ + bin: \x64\scripts\ + lib: \x64\lib\ + + runs-on: ${{ matrix.os }} + name: web-api-${{ matrix.os }}-${{ matrix.python }} + env: + POETRY_VIRTUALENVS_IN_PROJECT: true + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Cache Bin + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} + key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Lib + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} + key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Poetry + uses: actions/cache@v3 + with: + path: .venv + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Install dependencies + run: make install-deps + + - name: Install extras + run: make install-xtra + + - name: Build dist + run: make build-dst + + - name: Install + run: make install-dst + + - name: Smoke test + run: ./src/openfisca_extension_template/tests/test-api.sh + diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 50a661c..6e76810 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -1,81 +1,16 @@ +name: Push + on: [ push ] jobs: - push: - strategy: - fail-fast: true - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python: [3.7.9, 3.8.10, 3.9.13] - include: - - os: ubuntu-latest - pip: /opt/hostedtoolcache/Python/ - bin: /x64/bin/ - lib: /x64/lib/ - - os: macos-latest - pip: ~/hostedtoolcache/Python/ - bin: /x64/bin/ - lib: /x64/lib/ - - os: windows-latest - pip: C:\hostedtoolcache\windows\python\ - bin: \x64\scripts\ - lib: \x64\lib\ - - runs-on: ${{ matrix.os }} - name: push-${{ matrix.os }}-${{ matrix.python }} - env: - POETRY_VIRTUALENVS_IN_PROJECT: true - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Cache Bin - uses: actions/cache@v3 - with: - path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} - key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} - - - name: Cache Lib - uses: actions/cache@v3 - with: - path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} - key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} - - - name: Cache Poetry - uses: actions/cache@v3 - with: - path: .venv - key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} - - - name: Python setup - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python }} - architecture: x64 - - - name: Install dependencies - run: make install-deps - - - name: Install extras - run: make install-xtra - - - name: Build dist - run: make build-dst - - - name: Install - run: make install-dst - - - name: Lint - run: make lint + lint: + uses: ./.github/workflows/_lint.yaml - - name: Type - run: make type + test: + uses: ./.github/workflows/_test.yaml - - name: Test - run: make test + type: + uses: ./.github/workflows/_type.yaml - - name: Smoke test - run: ./src/openfisca_extension_template/tests/test-api.sh + web-api: + uses: ./.github/workflows/_web-api.yaml From 89cc00b56660ff237c17078add75c3b1536bff43 Mon Sep 17 00:00:00 2001 From: Mauko Quiroga Date: Thu, 17 Nov 2022 06:03:52 +0100 Subject: [PATCH 20/20] Add version check --- .circleci/has-functional-changes.sh | 12 --- .github/workflows/_version.yaml | 66 ++++++++++++++ .github/workflows/_web-api.yaml | 2 +- .github/workflows/push.yaml | 3 + poetry.lock | 87 ++++++++++--------- pyproject.toml | 45 +++++----- .../tests/has-functional-changes.sh | 16 ++++ .../tests/test-version.sh | 16 ++-- .../tests/{test-api.sh => test-web-api.sh} | 0 9 files changed, 162 insertions(+), 85 deletions(-) delete mode 100755 .circleci/has-functional-changes.sh create mode 100644 .github/workflows/_version.yaml create mode 100755 src/openfisca_extension_template/tests/has-functional-changes.sh rename .circleci/is-version-number-acceptable.sh => src/openfisca_extension_template/tests/test-version.sh (60%) rename src/openfisca_extension_template/tests/{test-api.sh => test-web-api.sh} (100%) diff --git a/.circleci/has-functional-changes.sh b/.circleci/has-functional-changes.sh deleted file mode 100755 index b787de9..0000000 --- a/.circleci/has-functional-changes.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /usr/bin/env bash - -IGNORE_DIFF_ON="README.md CONTRIBUTING.md Makefile .gitignore .circleci/* .github/*" - -last_tagged_commit=`git describe --tags --abbrev=0 --first-parent` # --first-parent ensures we don't follow tags not published in master through an unlikely intermediary merge commit - -if git diff-index --name-only --exit-code $last_tagged_commit -- . `echo " $IGNORE_DIFF_ON" | sed 's/ / :(exclude)/g'` # Check if any file that has not be listed in IGNORE_DIFF_ON has changed since the last tag was published. -then - echo "No functional changes detected." - exit 1 -else echo "The functional files above were changed." -fi diff --git a/.github/workflows/_version.yaml b/.github/workflows/_version.yaml new file mode 100644 index 0000000..5633515 --- /dev/null +++ b/.github/workflows/_version.yaml @@ -0,0 +1,66 @@ +name: Version + +on: [ workflow_call ] + +jobs: + version: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest] + python: [3.9.13] + include: + - os: ubuntu-latest + pip: /opt/hostedtoolcache/Python/ + bin: /x64/bin/ + lib: /x64/lib/ + + runs-on: ${{ matrix.os }} + name: version-${{ matrix.os }}-${{ matrix.python }} + env: + POETRY_VIRTUALENVS_IN_PROJECT: true + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Cache Bin + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.bin }} + key: bin-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Lib + uses: actions/cache@v3 + with: + path: ${{ matrix.pip }}${{ matrix.python }}${{ matrix.lib }} + key: lib-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('Makefile') }} + + - name: Cache Poetry + uses: actions/cache@v3 + with: + path: .venv + key: pip-${{ matrix.os }}-${{ matrix.python }}-${{ hashFiles('poetry.lock') }} + + - name: Python setup + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + architecture: x64 + + - name: Install dependencies + run: make install-deps + + - name: Version + run: make install-xtra + + - name: Build dist + run: make build-dst + + - name: Install + run: make install-dst + + - name: Type + run: ./src/openfisca_extension_template/tests/test-version.sh diff --git a/.github/workflows/_web-api.yaml b/.github/workflows/_web-api.yaml index daa2e84..b6f9da0 100644 --- a/.github/workflows/_web-api.yaml +++ b/.github/workflows/_web-api.yaml @@ -71,5 +71,5 @@ jobs: run: make install-dst - name: Smoke test - run: ./src/openfisca_extension_template/tests/test-api.sh + run: ./src/openfisca_extension_template/tests/test-web-api.sh diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 6e76810..7a37fdc 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -12,5 +12,8 @@ jobs: type: uses: ./.github/workflows/_type.yaml + version: + uses: ./.github/workflows/_version.yaml + web-api: uses: ./.github/workflows/_web-api.yaml diff --git a/poetry.lock b/poetry.lock index fccb229..03e2325 100644 --- a/poetry.lock +++ b/poetry.lock @@ -136,11 +136,11 @@ dev = ["coverage", "hypothesis", "hypothesmith (>=0.2)", "pre-commit", "tox"] [[package]] name = "flake8-builtins" -version = "2.0.0" +version = "2.0.1" description = "Check for python builtins being used as variables or parameters." category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] flake8 = "*" @@ -208,17 +208,20 @@ pycodestyle = "*" [[package]] name = "flake8-rst-docstrings" -version = "0.2.7" -description = "Python docstring reStructuredText (RST) validator" +version = "0.3.0" +description = "Python docstring reStructuredText (RST) validator for flake8" category = "main" optional = true python-versions = ">=3.7" [package.dependencies] -flake8 = ">=3.0.0" +flake8 = ">=3" pygments = "*" restructuredtext-lint = "*" +[package.extras] +develop = ["build", "twine"] + [[package]] name = "flake8-simplify" version = "0.19.3" @@ -383,7 +386,7 @@ python-versions = ">=3.7" [[package]] name = "mypy" -version = "0.990" +version = "0.991" description = "Optional static typing for Python" category = "main" optional = true @@ -835,8 +838,8 @@ dev = ["autopep8", "darglint", "flake8", "flake8-bugbear", "flake8-builtins", "f [metadata] lock-version = "1.1" -python-versions = "~3.7.2 || ~3.8 || ~3.9" -content-hash = "5b03f402bc6d7a92294e4ad364ddc459b7bf902b26a4a49bebca7a9118867a98" +python-versions = "~3.7.9 || ~3.8.10 || ~3.9.13" +content-hash = "f1470b88c6f0013894f589d7b4438df8dcfaeeecc22f35db7f9154b1cfc94fbc" [metadata.files] astor = [ @@ -891,8 +894,8 @@ flake8-bugbear = [ {file = "flake8_bugbear-22.10.27-py3-none-any.whl", hash = "sha256:6ad0ab754507319060695e2f2be80e6d8977cfcea082293089a9226276bd825d"}, ] flake8-builtins = [ - {file = "flake8-builtins-2.0.0.tar.gz", hash = "sha256:98833fa16139a75cd4913003492a9bd9a61c6f8ac146c3db12a2ebaf420dade3"}, - {file = "flake8_builtins-2.0.0-py3-none-any.whl", hash = "sha256:39bfa3badb5e8d22f92baf4e0ea1b816707245233846932d6b13e81fc6f673e8"}, + {file = "flake8-builtins-2.0.1.tar.gz", hash = "sha256:5aeb420130efe8acbdaf8708a582492413293a3ca25653518f687937879650a5"}, + {file = "flake8_builtins-2.0.1-py3-none-any.whl", hash = "sha256:a5b9ca9cbc921c4455ea02e2e9963c990ac66d028c15b654625e012a1e3bbb4d"}, ] flake8-coding = [ {file = "flake8-coding-1.3.2.tar.gz", hash = "sha256:b8f4d5157a8f74670e6cfea732c3d9f4291a4e994c8701d2c55f787c6e6cb741"}, @@ -915,8 +918,8 @@ flake8-print = [ {file = "flake8_print-5.0.0-py3-none-any.whl", hash = "sha256:84a1a6ea10d7056b804221ac5e62b1cee1aefc897ce16f2e5c42d3046068f5d8"}, ] flake8-rst-docstrings = [ - {file = "flake8-rst-docstrings-0.2.7.tar.gz", hash = "sha256:2740067ab9237559dd45a3434d8c987792c7b259ca563621a3b95efe201f5382"}, - {file = "flake8_rst_docstrings-0.2.7-py3-none-any.whl", hash = "sha256:5d56075dce360bcc9c6775bfe7cb431aa395de600ca7e8d40580a28d50b2a803"}, + {file = "flake8-rst-docstrings-0.3.0.tar.gz", hash = "sha256:d1ce22b4bd37b73cd86b8d980e946ef198cfcc18ed82fedb674ceaa2f8d1afa4"}, + {file = "flake8_rst_docstrings-0.3.0-py3-none-any.whl", hash = "sha256:f8c3c6892ff402292651c31983a38da082480ad3ba253743de52989bdc84ca1c"}, ] flake8-simplify = [ {file = "flake8_simplify-0.19.3-py3-none-any.whl", hash = "sha256:1057320e9312d75849541fee822900d27bcad05b2405edc84713affee635629e"}, @@ -1054,36 +1057,36 @@ more-itertools = [ {file = "more_itertools-9.0.0-py3-none-any.whl", hash = "sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41"}, ] mypy = [ - {file = "mypy-0.990-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aaf1be63e0207d7d17be942dcf9a6b641745581fe6c64df9a38deb562a7dbafa"}, - {file = "mypy-0.990-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d555aa7f44cecb7ea3c0ac69d58b1a5afb92caa017285a8e9c4efbf0518b61b4"}, - {file = "mypy-0.990-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f694d6d09a460b117dccb6857dda269188e3437c880d7b60fa0014fa872d1e9"}, - {file = "mypy-0.990-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:269f0dfb6463b8780333310ff4b5134425157ef0d2b1d614015adaf6d6a7eabd"}, - {file = "mypy-0.990-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8798c8ed83aa809f053abff08664bdca056038f5a02af3660de00b7290b64c47"}, - {file = "mypy-0.990-cp310-cp310-win_amd64.whl", hash = "sha256:47a9955214615108c3480a500cfda8513a0b1cd3c09a1ed42764ca0dd7b931dd"}, - {file = "mypy-0.990-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4a8a6c10f4c63fbf6ad6c03eba22c9331b3946a4cec97f008e9ffb4d3b31e8e2"}, - {file = "mypy-0.990-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd2dd3730ba894ec2a2082cc703fbf3e95a08479f7be84912e3131fc68809d46"}, - {file = "mypy-0.990-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7da0005e47975287a92b43276e460ac1831af3d23032c34e67d003388a0ce8d0"}, - {file = "mypy-0.990-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262c543ef24deb10470a3c1c254bb986714e2b6b1a67d66daf836a548a9f316c"}, - {file = "mypy-0.990-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3ff201a0c6d3ea029d73b1648943387d75aa052491365b101f6edd5570d018ea"}, - {file = "mypy-0.990-cp311-cp311-win_amd64.whl", hash = "sha256:1767830da2d1afa4e62b684647af0ff79b401f004d7fa08bc5b0ce2d45bcd5ec"}, - {file = "mypy-0.990-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6826d9c4d85bbf6d68cb279b561de6a4d8d778ca8e9ab2d00ee768ab501a9852"}, - {file = "mypy-0.990-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46897755f944176fbc504178422a5a2875bbf3f7436727374724842c0987b5af"}, - {file = "mypy-0.990-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0680389c34284287fe00e82fc8bccdea9aff318f7e7d55b90d967a13a9606013"}, - {file = "mypy-0.990-cp37-cp37m-win_amd64.whl", hash = "sha256:b08541a06eed35b543ae1a6b301590eb61826a1eb099417676ddc5a42aa151c5"}, - {file = "mypy-0.990-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:be88d665e76b452c26fb2bdc3d54555c01226fba062b004ede780b190a50f9db"}, - {file = "mypy-0.990-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b8f4a8213b1fd4b751e26b59ae0e0c12896568d7e805861035c7a15ed6dc9eb"}, - {file = "mypy-0.990-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b6f85c2ad378e3224e017904a051b26660087b3b76490d533b7344f1546d3ff"}, - {file = "mypy-0.990-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ee5f99817ee70254e7eb5cf97c1b11dda29c6893d846c8b07bce449184e9466"}, - {file = "mypy-0.990-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49082382f571c3186ce9ea0bd627cb1345d4da8d44a8377870f4442401f0a706"}, - {file = "mypy-0.990-cp38-cp38-win_amd64.whl", hash = "sha256:aba38e3dd66bdbafbbfe9c6e79637841928ea4c79b32e334099463c17b0d90ef"}, - {file = "mypy-0.990-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9d851c09b981a65d9d283a8ccb5b1d0b698e580493416a10942ef1a04b19fd37"}, - {file = "mypy-0.990-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d847dd23540e2912d9667602271e5ebf25e5788e7da46da5ffd98e7872616e8e"}, - {file = "mypy-0.990-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc6019808580565040cd2a561b593d7c3c646badd7e580e07d875eb1bf35c695"}, - {file = "mypy-0.990-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3150d409609a775c8cb65dbe305c4edd7fe576c22ea79d77d1454acd9aeda8"}, - {file = "mypy-0.990-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3227f14fe943524f5794679156488f18bf8d34bfecd4623cf76bc55958d229c5"}, - {file = "mypy-0.990-cp39-cp39-win_amd64.whl", hash = "sha256:c76c769c46a1e6062a84837badcb2a7b0cdb153d68601a61f60739c37d41cc74"}, - {file = "mypy-0.990-py3-none-any.whl", hash = "sha256:8f1940325a8ed460ba03d19ab83742260fa9534804c317224e5d4e5aa588e2d6"}, - {file = "mypy-0.990.tar.gz", hash = "sha256:72382cb609142dba3f04140d016c94b4092bc7b4d98ca718740dc989e5271b8d"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab"}, + {file = "mypy-0.991-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d"}, + {file = "mypy-0.991-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6"}, + {file = "mypy-0.991-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb"}, + {file = "mypy-0.991-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305"}, + {file = "mypy-0.991-cp310-cp310-win_amd64.whl", hash = "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372"}, + {file = "mypy-0.991-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f"}, + {file = "mypy-0.991-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33"}, + {file = "mypy-0.991-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05"}, + {file = "mypy-0.991-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad"}, + {file = "mypy-0.991-cp311-cp311-win_amd64.whl", hash = "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297"}, + {file = "mypy-0.991-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813"}, + {file = "mypy-0.991-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711"}, + {file = "mypy-0.991-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd"}, + {file = "mypy-0.991-cp37-cp37m-win_amd64.whl", hash = "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a"}, + {file = "mypy-0.991-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93"}, + {file = "mypy-0.991-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf"}, + {file = "mypy-0.991-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135"}, + {file = "mypy-0.991-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70"}, + {file = "mypy-0.991-cp38-cp38-win_amd64.whl", hash = "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d"}, + {file = "mypy-0.991-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5"}, + {file = "mypy-0.991-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3"}, + {file = "mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648"}, + {file = "mypy-0.991-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476"}, + {file = "mypy-0.991-cp39-cp39-win_amd64.whl", hash = "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461"}, + {file = "mypy-0.991-py3-none-any.whl", hash = "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb"}, + {file = "mypy-0.991.tar.gz", hash = "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, diff --git a/pyproject.toml b/pyproject.toml index 32f92b1..a28c684 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,30 +23,29 @@ classifiers = [ packages = [{include = "openfisca_extension_template", from = "src"}] [tool.poetry.dependencies] -python = "~3.7.2 || ~3.8 || ~3.9" -openfisca_country_template = "^3.8.0" -pyyaml = "^6.0" -autopep8 = {version = "^1.5.0", optional = true} -darglint = {version ="^1.8.0", optional = true} -flake8 = {version = "^3.9.0", optional = true} -flake8-bugbear = {version = "^22.10.0", optional = true} -flake8-builtins = {version = "2.0.0", optional = true} -flake8-coding = {version = "^1.3.0", optional = true} -flake8-commas = {version = "^2.1.0", optional = true} -flake8-comprehensions = {version = "^3.10.0", optional = true} -flake8-docstrings = {version ="^1.6.0", optional = true} -flake8-print = {version = "^5.0.0", optional = true} -flake8-rst-docstrings = {version ="^0.2.0", optional = true} -flake8-simplify = {version = "^0.19.0", optional = true} -flake8-use-fstring = {version = "^1.4.0", optional = true} -importlib-metadata = {version = "^4.13.0", python = "~3.7", optional = true} -isort = {version = "^5.10.0", optional = true} -mypy = {version = "^0.990", optional = true} +python = "~3.7.9 || ~3.8.10 || ~3.9.13" +openfisca_country_template = "^3.13.0" +autopep8 = {version = ">=1.5.0", optional = true} +darglint = {version =">=1.8.0", optional = true} +flake8 = {version = ">=3.9.0", optional = true} +flake8-bugbear = {version = ">=22.10.0", optional = true} +flake8-builtins = {version = ">=2.0.0", optional = true} +flake8-coding = {version = ">=1.3.0", optional = true} +flake8-commas = {version = ">=2.1.0", optional = true} +flake8-comprehensions = {version = ">=3.10.0", optional = true} +flake8-docstrings = {version =">=1.6.0", optional = true} +flake8-print = {version = ">=5.0.0", optional = true} +flake8-rst-docstrings = {version =">=0.2.0", optional = true} +flake8-simplify = {version = ">=0.19.0", optional = true} +flake8-use-fstring = {version = ">=1.4.0", optional = true} +importlib-metadata = {version = "^4.13.0", python = "~3.7.9", optional = true} +isort = {version = ">=5.10.0", optional = true} +mypy = {version = ">=0.990", optional = true} openfisca-core = {extras = ["web-api"], version = "^35.9.0", optional = true} -pycodestyle = {version = "^2.7.0", optional = true} -pylint = {version = "^2.15.0", optional = true} -pytest-sugar = {version = "^0.9.0", optional = true} -pyupgrade = {version = "^3.2.0", optional = true} +pycodestyle = {version = ">=2.7.0", optional = true} +pylint = {version = ">=2.15.0", optional = true} +pytest-sugar = {version = ">=0.9.0", optional = true} +pyupgrade = {version = ">=3.2.0", optional = true} [tool.poetry.extras] dev = [ diff --git a/src/openfisca_extension_template/tests/has-functional-changes.sh b/src/openfisca_extension_template/tests/has-functional-changes.sh new file mode 100755 index 0000000..de58265 --- /dev/null +++ b/src/openfisca_extension_template/tests/has-functional-changes.sh @@ -0,0 +1,16 @@ +#! /usr/bin/env bash + +IGNORE_DIFF_ON="README.md CONTRIBUTING.md Makefile .gitignore .github/*" + +# --first-parent ensures we don't follow tags not published in master through +# an unlikely intermediary merge commit. +last_tagged_commit=$(git describe --tags --abbrev=0 --first-parent) + +# Check if any file that has not be listed in IGNORE_DIFF_ON has changed since +# the last tag was published. +if git diff-index --name-only --exit-code $last_tagged_commit -- . `echo " $IGNORE_DIFF_ON" | sed 's/ / :(exclude)/g'` +then + echo "No functional changes detected." + exit 1 +else echo "The functional files above were changed." +fi diff --git a/.circleci/is-version-number-acceptable.sh b/src/openfisca_extension_template/tests/test-version.sh similarity index 60% rename from .circleci/is-version-number-acceptable.sh rename to src/openfisca_extension_template/tests/test-version.sh index ae370e2..9566d9a 100755 --- a/.circleci/is-version-number-acceptable.sh +++ b/src/openfisca_extension_template/tests/test-version.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash -if [[ $CIRCLE_BRANCH == master ]] +if [[ ${GITHUB_REF#refs/heads/} == master ]] then echo "No need for a version check on master." exit 0 @@ -12,22 +12,24 @@ then exit 0 fi -current_version=`python setup.py --version` +current_version=$(python -m poetry version --short) if git rev-parse --verify --quiet $current_version then echo "Version $current_version already exists in commit:" git --no-pager log -1 $current_version echo - echo "Update the version number in setup.py before merging this branch into master." - echo "Look at the CONTRIBUTING.md file to learn how the version number should be updated." + echo "Update the version number in setup.py before merging this branch" + echo "into master. Look at the CONTRIBUTING.md file to learn how the" + echo "version number should be updated." exit 1 fi if ! $(dirname "$BASH_SOURCE")/has-functional-changes.sh | grep --quiet CHANGELOG.md then - echo "CHANGELOG.md has not been modified, while functional changes were made." - echo "Explain what you changed before merging this branch into master." - echo "Look at the CONTRIBUTING.md file to learn how to write the changelog." + echo "CHANGELOG.md has not been modified, while functional changes were" + echo "made. Explain what you changed before merging this branch into" + echo "master. Look at the CONTRIBUTING.md file to learn how to write the" + echo "changelog." exit 2 fi diff --git a/src/openfisca_extension_template/tests/test-api.sh b/src/openfisca_extension_template/tests/test-web-api.sh similarity index 100% rename from src/openfisca_extension_template/tests/test-api.sh rename to src/openfisca_extension_template/tests/test-web-api.sh