From 10e0c4dc3b2460bffc42c8664426b841d8ea71b4 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Thu, 1 Feb 2024 15:04:06 +0100 Subject: [PATCH 01/21] WIP ruff --- .pre-commit-config.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3f26dfea55..6a3e6c0484 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,6 +67,18 @@ repos: hooks: - id: black +# - repo: https://github.com/charliermarsh/ruff-pre-commit +# ##[[[cog +# ## import re +# ## version = re.search('ruff==([0-9\.]*)', open("constraints.txt").read())[1] +# ## print(f"rev: 'v{version}' # version from constraints.txt") +# ##]]] +# rev: 'v0.0.265' # version from constraints.txt +# ##[[[end]]] +# hooks: +# - id: ruff +# # args: [ --fix, --exit-non-zero-on-fix ] + - repo: https://github.com/PyCQA/isort ##[[[cog ## import re From 23aced3d3836a285edd263cc3bc1f41ae940f0e3 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Fri, 2 Feb 2024 13:35:45 +0100 Subject: [PATCH 02/21] Settings WIP --- .pre-commit-config.yaml | 30 +++++++------- constraints.txt | 16 ++++---- docs/development/tools/requirements.md | 2 +- min-extra-requirements-test.txt | 10 +++-- min-requirements-test.txt | 10 +++-- pyproject.toml | 54 +++++++++++++------------- requirements-dev.in | 10 +++-- requirements-dev.txt | 16 ++++---- 8 files changed, 82 insertions(+), 66 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6a3e6c0484..c9d77c0f97 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,17 +67,17 @@ repos: hooks: - id: black -# - repo: https://github.com/charliermarsh/ruff-pre-commit -# ##[[[cog -# ## import re -# ## version = re.search('ruff==([0-9\.]*)', open("constraints.txt").read())[1] -# ## print(f"rev: 'v{version}' # version from constraints.txt") -# ##]]] -# rev: 'v0.0.265' # version from constraints.txt -# ##[[[end]]] -# hooks: -# - id: ruff -# # args: [ --fix, --exit-non-zero-on-fix ] +- repo: https://github.com/charliermarsh/ruff-pre-commit + ##[[[cog + ## import re + ## version = re.search('ruff==([0-9\.]*)', open("constraints.txt").read())[1] + ## print(f"rev: 'v{version}' # version from constraints.txt") + ##]]] + rev: 'v0.2.0' # version from constraints.txt + ##[[[end]]] + hooks: + - id: ruff + # args: [ --fix, --exit-non-zero-on-fix ] - repo: https://github.com/PyCQA/isort ##[[[cog @@ -165,9 +165,13 @@ repos: - id: mypy additional_dependencies: # versions from constraints.txt ##[[[cog - ## import re, tomli + ## import re, sys + ## if sys.version_info >= (3, 11): + ## import tomllib + ## else: + ## import tomli as tomllib ## constraints = open("constraints.txt").read() - ## project = tomli.loads(open("pyproject.toml").read()) + ## project = tomllib.loads(open("pyproject.toml").read()) ## packages = [re.match('^([\w-][\w\d-]*)', r)[1] for r in project["project"]["dependencies"] if r.strip()] ## for pkg in packages: ## print(f"- {pkg}==" + str(re.search(f'\n{pkg}==([0-9\.]*)', constraints)[1])) diff --git a/constraints.txt b/constraints.txt index 3b32e53c0c..aeacd748d9 100644 --- a/constraints.txt +++ b/constraints.txt @@ -17,7 +17,7 @@ boltons==23.1.1 # via gt4py (pyproject.toml) build==1.0.3 # via pip-tools cached-property==1.5.2 # via gt4py (pyproject.toml) cachetools==5.3.2 # via tox -certifi==2023.11.17 # via requests +certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography cfgv==3.4.0 # via pre-commit chardet==5.2.0 # via tox @@ -29,7 +29,7 @@ cogapp==3.3.0 # via -r requirements-dev.in colorama==0.4.6 # via tox comm==0.2.1 # via ipykernel contourpy==1.1.1 # via matplotlib -coverage==7.4.1 # via -r requirements-dev.in, coverage, pytest-cov +coverage==7.4.1 # via -r requirements-dev.in, pytest-cov cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis cycler==0.12.1 # via matplotlib cytoolz==0.12.3 # via gt4py (pyproject.toml) @@ -64,7 +64,7 @@ fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace frozendict==2.4.0 # via gt4py (pyproject.toml) gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) -hypothesis==6.97.3 # via -r requirements-dev.in, gt4py (pyproject.toml) +hypothesis==6.97.4 # via -r requirements-dev.in, gt4py (pyproject.toml) identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx @@ -136,16 +136,16 @@ pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), pytest-cache==1.0 # via -r requirements-dev.in pytest-cov==4.1.0 # via -r requirements-dev.in pytest-factoryboy==2.6.0 # via -r requirements-dev.in -pytest-xdist==3.5.0 # via -r requirements-dev.in, pytest-xdist +pytest-xdist==3.5.0 # via -r requirements-dev.in python-dateutil==2.8.2 # via faker, jupyter-client, matplotlib -pytz==2023.4 # via babel +pytz==2024.1 # via babel pyyaml==6.0.1 # via dace, jupytext, pre-commit pyzmq==25.1.2 # via ipykernel, jupyter-client referencing==0.33.0 # via jsonschema, jsonschema-specifications requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing -ruff==0.1.15 # via -r requirements-dev.in +ruff==0.2.0 # via -r requirements-dev.in setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -163,7 +163,7 @@ stack-data==0.6.3 # via ipython sympy==1.9 # via dace, gt4py (pyproject.toml) tabulate==0.9.0 # via gt4py (pyproject.toml) toml==0.10.2 # via jupytext -tomli==2.0.1 # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox +tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox toolz==0.12.1 # via cytoolz tornado==6.4 # via ipykernel, jupyter-client tox==4.12.1 # via -r requirements-dev.in @@ -193,7 +193,7 @@ types-datetimerange==2.0.0.6 # via types-all types-decorator==5.1.8.20240106 # via types-all types-deprecated==1.2.9.20240106 # via types-all types-docopt==0.6.11.4 # via types-all -types-docutils==0.20.0.20240126 # via types-all +types-docutils==0.20.0.20240201 # via types-all types-emoji==2.1.0.3 # via types-all types-enum34==1.1.8 # via types-all types-fb303==1.0.0 # via types-all, types-scribe diff --git a/docs/development/tools/requirements.md b/docs/development/tools/requirements.md index a58cf49ac3..f120da905b 100644 --- a/docs/development/tools/requirements.md +++ b/docs/development/tools/requirements.md @@ -14,7 +14,7 @@ The following files in this repository contain information about required third- The expected workflow to update GT4Py requirements is as follows: -1. For changes in the GT4Py package dependencies, update the relevant table in `pyproject.toml`. When modifying the _project.optional-dependencies_ tables, make sure the `full` extra table **always** contains the combined dependencies from all the other extra tables. +1. For changes in the GT4Py package dependencies, update the relevant table in `pyproject.toml`. When adding new tables to the _project.optional-dependencies_ section, make sure to add the new table as a dependency of the `all` extra table when possible. 2. For changes in the development tools, update the `requirements-dev.in` file. diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 1db48693be..1fd1d103f8 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -1,6 +1,10 @@ ##[[[cog -## import re, tomli -## project = tomli.loads(open("pyproject.toml").read()) +## import re, sys +## if sys.version_info >= (3, 11): +## import tomllib +## else: +## import tomli as tomllib +## project = tomllib.loads(open("pyproject.toml").read()) ## requirements = set( ## rr ## for r in ( @@ -74,7 +78,7 @@ sphinx==4.4 sphinx_rtd_theme==1.0 sympy==1.9 tabulate==0.8.10 -tomli==2.0.1 +tomli==2.0.1;python_version<'3.11' tox==3.2.0 types-all==1.0.0 typing-extensions==4.2 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index badf08864e..cbfe0e0900 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -1,6 +1,10 @@ ##[[[cog -## import re, tomli -## project = tomli.loads(open("pyproject.toml").read()) +## import re, sys +## if sys.version_info >= (3, 11): +## import tomllib +## else: +## import tomli as tomllib +## project = tomllib.loads(open("pyproject.toml").read()) ## requirements = set( ## rr ## for r in ( @@ -69,7 +73,7 @@ setuptools==65.5.0 sphinx==4.4 sphinx_rtd_theme==1.0 tabulate==0.8.10 -tomli==2.0.1 +tomli==2.0.1;python_version<'3.11' tox==3.2.0 types-all==1.0.0 typing-extensions==4.2 diff --git a/pyproject.toml b/pyproject.toml index 5fffb9cf0c..2ddb8e1dc9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ classifiers = [ 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: Implementation :: CPython', 'Topic :: Scientific/Engineering :: Atmospheric Science', 'Topic :: Scientific/Engineering :: Mathematics', @@ -66,21 +67,12 @@ readme = 'README.md' requires-python = '>=3.8' [project.optional-dependencies] +all = ['gt4py[dace,formatting,jax,performance,testing]'] cuda = ['cupy>=12.0'] cuda11x = ['cupy-cuda11x>=12.0'] cuda12x = ['cupy-cuda12x>=12.0'] dace = ['dace>=0.15.1,<0.16', 'sympy>=1.9'] formatting = ['clang-format>=9.0'] -# Always add all extra packages to 'full' for a simple full gt4py installation -full = [ - 'clang-format>=9.0', - 'dace>=0.15.1,<0.16', - 'hypothesis>=6.0.0', - 'pytest>=7.0', - 'sympy>=1.9', - 'scipy>=1.7.2', - 'jax[cpu]>=0.4.13' -] jax = ['jax[cpu]>=0.4.13'] performance = ['scipy>=1.7.2'] testing = ['hypothesis>=6.0.0', 'pytest>=7.0'] @@ -196,6 +188,7 @@ known_third_party = [ 'boltons', 'cached_property', 'click', + 'cupy', 'dace', 'devtools', 'factory', @@ -364,33 +357,38 @@ testpaths = 'tests' # -- ruff -- [tool.ruff] -ignore = [ - 'E501', - 'B008', # Do not perform function calls in argument defaults - 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review - 'B905' # B905 `zip()` without an explicit `strict=` parameter # TODO: review -] -ignore-init-module-imports = true line-length = 100 # It should be the same as in `tool.black.line-length` above respect-gitignore = true -# Rules: +show-fixes = true +# show-source = true +target-version = 'py310' + +[tool.ruff.lint] +# # Rules sets: # E: pycodestyle # F: Pyflakes # I: isort # B: flake8-bugbear # A: flake8-builtins -# T100: flake8-debugger +# T10: flake8-debugger # ERA: eradicate # NPY: NumPy-specific rules # RUF: Ruff-specific rules -select = ['E', 'F', 'I', 'B', 'A', 'T100', 'ERA', 'NPY', 'RUF'] -show-fixes = true -# show-source = true -target-version = 'py310' +ignore = [ + 'B008', # Do not perform function calls in argument defaults + # 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review + 'B905', # B905 `zip()` without an explicit `strict=` parameter # TODO: review + # 'D1', # Public code object needs docstring + # 'E203', # Whitespace before ':' (black formatter breaks this sometimes) + 'E501', # Line too long (using Bugbear's B950 warning) + 'E701' # Multiple statements on one line, see https://github.com/psf/black/issues/3887 +] +ignore-init-module-imports = true +select = ['E', 'F', 'I', 'B', 'A', 'T10', 'ERA', 'NPY', 'RUF'] typing-modules = ['gt4py.eve.extended_typing'] unfixable = [] -[tool.ruff.isort] +[tool.ruff.lint.isort] combine-as-imports = true # force-wrap-aliases = true known-first-party = ['gt4py', '__externals__', '__gtscript__'] @@ -400,6 +398,7 @@ known-third-party = [ 'boltons', 'cached_property', 'click', + 'cupy', 'dace', 'devtools', 'factory', @@ -423,14 +422,15 @@ order-by-type = true section-order = ['future', 'standard-library', 'third-party', 'first-party', 'tests', 'local-folder'] split-on-trailing-comma = false -[tool.ruff.isort.sections] +[tool.ruff.lint.isort.sections] 'tests' = ['cartesian_tests', 'eve_tests', 'next_tests', 'storage_tests'] -[tool.ruff.mccabe] +[tool.ruff.lint.mccabe] max-complexity = 15 -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] 'src/gt4py/eve/extended_typing.py' = ['F401', 'F405'] +'src/gt4py/next/__init__.py' = ['F401'] # -- setuptools build backend -- [tool.setuptools] diff --git a/requirements-dev.in b/requirements-dev.in index 4bb05ecbc5..df6cf1e98a 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,6 +1,10 @@ ##[[[cog -## import re, tomli -## project = tomli.loads(open("pyproject.toml").read()) +## import re, sys +## if sys.version_info >= (3, 11): +## import tomllib +## else: +## import tomli as tomllib +## project = tomllib.loads(open("pyproject.toml").read()) ## versions = "\n".join(project["project"]["optional-dependencies"]["full"]) ## for pkg in ['hypothesis', 'pytest']: ## print(re.search(f"\n({pkg} *[=>~!].*)\n", versions)[1]) @@ -40,6 +44,6 @@ pytest-xdist[psutil]>=2.4 ruff>=0.0.265 sphinx>=4.4 sphinx_rtd_theme>=1.0 -tomli>=2.0.1 +tomli>=2.0.1;python_version<'3.11' tox>=3.2.0 types-all>=1.0.0 diff --git a/requirements-dev.txt b/requirements-dev.txt index 94052ec478..c18e081bf4 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -17,7 +17,7 @@ boltons==23.1.1 # via gt4py (pyproject.toml) build==1.0.3 # via pip-tools cached-property==1.5.2 # via gt4py (pyproject.toml) cachetools==5.3.2 # via tox -certifi==2023.11.17 # via requests +certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography cfgv==3.4.0 # via pre-commit chardet==5.2.0 # via tox @@ -29,7 +29,7 @@ cogapp==3.3.0 # via -r requirements-dev.in colorama==0.4.6 # via tox comm==0.2.1 # via ipykernel contourpy==1.1.1 # via matplotlib -coverage[toml]==7.4.1 # via -r requirements-dev.in, coverage, pytest-cov +coverage[toml]==7.4.1 # via -r requirements-dev.in, pytest-cov cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis cycler==0.12.1 # via matplotlib cytoolz==0.12.3 # via gt4py (pyproject.toml) @@ -64,7 +64,7 @@ fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace frozendict==2.4.0 # via gt4py (pyproject.toml) gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) -hypothesis==6.97.3 # via -r requirements-dev.in, gt4py (pyproject.toml) +hypothesis==6.97.4 # via -r requirements-dev.in, gt4py (pyproject.toml) identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx @@ -136,16 +136,16 @@ pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), pytest-cache==1.0 # via -r requirements-dev.in pytest-cov==4.1.0 # via -r requirements-dev.in pytest-factoryboy==2.6.0 # via -r requirements-dev.in -pytest-xdist[psutil]==3.5.0 # via -r requirements-dev.in, pytest-xdist +pytest-xdist[psutil]==3.5.0 # via -r requirements-dev.in python-dateutil==2.8.2 # via faker, jupyter-client, matplotlib -pytz==2023.4 # via babel +pytz==2024.1 # via babel pyyaml==6.0.1 # via dace, jupytext, pre-commit pyzmq==25.1.2 # via ipykernel, jupyter-client referencing==0.33.0 # via jsonschema, jsonschema-specifications requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing -ruff==0.1.15 # via -r requirements-dev.in +ruff==0.2.0 # via -r requirements-dev.in setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -163,7 +163,7 @@ stack-data==0.6.3 # via ipython sympy==1.9 # via dace, gt4py (pyproject.toml) tabulate==0.9.0 # via gt4py (pyproject.toml) toml==0.10.2 # via jupytext -tomli==2.0.1 # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox +tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox toolz==0.12.1 # via cytoolz tornado==6.4 # via ipykernel, jupyter-client tox==4.12.1 # via -r requirements-dev.in @@ -193,7 +193,7 @@ types-datetimerange==2.0.0.6 # via types-all types-decorator==5.1.8.20240106 # via types-all types-deprecated==1.2.9.20240106 # via types-all types-docopt==0.6.11.4 # via types-all -types-docutils==0.20.0.20240126 # via types-all +types-docutils==0.20.0.20240201 # via types-all types-emoji==2.1.0.3 # via types-all types-enum34==1.1.8 # via types-all types-fb303==1.0.0 # via types-all, types-scribe From 000bd2841726c2cae75595b189e417ebfba14c8b Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Fri, 2 Feb 2024 14:11:05 +0100 Subject: [PATCH 03/21] tt --- pyproject.toml | 6 +++++- src/gt4py/cartesian/__gtscript__.py | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2ddb8e1dc9..e9857597a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -363,6 +363,9 @@ show-fixes = true # show-source = true target-version = 'py310' +[tool.ruff.format] +docstring-code-format = true + [tool.ruff.lint] # # Rules sets: # E: pycodestyle @@ -381,7 +384,8 @@ ignore = [ # 'D1', # Public code object needs docstring # 'E203', # Whitespace before ':' (black formatter breaks this sometimes) 'E501', # Line too long (using Bugbear's B950 warning) - 'E701' # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'RUF100' ] ignore-init-module-imports = true select = ['E', 'F', 'I', 'B', 'A', 'T10', 'ERA', 'NPY', 'RUF'] diff --git a/src/gt4py/cartesian/__gtscript__.py b/src/gt4py/cartesian/__gtscript__.py index 32ed7d1a6b..32f09d0629 100644 --- a/src/gt4py/cartesian/__gtscript__.py +++ b/src/gt4py/cartesian/__gtscript__.py @@ -20,7 +20,7 @@ import sys -from gt4py.cartesian.gtscript import * +from gt4py.cartesian.gtscript import * # noqa: F403 # star import is intended here sys.modules["__gtscript__"] = sys.modules["gt4py.cartesian.__gtscript__"] From 932f8e7c3b2f5edd5027e1df5b23b247a611e6be Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Fri, 2 Feb 2024 14:11:14 +0100 Subject: [PATCH 04/21] t --- .pre-commit-config.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c9d77c0f97..62bf3ce0ab 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,17 +67,17 @@ repos: hooks: - id: black -- repo: https://github.com/charliermarsh/ruff-pre-commit - ##[[[cog - ## import re - ## version = re.search('ruff==([0-9\.]*)', open("constraints.txt").read())[1] - ## print(f"rev: 'v{version}' # version from constraints.txt") - ##]]] - rev: 'v0.2.0' # version from constraints.txt - ##[[[end]]] - hooks: - - id: ruff - # args: [ --fix, --exit-non-zero-on-fix ] +# - repo: https://github.com/charliermarsh/ruff-pre-commit +# ##[[[cog +# ## import re +# ## version = re.search('ruff==([0-9\.]*)', open("constraints.txt").read())[1] +# ## print(f"# rev: 'v{version}' # version from constraints.txt") +# ##]]] +# rev: 'v0.2.0' # version from constraints.txt +# ##[[[end]]] +# hooks: +# - id: ruff +# # args: [ --fix, --exit-non-zero-on-fix ] - repo: https://github.com/PyCQA/isort ##[[[cog From 963d46a74937b387c25145882af40eb69e9ca619 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Fri, 2 Feb 2024 15:46:31 +0100 Subject: [PATCH 05/21] Manual workflow dispatch --- .github/workflows/daily-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/daily-ci.yml b/.github/workflows/daily-ci.yml index 8631390dbb..9935370016 100644 --- a/.github/workflows/daily-ci.yml +++ b/.github/workflows/daily-ci.yml @@ -4,6 +4,8 @@ on: schedule: - cron: '0 4 * * *' + workflow_dispatch: + ## COMMENTED OUT: only for testing CI action changes # pull_request: # branches: From cda15efd73328390c421a81fed935cc891f80292 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Fri, 2 Feb 2024 15:48:57 +0100 Subject: [PATCH 06/21] Try CI again --- .github/workflows/daily-ci.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/daily-ci.yml b/.github/workflows/daily-ci.yml index 9935370016..acb9712f3c 100644 --- a/.github/workflows/daily-ci.yml +++ b/.github/workflows/daily-ci.yml @@ -4,13 +4,11 @@ on: schedule: - cron: '0 4 * * *' - workflow_dispatch: - - ## COMMENTED OUT: only for testing CI action changes - # pull_request: - # branches: - # - main - ## END + # COMMENTED OUT: only for testing CI action changes + pull_request: + branches: + - main + # END jobs: daily-ci: From 3d7ed95b1c2bc8becdce89f5808d906e4e411e04 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 12:58:56 +0100 Subject: [PATCH 07/21] Refactor cog scripts to avoid regular expression hacks. --- constraints.txt | 82 +++++++++++++------------ min-extra-requirements-test.txt | 67 +++++++++++++++------ min-requirements-test.txt | 63 ++++++++++++++------ pyproject.toml | 102 +++++++++++++++++++------------- requirements-dev.in | 24 +++----- requirements-dev.txt | 82 +++++++++++++------------ tox.ini | 11 ++-- 7 files changed, 258 insertions(+), 173 deletions(-) diff --git a/constraints.txt b/constraints.txt index aeacd748d9..d48b4c36b1 100644 --- a/constraints.txt +++ b/constraints.txt @@ -7,24 +7,24 @@ aenum==3.1.15 # via dace alabaster==0.7.13 # via sphinx asttokens==2.4.1 # via devtools, stack-data -astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py (pyproject.toml) -attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py (pyproject.toml), hypothesis, jsonschema, referencing +astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py, gt4py (pyproject.toml) +attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py, gt4py (pyproject.toml), hypothesis, jsonschema, referencing babel==2.14.0 # via sphinx backcall==0.2.0 # via ipython -black==24.1.1 # via gt4py (pyproject.toml) +black==24.1.1 # via gt4py, gt4py (pyproject.toml) blinker==1.7.0 # via flask -boltons==23.1.1 # via gt4py (pyproject.toml) +boltons==23.1.1 # via gt4py, gt4py (pyproject.toml) build==1.0.3 # via pip-tools -cached-property==1.5.2 # via gt4py (pyproject.toml) +cached-property==1.5.2 # via gt4py, gt4py (pyproject.toml) cachetools==5.3.2 # via tox certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography cfgv==3.4.0 # via pre-commit chardet==5.2.0 # via tox charset-normalizer==3.3.2 # via requests -clang-format==17.0.6 # via -r requirements-dev.in, gt4py (pyproject.toml) -click==8.1.7 # via black, flask, gt4py (pyproject.toml), pip-tools -cmake==3.28.1 # via gt4py (pyproject.toml) +clang-format==17.0.6 # via -r requirements-dev.in, gt4py +click==8.1.7 # via black, flask, gt4py, gt4py (pyproject.toml), pip-tools +cmake==3.28.1 # via gt4py, gt4py (pyproject.toml) cogapp==3.3.0 # via -r requirements-dev.in colorama==0.4.6 # via tox comm==0.2.1 # via ipykernel @@ -32,13 +32,13 @@ contourpy==1.1.1 # via matplotlib coverage==7.4.1 # via -r requirements-dev.in, pytest-cov cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis cycler==0.12.1 # via matplotlib -cytoolz==0.12.3 # via gt4py (pyproject.toml) -dace==0.15.1 # via gt4py (pyproject.toml) +cytoolz==0.12.3 # via gt4py, gt4py (pyproject.toml) +dace==0.15.1 # via gt4py darglint==1.8.1 # via -r requirements-dev.in debugpy==1.8.0 # via ipykernel decorator==5.1.1 # via ipython -deepdiff==6.7.1 # via gt4py (pyproject.toml) -devtools==0.12.2 # via gt4py (pyproject.toml) +deepdiff==6.7.1 # via gt4py, gt4py (pyproject.toml) +devtools==0.12.2 # via gt4py, gt4py (pyproject.toml) dill==0.3.8 # via dace distlib==0.3.8 # via virtualenv docutils==0.20.1 # via restructuredtext-lint, sphinx, sphinx-rtd-theme @@ -59,54 +59,59 @@ flake8-eradicate==1.5.0 # via -r requirements-dev.in flake8-mutable==1.2.0 # via -r requirements-dev.in flake8-pyproject==1.2.3 # via -r requirements-dev.in flake8-rst-docstrings==0.3.0 # via -r requirements-dev.in -flask==3.0.1 # via dace +flask==3.0.2 # via dace fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace -frozendict==2.4.0 # via gt4py (pyproject.toml) -gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) -hypothesis==6.97.4 # via -r requirements-dev.in, gt4py (pyproject.toml) +frozendict==2.4.0 # via gt4py, gt4py (pyproject.toml) +gridtools-cpp==2.3.2 # via gt4py, gt4py (pyproject.toml) +gt4py @ file:///home/enriqueg/Projects/GT/gt4py/wip-settings # via gt4py (pyproject.toml) +hypothesis==6.98.1 # via -r requirements-dev.in, gt4py identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.0.1 # via build, flask, jupyter-client, sphinx -importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib +importlib-metadata==7.0.1 # via build, flask, jax, jupyter-client, sphinx +importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py, gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib inflection==0.5.1 # via pytest-factoryboy iniconfig==2.0.0 # via pytest ipykernel==6.29.0 # via nbmake ipython==8.12.3 # via ipykernel isort==5.13.2 # via -r requirements-dev.in itsdangerous==2.1.2 # via flask +jax==0.4.13 # via gt4py +jaxlib==0.4.13 # via jax jedi==0.19.1 # via ipython -jinja2==3.1.3 # via flask, gt4py (pyproject.toml), sphinx +jinja2==3.1.3 # via flask, gt4py, gt4py (pyproject.toml), sphinx jsonschema==4.21.1 # via nbformat jsonschema-specifications==2023.12.1 # via jsonschema jupyter-client==8.6.0 # via ipykernel, nbclient jupyter-core==5.7.1 # via ipykernel, jupyter-client, nbformat jupytext==1.16.1 # via -r requirements-dev.in kiwisolver==1.4.5 # via matplotlib -lark==1.1.9 # via gt4py (pyproject.toml) -mako==1.3.2 # via gt4py (pyproject.toml) +lark==1.1.9 # via gt4py, gt4py (pyproject.toml) +mako==1.3.2 # via gt4py, gt4py (pyproject.toml) markdown-it-py==3.0.0 # via jupytext, mdit-py-plugins -markupsafe==2.1.4 # via jinja2, mako, werkzeug +markupsafe==2.1.5 # via jinja2, mako, werkzeug matplotlib==3.7.4 # via -r requirements-dev.in matplotlib-inline==0.1.6 # via ipykernel, ipython mccabe==0.7.0 # via flake8 mdit-py-plugins==0.4.0 # via jupytext mdurl==0.1.2 # via markdown-it-py +ml-dtypes==0.2.0 # via jax, jaxlib mpmath==1.3.0 # via sympy mypy==1.8.0 # via -r requirements-dev.in mypy-extensions==1.0.0 # via black, mypy -nanobind==1.8.0 # via gt4py (pyproject.toml) +nanobind==1.8.0 # via gt4py, gt4py (pyproject.toml) nbclient==0.6.8 # via nbmake nbformat==5.9.2 # via jupytext, nbclient, nbmake nbmake==1.5.0 # via -r requirements-dev.in nest-asyncio==1.6.0 # via ipykernel, nbclient networkx==3.1 # via dace -ninja==1.11.1.1 # via gt4py (pyproject.toml) +ninja==1.11.1.1 # via gt4py, gt4py (pyproject.toml) nodeenv==1.8.0 # via pre-commit -numpy==1.24.4 # via contourpy, dace, gt4py (pyproject.toml), matplotlib, types-jack-client +numpy==1.24.4 # via contourpy, dace, gt4py, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client +opt-einsum==3.3.0 # via jax ordered-set==4.1.0 # via deepdiff -packaging==23.2 # via black, build, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox +packaging==23.2 # via black, build, gt4py, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox parso==0.8.3 # via jedi pathspec==0.12.1 # via black pexpect==4.9.0 # via ipython @@ -123,7 +128,7 @@ prompt-toolkit==3.0.43 # via ipython psutil==5.9.8 # via -r requirements-dev.in, ipykernel, pytest-xdist ptyprocess==0.7.0 # via pexpect pure-eval==0.2.2 # via stack-data -pybind11==2.11.1 # via gt4py (pyproject.toml) +pybind11==2.11.1 # via gt4py, gt4py (pyproject.toml) pycodestyle==2.11.1 # via flake8, flake8-debugger pycparser==2.21 # via cffi pydocstyle==6.3.0 # via flake8-docstrings @@ -132,7 +137,7 @@ pygments==2.17.2 # via -r requirements-dev.in, devtools, flake8-rst-doc pyparsing==3.1.1 # via matplotlib pyproject-api==1.6.1 # via tox pyproject-hooks==1.0.0 # via build -pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist +pytest==8.0.0 # via -r requirements-dev.in, gt4py, nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist pytest-cache==1.0 # via -r requirements-dev.in pytest-cov==4.1.0 # via -r requirements-dev.in pytest-factoryboy==2.6.0 # via -r requirements-dev.in @@ -146,6 +151,7 @@ requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing ruff==0.2.0 # via -r requirements-dev.in +scipy==1.10.1 # via gt4py, jax, jaxlib setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -160,8 +166,8 @@ sphinxcontrib-jsmath==1.0.1 # via sphinx sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.6.3 # via ipython -sympy==1.9 # via dace, gt4py (pyproject.toml) -tabulate==0.9.0 # via gt4py (pyproject.toml) +sympy==1.9 # via dace, gt4py +tabulate==0.9.0 # via gt4py, gt4py (pyproject.toml) toml==0.10.2 # via jupytext tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox toolz==0.12.1 # via cytoolz @@ -175,7 +181,7 @@ types-atomicwrites==1.4.5.1 # via types-all types-backports==0.1.3 # via types-all types-backports-abc==0.5.2 # via types-all types-bleach==6.1.0.1 # via types-all -types-boto==2.49.18.9 # via types-all +types-boto==2.49.18.20240205 # via types-all types-cachetools==5.3.0.7 # via types-all types-certifi==2021.10.8.3 # via types-all types-cffi==1.16.0.20240106 # via types-jack-client @@ -183,7 +189,7 @@ types-characteristic==14.3.7 # via types-all types-chardet==5.0.4.6 # via types-all types-click==7.1.8 # via types-all, types-flask types-click-spinner==0.1.13.20240106 # via types-all -types-colorama==0.4.15.20240106 # via types-all +types-colorama==0.4.15.20240205 # via types-all types-contextvars==2.4.7.3 # via types-all types-croniter==2.0.0.20240106 # via types-all types-cryptography==3.3.23.2 # via types-all, types-openssl-python, types-pyjwt @@ -217,7 +223,7 @@ types-mypy-extensions==1.0.0.5 # via types-all types-nmap==0.1.6 # via types-all types-openssl-python==0.1.3 # via types-all types-orjson==3.6.2 # via types-all -types-paramiko==3.4.0.20240120 # via types-all, types-pysftp +types-paramiko==3.4.0.20240205 # via types-all, types-pysftp types-pathlib2==2.3.0 # via types-all types-pillow==10.2.0.20240125 # via types-all types-pkg-resources==0.1.3 # via types-all @@ -235,7 +241,7 @@ types-pysftp==0.2.17.20240106 # via types-all types-python-dateutil==2.8.19.20240106 # via types-all, types-datetimerange types-python-gflags==3.1.7.3 # via types-all types-python-slugify==8.0.2.20240127 # via types-all -types-pytz==2023.4.0.20240130 # via types-all, types-tzlocal +types-pytz==2024.1.0.20240203 # via types-all, types-tzlocal types-pyvmomi==8.0.0.6 # via types-all types-pyyaml==6.0.12.12 # via types-all types-redis==4.6.0.20240106 # via types-all @@ -257,16 +263,16 @@ types-ujson==5.9.0.0 # via types-all types-waitress==2.1.4.20240106 # via types-all types-werkzeug==1.0.9 # via types-all, types-flask types-xxhash==3.0.5.2 # via types-all -typing-extensions==4.5.0 # via black, faker, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm +typing-extensions==4.5.0 # via black, faker, gt4py, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm urllib3==2.2.0 # via requests, types-requests virtualenv==20.25.0 # via pre-commit, tox wcwidth==0.2.13 # via prompt-toolkit websockets==12.0 # via dace werkzeug==3.0.1 # via flask wheel==0.42.0 # via astunparse, pip-tools -xxhash==3.0.0 # via gt4py (pyproject.toml) +xxhash==3.0.0 # via gt4py, gt4py (pyproject.toml) zipp==3.17.0 # via importlib-metadata, importlib-resources # The following packages are considered to be unsafe in a requirements file: -pip==23.3.2 # via pip-tools -setuptools==69.0.3 # via gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm +pip==24.0 # via pip-tools +setuptools==69.0.3 # via gt4py, gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 1fd1d103f8..3d569db721 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -1,24 +1,55 @@ +# +# Generated automatically by cog from pyproject.toml and requirements-dev.in +# Run: +# tox r -e requirements-common +# + ##[[[cog -## import re, sys +## import copy, sys +## from packaging import requirements as reqs, specifiers as specs ## if sys.version_info >= (3, 11): -## import tomllib +## import tomllib ## else: -## import tomli as tomllib +## import tomli as tomllib +## +## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: +## for s in r.specifier: +## if (ss := str(s)).startswith(">"): +## min_spec = f"=={ss[1:]}" if ss[1] != "=" else f"=={ss[2:]}" +## spec = specs.SpecifierSet(min_spec) +## break +## min_r = copy.deepcopy(r) +## min_r.specifier = spec +## return min_r +## ## project = tomllib.loads(open("pyproject.toml").read()) -## requirements = set( -## rr -## for r in ( -## project["project"]["dependencies"] -## + project["project"]["optional-dependencies"]["full"] -## + open("requirements-dev.in").readlines() -## ) -## if (rr := r.strip()) and not rr.startswith('#') -## ) -## for r in sorted(requirements): -## m = re.match("^([\w-][\w\d\[\]-]*)[=>~][=]([^,]+)", r) -## print(f"{m[1]}=={m[2].strip()}") +## all_cpu_extra = project["project"]["optional-dependencies"]["all-cpu"] +## assert len(all_cpu_extra) == 1 and all_cpu_extra[0].startswith("gt4py[") +## opt_req_versions = { +## reqs.Requirement(r).name: reqs.Requirement(r) +## for e in reqs.Requirement(all_cpu_extra[0]).extras +## for r in project["project"]["optional-dependencies"][e] +## } +## requirements = [ +## reqs.Requirement(rr) +## for r in (project["project"]["dependencies"] + open("requirements-dev.in").readlines()) +## if (rr := (r[: r.find("#")] if "#" in r else r)) +## ] +## processed = set() +## result = [] +## for r in requirements: +## assert r.name not in processed +## processed.add(r.name) +## if not r.specifier: +## assert r.name in opt_req_versions, f"Missing contraints for '{r.name}'" +## r = opt_req_versions[r.name] +## result.append(str(make_min_req(r))) +## for r_name, r in opt_req_versions.items(): +## if r_name not in processed: +## result.append(str(make_min_req(r))) +## print("\n".join(sorted(result))) ##]]] -astunparse==1.6.3;python_version<'3.9' +astunparse==1.6.3; python_version < "3.9" attrs==21.3 black==22.3 boltons==20.1 @@ -46,7 +77,7 @@ flake8==5.0.4 frozendict==2.3 gridtools-cpp==2.3.2 hypothesis==6.0.0 -importlib-resources==5.0;python_version<'3.9' +importlib-resources==5.0; python_version < "3.9" isort==5.10 jax[cpu]==0.4.13 jinja2==3.0.0 @@ -78,7 +109,7 @@ sphinx==4.4 sphinx_rtd_theme==1.0 sympy==1.9 tabulate==0.8.10 -tomli==2.0.1;python_version<'3.11' +tomli==2.0.1; python_version < "3.11" tox==3.2.0 types-all==1.0.0 typing-extensions==4.2 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index cbfe0e0900..72c5382e43 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -1,23 +1,52 @@ +# +# Generated automatically by cog from pyproject.toml and requirements-dev.in +# Run: +# tox r -e requirements-common +# + ##[[[cog -## import re, sys +## import copy, sys +## from packaging import requirements as reqs, specifiers as specs ## if sys.version_info >= (3, 11): -## import tomllib +## import tomllib ## else: -## import tomli as tomllib +## import tomli as tomllib +## +## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: +## for s in r.specifier: +## if (ss := str(s)).startswith(">"): +## min_spec = f"=={ss[1:]}" if ss[1] != "=" else f"=={ss[2:]}" +## spec = specs.SpecifierSet(min_spec) +## break +## min_r = copy.deepcopy(r) +## min_r.specifier = spec +## return min_r +## ## project = tomllib.loads(open("pyproject.toml").read()) -## requirements = set( -## rr -## for r in ( -## project["project"]["dependencies"] -## + open("requirements-dev.in").readlines() -## ) -## if (rr := r.strip()) and not rr.startswith('#') -## ) -## for r in sorted(requirements): -## m = re.match("^([\w-][\w\d\[\]-]*)[=>~][=]([^,]+)", r) -## print(f"{m[1]}=={m[2].strip()}") +## all_cpu_extra = project["project"]["optional-dependencies"]["all-cpu"] +## assert len(all_cpu_extra) == 1 and all_cpu_extra[0].startswith("gt4py[") +## opt_req_versions = { +## reqs.Requirement(r).name: reqs.Requirement(r) +## for e in reqs.Requirement(all_cpu_extra[0]).extras +## for r in project["project"]["optional-dependencies"][e] +## } +## requirements = [ +## reqs.Requirement(rr) +## for r in (project["project"]["dependencies"] + open("requirements-dev.in").readlines()) +## if (rr := (r[: r.find("#")] if "#" in r else r)) +## ] +## processed = set() +## result = [] +## for r in requirements: +## assert r.name not in processed +## processed.add(r.name) +## if not r.specifier: +## assert r.name in opt_req_versions, f"Missing contraints for '{r.name}'" +## r = opt_req_versions[r.name] +## result.append(str(make_min_req(r))) +## print("\n".join(sorted(result))) ##]]] -astunparse==1.6.3;python_version<'3.9' +astunparse==1.6.3; python_version < "3.9" attrs==21.3 black==22.3 boltons==20.1 @@ -44,7 +73,7 @@ flake8==5.0.4 frozendict==2.3 gridtools-cpp==2.3.2 hypothesis==6.0.0 -importlib-resources==5.0;python_version<'3.9' +importlib-resources==5.0; python_version < "3.9" isort==5.10 jinja2==3.0.0 jupytext==1.14 @@ -73,7 +102,7 @@ setuptools==65.5.0 sphinx==4.4 sphinx_rtd_theme==1.0 tabulate==0.8.10 -tomli==2.0.1;python_version<'3.11' +tomli==2.0.1; python_version < "3.11" tox==3.2.0 types-all==1.0.0 typing-extensions==4.2 diff --git a/pyproject.toml b/pyproject.toml index e9857597a5..ef2fc17d08 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ requires = ['setuptools>=60.6', 'wheel', 'cython'] # ---- Project description ---- # -- Standard options (PEP 621) -- [project] -authors = [{name = 'ETH Zurich', email = 'gridtools@cscs.ch'}] +authors = [{ name = 'ETH Zurich', email = 'gridtools@cscs.ch' }] classifiers = [ 'Development Status :: 4 - Beta', 'Environment :: Console', @@ -21,7 +21,7 @@ classifiers = [ 'Programming Language :: Python :: Implementation :: CPython', 'Topic :: Scientific/Engineering :: Atmospheric Science', 'Topic :: Scientific/Engineering :: Mathematics', - 'Topic :: Scientific/Engineering :: Physics' + 'Topic :: Scientific/Engineering :: Physics', ] dependencies = [ "astunparse>=1.6.3;python_version<'3.9'", @@ -48,7 +48,7 @@ dependencies = [ 'setuptools>=65.5.0', 'tabulate>=0.8.10', 'typing-extensions>=4.2,<4.6.0', - 'xxhash>=1.4.4,<3.1.0' + 'xxhash>=1.4.4,<3.1.0', ] description = 'Python library for generating high-performance implementations of stencil kernels for weather and climate modeling from a domain-specific language (DSL)' dynamic = ['version'] @@ -59,21 +59,29 @@ keywords = [ 'climate', 'performance', 'portable', - 'hpc' + 'hpc', ] -license = {text = 'GPL-3.0-or-later'} +license = { text = 'GPL-3.0-or-later' } name = 'gt4py' readme = 'README.md' requires-python = '>=3.8' [project.optional-dependencies] -all = ['gt4py[dace,formatting,jax,performance,testing]'] -cuda = ['cupy>=12.0'] -cuda11x = ['cupy-cuda11x>=12.0'] -cuda12x = ['cupy-cuda12x>=12.0'] +# Bundles +all-cpu = ['gt4py[dace,formatting,jax-cpu,performance,testing]'] +all-cuda11 = ['gt4py[cuda11,dace,formatting,jax-cuda11,performance,testing]'] +all-cuda12 = ['gt4py[cuda12,dace,formatting,jax-cuda12,performance,testing]'] +# Device support +gpu = ['cupy>=12.0'] +cuda11 = ['cupy-cuda11x>=12.0'] +cuda12 = ['cupy-cuda12x>=12.0'] +rocm-43 = ['cupy-rocm-4-3'] +# Other packages dace = ['dace>=0.15.1,<0.16', 'sympy>=1.9'] formatting = ['clang-format>=9.0'] -jax = ['jax[cpu]>=0.4.13'] +jax-cpu = ['jax[cpu]>=0.4.13'] +jax-cuda11 = ['jax[cuda11_pip]>=0.4.13'] +jax-cuda12 = ['jax[cuda12_pip]>=0.4.13'] performance = ['scipy>=1.7.2'] testing = ['hypothesis>=6.0.0', 'pytest>=7.0'] @@ -118,10 +126,10 @@ source = ['src/', '.tox/py*/lib/python3.*/site-packages/'] [tool.coverage.report] # Regexes for lines to exclude from consideration exclude_lines = [ - 'raise AssertionError', # Don't complain if tests don't hit defensive assertion code + 'raise AssertionError', # Don't complain if tests don't hit defensive assertion code 'raise NotImplementedError', # Don't complain if tests don't hit defensive assertion code - 'if 0:', # Don't complain if non-runnable code isn't run - 'if __name__ == .__main__.:' # Don't complain if non-runnable code isn't run + 'if 0:', # Don't complain if non-runnable code isn't run + 'if __name__ == .__main__.:', # Don't complain if non-runnable code isn't run ] ignore_errors = true @@ -145,24 +153,24 @@ exclude = [ 'dist', 'docs', 'tests/_disabled', - 'setup.py' + 'setup.py', ] ignore = [ - 'B008', # Do not perform function calls in argument defaults - 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review this ignore - 'D1', # Public code object needs docstring + 'B008', # Do not perform function calls in argument defaults + 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review this ignore + 'D1', # Public code object needs docstring 'DAR', # Disable dargling errors by default - 'E203', # Whitespace before ':' (black formatter breaks this sometimes) - 'E501', # Line too long (using Bugbear's B950 warning) - 'W503', # Line break occurred before a binary operator - 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 - 'E704' # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'E203', # Whitespace before ':' (black formatter breaks this sometimes) + 'E501', # Line too long (using Bugbear's B950 warning) + 'W503', # Line break occurred before a binary operator + 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'E704', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 ] max-complexity = 15 -max-line-length = 100 # It should be the same as in `tool.black.line-length` above +max-line-length = 100 # It should be the same as in `tool.black.line-length` above per-file-ignores = [ 'src/gt4py/eve/extended_typing.py:F401,F405', - 'src/gt4py/next/__init__.py:F401' # We import stuff there in order to reexport. + 'src/gt4py/next/__init__.py:F401', # We import stuff there in order to reexport. ] rst-roles = [ 'py:mod, mod', @@ -173,7 +181,7 @@ rst-roles = [ 'py:meth, meth', 'py:attr, attr', 'py:exc, exc', - 'py:obj, obj' + 'py:obj, obj', ] # -- isort -- @@ -205,13 +213,20 @@ known_third_party = [ 'setuptools', 'tabulate', 'typing_extensions', - 'xxhash' + 'xxhash', ] lexicographical = true -line_length = 100 # It should be the same as in `tool.black.line-length` above +line_length = 100 # It should be the same as in `tool.black.line-length` above lines_after_imports = 2 profile = 'black' -sections = ['FUTURE', 'STDLIB', 'THIRDPARTY', 'FIRSTPARTY', 'TESTS', 'LOCALFOLDER'] +sections = [ + 'FUTURE', + 'STDLIB', + 'THIRDPARTY', + 'FIRSTPARTY', + 'TESTS', + 'LOCALFOLDER', +] skip_gitignore = true skip_glob = ['*.venv/**', '_local/**'] @@ -232,7 +247,7 @@ exclude = [ '^tests/next_tests/integration_tests/feature_tests/otf_tests/*.py$', '^tests/next_tests/integration_tests/feature_tests/math_builtin_test_data.py$', '^tests/next_tests/past_common_fixtures.py$', - '^tests/next_tests/toy_connectivity.py$' + '^tests/next_tests/toy_connectivity.py$', ] ignore_missing_imports = true install_types = true @@ -350,14 +365,14 @@ markers = [ 'uses_unstructured_shift: tests that use a unstructured connectivity', 'uses_max_over: tests that use the max_over builtin', 'uses_mesh_with_skip_values: tests that use a mesh with skip values', - 'checks_specific_error: tests that rely on the backend to produce a specific error message' + 'checks_specific_error: tests that rely on the backend to produce a specific error message', ] norecursedirs = ['dist', 'build', 'cpp_backend_tests/build*', '_local/*', '.*'] testpaths = 'tests' # -- ruff -- [tool.ruff] -line-length = 100 # It should be the same as in `tool.black.line-length` above +line-length = 100 # It should be the same as in `tool.black.line-length` above respect-gitignore = true show-fixes = true # show-source = true @@ -378,14 +393,14 @@ docstring-code-format = true # NPY: NumPy-specific rules # RUF: Ruff-specific rules ignore = [ - 'B008', # Do not perform function calls in argument defaults + 'B008', # Do not perform function calls in argument defaults # 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review - 'B905', # B905 `zip()` without an explicit `strict=` parameter # TODO: review + 'B905', # B905 `zip()` without an explicit `strict=` parameter # TODO: review # 'D1', # Public code object needs docstring # 'E203', # Whitespace before ':' (black formatter breaks this sometimes) - 'E501', # Line too long (using Bugbear's B950 warning) - 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 - 'RUF100' + 'E501', # Line too long (using Bugbear's B950 warning) + 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'RUF100', ] ignore-init-module-imports = true select = ['E', 'F', 'I', 'B', 'A', 'T10', 'ERA', 'NPY', 'RUF'] @@ -419,11 +434,18 @@ known-third-party = [ 'setuptools', 'tabulate', 'typing_extensions', - 'xxhash' + 'xxhash', ] lines-after-imports = 2 order-by-type = true -section-order = ['future', 'standard-library', 'third-party', 'first-party', 'tests', 'local-folder'] +section-order = [ + 'future', + 'standard-library', + 'third-party', + 'first-party', + 'tests', + 'local-folder', +] split-on-trailing-comma = false [tool.ruff.lint.isort.sections] @@ -441,11 +463,11 @@ max-complexity = 15 platforms = ['Linux', 'Mac'] [tool.setuptools.dynamic] -version = {attr = 'gt4py.__about__.__version__'} +version = { attr = 'gt4py.__about__.__version__' } [tool.setuptools.package-data] '*' = ['*.in', '*.txt'] 'gt4py' = ['py.typed', '*.md', '*.rst'] [tool.setuptools.packages] -find = {namespaces = false, where = ['src']} +find = { namespaces = false, where = ['src'] } diff --git a/requirements-dev.in b/requirements-dev.in index df6cf1e98a..38ba572993 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,18 +1,10 @@ -##[[[cog -## import re, sys -## if sys.version_info >= (3, 11): -## import tomllib -## else: -## import tomli as tomllib -## project = tomllib.loads(open("pyproject.toml").read()) -## versions = "\n".join(project["project"]["optional-dependencies"]["full"]) -## for pkg in ['hypothesis', 'pytest']: -## print(re.search(f"\n({pkg} *[=>~!].*)\n", versions)[1]) -##]]] -hypothesis>=6.0.0 -pytest>=7.0 -##[[[end]]] - +# +# Constraints should specify the minimum required version. +# +# Packages also required in the extra `gt4py['all']` configuration +# should be added here without constraints, so they will use the +# constraints defined in `pyproject.toml`. +# clang-format>=9.0 cogapp>=3.3 coverage[toml]>=5.0 @@ -27,6 +19,7 @@ flake8-eradicate>=1.3.0 flake8-mutable>=1.2.0 flake8-pyproject>=1.2.2 flake8-rst-docstrings>=0.0.14 +hypothesis # constraints in gt4py['testing'] isort>=5.10 jupytext>=1.14 mypy>=1.0 @@ -37,6 +30,7 @@ pip-tools>=6.10 pre-commit>=2.17 psutil>=5.0 pygments>=2.7.3 +pytest # constraints in gt4py['testing'] pytest-cache>=1.0 pytest-cov>=2.8 pytest-factoryboy>=2.0.3 diff --git a/requirements-dev.txt b/requirements-dev.txt index c18e081bf4..1e2ad7ca0a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,24 +7,24 @@ aenum==3.1.15 # via dace alabaster==0.7.13 # via sphinx asttokens==2.4.1 # via devtools, stack-data -astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py (pyproject.toml) -attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py (pyproject.toml), hypothesis, jsonschema, referencing +astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py, gt4py (pyproject.toml) +attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py, gt4py (pyproject.toml), hypothesis, jsonschema, referencing babel==2.14.0 # via sphinx backcall==0.2.0 # via ipython -black==24.1.1 # via gt4py (pyproject.toml) +black==24.1.1 # via gt4py, gt4py (pyproject.toml) blinker==1.7.0 # via flask -boltons==23.1.1 # via gt4py (pyproject.toml) +boltons==23.1.1 # via gt4py, gt4py (pyproject.toml) build==1.0.3 # via pip-tools -cached-property==1.5.2 # via gt4py (pyproject.toml) +cached-property==1.5.2 # via gt4py, gt4py (pyproject.toml) cachetools==5.3.2 # via tox certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography cfgv==3.4.0 # via pre-commit chardet==5.2.0 # via tox charset-normalizer==3.3.2 # via requests -clang-format==17.0.6 # via -r requirements-dev.in, gt4py (pyproject.toml) -click==8.1.7 # via black, flask, gt4py (pyproject.toml), pip-tools -cmake==3.28.1 # via gt4py (pyproject.toml) +clang-format==17.0.6 # via -r requirements-dev.in, gt4py +click==8.1.7 # via black, flask, gt4py, gt4py (pyproject.toml), pip-tools +cmake==3.28.1 # via gt4py, gt4py (pyproject.toml) cogapp==3.3.0 # via -r requirements-dev.in colorama==0.4.6 # via tox comm==0.2.1 # via ipykernel @@ -32,13 +32,13 @@ contourpy==1.1.1 # via matplotlib coverage[toml]==7.4.1 # via -r requirements-dev.in, pytest-cov cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis cycler==0.12.1 # via matplotlib -cytoolz==0.12.3 # via gt4py (pyproject.toml) -dace==0.15.1 # via gt4py (pyproject.toml) +cytoolz==0.12.3 # via gt4py, gt4py (pyproject.toml) +dace==0.15.1 # via gt4py darglint==1.8.1 # via -r requirements-dev.in debugpy==1.8.0 # via ipykernel decorator==5.1.1 # via ipython -deepdiff==6.7.1 # via gt4py (pyproject.toml) -devtools==0.12.2 # via gt4py (pyproject.toml) +deepdiff==6.7.1 # via gt4py, gt4py (pyproject.toml) +devtools==0.12.2 # via gt4py, gt4py (pyproject.toml) dill==0.3.8 # via dace distlib==0.3.8 # via virtualenv docutils==0.20.1 # via restructuredtext-lint, sphinx, sphinx-rtd-theme @@ -59,54 +59,59 @@ flake8-eradicate==1.5.0 # via -r requirements-dev.in flake8-mutable==1.2.0 # via -r requirements-dev.in flake8-pyproject==1.2.3 # via -r requirements-dev.in flake8-rst-docstrings==0.3.0 # via -r requirements-dev.in -flask==3.0.1 # via dace +flask==3.0.2 # via dace fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace -frozendict==2.4.0 # via gt4py (pyproject.toml) -gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) -hypothesis==6.97.4 # via -r requirements-dev.in, gt4py (pyproject.toml) +frozendict==2.4.0 # via gt4py, gt4py (pyproject.toml) +gridtools-cpp==2.3.2 # via gt4py, gt4py (pyproject.toml) +gt4py[dace,formatting,jax-cpu,performance,testing] @ file:///home/enriqueg/Projects/GT/gt4py/wip-settings # via gt4py (pyproject.toml) +hypothesis==6.98.1 # via -r requirements-dev.in, gt4py identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.0.1 # via build, flask, jupyter-client, sphinx -importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib +importlib-metadata==7.0.1 # via build, flask, jax, jupyter-client, sphinx +importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py, gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib inflection==0.5.1 # via pytest-factoryboy iniconfig==2.0.0 # via pytest ipykernel==6.29.0 # via nbmake ipython==8.12.3 # via ipykernel isort==5.13.2 # via -r requirements-dev.in itsdangerous==2.1.2 # via flask +jax[cpu]==0.4.13 # via gt4py +jaxlib==0.4.13 # via jax jedi==0.19.1 # via ipython -jinja2==3.1.3 # via flask, gt4py (pyproject.toml), sphinx +jinja2==3.1.3 # via flask, gt4py, gt4py (pyproject.toml), sphinx jsonschema==4.21.1 # via nbformat jsonschema-specifications==2023.12.1 # via jsonschema jupyter-client==8.6.0 # via ipykernel, nbclient jupyter-core==5.7.1 # via ipykernel, jupyter-client, nbformat jupytext==1.16.1 # via -r requirements-dev.in kiwisolver==1.4.5 # via matplotlib -lark==1.1.9 # via gt4py (pyproject.toml) -mako==1.3.2 # via gt4py (pyproject.toml) +lark==1.1.9 # via gt4py, gt4py (pyproject.toml) +mako==1.3.2 # via gt4py, gt4py (pyproject.toml) markdown-it-py==3.0.0 # via jupytext, mdit-py-plugins -markupsafe==2.1.4 # via jinja2, mako, werkzeug +markupsafe==2.1.5 # via jinja2, mako, werkzeug matplotlib==3.7.4 # via -r requirements-dev.in matplotlib-inline==0.1.6 # via ipykernel, ipython mccabe==0.7.0 # via flake8 mdit-py-plugins==0.4.0 # via jupytext mdurl==0.1.2 # via markdown-it-py +ml-dtypes==0.2.0 # via jax, jaxlib mpmath==1.3.0 # via sympy mypy==1.8.0 # via -r requirements-dev.in mypy-extensions==1.0.0 # via black, mypy -nanobind==1.8.0 # via gt4py (pyproject.toml) +nanobind==1.8.0 # via gt4py, gt4py (pyproject.toml) nbclient==0.6.8 # via nbmake nbformat==5.9.2 # via jupytext, nbclient, nbmake nbmake==1.5.0 # via -r requirements-dev.in nest-asyncio==1.6.0 # via ipykernel, nbclient networkx==3.1 # via dace -ninja==1.11.1.1 # via gt4py (pyproject.toml) +ninja==1.11.1.1 # via gt4py, gt4py (pyproject.toml) nodeenv==1.8.0 # via pre-commit -numpy==1.24.4 # via contourpy, dace, gt4py (pyproject.toml), matplotlib, types-jack-client +numpy==1.24.4 # via contourpy, dace, gt4py, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client +opt-einsum==3.3.0 # via jax ordered-set==4.1.0 # via deepdiff -packaging==23.2 # via black, build, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox +packaging==23.2 # via black, build, gt4py, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox parso==0.8.3 # via jedi pathspec==0.12.1 # via black pexpect==4.9.0 # via ipython @@ -123,7 +128,7 @@ prompt-toolkit==3.0.43 # via ipython psutil==5.9.8 # via -r requirements-dev.in, ipykernel, pytest-xdist ptyprocess==0.7.0 # via pexpect pure-eval==0.2.2 # via stack-data -pybind11==2.11.1 # via gt4py (pyproject.toml) +pybind11==2.11.1 # via gt4py, gt4py (pyproject.toml) pycodestyle==2.11.1 # via flake8, flake8-debugger pycparser==2.21 # via cffi pydocstyle==6.3.0 # via flake8-docstrings @@ -132,7 +137,7 @@ pygments==2.17.2 # via -r requirements-dev.in, devtools, flake8-rst-doc pyparsing==3.1.1 # via matplotlib pyproject-api==1.6.1 # via tox pyproject-hooks==1.0.0 # via build -pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist +pytest==8.0.0 # via -r requirements-dev.in, gt4py, nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist pytest-cache==1.0 # via -r requirements-dev.in pytest-cov==4.1.0 # via -r requirements-dev.in pytest-factoryboy==2.6.0 # via -r requirements-dev.in @@ -146,6 +151,7 @@ requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing ruff==0.2.0 # via -r requirements-dev.in +scipy==1.10.1 # via gt4py, jax, jaxlib setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -160,8 +166,8 @@ sphinxcontrib-jsmath==1.0.1 # via sphinx sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.6.3 # via ipython -sympy==1.9 # via dace, gt4py (pyproject.toml) -tabulate==0.9.0 # via gt4py (pyproject.toml) +sympy==1.9 # via dace, gt4py +tabulate==0.9.0 # via gt4py, gt4py (pyproject.toml) toml==0.10.2 # via jupytext tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox toolz==0.12.1 # via cytoolz @@ -175,7 +181,7 @@ types-atomicwrites==1.4.5.1 # via types-all types-backports==0.1.3 # via types-all types-backports-abc==0.5.2 # via types-all types-bleach==6.1.0.1 # via types-all -types-boto==2.49.18.9 # via types-all +types-boto==2.49.18.20240205 # via types-all types-cachetools==5.3.0.7 # via types-all types-certifi==2021.10.8.3 # via types-all types-cffi==1.16.0.20240106 # via types-jack-client @@ -183,7 +189,7 @@ types-characteristic==14.3.7 # via types-all types-chardet==5.0.4.6 # via types-all types-click==7.1.8 # via types-all, types-flask types-click-spinner==0.1.13.20240106 # via types-all -types-colorama==0.4.15.20240106 # via types-all +types-colorama==0.4.15.20240205 # via types-all types-contextvars==2.4.7.3 # via types-all types-croniter==2.0.0.20240106 # via types-all types-cryptography==3.3.23.2 # via types-all, types-openssl-python, types-pyjwt @@ -217,7 +223,7 @@ types-mypy-extensions==1.0.0.5 # via types-all types-nmap==0.1.6 # via types-all types-openssl-python==0.1.3 # via types-all types-orjson==3.6.2 # via types-all -types-paramiko==3.4.0.20240120 # via types-all, types-pysftp +types-paramiko==3.4.0.20240205 # via types-all, types-pysftp types-pathlib2==2.3.0 # via types-all types-pillow==10.2.0.20240125 # via types-all types-pkg-resources==0.1.3 # via types-all @@ -235,7 +241,7 @@ types-pysftp==0.2.17.20240106 # via types-all types-python-dateutil==2.8.19.20240106 # via types-all, types-datetimerange types-python-gflags==3.1.7.3 # via types-all types-python-slugify==8.0.2.20240127 # via types-all -types-pytz==2023.4.0.20240130 # via types-all, types-tzlocal +types-pytz==2024.1.0.20240203 # via types-all, types-tzlocal types-pyvmomi==8.0.0.6 # via types-all types-pyyaml==6.0.12.12 # via types-all types-redis==4.6.0.20240106 # via types-all @@ -257,16 +263,16 @@ types-ujson==5.9.0.0 # via types-all types-waitress==2.1.4.20240106 # via types-all types-werkzeug==1.0.9 # via types-all, types-flask types-xxhash==3.0.5.2 # via types-all -typing-extensions==4.5.0 # via black, faker, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm +typing-extensions==4.5.0 # via black, faker, gt4py, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm urllib3==2.2.0 # via requests, types-requests virtualenv==20.25.0 # via pre-commit, tox wcwidth==0.2.13 # via prompt-toolkit websockets==12.0 # via dace werkzeug==3.0.1 # via flask wheel==0.42.0 # via astunparse, pip-tools -xxhash==3.0.0 # via gt4py (pyproject.toml) +xxhash==3.0.0 # via gt4py, gt4py (pyproject.toml) zipp==3.17.0 # via importlib-metadata, importlib-resources # The following packages are considered to be unsafe in a requirements file: -pip==23.3.2 # via pip-tools -setuptools==69.0.3 # via gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm +pip==24.0 # via pip-tools +setuptools==69.0.3 # via gt4py, gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm diff --git a/tox.ini b/tox.ini index 6a21a298ba..c3580b6135 100644 --- a/tox.ini +++ b/tox.ini @@ -150,6 +150,7 @@ base_python = py311: py311 deps = cogapp>=3.3 + packaging>=20.0 pip-tools>=6.10 package = skip set_env = @@ -160,7 +161,7 @@ commands = -mv constraints.txt constraints.txt.old -mv requirements-dev.txt requirements-dev.old # Run cog to update requirements files from pyproject - cog -r -P requirements-dev.in min-requirements-test.txt min-extra-requirements-test.txt + cog -r -P min-requirements-test.txt min-extra-requirements-test.txt # Generate constraints file removing extras # (extras are not supported by pip in constraints files) pip-compile -r --resolver=backtracking \ @@ -168,9 +169,7 @@ commands = --build-isolation \ --strip-extras \ --allow-unsafe \ - --extra dace \ - --extra formatting \ - --extra testing \ + --extra all-cpu \ -o constraints.txt \ pyproject.toml requirements-dev.in # Generate actual requirements file @@ -179,9 +178,7 @@ commands = --annotation-style line \ --build-isolation \ --allow-unsafe \ - --extra dace \ - --extra formatting \ - --extra testing \ + --extra all-cpu \ -o requirements-dev.txt \ pyproject.toml requirements-dev.in # Run cog to update .pre-commit-config.yaml with new versions From 3e51cda0bd0ce566f2dc3ba962073df06f0fc645 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 13:07:25 +0100 Subject: [PATCH 08/21] Format fixes --- pyproject.toml | 77 ++++++++++++++--------------- src/gt4py/cartesian/__gtscript__.py | 2 +- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ef2fc17d08..0635bec6d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ requires = ['setuptools>=60.6', 'wheel', 'cython'] # ---- Project description ---- # -- Standard options (PEP 621) -- [project] -authors = [{ name = 'ETH Zurich', email = 'gridtools@cscs.ch' }] +authors = [{name = 'ETH Zurich', email = 'gridtools@cscs.ch'}] classifiers = [ 'Development Status :: 4 - Beta', 'Environment :: Console', @@ -21,7 +21,7 @@ classifiers = [ 'Programming Language :: Python :: Implementation :: CPython', 'Topic :: Scientific/Engineering :: Atmospheric Science', 'Topic :: Scientific/Engineering :: Mathematics', - 'Topic :: Scientific/Engineering :: Physics', + 'Topic :: Scientific/Engineering :: Physics' ] dependencies = [ "astunparse>=1.6.3;python_version<'3.9'", @@ -48,7 +48,7 @@ dependencies = [ 'setuptools>=65.5.0', 'tabulate>=0.8.10', 'typing-extensions>=4.2,<4.6.0', - 'xxhash>=1.4.4,<3.1.0', + 'xxhash>=1.4.4,<3.1.0' ] description = 'Python library for generating high-performance implementations of stencil kernels for weather and climate modeling from a domain-specific language (DSL)' dynamic = ['version'] @@ -59,9 +59,9 @@ keywords = [ 'climate', 'performance', 'portable', - 'hpc', + 'hpc' ] -license = { text = 'GPL-3.0-or-later' } +license = {text = 'GPL-3.0-or-later'} name = 'gt4py' readme = 'README.md' requires-python = '>=3.8' @@ -71,18 +71,17 @@ requires-python = '>=3.8' all-cpu = ['gt4py[dace,formatting,jax-cpu,performance,testing]'] all-cuda11 = ['gt4py[cuda11,dace,formatting,jax-cuda11,performance,testing]'] all-cuda12 = ['gt4py[cuda12,dace,formatting,jax-cuda12,performance,testing]'] -# Device support -gpu = ['cupy>=12.0'] +# Other extras cuda11 = ['cupy-cuda11x>=12.0'] cuda12 = ['cupy-cuda12x>=12.0'] -rocm-43 = ['cupy-rocm-4-3'] -# Other packages dace = ['dace>=0.15.1,<0.16', 'sympy>=1.9'] formatting = ['clang-format>=9.0'] +gpu = ['cupy>=12.0'] jax-cpu = ['jax[cpu]>=0.4.13'] jax-cuda11 = ['jax[cuda11_pip]>=0.4.13'] jax-cuda12 = ['jax[cuda12_pip]>=0.4.13'] performance = ['scipy>=1.7.2'] +rocm-43 = ['cupy-rocm-4-3'] testing = ['hypothesis>=6.0.0', 'pytest>=7.0'] [project.scripts] @@ -126,10 +125,10 @@ source = ['src/', '.tox/py*/lib/python3.*/site-packages/'] [tool.coverage.report] # Regexes for lines to exclude from consideration exclude_lines = [ - 'raise AssertionError', # Don't complain if tests don't hit defensive assertion code + 'raise AssertionError', # Don't complain if tests don't hit defensive assertion code 'raise NotImplementedError', # Don't complain if tests don't hit defensive assertion code - 'if 0:', # Don't complain if non-runnable code isn't run - 'if __name__ == .__main__.:', # Don't complain if non-runnable code isn't run + 'if 0:', # Don't complain if non-runnable code isn't run + 'if __name__ == .__main__.:' # Don't complain if non-runnable code isn't run ] ignore_errors = true @@ -153,24 +152,24 @@ exclude = [ 'dist', 'docs', 'tests/_disabled', - 'setup.py', + 'setup.py' ] ignore = [ - 'B008', # Do not perform function calls in argument defaults - 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review this ignore - 'D1', # Public code object needs docstring + 'B008', # Do not perform function calls in argument defaults + 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review this ignore + 'D1', # Public code object needs docstring 'DAR', # Disable dargling errors by default - 'E203', # Whitespace before ':' (black formatter breaks this sometimes) - 'E501', # Line too long (using Bugbear's B950 warning) - 'W503', # Line break occurred before a binary operator - 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 - 'E704', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'E203', # Whitespace before ':' (black formatter breaks this sometimes) + 'E501', # Line too long (using Bugbear's B950 warning) + 'W503', # Line break occurred before a binary operator + 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'E704' # Multiple statements on one line, see https://github.com/psf/black/issues/3887 ] max-complexity = 15 -max-line-length = 100 # It should be the same as in `tool.black.line-length` above +max-line-length = 100 # It should be the same as in `tool.black.line-length` above per-file-ignores = [ 'src/gt4py/eve/extended_typing.py:F401,F405', - 'src/gt4py/next/__init__.py:F401', # We import stuff there in order to reexport. + 'src/gt4py/next/__init__.py:F401' # We import stuff there in order to reexport. ] rst-roles = [ 'py:mod, mod', @@ -181,7 +180,7 @@ rst-roles = [ 'py:meth, meth', 'py:attr, attr', 'py:exc, exc', - 'py:obj, obj', + 'py:obj, obj' ] # -- isort -- @@ -213,10 +212,10 @@ known_third_party = [ 'setuptools', 'tabulate', 'typing_extensions', - 'xxhash', + 'xxhash' ] lexicographical = true -line_length = 100 # It should be the same as in `tool.black.line-length` above +line_length = 100 # It should be the same as in `tool.black.line-length` above lines_after_imports = 2 profile = 'black' sections = [ @@ -225,7 +224,7 @@ sections = [ 'THIRDPARTY', 'FIRSTPARTY', 'TESTS', - 'LOCALFOLDER', + 'LOCALFOLDER' ] skip_gitignore = true skip_glob = ['*.venv/**', '_local/**'] @@ -247,7 +246,7 @@ exclude = [ '^tests/next_tests/integration_tests/feature_tests/otf_tests/*.py$', '^tests/next_tests/integration_tests/feature_tests/math_builtin_test_data.py$', '^tests/next_tests/past_common_fixtures.py$', - '^tests/next_tests/toy_connectivity.py$', + '^tests/next_tests/toy_connectivity.py$' ] ignore_missing_imports = true install_types = true @@ -365,14 +364,14 @@ markers = [ 'uses_unstructured_shift: tests that use a unstructured connectivity', 'uses_max_over: tests that use the max_over builtin', 'uses_mesh_with_skip_values: tests that use a mesh with skip values', - 'checks_specific_error: tests that rely on the backend to produce a specific error message', + 'checks_specific_error: tests that rely on the backend to produce a specific error message' ] norecursedirs = ['dist', 'build', 'cpp_backend_tests/build*', '_local/*', '.*'] testpaths = 'tests' # -- ruff -- [tool.ruff] -line-length = 100 # It should be the same as in `tool.black.line-length` above +line-length = 100 # It should be the same as in `tool.black.line-length` above respect-gitignore = true show-fixes = true # show-source = true @@ -393,14 +392,14 @@ docstring-code-format = true # NPY: NumPy-specific rules # RUF: Ruff-specific rules ignore = [ - 'B008', # Do not perform function calls in argument defaults + 'B008', # Do not perform function calls in argument defaults # 'B028', # Consider replacing f"'{foo}'" with f"{foo!r}" # TODO: review - 'B905', # B905 `zip()` without an explicit `strict=` parameter # TODO: review + 'B905', # B905 `zip()` without an explicit `strict=` parameter # TODO: review # 'D1', # Public code object needs docstring # 'E203', # Whitespace before ':' (black formatter breaks this sometimes) - 'E501', # Line too long (using Bugbear's B950 warning) - 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 - 'RUF100', + 'E501', # Line too long (using Bugbear's B950 warning) + 'E701', # Multiple statements on one line, see https://github.com/psf/black/issues/3887 + 'RUF100' ] ignore-init-module-imports = true select = ['E', 'F', 'I', 'B', 'A', 'T10', 'ERA', 'NPY', 'RUF'] @@ -434,7 +433,7 @@ known-third-party = [ 'setuptools', 'tabulate', 'typing_extensions', - 'xxhash', + 'xxhash' ] lines-after-imports = 2 order-by-type = true @@ -444,7 +443,7 @@ section-order = [ 'third-party', 'first-party', 'tests', - 'local-folder', + 'local-folder' ] split-on-trailing-comma = false @@ -463,11 +462,11 @@ max-complexity = 15 platforms = ['Linux', 'Mac'] [tool.setuptools.dynamic] -version = { attr = 'gt4py.__about__.__version__' } +version = {attr = 'gt4py.__about__.__version__'} [tool.setuptools.package-data] '*' = ['*.in', '*.txt'] 'gt4py' = ['py.typed', '*.md', '*.rst'] [tool.setuptools.packages] -find = { namespaces = false, where = ['src'] } +find = {namespaces = false, where = ['src']} diff --git a/src/gt4py/cartesian/__gtscript__.py b/src/gt4py/cartesian/__gtscript__.py index 32f09d0629..32ed7d1a6b 100644 --- a/src/gt4py/cartesian/__gtscript__.py +++ b/src/gt4py/cartesian/__gtscript__.py @@ -20,7 +20,7 @@ import sys -from gt4py.cartesian.gtscript import * # noqa: F403 # star import is intended here +from gt4py.cartesian.gtscript import * sys.modules["__gtscript__"] = sys.modules["gt4py.cartesian.__gtscript__"] From a4b99895ef0cd66ceb17e8e427e2c6cacf9c6893 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 13:14:00 +0100 Subject: [PATCH 09/21] Roll back tox action changes --- constraints.txt | 65 ++++++++++++++++++++++---------------------- requirements-dev.in | 2 +- requirements-dev.txt | 65 ++++++++++++++++++++++---------------------- tox.ini | 12 ++++++-- 4 files changed, 75 insertions(+), 69 deletions(-) diff --git a/constraints.txt b/constraints.txt index d48b4c36b1..7ae4a93b5d 100644 --- a/constraints.txt +++ b/constraints.txt @@ -7,24 +7,24 @@ aenum==3.1.15 # via dace alabaster==0.7.13 # via sphinx asttokens==2.4.1 # via devtools, stack-data -astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py, gt4py (pyproject.toml) -attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py, gt4py (pyproject.toml), hypothesis, jsonschema, referencing +astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py (pyproject.toml) +attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py (pyproject.toml), hypothesis, jsonschema, referencing babel==2.14.0 # via sphinx backcall==0.2.0 # via ipython -black==24.1.1 # via gt4py, gt4py (pyproject.toml) +black==24.1.1 # via gt4py (pyproject.toml) blinker==1.7.0 # via flask -boltons==23.1.1 # via gt4py, gt4py (pyproject.toml) +boltons==23.1.1 # via gt4py (pyproject.toml) build==1.0.3 # via pip-tools -cached-property==1.5.2 # via gt4py, gt4py (pyproject.toml) +cached-property==1.5.2 # via gt4py (pyproject.toml) cachetools==5.3.2 # via tox certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography cfgv==3.4.0 # via pre-commit chardet==5.2.0 # via tox charset-normalizer==3.3.2 # via requests -clang-format==17.0.6 # via -r requirements-dev.in, gt4py -click==8.1.7 # via black, flask, gt4py, gt4py (pyproject.toml), pip-tools -cmake==3.28.1 # via gt4py, gt4py (pyproject.toml) +clang-format==17.0.6 # via -r requirements-dev.in, gt4py (pyproject.toml) +click==8.1.7 # via black, flask, gt4py (pyproject.toml), pip-tools +cmake==3.28.1 # via gt4py (pyproject.toml) cogapp==3.3.0 # via -r requirements-dev.in colorama==0.4.6 # via tox comm==0.2.1 # via ipykernel @@ -32,13 +32,13 @@ contourpy==1.1.1 # via matplotlib coverage==7.4.1 # via -r requirements-dev.in, pytest-cov cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis cycler==0.12.1 # via matplotlib -cytoolz==0.12.3 # via gt4py, gt4py (pyproject.toml) -dace==0.15.1 # via gt4py +cytoolz==0.12.3 # via gt4py (pyproject.toml) +dace==0.15.1 # via gt4py (pyproject.toml) darglint==1.8.1 # via -r requirements-dev.in debugpy==1.8.0 # via ipykernel decorator==5.1.1 # via ipython -deepdiff==6.7.1 # via gt4py, gt4py (pyproject.toml) -devtools==0.12.2 # via gt4py, gt4py (pyproject.toml) +deepdiff==6.7.1 # via gt4py (pyproject.toml) +devtools==0.12.2 # via gt4py (pyproject.toml) dill==0.3.8 # via dace distlib==0.3.8 # via virtualenv docutils==0.20.1 # via restructuredtext-lint, sphinx, sphinx-rtd-theme @@ -62,33 +62,32 @@ flake8-rst-docstrings==0.3.0 # via -r requirements-dev.in flask==3.0.2 # via dace fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace -frozendict==2.4.0 # via gt4py, gt4py (pyproject.toml) -gridtools-cpp==2.3.2 # via gt4py, gt4py (pyproject.toml) -gt4py @ file:///home/enriqueg/Projects/GT/gt4py/wip-settings # via gt4py (pyproject.toml) -hypothesis==6.98.1 # via -r requirements-dev.in, gt4py +frozendict==2.4.0 # via gt4py (pyproject.toml) +gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) +hypothesis==6.98.1 # via -r requirements-dev.in, gt4py (pyproject.toml) identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx importlib-metadata==7.0.1 # via build, flask, jax, jupyter-client, sphinx -importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py, gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib +importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib inflection==0.5.1 # via pytest-factoryboy iniconfig==2.0.0 # via pytest ipykernel==6.29.0 # via nbmake ipython==8.12.3 # via ipykernel isort==5.13.2 # via -r requirements-dev.in itsdangerous==2.1.2 # via flask -jax==0.4.13 # via gt4py +jax==0.4.13 # via gt4py (pyproject.toml) jaxlib==0.4.13 # via jax jedi==0.19.1 # via ipython -jinja2==3.1.3 # via flask, gt4py, gt4py (pyproject.toml), sphinx +jinja2==3.1.3 # via flask, gt4py (pyproject.toml), sphinx jsonschema==4.21.1 # via nbformat jsonschema-specifications==2023.12.1 # via jsonschema jupyter-client==8.6.0 # via ipykernel, nbclient jupyter-core==5.7.1 # via ipykernel, jupyter-client, nbformat jupytext==1.16.1 # via -r requirements-dev.in kiwisolver==1.4.5 # via matplotlib -lark==1.1.9 # via gt4py, gt4py (pyproject.toml) -mako==1.3.2 # via gt4py, gt4py (pyproject.toml) +lark==1.1.9 # via gt4py (pyproject.toml) +mako==1.3.2 # via gt4py (pyproject.toml) markdown-it-py==3.0.0 # via jupytext, mdit-py-plugins markupsafe==2.1.5 # via jinja2, mako, werkzeug matplotlib==3.7.4 # via -r requirements-dev.in @@ -100,18 +99,18 @@ ml-dtypes==0.2.0 # via jax, jaxlib mpmath==1.3.0 # via sympy mypy==1.8.0 # via -r requirements-dev.in mypy-extensions==1.0.0 # via black, mypy -nanobind==1.8.0 # via gt4py, gt4py (pyproject.toml) +nanobind==1.8.0 # via gt4py (pyproject.toml) nbclient==0.6.8 # via nbmake nbformat==5.9.2 # via jupytext, nbclient, nbmake nbmake==1.5.0 # via -r requirements-dev.in nest-asyncio==1.6.0 # via ipykernel, nbclient networkx==3.1 # via dace -ninja==1.11.1.1 # via gt4py, gt4py (pyproject.toml) +ninja==1.11.1.1 # via gt4py (pyproject.toml) nodeenv==1.8.0 # via pre-commit -numpy==1.24.4 # via contourpy, dace, gt4py, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client +numpy==1.24.4 # via contourpy, dace, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client opt-einsum==3.3.0 # via jax ordered-set==4.1.0 # via deepdiff -packaging==23.2 # via black, build, gt4py, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox +packaging==23.2 # via black, build, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox parso==0.8.3 # via jedi pathspec==0.12.1 # via black pexpect==4.9.0 # via ipython @@ -128,7 +127,7 @@ prompt-toolkit==3.0.43 # via ipython psutil==5.9.8 # via -r requirements-dev.in, ipykernel, pytest-xdist ptyprocess==0.7.0 # via pexpect pure-eval==0.2.2 # via stack-data -pybind11==2.11.1 # via gt4py, gt4py (pyproject.toml) +pybind11==2.11.1 # via gt4py (pyproject.toml) pycodestyle==2.11.1 # via flake8, flake8-debugger pycparser==2.21 # via cffi pydocstyle==6.3.0 # via flake8-docstrings @@ -137,7 +136,7 @@ pygments==2.17.2 # via -r requirements-dev.in, devtools, flake8-rst-doc pyparsing==3.1.1 # via matplotlib pyproject-api==1.6.1 # via tox pyproject-hooks==1.0.0 # via build -pytest==8.0.0 # via -r requirements-dev.in, gt4py, nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist +pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist pytest-cache==1.0 # via -r requirements-dev.in pytest-cov==4.1.0 # via -r requirements-dev.in pytest-factoryboy==2.6.0 # via -r requirements-dev.in @@ -151,7 +150,7 @@ requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing ruff==0.2.0 # via -r requirements-dev.in -scipy==1.10.1 # via gt4py, jax, jaxlib +scipy==1.10.1 # via gt4py (pyproject.toml), jax, jaxlib setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -166,8 +165,8 @@ sphinxcontrib-jsmath==1.0.1 # via sphinx sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.6.3 # via ipython -sympy==1.9 # via dace, gt4py -tabulate==0.9.0 # via gt4py, gt4py (pyproject.toml) +sympy==1.9 # via dace, gt4py (pyproject.toml) +tabulate==0.9.0 # via gt4py (pyproject.toml) toml==0.10.2 # via jupytext tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox toolz==0.12.1 # via cytoolz @@ -263,16 +262,16 @@ types-ujson==5.9.0.0 # via types-all types-waitress==2.1.4.20240106 # via types-all types-werkzeug==1.0.9 # via types-all, types-flask types-xxhash==3.0.5.2 # via types-all -typing-extensions==4.5.0 # via black, faker, gt4py, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm +typing-extensions==4.5.0 # via black, faker, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm urllib3==2.2.0 # via requests, types-requests virtualenv==20.25.0 # via pre-commit, tox wcwidth==0.2.13 # via prompt-toolkit websockets==12.0 # via dace werkzeug==3.0.1 # via flask wheel==0.42.0 # via astunparse, pip-tools -xxhash==3.0.0 # via gt4py, gt4py (pyproject.toml) +xxhash==3.0.0 # via gt4py (pyproject.toml) zipp==3.17.0 # via importlib-metadata, importlib-resources # The following packages are considered to be unsafe in a requirements file: pip==24.0 # via pip-tools -setuptools==69.0.3 # via gt4py, gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm +setuptools==69.0.3 # via gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm diff --git a/requirements-dev.in b/requirements-dev.in index 38ba572993..c2330fd935 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,7 +1,7 @@ # # Constraints should specify the minimum required version. # -# Packages also required in the extra `gt4py['all']` configuration +# Packages also required in the extra `gt4py['all-cpu']` configuration # should be added here without constraints, so they will use the # constraints defined in `pyproject.toml`. # diff --git a/requirements-dev.txt b/requirements-dev.txt index 1e2ad7ca0a..3d2421295d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,24 +7,24 @@ aenum==3.1.15 # via dace alabaster==0.7.13 # via sphinx asttokens==2.4.1 # via devtools, stack-data -astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py, gt4py (pyproject.toml) -attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py, gt4py (pyproject.toml), hypothesis, jsonschema, referencing +astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py (pyproject.toml) +attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py (pyproject.toml), hypothesis, jsonschema, referencing babel==2.14.0 # via sphinx backcall==0.2.0 # via ipython -black==24.1.1 # via gt4py, gt4py (pyproject.toml) +black==24.1.1 # via gt4py (pyproject.toml) blinker==1.7.0 # via flask -boltons==23.1.1 # via gt4py, gt4py (pyproject.toml) +boltons==23.1.1 # via gt4py (pyproject.toml) build==1.0.3 # via pip-tools -cached-property==1.5.2 # via gt4py, gt4py (pyproject.toml) +cached-property==1.5.2 # via gt4py (pyproject.toml) cachetools==5.3.2 # via tox certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography cfgv==3.4.0 # via pre-commit chardet==5.2.0 # via tox charset-normalizer==3.3.2 # via requests -clang-format==17.0.6 # via -r requirements-dev.in, gt4py -click==8.1.7 # via black, flask, gt4py, gt4py (pyproject.toml), pip-tools -cmake==3.28.1 # via gt4py, gt4py (pyproject.toml) +clang-format==17.0.6 # via -r requirements-dev.in, gt4py (pyproject.toml) +click==8.1.7 # via black, flask, gt4py (pyproject.toml), pip-tools +cmake==3.28.1 # via gt4py (pyproject.toml) cogapp==3.3.0 # via -r requirements-dev.in colorama==0.4.6 # via tox comm==0.2.1 # via ipykernel @@ -32,13 +32,13 @@ contourpy==1.1.1 # via matplotlib coverage[toml]==7.4.1 # via -r requirements-dev.in, pytest-cov cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis cycler==0.12.1 # via matplotlib -cytoolz==0.12.3 # via gt4py, gt4py (pyproject.toml) -dace==0.15.1 # via gt4py +cytoolz==0.12.3 # via gt4py (pyproject.toml) +dace==0.15.1 # via gt4py (pyproject.toml) darglint==1.8.1 # via -r requirements-dev.in debugpy==1.8.0 # via ipykernel decorator==5.1.1 # via ipython -deepdiff==6.7.1 # via gt4py, gt4py (pyproject.toml) -devtools==0.12.2 # via gt4py, gt4py (pyproject.toml) +deepdiff==6.7.1 # via gt4py (pyproject.toml) +devtools==0.12.2 # via gt4py (pyproject.toml) dill==0.3.8 # via dace distlib==0.3.8 # via virtualenv docutils==0.20.1 # via restructuredtext-lint, sphinx, sphinx-rtd-theme @@ -62,33 +62,32 @@ flake8-rst-docstrings==0.3.0 # via -r requirements-dev.in flask==3.0.2 # via dace fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace -frozendict==2.4.0 # via gt4py, gt4py (pyproject.toml) -gridtools-cpp==2.3.2 # via gt4py, gt4py (pyproject.toml) -gt4py[dace,formatting,jax-cpu,performance,testing] @ file:///home/enriqueg/Projects/GT/gt4py/wip-settings # via gt4py (pyproject.toml) -hypothesis==6.98.1 # via -r requirements-dev.in, gt4py +frozendict==2.4.0 # via gt4py (pyproject.toml) +gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) +hypothesis==6.98.1 # via -r requirements-dev.in, gt4py (pyproject.toml) identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx importlib-metadata==7.0.1 # via build, flask, jax, jupyter-client, sphinx -importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py, gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib +importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib inflection==0.5.1 # via pytest-factoryboy iniconfig==2.0.0 # via pytest ipykernel==6.29.0 # via nbmake ipython==8.12.3 # via ipykernel isort==5.13.2 # via -r requirements-dev.in itsdangerous==2.1.2 # via flask -jax[cpu]==0.4.13 # via gt4py +jax[cpu]==0.4.13 # via gt4py (pyproject.toml) jaxlib==0.4.13 # via jax jedi==0.19.1 # via ipython -jinja2==3.1.3 # via flask, gt4py, gt4py (pyproject.toml), sphinx +jinja2==3.1.3 # via flask, gt4py (pyproject.toml), sphinx jsonschema==4.21.1 # via nbformat jsonschema-specifications==2023.12.1 # via jsonschema jupyter-client==8.6.0 # via ipykernel, nbclient jupyter-core==5.7.1 # via ipykernel, jupyter-client, nbformat jupytext==1.16.1 # via -r requirements-dev.in kiwisolver==1.4.5 # via matplotlib -lark==1.1.9 # via gt4py, gt4py (pyproject.toml) -mako==1.3.2 # via gt4py, gt4py (pyproject.toml) +lark==1.1.9 # via gt4py (pyproject.toml) +mako==1.3.2 # via gt4py (pyproject.toml) markdown-it-py==3.0.0 # via jupytext, mdit-py-plugins markupsafe==2.1.5 # via jinja2, mako, werkzeug matplotlib==3.7.4 # via -r requirements-dev.in @@ -100,18 +99,18 @@ ml-dtypes==0.2.0 # via jax, jaxlib mpmath==1.3.0 # via sympy mypy==1.8.0 # via -r requirements-dev.in mypy-extensions==1.0.0 # via black, mypy -nanobind==1.8.0 # via gt4py, gt4py (pyproject.toml) +nanobind==1.8.0 # via gt4py (pyproject.toml) nbclient==0.6.8 # via nbmake nbformat==5.9.2 # via jupytext, nbclient, nbmake nbmake==1.5.0 # via -r requirements-dev.in nest-asyncio==1.6.0 # via ipykernel, nbclient networkx==3.1 # via dace -ninja==1.11.1.1 # via gt4py, gt4py (pyproject.toml) +ninja==1.11.1.1 # via gt4py (pyproject.toml) nodeenv==1.8.0 # via pre-commit -numpy==1.24.4 # via contourpy, dace, gt4py, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client +numpy==1.24.4 # via contourpy, dace, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client opt-einsum==3.3.0 # via jax ordered-set==4.1.0 # via deepdiff -packaging==23.2 # via black, build, gt4py, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox +packaging==23.2 # via black, build, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox parso==0.8.3 # via jedi pathspec==0.12.1 # via black pexpect==4.9.0 # via ipython @@ -128,7 +127,7 @@ prompt-toolkit==3.0.43 # via ipython psutil==5.9.8 # via -r requirements-dev.in, ipykernel, pytest-xdist ptyprocess==0.7.0 # via pexpect pure-eval==0.2.2 # via stack-data -pybind11==2.11.1 # via gt4py, gt4py (pyproject.toml) +pybind11==2.11.1 # via gt4py (pyproject.toml) pycodestyle==2.11.1 # via flake8, flake8-debugger pycparser==2.21 # via cffi pydocstyle==6.3.0 # via flake8-docstrings @@ -137,7 +136,7 @@ pygments==2.17.2 # via -r requirements-dev.in, devtools, flake8-rst-doc pyparsing==3.1.1 # via matplotlib pyproject-api==1.6.1 # via tox pyproject-hooks==1.0.0 # via build -pytest==8.0.0 # via -r requirements-dev.in, gt4py, nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist +pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist pytest-cache==1.0 # via -r requirements-dev.in pytest-cov==4.1.0 # via -r requirements-dev.in pytest-factoryboy==2.6.0 # via -r requirements-dev.in @@ -151,7 +150,7 @@ requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing ruff==0.2.0 # via -r requirements-dev.in -scipy==1.10.1 # via gt4py, jax, jaxlib +scipy==1.10.1 # via gt4py (pyproject.toml), jax, jaxlib setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -166,8 +165,8 @@ sphinxcontrib-jsmath==1.0.1 # via sphinx sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx stack-data==0.6.3 # via ipython -sympy==1.9 # via dace, gt4py -tabulate==0.9.0 # via gt4py, gt4py (pyproject.toml) +sympy==1.9 # via dace, gt4py (pyproject.toml) +tabulate==0.9.0 # via gt4py (pyproject.toml) toml==0.10.2 # via jupytext tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox toolz==0.12.1 # via cytoolz @@ -263,16 +262,16 @@ types-ujson==5.9.0.0 # via types-all types-waitress==2.1.4.20240106 # via types-all types-werkzeug==1.0.9 # via types-all, types-flask types-xxhash==3.0.5.2 # via types-all -typing-extensions==4.5.0 # via black, faker, gt4py, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm +typing-extensions==4.5.0 # via black, faker, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm urllib3==2.2.0 # via requests, types-requests virtualenv==20.25.0 # via pre-commit, tox wcwidth==0.2.13 # via prompt-toolkit websockets==12.0 # via dace werkzeug==3.0.1 # via flask wheel==0.42.0 # via astunparse, pip-tools -xxhash==3.0.0 # via gt4py, gt4py (pyproject.toml) +xxhash==3.0.0 # via gt4py (pyproject.toml) zipp==3.17.0 # via importlib-metadata, importlib-resources # The following packages are considered to be unsafe in a requirements file: pip==24.0 # via pip-tools -setuptools==69.0.3 # via gt4py, gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm +setuptools==69.0.3 # via gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm diff --git a/tox.ini b/tox.ini index c3580b6135..77411e7032 100644 --- a/tox.ini +++ b/tox.ini @@ -169,7 +169,11 @@ commands = --build-isolation \ --strip-extras \ --allow-unsafe \ - --extra all-cpu \ + --extra dace \ + --extra formatting \ + --extra jax-cpu \ + --extra performance \ + --extra testing \ -o constraints.txt \ pyproject.toml requirements-dev.in # Generate actual requirements file @@ -178,7 +182,11 @@ commands = --annotation-style line \ --build-isolation \ --allow-unsafe \ - --extra all-cpu \ + --extra dace \ + --extra formatting \ + --extra jax-cpu \ + --extra performance \ + --extra testing \ -o requirements-dev.txt \ pyproject.toml requirements-dev.in # Run cog to update .pre-commit-config.yaml with new versions From a02a8333260af827a4d76f3c2a0a2a5a4b3baa4f Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 13:17:18 +0100 Subject: [PATCH 10/21] Update ruff version --- min-extra-requirements-test.txt | 2 +- min-requirements-test.txt | 2 +- requirements-dev.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 3d569db721..20cefe256d 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -102,7 +102,7 @@ pytest-cov==2.8 pytest-factoryboy==2.0.3 pytest-xdist[psutil]==2.4 pytest==7.0 -ruff==0.0.265 +ruff==0.2.0 scipy==1.7.2 setuptools==65.5.0 sphinx==4.4 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index 72c5382e43..55e84bea50 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -97,7 +97,7 @@ pytest-cov==2.8 pytest-factoryboy==2.0.3 pytest-xdist[psutil]==2.4 pytest==7.0 -ruff==0.0.265 +ruff==0.2.0 setuptools==65.5.0 sphinx==4.4 sphinx_rtd_theme==1.0 diff --git a/requirements-dev.in b/requirements-dev.in index c2330fd935..e554a819ee 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -35,7 +35,7 @@ pytest-cache>=1.0 pytest-cov>=2.8 pytest-factoryboy>=2.0.3 pytest-xdist[psutil]>=2.4 -ruff>=0.0.265 +ruff>=0.2.0 sphinx>=4.4 sphinx_rtd_theme>=1.0 tomli>=2.0.1;python_version<'3.11' From 77924187e766a1f2da97fda57033d65f3ac84ccf Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 14:54:53 +0100 Subject: [PATCH 11/21] Update documentation at requirements.md --- docs/development/tools/requirements.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/development/tools/requirements.md b/docs/development/tools/requirements.md index f120da905b..f9b23dd220 100644 --- a/docs/development/tools/requirements.md +++ b/docs/development/tools/requirements.md @@ -5,7 +5,7 @@ The specification of required third-party packages is scattered and partially du The following files in this repository contain information about required third-party packages: - `pyproject.toml`: GT4Py [package configuration](https://peps.python.org/pep-0621/) used by the build backend (`setuptools`). Install dependencies are specified in the _project.dependencies_ and _project.optional-dependencies_ tables. -- `requirements-dev.in`: [requirements file](https://pip.pypa.io/en/stable/reference/requirements-file-format/) used by **pip**. It contains a list of packages required for the development of GT4Py. Part of its content is generated automatically from `pyproject.toml` using **cog**. +- `requirements-dev.in`: [requirements file](https://pip.pypa.io/en/stable/reference/requirements-file-format/) used by **pip**. It contains a list of packages required for the development of GT4Py. - `requirements-dev.txt`: requirements file used by **pip**. It contains a completely frozen list of all packages required for installing and developing GT4Py. It is used by **pip** and **tox** to initialize the standard development and testing environments. It is automatically generated automatically from `requirements-dev.in` by **pip-compile**, when running the **tox** environment to update requirements. - `constraints.txt`: [constraints file](https://pip.pypa.io/en/stable/user_guide/#constraints-files) used by **pip** and **tox** to initialize a subset of the standard development environment making sure that if other packages are installed, transitive dependencies are taken from the frozen package list. It is generated automatically from `requirements-dev.in` using **pip-compile**. - `min-requirements-test.txt`: requirements file used by **pip**. It contains the minimum list of requirements to run GT4Py tests with the oldest compatible versions of all dependencies. It is generated automatically from `pyproject.toml` using **cog**. @@ -14,7 +14,7 @@ The following files in this repository contain information about required third- The expected workflow to update GT4Py requirements is as follows: -1. For changes in the GT4Py package dependencies, update the relevant table in `pyproject.toml`. When adding new tables to the _project.optional-dependencies_ section, make sure to add the new table as a dependency of the `all` extra table when possible. +1. For changes in the GT4Py package dependencies, update the relevant table in `pyproject.toml`. When adding new tables to the _project.optional-dependencies_ section, make sure to add the new table as a dependency of the `all-` extra tables when possible. 2. For changes in the development tools, update the `requirements-dev.in` file. From f5bb0f269179e308a1c6479df49c3212aea31746 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 15:15:07 +0100 Subject: [PATCH 12/21] Update minimum cytoolz version --- min-extra-requirements-test.txt | 2 +- min-requirements-test.txt | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 20cefe256d..a2a844c162 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -59,7 +59,7 @@ click==8.0.0 cmake==3.22 cogapp==3.3 coverage[toml]==5.0 -cytoolz==0.12.0 +cytoolz==0.12.1 dace==0.15.1 darglint==1.6 deepdiff==5.6.0 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index 55e84bea50..d7e5d55258 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -56,7 +56,7 @@ click==8.0.0 cmake==3.22 cogapp==3.3 coverage[toml]==5.0 -cytoolz==0.12.0 +cytoolz==0.12.1 darglint==1.6 deepdiff==5.6.0 devtools==0.6 diff --git a/pyproject.toml b/pyproject.toml index 0635bec6d1..97c0f41447 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ dependencies = [ 'cached-property>=1.5.1', 'click>=8.0.0', 'cmake>=3.22', - 'cytoolz>=0.12.0', + 'cytoolz>=0.12.1', 'deepdiff>=5.6.0', 'devtools>=0.6', 'frozendict>=2.3', From e1be4c0c67b5d56c83a25115a74ce814a6903d96 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 15:54:20 +0100 Subject: [PATCH 13/21] Use constraints.txt in second step of pip-compile --- requirements-dev.txt | 538 +++++++++++++++++++++---------------------- tox.ini | 2 +- 2 files changed, 270 insertions(+), 270 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 3d2421295d..d2b7f267f0 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,274 +4,274 @@ # # "tox run -e requirements-common" # -aenum==3.1.15 # via dace -alabaster==0.7.13 # via sphinx -asttokens==2.4.1 # via devtools, stack-data -astunparse==1.6.3 ; python_version < "3.9" # via dace, gt4py (pyproject.toml) -attrs==23.2.0 # via flake8-bugbear, flake8-eradicate, gt4py (pyproject.toml), hypothesis, jsonschema, referencing -babel==2.14.0 # via sphinx -backcall==0.2.0 # via ipython -black==24.1.1 # via gt4py (pyproject.toml) -blinker==1.7.0 # via flask -boltons==23.1.1 # via gt4py (pyproject.toml) -build==1.0.3 # via pip-tools -cached-property==1.5.2 # via gt4py (pyproject.toml) -cachetools==5.3.2 # via tox -certifi==2024.2.2 # via requests -cffi==1.16.0 # via cryptography -cfgv==3.4.0 # via pre-commit -chardet==5.2.0 # via tox -charset-normalizer==3.3.2 # via requests -clang-format==17.0.6 # via -r requirements-dev.in, gt4py (pyproject.toml) -click==8.1.7 # via black, flask, gt4py (pyproject.toml), pip-tools -cmake==3.28.1 # via gt4py (pyproject.toml) -cogapp==3.3.0 # via -r requirements-dev.in -colorama==0.4.6 # via tox -comm==0.2.1 # via ipykernel -contourpy==1.1.1 # via matplotlib -coverage[toml]==7.4.1 # via -r requirements-dev.in, pytest-cov -cryptography==42.0.2 # via types-paramiko, types-pyopenssl, types-redis -cycler==0.12.1 # via matplotlib -cytoolz==0.12.3 # via gt4py (pyproject.toml) -dace==0.15.1 # via gt4py (pyproject.toml) -darglint==1.8.1 # via -r requirements-dev.in -debugpy==1.8.0 # via ipykernel -decorator==5.1.1 # via ipython -deepdiff==6.7.1 # via gt4py (pyproject.toml) -devtools==0.12.2 # via gt4py (pyproject.toml) -dill==0.3.8 # via dace -distlib==0.3.8 # via virtualenv -docutils==0.20.1 # via restructuredtext-lint, sphinx, sphinx-rtd-theme -eradicate==2.3.0 # via flake8-eradicate -exceptiongroup==1.2.0 # via hypothesis, pytest -execnet==2.0.2 # via pytest-cache, pytest-xdist -executing==2.0.1 # via devtools, stack-data -factory-boy==3.3.0 # via -r requirements-dev.in, pytest-factoryboy -faker==22.6.0 # via factory-boy -fastjsonschema==2.19.1 # via nbformat -filelock==3.13.1 # via tox, virtualenv -flake8==7.0.0 # via -r requirements-dev.in, flake8-bugbear, flake8-builtins, flake8-debugger, flake8-docstrings, flake8-eradicate, flake8-mutable, flake8-pyproject, flake8-rst-docstrings -flake8-bugbear==24.1.17 # via -r requirements-dev.in -flake8-builtins==2.2.0 # via -r requirements-dev.in -flake8-debugger==4.1.2 # via -r requirements-dev.in -flake8-docstrings==1.7.0 # via -r requirements-dev.in -flake8-eradicate==1.5.0 # via -r requirements-dev.in -flake8-mutable==1.2.0 # via -r requirements-dev.in -flake8-pyproject==1.2.3 # via -r requirements-dev.in -flake8-rst-docstrings==0.3.0 # via -r requirements-dev.in -flask==3.0.2 # via dace -fonttools==4.47.2 # via matplotlib -fparser==0.1.4 # via dace -frozendict==2.4.0 # via gt4py (pyproject.toml) -gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) -hypothesis==6.98.1 # via -r requirements-dev.in, gt4py (pyproject.toml) -identify==2.5.33 # via pre-commit -idna==3.6 # via requests -imagesize==1.4.1 # via sphinx -importlib-metadata==7.0.1 # via build, flask, jax, jupyter-client, sphinx -importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib -inflection==0.5.1 # via pytest-factoryboy -iniconfig==2.0.0 # via pytest -ipykernel==6.29.0 # via nbmake -ipython==8.12.3 # via ipykernel -isort==5.13.2 # via -r requirements-dev.in -itsdangerous==2.1.2 # via flask -jax[cpu]==0.4.13 # via gt4py (pyproject.toml) -jaxlib==0.4.13 # via jax -jedi==0.19.1 # via ipython -jinja2==3.1.3 # via flask, gt4py (pyproject.toml), sphinx -jsonschema==4.21.1 # via nbformat -jsonschema-specifications==2023.12.1 # via jsonschema -jupyter-client==8.6.0 # via ipykernel, nbclient -jupyter-core==5.7.1 # via ipykernel, jupyter-client, nbformat -jupytext==1.16.1 # via -r requirements-dev.in -kiwisolver==1.4.5 # via matplotlib -lark==1.1.9 # via gt4py (pyproject.toml) -mako==1.3.2 # via gt4py (pyproject.toml) -markdown-it-py==3.0.0 # via jupytext, mdit-py-plugins -markupsafe==2.1.5 # via jinja2, mako, werkzeug -matplotlib==3.7.4 # via -r requirements-dev.in -matplotlib-inline==0.1.6 # via ipykernel, ipython -mccabe==0.7.0 # via flake8 -mdit-py-plugins==0.4.0 # via jupytext -mdurl==0.1.2 # via markdown-it-py -ml-dtypes==0.2.0 # via jax, jaxlib -mpmath==1.3.0 # via sympy -mypy==1.8.0 # via -r requirements-dev.in -mypy-extensions==1.0.0 # via black, mypy -nanobind==1.8.0 # via gt4py (pyproject.toml) -nbclient==0.6.8 # via nbmake -nbformat==5.9.2 # via jupytext, nbclient, nbmake -nbmake==1.5.0 # via -r requirements-dev.in -nest-asyncio==1.6.0 # via ipykernel, nbclient -networkx==3.1 # via dace -ninja==1.11.1.1 # via gt4py (pyproject.toml) -nodeenv==1.8.0 # via pre-commit -numpy==1.24.4 # via contourpy, dace, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client -opt-einsum==3.3.0 # via jax -ordered-set==4.1.0 # via deepdiff -packaging==23.2 # via black, build, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox -parso==0.8.3 # via jedi -pathspec==0.12.1 # via black -pexpect==4.9.0 # via ipython -pickleshare==0.7.5 # via ipython -pillow==10.2.0 # via matplotlib -pip-tools==7.3.0 # via -r requirements-dev.in -pipdeptree==2.13.2 # via -r requirements-dev.in -pkgutil-resolve-name==1.3.10 # via jsonschema -platformdirs==4.2.0 # via black, jupyter-core, tox, virtualenv -pluggy==1.4.0 # via pytest, tox -ply==3.11 # via dace -pre-commit==3.5.0 # via -r requirements-dev.in -prompt-toolkit==3.0.43 # via ipython -psutil==5.9.8 # via -r requirements-dev.in, ipykernel, pytest-xdist -ptyprocess==0.7.0 # via pexpect -pure-eval==0.2.2 # via stack-data -pybind11==2.11.1 # via gt4py (pyproject.toml) -pycodestyle==2.11.1 # via flake8, flake8-debugger -pycparser==2.21 # via cffi -pydocstyle==6.3.0 # via flake8-docstrings -pyflakes==3.2.0 # via flake8 -pygments==2.17.2 # via -r requirements-dev.in, devtools, flake8-rst-docstrings, ipython, nbmake, sphinx -pyparsing==3.1.1 # via matplotlib -pyproject-api==1.6.1 # via tox -pyproject-hooks==1.0.0 # via build -pytest==8.0.0 # via -r requirements-dev.in, gt4py (pyproject.toml), nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist -pytest-cache==1.0 # via -r requirements-dev.in -pytest-cov==4.1.0 # via -r requirements-dev.in -pytest-factoryboy==2.6.0 # via -r requirements-dev.in -pytest-xdist[psutil]==3.5.0 # via -r requirements-dev.in -python-dateutil==2.8.2 # via faker, jupyter-client, matplotlib -pytz==2024.1 # via babel -pyyaml==6.0.1 # via dace, jupytext, pre-commit -pyzmq==25.1.2 # via ipykernel, jupyter-client -referencing==0.33.0 # via jsonschema, jsonschema-specifications -requests==2.31.0 # via dace, sphinx -restructuredtext-lint==1.4.0 # via flake8-rst-docstrings -rpds-py==0.17.1 # via jsonschema, referencing -ruff==0.2.0 # via -r requirements-dev.in -scipy==1.10.1 # via gt4py (pyproject.toml), jax, jaxlib -setuptools-scm==8.0.4 # via fparser -six==1.16.0 # via asttokens, astunparse, python-dateutil -snowballstemmer==2.2.0 # via pydocstyle, sphinx -sortedcontainers==2.4.0 # via hypothesis -sphinx==7.1.2 # via -r requirements-dev.in, sphinx-rtd-theme, sphinxcontrib-jquery -sphinx-rtd-theme==2.0.0 # via -r requirements-dev.in -sphinxcontrib-applehelp==1.0.4 # via sphinx -sphinxcontrib-devhelp==1.0.2 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 # via sphinx -sphinxcontrib-jquery==4.1 # via sphinx-rtd-theme -sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 # via sphinx -stack-data==0.6.3 # via ipython -sympy==1.9 # via dace, gt4py (pyproject.toml) -tabulate==0.9.0 # via gt4py (pyproject.toml) -toml==0.10.2 # via jupytext -tomli==2.0.1 ; python_version < "3.11" # via -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox -toolz==0.12.1 # via cytoolz -tornado==6.4 # via ipykernel, jupyter-client -tox==4.12.1 # via -r requirements-dev.in -traitlets==5.14.1 # via comm, ipykernel, ipython, jupyter-client, jupyter-core, matplotlib-inline, nbclient, nbformat -types-aiofiles==23.2.0.20240106 # via types-all -types-all==1.0.0 # via -r requirements-dev.in -types-annoy==1.17.8.4 # via types-all -types-atomicwrites==1.4.5.1 # via types-all -types-backports==0.1.3 # via types-all -types-backports-abc==0.5.2 # via types-all -types-bleach==6.1.0.1 # via types-all -types-boto==2.49.18.20240205 # via types-all -types-cachetools==5.3.0.7 # via types-all -types-certifi==2021.10.8.3 # via types-all -types-cffi==1.16.0.20240106 # via types-jack-client -types-characteristic==14.3.7 # via types-all -types-chardet==5.0.4.6 # via types-all -types-click==7.1.8 # via types-all, types-flask -types-click-spinner==0.1.13.20240106 # via types-all -types-colorama==0.4.15.20240205 # via types-all -types-contextvars==2.4.7.3 # via types-all -types-croniter==2.0.0.20240106 # via types-all -types-cryptography==3.3.23.2 # via types-all, types-openssl-python, types-pyjwt -types-dataclasses==0.6.6 # via types-all -types-dateparser==1.1.4.20240106 # via types-all -types-datetimerange==2.0.0.6 # via types-all -types-decorator==5.1.8.20240106 # via types-all -types-deprecated==1.2.9.20240106 # via types-all -types-docopt==0.6.11.4 # via types-all -types-docutils==0.20.0.20240201 # via types-all -types-emoji==2.1.0.3 # via types-all -types-enum34==1.1.8 # via types-all -types-fb303==1.0.0 # via types-all, types-scribe -types-filelock==3.2.7 # via types-all -types-first==2.0.5.2 # via types-all -types-flask==1.1.6 # via types-all -types-freezegun==1.1.10 # via types-all -types-frozendict==2.0.9 # via types-all -types-futures==3.3.8 # via types-all -types-geoip2==3.0.0 # via types-all -types-ipaddress==1.0.8 # via types-all, types-maxminddb -types-itsdangerous==1.1.6 # via types-all -types-jack-client==0.5.10.20240106 # via types-all -types-jinja2==2.11.9 # via types-all, types-flask -types-kazoo==0.1.3 # via types-all -types-markdown==3.5.0.20240129 # via types-all -types-markupsafe==1.1.10 # via types-all, types-jinja2 -types-maxminddb==1.5.0 # via types-all, types-geoip2 -types-mock==5.1.0.20240106 # via types-all -types-mypy-extensions==1.0.0.5 # via types-all -types-nmap==0.1.6 # via types-all -types-openssl-python==0.1.3 # via types-all -types-orjson==3.6.2 # via types-all -types-paramiko==3.4.0.20240205 # via types-all, types-pysftp -types-pathlib2==2.3.0 # via types-all -types-pillow==10.2.0.20240125 # via types-all -types-pkg-resources==0.1.3 # via types-all -types-polib==1.2.0.20240115 # via types-all -types-protobuf==4.24.0.20240129 # via types-all -types-pyaudio==0.2.16.20240106 # via types-all -types-pycurl==7.45.2.20240106 # via types-all -types-pyfarmhash==0.3.1.2 # via types-all -types-pyjwt==1.7.1 # via types-all -types-pymssql==2.1.0 # via types-all -types-pymysql==1.1.0.1 # via types-all -types-pyopenssl==24.0.0.20240130 # via types-redis -types-pyrfc3339==1.1.1.5 # via types-all -types-pysftp==0.2.17.20240106 # via types-all -types-python-dateutil==2.8.19.20240106 # via types-all, types-datetimerange -types-python-gflags==3.1.7.3 # via types-all -types-python-slugify==8.0.2.20240127 # via types-all -types-pytz==2024.1.0.20240203 # via types-all, types-tzlocal -types-pyvmomi==8.0.0.6 # via types-all -types-pyyaml==6.0.12.12 # via types-all -types-redis==4.6.0.20240106 # via types-all -types-requests==2.31.0.20240125 # via types-all -types-retry==0.9.9.4 # via types-all -types-routes==2.5.0 # via types-all -types-scribe==2.0.0 # via types-all -types-setuptools==69.0.0.20240125 # via types-cffi -types-simplejson==3.19.0.2 # via types-all -types-singledispatch==4.1.0.0 # via types-all -types-six==1.16.21.20240106 # via types-all -types-tabulate==0.9.0.20240106 # via types-all -types-termcolor==1.1.6.2 # via types-all -types-toml==0.10.8.7 # via types-all -types-tornado==5.1.1 # via types-all -types-typed-ast==1.5.8.7 # via types-all -types-tzlocal==5.1.0.1 # via types-all -types-ujson==5.9.0.0 # via types-all -types-waitress==2.1.4.20240106 # via types-all -types-werkzeug==1.0.9 # via types-all, types-flask -types-xxhash==3.0.5.2 # via types-all -typing-extensions==4.5.0 # via black, faker, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm -urllib3==2.2.0 # via requests, types-requests -virtualenv==20.25.0 # via pre-commit, tox -wcwidth==0.2.13 # via prompt-toolkit -websockets==12.0 # via dace -werkzeug==3.0.1 # via flask -wheel==0.42.0 # via astunparse, pip-tools -xxhash==3.0.0 # via gt4py (pyproject.toml) -zipp==3.17.0 # via importlib-metadata, importlib-resources +aenum==3.1.15 # via -c constraints.txt, dace +alabaster==0.7.13 # via -c constraints.txt, sphinx +asttokens==2.4.1 # via -c constraints.txt, devtools, stack-data +astunparse==1.6.3 ; python_version < "3.9" # via -c constraints.txt, dace, gt4py (pyproject.toml) +attrs==23.2.0 # via -c constraints.txt, flake8-bugbear, flake8-eradicate, gt4py (pyproject.toml), hypothesis, jsonschema, referencing +babel==2.14.0 # via -c constraints.txt, sphinx +backcall==0.2.0 # via -c constraints.txt, ipython +black==24.1.1 # via -c constraints.txt, gt4py (pyproject.toml) +blinker==1.7.0 # via -c constraints.txt, flask +boltons==23.1.1 # via -c constraints.txt, gt4py (pyproject.toml) +build==1.0.3 # via -c constraints.txt, pip-tools +cached-property==1.5.2 # via -c constraints.txt, gt4py (pyproject.toml) +cachetools==5.3.2 # via -c constraints.txt, tox +certifi==2024.2.2 # via -c constraints.txt, requests +cffi==1.16.0 # via -c constraints.txt, cryptography +cfgv==3.4.0 # via -c constraints.txt, pre-commit +chardet==5.2.0 # via -c constraints.txt, tox +charset-normalizer==3.3.2 # via -c constraints.txt, requests +clang-format==17.0.6 # via -c constraints.txt, -r requirements-dev.in, gt4py (pyproject.toml) +click==8.1.7 # via -c constraints.txt, black, flask, gt4py (pyproject.toml), pip-tools +cmake==3.28.1 # via -c constraints.txt, gt4py (pyproject.toml) +cogapp==3.3.0 # via -c constraints.txt, -r requirements-dev.in +colorama==0.4.6 # via -c constraints.txt, tox +comm==0.2.1 # via -c constraints.txt, ipykernel +contourpy==1.1.1 # via -c constraints.txt, matplotlib +coverage[toml]==7.4.1 # via -c constraints.txt, -r requirements-dev.in, pytest-cov +cryptography==42.0.2 # via -c constraints.txt, types-paramiko, types-pyopenssl, types-redis +cycler==0.12.1 # via -c constraints.txt, matplotlib +cytoolz==0.12.3 # via -c constraints.txt, gt4py (pyproject.toml) +dace==0.15.1 # via -c constraints.txt, gt4py (pyproject.toml) +darglint==1.8.1 # via -c constraints.txt, -r requirements-dev.in +debugpy==1.8.0 # via -c constraints.txt, ipykernel +decorator==5.1.1 # via -c constraints.txt, ipython +deepdiff==6.7.1 # via -c constraints.txt, gt4py (pyproject.toml) +devtools==0.12.2 # via -c constraints.txt, gt4py (pyproject.toml) +dill==0.3.8 # via -c constraints.txt, dace +distlib==0.3.8 # via -c constraints.txt, virtualenv +docutils==0.20.1 # via -c constraints.txt, restructuredtext-lint, sphinx, sphinx-rtd-theme +eradicate==2.3.0 # via -c constraints.txt, flake8-eradicate +exceptiongroup==1.2.0 # via -c constraints.txt, hypothesis, pytest +execnet==2.0.2 # via -c constraints.txt, pytest-cache, pytest-xdist +executing==2.0.1 # via -c constraints.txt, devtools, stack-data +factory-boy==3.3.0 # via -c constraints.txt, -r requirements-dev.in, pytest-factoryboy +faker==22.6.0 # via -c constraints.txt, factory-boy +fastjsonschema==2.19.1 # via -c constraints.txt, nbformat +filelock==3.13.1 # via -c constraints.txt, tox, virtualenv +flake8==7.0.0 # via -c constraints.txt, -r requirements-dev.in, flake8-bugbear, flake8-builtins, flake8-debugger, flake8-docstrings, flake8-eradicate, flake8-mutable, flake8-pyproject, flake8-rst-docstrings +flake8-bugbear==24.1.17 # via -c constraints.txt, -r requirements-dev.in +flake8-builtins==2.2.0 # via -c constraints.txt, -r requirements-dev.in +flake8-debugger==4.1.2 # via -c constraints.txt, -r requirements-dev.in +flake8-docstrings==1.7.0 # via -c constraints.txt, -r requirements-dev.in +flake8-eradicate==1.5.0 # via -c constraints.txt, -r requirements-dev.in +flake8-mutable==1.2.0 # via -c constraints.txt, -r requirements-dev.in +flake8-pyproject==1.2.3 # via -c constraints.txt, -r requirements-dev.in +flake8-rst-docstrings==0.3.0 # via -c constraints.txt, -r requirements-dev.in +flask==3.0.2 # via -c constraints.txt, dace +fonttools==4.47.2 # via -c constraints.txt, matplotlib +fparser==0.1.4 # via -c constraints.txt, dace +frozendict==2.4.0 # via -c constraints.txt, gt4py (pyproject.toml) +gridtools-cpp==2.3.2 # via -c constraints.txt, gt4py (pyproject.toml) +hypothesis==6.98.1 # via -c constraints.txt, -r requirements-dev.in, gt4py (pyproject.toml) +identify==2.5.33 # via -c constraints.txt, pre-commit +idna==3.6 # via -c constraints.txt, requests +imagesize==1.4.1 # via -c constraints.txt, sphinx +importlib-metadata==7.0.1 # via -c constraints.txt, build, flask, jax, jupyter-client, sphinx +importlib-resources==6.1.1 ; python_version < "3.9" # via -c constraints.txt, gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib +inflection==0.5.1 # via -c constraints.txt, pytest-factoryboy +iniconfig==2.0.0 # via -c constraints.txt, pytest +ipykernel==6.29.0 # via -c constraints.txt, nbmake +ipython==8.12.3 # via -c constraints.txt, ipykernel +isort==5.13.2 # via -c constraints.txt, -r requirements-dev.in +itsdangerous==2.1.2 # via -c constraints.txt, flask +jax[cpu]==0.4.13 # via -c constraints.txt, gt4py (pyproject.toml) +jaxlib==0.4.13 # via -c constraints.txt, jax +jedi==0.19.1 # via -c constraints.txt, ipython +jinja2==3.1.3 # via -c constraints.txt, flask, gt4py (pyproject.toml), sphinx +jsonschema==4.21.1 # via -c constraints.txt, nbformat +jsonschema-specifications==2023.12.1 # via -c constraints.txt, jsonschema +jupyter-client==8.6.0 # via -c constraints.txt, ipykernel, nbclient +jupyter-core==5.7.1 # via -c constraints.txt, ipykernel, jupyter-client, nbformat +jupytext==1.16.1 # via -c constraints.txt, -r requirements-dev.in +kiwisolver==1.4.5 # via -c constraints.txt, matplotlib +lark==1.1.9 # via -c constraints.txt, gt4py (pyproject.toml) +mako==1.3.2 # via -c constraints.txt, gt4py (pyproject.toml) +markdown-it-py==3.0.0 # via -c constraints.txt, jupytext, mdit-py-plugins +markupsafe==2.1.5 # via -c constraints.txt, jinja2, mako, werkzeug +matplotlib==3.7.4 # via -c constraints.txt, -r requirements-dev.in +matplotlib-inline==0.1.6 # via -c constraints.txt, ipykernel, ipython +mccabe==0.7.0 # via -c constraints.txt, flake8 +mdit-py-plugins==0.4.0 # via -c constraints.txt, jupytext +mdurl==0.1.2 # via -c constraints.txt, markdown-it-py +ml-dtypes==0.2.0 # via -c constraints.txt, jax, jaxlib +mpmath==1.3.0 # via -c constraints.txt, sympy +mypy==1.8.0 # via -c constraints.txt, -r requirements-dev.in +mypy-extensions==1.0.0 # via -c constraints.txt, black, mypy +nanobind==1.8.0 # via -c constraints.txt, gt4py (pyproject.toml) +nbclient==0.6.8 # via -c constraints.txt, nbmake +nbformat==5.9.2 # via -c constraints.txt, jupytext, nbclient, nbmake +nbmake==1.5.0 # via -c constraints.txt, -r requirements-dev.in +nest-asyncio==1.6.0 # via -c constraints.txt, ipykernel, nbclient +networkx==3.1 # via -c constraints.txt, dace +ninja==1.11.1.1 # via -c constraints.txt, gt4py (pyproject.toml) +nodeenv==1.8.0 # via -c constraints.txt, pre-commit +numpy==1.24.4 # via -c constraints.txt, contourpy, dace, gt4py (pyproject.toml), jax, jaxlib, matplotlib, ml-dtypes, opt-einsum, scipy, types-jack-client +opt-einsum==3.3.0 # via -c constraints.txt, jax +ordered-set==4.1.0 # via -c constraints.txt, deepdiff +packaging==23.2 # via -c constraints.txt, black, build, gt4py (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox +parso==0.8.3 # via -c constraints.txt, jedi +pathspec==0.12.1 # via -c constraints.txt, black +pexpect==4.9.0 # via -c constraints.txt, ipython +pickleshare==0.7.5 # via -c constraints.txt, ipython +pillow==10.2.0 # via -c constraints.txt, matplotlib +pip-tools==7.3.0 # via -c constraints.txt, -r requirements-dev.in +pipdeptree==2.13.2 # via -c constraints.txt, -r requirements-dev.in +pkgutil-resolve-name==1.3.10 # via -c constraints.txt, jsonschema +platformdirs==4.2.0 # via -c constraints.txt, black, jupyter-core, tox, virtualenv +pluggy==1.4.0 # via -c constraints.txt, pytest, tox +ply==3.11 # via -c constraints.txt, dace +pre-commit==3.5.0 # via -c constraints.txt, -r requirements-dev.in +prompt-toolkit==3.0.43 # via -c constraints.txt, ipython +psutil==5.9.8 # via -c constraints.txt, -r requirements-dev.in, ipykernel, pytest-xdist +ptyprocess==0.7.0 # via -c constraints.txt, pexpect +pure-eval==0.2.2 # via -c constraints.txt, stack-data +pybind11==2.11.1 # via -c constraints.txt, gt4py (pyproject.toml) +pycodestyle==2.11.1 # via -c constraints.txt, flake8, flake8-debugger +pycparser==2.21 # via -c constraints.txt, cffi +pydocstyle==6.3.0 # via -c constraints.txt, flake8-docstrings +pyflakes==3.2.0 # via -c constraints.txt, flake8 +pygments==2.17.2 # via -c constraints.txt, -r requirements-dev.in, devtools, flake8-rst-docstrings, ipython, nbmake, sphinx +pyparsing==3.1.1 # via -c constraints.txt, matplotlib +pyproject-api==1.6.1 # via -c constraints.txt, tox +pyproject-hooks==1.0.0 # via -c constraints.txt, build +pytest==8.0.0 # via -c constraints.txt, -r requirements-dev.in, gt4py (pyproject.toml), nbmake, pytest-cache, pytest-cov, pytest-factoryboy, pytest-xdist +pytest-cache==1.0 # via -c constraints.txt, -r requirements-dev.in +pytest-cov==4.1.0 # via -c constraints.txt, -r requirements-dev.in +pytest-factoryboy==2.6.0 # via -c constraints.txt, -r requirements-dev.in +pytest-xdist[psutil]==3.5.0 # via -c constraints.txt, -r requirements-dev.in +python-dateutil==2.8.2 # via -c constraints.txt, faker, jupyter-client, matplotlib +pytz==2024.1 # via -c constraints.txt, babel +pyyaml==6.0.1 # via -c constraints.txt, dace, jupytext, pre-commit +pyzmq==25.1.2 # via -c constraints.txt, ipykernel, jupyter-client +referencing==0.33.0 # via -c constraints.txt, jsonschema, jsonschema-specifications +requests==2.31.0 # via -c constraints.txt, dace, sphinx +restructuredtext-lint==1.4.0 # via -c constraints.txt, flake8-rst-docstrings +rpds-py==0.17.1 # via -c constraints.txt, jsonschema, referencing +ruff==0.2.0 # via -c constraints.txt, -r requirements-dev.in +scipy==1.10.1 # via -c constraints.txt, jax, jaxlib +setuptools-scm==8.0.4 # via -c constraints.txt, fparser +six==1.16.0 # via -c constraints.txt, asttokens, astunparse, python-dateutil +snowballstemmer==2.2.0 # via -c constraints.txt, pydocstyle, sphinx +sortedcontainers==2.4.0 # via -c constraints.txt, hypothesis +sphinx==7.1.2 # via -c constraints.txt, -r requirements-dev.in, sphinx-rtd-theme, sphinxcontrib-jquery +sphinx-rtd-theme==2.0.0 # via -c constraints.txt, -r requirements-dev.in +sphinxcontrib-applehelp==1.0.4 # via -c constraints.txt, sphinx +sphinxcontrib-devhelp==1.0.2 # via -c constraints.txt, sphinx +sphinxcontrib-htmlhelp==2.0.1 # via -c constraints.txt, sphinx +sphinxcontrib-jquery==4.1 # via -c constraints.txt, sphinx-rtd-theme +sphinxcontrib-jsmath==1.0.1 # via -c constraints.txt, sphinx +sphinxcontrib-qthelp==1.0.3 # via -c constraints.txt, sphinx +sphinxcontrib-serializinghtml==1.1.5 # via -c constraints.txt, sphinx +stack-data==0.6.3 # via -c constraints.txt, ipython +sympy==1.9 # via -c constraints.txt, dace, gt4py (pyproject.toml) +tabulate==0.9.0 # via -c constraints.txt, gt4py (pyproject.toml) +toml==0.10.2 # via -c constraints.txt, jupytext +tomli==2.0.1 ; python_version < "3.11" # via -c constraints.txt, -r requirements-dev.in, black, build, coverage, flake8-pyproject, mypy, pip-tools, pyproject-api, pyproject-hooks, pytest, setuptools-scm, tox +toolz==0.12.1 # via -c constraints.txt, cytoolz +tornado==6.4 # via -c constraints.txt, ipykernel, jupyter-client +tox==4.12.1 # via -c constraints.txt, -r requirements-dev.in +traitlets==5.14.1 # via -c constraints.txt, comm, ipykernel, ipython, jupyter-client, jupyter-core, matplotlib-inline, nbclient, nbformat +types-aiofiles==23.2.0.20240106 # via -c constraints.txt, types-all +types-all==1.0.0 # via -c constraints.txt, -r requirements-dev.in +types-annoy==1.17.8.4 # via -c constraints.txt, types-all +types-atomicwrites==1.4.5.1 # via -c constraints.txt, types-all +types-backports==0.1.3 # via -c constraints.txt, types-all +types-backports-abc==0.5.2 # via -c constraints.txt, types-all +types-bleach==6.1.0.1 # via -c constraints.txt, types-all +types-boto==2.49.18.20240205 # via -c constraints.txt, types-all +types-cachetools==5.3.0.7 # via -c constraints.txt, types-all +types-certifi==2021.10.8.3 # via -c constraints.txt, types-all +types-cffi==1.16.0.20240106 # via -c constraints.txt, types-jack-client +types-characteristic==14.3.7 # via -c constraints.txt, types-all +types-chardet==5.0.4.6 # via -c constraints.txt, types-all +types-click==7.1.8 # via -c constraints.txt, types-all, types-flask +types-click-spinner==0.1.13.20240106 # via -c constraints.txt, types-all +types-colorama==0.4.15.20240205 # via -c constraints.txt, types-all +types-contextvars==2.4.7.3 # via -c constraints.txt, types-all +types-croniter==2.0.0.20240106 # via -c constraints.txt, types-all +types-cryptography==3.3.23.2 # via -c constraints.txt, types-all, types-openssl-python, types-pyjwt +types-dataclasses==0.6.6 # via -c constraints.txt, types-all +types-dateparser==1.1.4.20240106 # via -c constraints.txt, types-all +types-datetimerange==2.0.0.6 # via -c constraints.txt, types-all +types-decorator==5.1.8.20240106 # via -c constraints.txt, types-all +types-deprecated==1.2.9.20240106 # via -c constraints.txt, types-all +types-docopt==0.6.11.4 # via -c constraints.txt, types-all +types-docutils==0.20.0.20240201 # via -c constraints.txt, types-all +types-emoji==2.1.0.3 # via -c constraints.txt, types-all +types-enum34==1.1.8 # via -c constraints.txt, types-all +types-fb303==1.0.0 # via -c constraints.txt, types-all, types-scribe +types-filelock==3.2.7 # via -c constraints.txt, types-all +types-first==2.0.5.2 # via -c constraints.txt, types-all +types-flask==1.1.6 # via -c constraints.txt, types-all +types-freezegun==1.1.10 # via -c constraints.txt, types-all +types-frozendict==2.0.9 # via -c constraints.txt, types-all +types-futures==3.3.8 # via -c constraints.txt, types-all +types-geoip2==3.0.0 # via -c constraints.txt, types-all +types-ipaddress==1.0.8 # via -c constraints.txt, types-all, types-maxminddb +types-itsdangerous==1.1.6 # via -c constraints.txt, types-all +types-jack-client==0.5.10.20240106 # via -c constraints.txt, types-all +types-jinja2==2.11.9 # via -c constraints.txt, types-all, types-flask +types-kazoo==0.1.3 # via -c constraints.txt, types-all +types-markdown==3.5.0.20240129 # via -c constraints.txt, types-all +types-markupsafe==1.1.10 # via -c constraints.txt, types-all, types-jinja2 +types-maxminddb==1.5.0 # via -c constraints.txt, types-all, types-geoip2 +types-mock==5.1.0.20240106 # via -c constraints.txt, types-all +types-mypy-extensions==1.0.0.5 # via -c constraints.txt, types-all +types-nmap==0.1.6 # via -c constraints.txt, types-all +types-openssl-python==0.1.3 # via -c constraints.txt, types-all +types-orjson==3.6.2 # via -c constraints.txt, types-all +types-paramiko==3.4.0.20240205 # via -c constraints.txt, types-all, types-pysftp +types-pathlib2==2.3.0 # via -c constraints.txt, types-all +types-pillow==10.2.0.20240125 # via -c constraints.txt, types-all +types-pkg-resources==0.1.3 # via -c constraints.txt, types-all +types-polib==1.2.0.20240115 # via -c constraints.txt, types-all +types-protobuf==4.24.0.20240129 # via -c constraints.txt, types-all +types-pyaudio==0.2.16.20240106 # via -c constraints.txt, types-all +types-pycurl==7.45.2.20240106 # via -c constraints.txt, types-all +types-pyfarmhash==0.3.1.2 # via -c constraints.txt, types-all +types-pyjwt==1.7.1 # via -c constraints.txt, types-all +types-pymssql==2.1.0 # via -c constraints.txt, types-all +types-pymysql==1.1.0.1 # via -c constraints.txt, types-all +types-pyopenssl==24.0.0.20240130 # via -c constraints.txt, types-redis +types-pyrfc3339==1.1.1.5 # via -c constraints.txt, types-all +types-pysftp==0.2.17.20240106 # via -c constraints.txt, types-all +types-python-dateutil==2.8.19.20240106 # via -c constraints.txt, types-all, types-datetimerange +types-python-gflags==3.1.7.3 # via -c constraints.txt, types-all +types-python-slugify==8.0.2.20240127 # via -c constraints.txt, types-all +types-pytz==2024.1.0.20240203 # via -c constraints.txt, types-all, types-tzlocal +types-pyvmomi==8.0.0.6 # via -c constraints.txt, types-all +types-pyyaml==6.0.12.12 # via -c constraints.txt, types-all +types-redis==4.6.0.20240106 # via -c constraints.txt, types-all +types-requests==2.31.0.20240125 # via -c constraints.txt, types-all +types-retry==0.9.9.4 # via -c constraints.txt, types-all +types-routes==2.5.0 # via -c constraints.txt, types-all +types-scribe==2.0.0 # via -c constraints.txt, types-all +types-setuptools==69.0.0.20240125 # via -c constraints.txt, types-cffi +types-simplejson==3.19.0.2 # via -c constraints.txt, types-all +types-singledispatch==4.1.0.0 # via -c constraints.txt, types-all +types-six==1.16.21.20240106 # via -c constraints.txt, types-all +types-tabulate==0.9.0.20240106 # via -c constraints.txt, types-all +types-termcolor==1.1.6.2 # via -c constraints.txt, types-all +types-toml==0.10.8.7 # via -c constraints.txt, types-all +types-tornado==5.1.1 # via -c constraints.txt, types-all +types-typed-ast==1.5.8.7 # via -c constraints.txt, types-all +types-tzlocal==5.1.0.1 # via -c constraints.txt, types-all +types-ujson==5.9.0.0 # via -c constraints.txt, types-all +types-waitress==2.1.4.20240106 # via -c constraints.txt, types-all +types-werkzeug==1.0.9 # via -c constraints.txt, types-all, types-flask +types-xxhash==3.0.5.2 # via -c constraints.txt, types-all +typing-extensions==4.5.0 # via -c constraints.txt, black, faker, gt4py (pyproject.toml), ipython, mypy, pytest-factoryboy, setuptools-scm +urllib3==2.2.0 # via -c constraints.txt, requests, types-requests +virtualenv==20.25.0 # via -c constraints.txt, pre-commit, tox +wcwidth==0.2.13 # via -c constraints.txt, prompt-toolkit +websockets==12.0 # via -c constraints.txt, dace +werkzeug==3.0.1 # via -c constraints.txt, flask +wheel==0.42.0 # via -c constraints.txt, astunparse, pip-tools +xxhash==3.0.0 # via -c constraints.txt, gt4py (pyproject.toml) +zipp==3.17.0 # via -c constraints.txt, importlib-metadata, importlib-resources # The following packages are considered to be unsafe in a requirements file: -pip==24.0 # via pip-tools -setuptools==69.0.3 # via gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm +pip==24.0 # via -c constraints.txt, pip-tools +setuptools==69.0.3 # via -c constraints.txt, gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm diff --git a/tox.ini b/tox.ini index 77411e7032..9c1dccfed3 100644 --- a/tox.ini +++ b/tox.ini @@ -185,8 +185,8 @@ commands = --extra dace \ --extra formatting \ --extra jax-cpu \ - --extra performance \ --extra testing \ + -c constraints.txt \ -o requirements-dev.txt \ pyproject.toml requirements-dev.in # Run cog to update .pre-commit-config.yaml with new versions From df092684306be5723da00e49f8c93eb10f979bcc Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Mon, 5 Feb 2024 18:27:36 +0100 Subject: [PATCH 14/21] Refactor tox.ini and bump numpy --- constraints.txt | 4 +-- docs/development/tools/requirements.md | 4 +-- min-extra-requirements-test.txt | 2 +- min-requirements-test.txt | 2 +- pyproject.toml | 2 +- requirements-dev.txt | 4 +-- tox.ini | 43 ++++++++++++++------------ 7 files changed, 32 insertions(+), 29 deletions(-) diff --git a/constraints.txt b/constraints.txt index 7ae4a93b5d..de6c42b430 100644 --- a/constraints.txt +++ b/constraints.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# "tox run -e requirements-common" +# "tox run -e requirements-base" # aenum==3.1.15 # via dace alabaster==0.7.13 # via sphinx @@ -47,7 +47,7 @@ exceptiongroup==1.2.0 # via hypothesis, pytest execnet==2.0.2 # via pytest-cache, pytest-xdist executing==2.0.1 # via devtools, stack-data factory-boy==3.3.0 # via -r requirements-dev.in, pytest-factoryboy -faker==22.6.0 # via factory-boy +faker==22.7.0 # via factory-boy fastjsonschema==2.19.1 # via nbformat filelock==3.13.1 # via tox, virtualenv flake8==7.0.0 # via -r requirements-dev.in, flake8-bugbear, flake8-builtins, flake8-debugger, flake8-docstrings, flake8-eradicate, flake8-mutable, flake8-pyproject, flake8-rst-docstrings diff --git a/docs/development/tools/requirements.md b/docs/development/tools/requirements.md index f9b23dd220..3c76e9b80f 100644 --- a/docs/development/tools/requirements.md +++ b/docs/development/tools/requirements.md @@ -18,10 +18,10 @@ The expected workflow to update GT4Py requirements is as follows: 2. For changes in the development tools, update the `requirements-dev.in` file. -3. Run the **tox** _requirements-common_ environment to update all files automatically with **pip-compile** and **cog**. Note that **pip-compile** will most likely update the versions of some unrelated tools if new versions are available in PyPI. +3. Run the **tox** _requirements-base_ environment to update all files automatically with **pip-compile** and **cog**. Note that **pip-compile** will most likely update the versions of some unrelated tools if new versions are available in PyPI. ```bash - tox r -e requirements-common + tox r -e requirements-base ``` 4. Check that the **mypy** mirror used by **pre-commit** (https://github.com/pre-commit/mirrors-mypy) in `.pre-commit-config.yaml` supports the same version as in `constraints.txt`, and manually update the `rev` version number. diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index a2a844c162..0945d7ea10 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -89,7 +89,7 @@ mypy==1.0 nanobind==1.4.0 nbmake==1.4.6 ninja==1.10 -numpy==1.21.2 +numpy==1.22.0 packaging==20.0 pip-tools==6.10 pipdeptree==2.3 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index d7e5d55258..2387aceb50 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -84,7 +84,7 @@ mypy==1.0 nanobind==1.4.0 nbmake==1.4.6 ninja==1.10 -numpy==1.21.2 +numpy==1.22.0 packaging==20.0 pip-tools==6.10 pipdeptree==2.3 diff --git a/pyproject.toml b/pyproject.toml index 97c0f41447..9a9592df14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ 'mako>=1.1', 'nanobind>=1.4.0 ', 'ninja>=1.10', - 'numpy>=1.21.2', + 'numpy>=1.22.0', 'packaging>=20.0', 'pybind11>=2.5', 'setuptools>=65.5.0', diff --git a/requirements-dev.txt b/requirements-dev.txt index d2b7f267f0..b8782d1661 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# "tox run -e requirements-common" +# "tox run -e requirements-base" # aenum==3.1.15 # via -c constraints.txt, dace alabaster==0.7.13 # via -c constraints.txt, sphinx @@ -47,7 +47,7 @@ exceptiongroup==1.2.0 # via -c constraints.txt, hypothesis, pytest execnet==2.0.2 # via -c constraints.txt, pytest-cache, pytest-xdist executing==2.0.1 # via -c constraints.txt, devtools, stack-data factory-boy==3.3.0 # via -c constraints.txt, -r requirements-dev.in, pytest-factoryboy -faker==22.6.0 # via -c constraints.txt, factory-boy +faker==22.7.0 # via -c constraints.txt, factory-boy fastjsonschema==2.19.1 # via -c constraints.txt, nbformat filelock==3.13.1 # via -c constraints.txt, tox, virtualenv flake8==7.0.0 # via -c constraints.txt, -r requirements-dev.in, flake8-bugbear, flake8-builtins, flake8-debugger, flake8-docstrings, flake8-eradicate, flake8-mutable, flake8-pyproject, flake8-rst-docstrings diff --git a/tox.ini b/tox.ini index 9c1dccfed3..f7e4028503 100644 --- a/tox.ini +++ b/tox.ini @@ -3,10 +3,10 @@ requires = tox>=4.2 virtualenv>20.2 envlist = + cartesian-py{310}-{internal,dace}-{cpu} eve-py{310} - storage-py{310}-{internal,dace}-{cpu} next-py{310}-{nomesh,atlas} - cartesian-py{310}-{internal,dace}-{cpu} + storage-py{310}-{internal,dace}-{cpu} linters-py{310} # docs labels = @@ -47,6 +47,7 @@ pass_env = NUM_PROCESSES set_env = PYTHONWARNINGS = {env:PYTHONWARNINGS:ignore:Support for `[tool.setuptools]` in `pyproject.toml` is still *beta*:UserWarning} +# -- Primary tests -- [testenv:cartesian-py{38,39,310,311}-{internal,dace}-{cpu,cuda,cuda11x,cuda12x}] description = Run 'gt4py.cartesian' tests pass_env = {[testenv]pass_env}, BOOST_ROOT, BOOST_HOME, CUDA_HOME, CUDA_PATH, CXX, CC, OPENMP_CPPFLAGS, OPENMP_LDFLAGS, PIP_USER, PYTHONUSERBASE @@ -97,16 +98,28 @@ commands = {cuda,cuda11x,cuda12x}: python -m pytest --cache-clear -v -n {env:NUM_PROCESSES:1} -m "requires_gpu" {posargs} tests{/}storage_tests #pytest doctest-modules {posargs} src{/}gt4py{/}storage -[testenv:notebooks-py{310,311}] -description = Run notebooks -commands = python -m pytest --nbmake examples -v -n {env:NUM_PROCESSES:1} - +# -- Secondary tests -- [testenv:linters-py{38,39,310,311}] description = Run linters commands = flake8 .{/}src mypy .{/}src +[testenv:notebooks-py{310,311}] +description = Run notebooks +commands = python -m pytest --nbmake examples -v -n {env:NUM_PROCESSES:1} + +# -- Other artefacts -- +[testenv:dev-py{38,39,310,311}{-atlas,}] +description = Initialize development environment for gt4py +deps = + -r {tox_root}{/}requirements-dev.txt + atlas: atlas4py +package = editable-legacy # => use_develop = True +set_env = + {[testenv]set_env} + PIP_EXTRA_INDEX_URL = {env:PIP_EXTRA_INDEX_URL:https://test.pypi.org/simple/} + # [testenv:docs] # usedevelop = true # commands_pre = @@ -135,15 +148,15 @@ commands = # git add _static # commands_post = -[testenv:requirements-{common,py38,py39,py310,py311}] +[testenv:requirements-{base,py38,py39,py310,py311}] description = - common: Update pinned development requirements + base: Update pinned development requirements py38: Update requirements for testing a specific python version py39: Update requirements for testing a specific python version py310: Update requirements for testing a specific python version py311: Update requirements for testing a specific python version base_python = - common: py38 + base: py38 py38: py38 py39: py39 py310: py310 @@ -154,7 +167,7 @@ deps = pip-tools>=6.10 package = skip set_env = - CUSTOM_COMPILE_COMMAND = "tox run -e requirements-common" + CUSTOM_COMPILE_COMMAND = "tox run -e requirements-base" allowlist_externals = mv commands = @@ -191,13 +204,3 @@ commands = pyproject.toml requirements-dev.in # Run cog to update .pre-commit-config.yaml with new versions common: cog -r -P .pre-commit-config.yaml - -[testenv:dev-py{38,39,310,311}{-atlas,}] -description = Initialize development environment for gt4py -deps = - -r {tox_root}{/}requirements-dev.txt - atlas: atlas4py -package = editable-legacy # => use_develop = True -set_env = - {[testenv]set_env} - PIP_EXTRA_INDEX_URL = {env:PIP_EXTRA_INDEX_URL:https://test.pypi.org/simple/} From bf5e7b91b44ba758db25bbabd51ec7c980f67779 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 09:29:07 +0100 Subject: [PATCH 15/21] Bumping more versions --- min-extra-requirements-test.txt | 4 ++-- min-requirements-test.txt | 2 +- pyproject.toml | 4 ++-- requirements-dev.in | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 0945d7ea10..b9bfc11c7c 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -89,7 +89,7 @@ mypy==1.0 nanobind==1.4.0 nbmake==1.4.6 ninja==1.10 -numpy==1.22.0 +numpy==1.23.3 packaging==20.0 pip-tools==6.10 pipdeptree==2.3 @@ -103,7 +103,7 @@ pytest-factoryboy==2.0.3 pytest-xdist[psutil]==2.4 pytest==7.0 ruff==0.2.0 -scipy==1.7.2 +scipy==1.9.2 setuptools==65.5.0 sphinx==4.4 sphinx_rtd_theme==1.0 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index 2387aceb50..8f2f436a3d 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -84,7 +84,7 @@ mypy==1.0 nanobind==1.4.0 nbmake==1.4.6 ninja==1.10 -numpy==1.22.0 +numpy==1.23.3 packaging==20.0 pip-tools==6.10 pipdeptree==2.3 diff --git a/pyproject.toml b/pyproject.toml index 9a9592df14..d4d91f6ab1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ 'mako>=1.1', 'nanobind>=1.4.0 ', 'ninja>=1.10', - 'numpy>=1.22.0', + 'numpy>=1.23.3', 'packaging>=20.0', 'pybind11>=2.5', 'setuptools>=65.5.0', @@ -80,7 +80,7 @@ gpu = ['cupy>=12.0'] jax-cpu = ['jax[cpu]>=0.4.13'] jax-cuda11 = ['jax[cuda11_pip]>=0.4.13'] jax-cuda12 = ['jax[cuda12_pip]>=0.4.13'] -performance = ['scipy>=1.7.2'] +performance = ['scipy>=1.9.2'] rocm-43 = ['cupy-rocm-4-3'] testing = ['hypothesis>=6.0.0', 'pytest>=7.0'] diff --git a/requirements-dev.in b/requirements-dev.in index e554a819ee..3c0a33898a 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,5 +1,5 @@ # -# Constraints should specify the minimum required version. +# Constraints should specify the minimum required version (>=). # # Packages also required in the extra `gt4py['all-cpu']` configuration # should be added here without constraints, so they will use the From 32fbb9885e823be78a5579275de0e7d0cc8aa522 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 10:42:54 +0100 Subject: [PATCH 16/21] Update more versions of basic packages --- .github/workflows/daily-ci.yml | 10 +++++----- constraints.txt | 8 ++++---- pyproject.toml | 2 +- requirements-dev.txt | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/daily-ci.yml b/.github/workflows/daily-ci.yml index acb9712f3c..67b9612d6e 100644 --- a/.github/workflows/daily-ci.yml +++ b/.github/workflows/daily-ci.yml @@ -4,11 +4,11 @@ on: schedule: - cron: '0 4 * * *' - # COMMENTED OUT: only for testing CI action changes - pull_request: - branches: - - main - # END + # # COMMENTED OUT: only for testing CI action changes + # pull_request: + # branches: + # - main + # # END jobs: daily-ci: diff --git a/constraints.txt b/constraints.txt index de6c42b430..61bc04e671 100644 --- a/constraints.txt +++ b/constraints.txt @@ -64,7 +64,7 @@ fonttools==4.47.2 # via matplotlib fparser==0.1.4 # via dace frozendict==2.4.0 # via gt4py (pyproject.toml) gridtools-cpp==2.3.2 # via gt4py (pyproject.toml) -hypothesis==6.98.1 # via -r requirements-dev.in, gt4py (pyproject.toml) +hypothesis==6.98.2 # via -r requirements-dev.in, gt4py (pyproject.toml) identify==2.5.33 # via pre-commit idna==3.6 # via requests imagesize==1.4.1 # via sphinx @@ -72,7 +72,7 @@ importlib-metadata==7.0.1 # via build, flask, jax, jupyter-client, sphinx importlib-resources==6.1.1 ; python_version < "3.9" # via gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib inflection==0.5.1 # via pytest-factoryboy iniconfig==2.0.0 # via pytest -ipykernel==6.29.0 # via nbmake +ipykernel==6.29.1 # via nbmake ipython==8.12.3 # via ipykernel isort==5.13.2 # via -r requirements-dev.in itsdangerous==2.1.2 # via flask @@ -149,7 +149,7 @@ referencing==0.33.0 # via jsonschema, jsonschema-specifications requests==2.31.0 # via dace, sphinx restructuredtext-lint==1.4.0 # via flake8-rst-docstrings rpds-py==0.17.1 # via jsonschema, referencing -ruff==0.2.0 # via -r requirements-dev.in +ruff==0.2.1 # via -r requirements-dev.in scipy==1.10.1 # via gt4py (pyproject.toml), jax, jaxlib setuptools-scm==8.0.4 # via fparser six==1.16.0 # via asttokens, astunparse, python-dateutil @@ -224,7 +224,7 @@ types-openssl-python==0.1.3 # via types-all types-orjson==3.6.2 # via types-all types-paramiko==3.4.0.20240205 # via types-all, types-pysftp types-pathlib2==2.3.0 # via types-all -types-pillow==10.2.0.20240125 # via types-all +types-pillow==10.2.0.20240206 # via types-all types-pkg-resources==0.1.3 # via types-all types-polib==1.2.0.20240115 # via types-all types-protobuf==4.24.0.20240129 # via types-all diff --git a/pyproject.toml b/pyproject.toml index d4d91f6ab1..da1a7b6a58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] build-backend = 'setuptools.build_meta' -requires = ['setuptools>=60.6', 'wheel', 'cython'] +requires = ['setuptools>=65.5.0', 'wheel>=0.33.6', 'cython>=0.29.13'] # ---- Project description ---- # -- Standard options (PEP 621) -- diff --git a/requirements-dev.txt b/requirements-dev.txt index b8782d1661..84987138d5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -64,7 +64,7 @@ fonttools==4.47.2 # via -c constraints.txt, matplotlib fparser==0.1.4 # via -c constraints.txt, dace frozendict==2.4.0 # via -c constraints.txt, gt4py (pyproject.toml) gridtools-cpp==2.3.2 # via -c constraints.txt, gt4py (pyproject.toml) -hypothesis==6.98.1 # via -c constraints.txt, -r requirements-dev.in, gt4py (pyproject.toml) +hypothesis==6.98.2 # via -c constraints.txt, -r requirements-dev.in, gt4py (pyproject.toml) identify==2.5.33 # via -c constraints.txt, pre-commit idna==3.6 # via -c constraints.txt, requests imagesize==1.4.1 # via -c constraints.txt, sphinx @@ -72,7 +72,7 @@ importlib-metadata==7.0.1 # via -c constraints.txt, build, flask, jax, jupyter- importlib-resources==6.1.1 ; python_version < "3.9" # via -c constraints.txt, gt4py (pyproject.toml), jsonschema, jsonschema-specifications, matplotlib inflection==0.5.1 # via -c constraints.txt, pytest-factoryboy iniconfig==2.0.0 # via -c constraints.txt, pytest -ipykernel==6.29.0 # via -c constraints.txt, nbmake +ipykernel==6.29.1 # via -c constraints.txt, nbmake ipython==8.12.3 # via -c constraints.txt, ipykernel isort==5.13.2 # via -c constraints.txt, -r requirements-dev.in itsdangerous==2.1.2 # via -c constraints.txt, flask @@ -149,7 +149,7 @@ referencing==0.33.0 # via -c constraints.txt, jsonschema, jsonschema-speci requests==2.31.0 # via -c constraints.txt, dace, sphinx restructuredtext-lint==1.4.0 # via -c constraints.txt, flake8-rst-docstrings rpds-py==0.17.1 # via -c constraints.txt, jsonschema, referencing -ruff==0.2.0 # via -c constraints.txt, -r requirements-dev.in +ruff==0.2.1 # via -c constraints.txt, -r requirements-dev.in scipy==1.10.1 # via -c constraints.txt, jax, jaxlib setuptools-scm==8.0.4 # via -c constraints.txt, fparser six==1.16.0 # via -c constraints.txt, asttokens, astunparse, python-dateutil @@ -224,7 +224,7 @@ types-openssl-python==0.1.3 # via -c constraints.txt, types-all types-orjson==3.6.2 # via -c constraints.txt, types-all types-paramiko==3.4.0.20240205 # via -c constraints.txt, types-all, types-pysftp types-pathlib2==2.3.0 # via -c constraints.txt, types-all -types-pillow==10.2.0.20240125 # via -c constraints.txt, types-all +types-pillow==10.2.0.20240206 # via -c constraints.txt, types-all types-pkg-resources==0.1.3 # via -c constraints.txt, types-all types-polib==1.2.0.20240115 # via -c constraints.txt, types-all types-protobuf==4.24.0.20240129 # via -c constraints.txt, types-all From 03c160784246cd902bb38d3895dfeebb5f882a8d Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 10:46:01 +0100 Subject: [PATCH 17/21] Fix format --- .github/workflows/daily-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/daily-ci.yml b/.github/workflows/daily-ci.yml index 67b9612d6e..6f8248cd69 100644 --- a/.github/workflows/daily-ci.yml +++ b/.github/workflows/daily-ci.yml @@ -4,11 +4,11 @@ on: schedule: - cron: '0 4 * * *' - # # COMMENTED OUT: only for testing CI action changes - # pull_request: - # branches: - # - main - # # END + ## COMMENTED OUT: only for testing CI action changes + # pull_request: + # branches: + # - main + ## END jobs: daily-ci: From cc45c0224919a5fb65daeb7e6fc0e1fcf1d221b4 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 10:46:29 +0100 Subject: [PATCH 18/21] Fix format --- .github/workflows/daily-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/daily-ci.yml b/.github/workflows/daily-ci.yml index 6f8248cd69..8631390dbb 100644 --- a/.github/workflows/daily-ci.yml +++ b/.github/workflows/daily-ci.yml @@ -4,11 +4,11 @@ on: schedule: - cron: '0 4 * * *' - ## COMMENTED OUT: only for testing CI action changes - # pull_request: - # branches: - # - main - ## END + ## COMMENTED OUT: only for testing CI action changes + # pull_request: + # branches: + # - main + ## END jobs: daily-ci: From bf87dd1a87d5cc9730856cc5ae507efa56dd8210 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 10:50:35 +0100 Subject: [PATCH 19/21] Fix cog bug --- min-extra-requirements-test.txt | 3 ++- min-requirements-test.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index b9bfc11c7c..1b0e3ab5a5 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -15,7 +15,8 @@ ## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: ## for s in r.specifier: ## if (ss := str(s)).startswith(">"): -## min_spec = f"=={ss[1:]}" if ss[1] != "=" else f"=={ss[2:]}" +## assert ss.startswith(">=") +## min_spec = f"=={ss[2:]}" ## spec = specs.SpecifierSet(min_spec) ## break ## min_r = copy.deepcopy(r) diff --git a/min-requirements-test.txt b/min-requirements-test.txt index 8f2f436a3d..bc58382a76 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -15,7 +15,8 @@ ## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: ## for s in r.specifier: ## if (ss := str(s)).startswith(">"): -## min_spec = f"=={ss[1:]}" if ss[1] != "=" else f"=={ss[2:]}" +## assert ss.startswith(">=") +## min_spec = f"=={ss[2:]}" ## spec = specs.SpecifierSet(min_spec) ## break ## min_r = copy.deepcopy(r) From 773fdbcea6d9c8ec4e1a9e976295cd6ea63b7383 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 11:32:14 +0100 Subject: [PATCH 20/21] Bump pybind11 version --- min-extra-requirements-test.txt | 2 +- min-requirements-test.txt | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 1b0e3ab5a5..495c55499b 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -96,7 +96,7 @@ pip-tools==6.10 pipdeptree==2.3 pre-commit==2.17 psutil==5.0 -pybind11==2.5 +pybind11==2.10.1 pygments==2.7.3 pytest-cache==1.0 pytest-cov==2.8 diff --git a/min-requirements-test.txt b/min-requirements-test.txt index bc58382a76..7cba3c5f05 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -91,7 +91,7 @@ pip-tools==6.10 pipdeptree==2.3 pre-commit==2.17 psutil==5.0 -pybind11==2.5 +pybind11==2.10.1 pygments==2.7.3 pytest-cache==1.0 pytest-cov==2.8 diff --git a/pyproject.toml b/pyproject.toml index da1a7b6a58..5297dfb45b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ dependencies = [ 'ninja>=1.10', 'numpy>=1.23.3', 'packaging>=20.0', - 'pybind11>=2.5', + 'pybind11>=2.10.1', 'setuptools>=65.5.0', 'tabulate>=0.8.10', 'typing-extensions>=4.2,<4.6.0', From 9bf5fe7030d058701f1e21b4b5abf5e92da84081 Mon Sep 17 00:00:00 2001 From: Enrique Gonzalez Paredes Date: Tue, 6 Feb 2024 11:39:18 +0100 Subject: [PATCH 21/21] Improve cog scripts --- min-extra-requirements-test.txt | 7 +++---- min-requirements-test.txt | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/min-extra-requirements-test.txt b/min-extra-requirements-test.txt index 495c55499b..d97ed299e1 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -15,12 +15,11 @@ ## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: ## for s in r.specifier: ## if (ss := str(s)).startswith(">"): -## assert ss.startswith(">=") -## min_spec = f"=={ss[2:]}" -## spec = specs.SpecifierSet(min_spec) +## assert ss.startswith(">="), f"'{r!s}' requires a '>=' constraint" +## min_spec = specs.SpecifierSet(f"=={ss[2:]}") ## break ## min_r = copy.deepcopy(r) -## min_r.specifier = spec +## min_r.specifier = min_spec ## return min_r ## ## project = tomllib.loads(open("pyproject.toml").read()) diff --git a/min-requirements-test.txt b/min-requirements-test.txt index 7cba3c5f05..63553623a2 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -15,12 +15,11 @@ ## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: ## for s in r.specifier: ## if (ss := str(s)).startswith(">"): -## assert ss.startswith(">=") -## min_spec = f"=={ss[2:]}" -## spec = specs.SpecifierSet(min_spec) +## assert ss.startswith(">="), f"'{r!s}' requires a '>=' constraint" +## min_spec = specs.SpecifierSet(f"=={ss[2:]}") ## break ## min_r = copy.deepcopy(r) -## min_r.specifier = spec +## min_r.specifier = min_spec ## return min_r ## ## project = tomllib.loads(open("pyproject.toml").read())