diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3f26dfea55..62bf3ce0ab 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.2.0' # version from constraints.txt +# ##[[[end]]] +# hooks: +# - id: ruff +# # args: [ --fix, --exit-non-zero-on-fix ] + - repo: https://github.com/PyCQA/isort ##[[[cog ## import re @@ -153,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..61bc04e671 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 @@ -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) @@ -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 @@ -59,23 +59,25 @@ 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.3 # 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 -importlib-metadata==7.0.1 # via build, flask, jupyter-client, 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 +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 +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 (pyproject.toml), sphinx jsonschema==4.21.1 # via nbformat @@ -87,12 +89,13 @@ 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.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 @@ -104,7 +107,8 @@ 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), matplotlib, 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 (pyproject.toml), ipykernel, jupytext, matplotlib, pyproject-api, pytest, setuptools-scm, sphinx, tox parso==0.8.3 # via jedi @@ -136,16 +140,17 @@ 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.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 snowballstemmer==2.2.0 # via pydocstyle, sphinx @@ -163,7 +168,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 @@ -175,7 +180,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 +188,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 @@ -193,7 +198,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 @@ -217,9 +222,9 @@ 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-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 @@ -235,7 +240,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 @@ -268,5 +273,5 @@ 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==23.3.2 # via pip-tools +pip==24.0 # via pip-tools setuptools==69.0.3 # via gt4py (pyproject.toml), nodeenv, pip-tools, setuptools-scm diff --git a/docs/development/tools/requirements.md b/docs/development/tools/requirements.md index a58cf49ac3..3c76e9b80f 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,14 +14,14 @@ 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 tables when possible. 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 1db48693be..d97ed299e1 100644 --- a/min-extra-requirements-test.txt +++ b/min-extra-requirements-test.txt @@ -1,20 +1,55 @@ +# +# Generated automatically by cog from pyproject.toml and requirements-dev.in +# Run: +# tox r -e requirements-common +# + ##[[[cog -## import re, tomli -## project = tomli.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()}") +## import copy, sys +## from packaging import requirements as reqs, specifiers as specs +## if sys.version_info >= (3, 11): +## import tomllib +## else: +## import tomli as tomllib +## +## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: +## for s in r.specifier: +## if (ss := str(s)).startswith(">"): +## 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 = min_spec +## return min_r +## +## project = tomllib.loads(open("pyproject.toml").read()) +## 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 @@ -24,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 @@ -42,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 @@ -54,27 +89,27 @@ mypy==1.0 nanobind==1.4.0 nbmake==1.4.6 ninja==1.10 -numpy==1.21.2 +numpy==1.23.3 packaging==20.0 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 pytest-factoryboy==2.0.3 pytest-xdist[psutil]==2.4 pytest==7.0 -ruff==0.0.265 -scipy==1.7.2 +ruff==0.2.0 +scipy==1.9.2 setuptools==65.5.0 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..63553623a2 100644 --- a/min-requirements-test.txt +++ b/min-requirements-test.txt @@ -1,19 +1,52 @@ +# +# Generated automatically by cog from pyproject.toml and requirements-dev.in +# Run: +# tox r -e requirements-common +# + ##[[[cog -## import re, tomli -## project = tomli.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()}") +## import copy, sys +## from packaging import requirements as reqs, specifiers as specs +## if sys.version_info >= (3, 11): +## import tomllib +## else: +## import tomli as tomllib +## +## def make_min_req(r: reqs.Requirement) -> reqs.Requirement: +## for s in r.specifier: +## if (ss := str(s)).startswith(">"): +## 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 = min_spec +## return min_r +## +## project = tomllib.loads(open("pyproject.toml").read()) +## 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 @@ -23,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 @@ -40,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 @@ -51,25 +84,25 @@ mypy==1.0 nanobind==1.4.0 nbmake==1.4.6 ninja==1.10 -numpy==1.21.2 +numpy==1.23.3 packaging==20.0 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 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 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..5297dfb45b 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) -- @@ -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', @@ -30,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', @@ -41,9 +42,9 @@ dependencies = [ 'mako>=1.1', 'nanobind>=1.4.0 ', 'ninja>=1.10', - 'numpy>=1.21.2', + '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', @@ -66,23 +67,21 @@ readme = 'README.md' requires-python = '>=3.8' [project.optional-dependencies] -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]'] +# Other extras +cuda11 = ['cupy-cuda11x>=12.0'] +cuda12 = ['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'] +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.9.2'] +rocm-43 = ['cupy-rocm-4-3'] testing = ['hypothesis>=6.0.0', 'pytest>=7.0'] [project.scripts] @@ -196,6 +195,7 @@ known_third_party = [ 'boltons', 'cached_property', 'click', + 'cupy', 'dace', 'devtools', 'factory', @@ -218,7 +218,14 @@ lexicographical = true 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/**'] @@ -364,33 +371,42 @@ 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.format] +docstring-code-format = true + +[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 + 'RUF100' +] +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 +416,7 @@ known-third-party = [ 'boltons', 'cached_property', 'click', + 'cupy', 'dace', 'devtools', 'factory', @@ -420,17 +437,25 @@ known-third-party = [ ] 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.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..3c0a33898a 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,14 +1,10 @@ -##[[[cog -## import re, tomli -## project = tomli.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-cpu']` 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 @@ -23,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 @@ -33,13 +30,14 @@ 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 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 +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..84987138d5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,271 +2,276 @@ # 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 -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==2023.11.17 # 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, coverage, 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.1 # 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.3 # 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, 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 -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.4 # 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 -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), matplotlib, types-jack-client -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, pytest-xdist -python-dateutil==2.8.2 # via faker, jupyter-client, matplotlib -pytz==2023.4 # 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 -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 # 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.9 # 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.20240106 # 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.20240126 # 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.20240120 # 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==2023.4.0.20240130 # 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.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 +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.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 +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.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 +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.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 +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.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 +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==23.3.2 # 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 6a21a298ba..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,32 +148,33 @@ 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 py311: py311 deps = cogapp>=3.3 + packaging>=20.0 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 = -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 \ @@ -170,6 +184,8 @@ commands = --allow-unsafe \ --extra dace \ --extra formatting \ + --extra jax-cpu \ + --extra performance \ --extra testing \ -o constraints.txt \ pyproject.toml requirements-dev.in @@ -181,18 +197,10 @@ commands = --allow-unsafe \ --extra dace \ --extra formatting \ + --extra jax-cpu \ --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 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/}