diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index de6126d76..dde7c9183 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,12 +35,14 @@ jobs: with: coverage: 'codecov' posargs: '--color=yes' + toxdeps: tox-pypi-filter>=0.14 envs: | - linux: py314 - macos: py313 - windows: py312 - linux: py311 - linux: py311-oldestdeps + toxdeps: tox-uv tox-pypi-filter>=0.14 secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} @@ -82,6 +84,7 @@ jobs: with: coverage: 'codecov' posargs: '--color=yes' + toxdeps: tox-pypi-filter>=0.14 envs: | - linux: py312-online - linux: py313-devdeps diff --git a/pyproject.toml b/pyproject.toml index 117bc83e4..ab456adc0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ dependencies = [ # files with them unpinned so they are now required to read generated asdf # files. "asdf>=3.3.0", # Required by gwcs 0.24 - "asdf-astropy>=0.5.0", # Required by gwcs 0.24 + "asdf-astropy>=0.7.0", # Required by gwcs 0.24 "asdf-coordinates-schemas>=0.3.0", # required by wcs-schemas 0.4 "asdf-standard>=1.1.0", "asdf-transform-schemas>=0.6.0", @@ -46,21 +46,21 @@ dynamic = ["version"] [project.optional-dependencies] tests = [ - "pytest", - "pytest-asdf-plugin", - "pytest-doctestplus", - "pytest-cov", - "pytest-remotedata", - "pytest-mock", - "pytest-mpl", - "pytest-httpserver", - "pytest-filter-subpackage", - "pytest-benchmark", - "pytest-xdist", - "pytest-lazy-fixtures", - "hypothesis", - "tox", - "pydot", + "pytest>=8.0.1", + "pytest-asdf-plugin>=0.1.0", + "pytest-doctestplus>=1.4.0", + "pytest-cov>=6.0.0", + "pytest-remotedata>=0.4.0", + "pytest-mock>=3.13.0", + "pytest-mpl>=0.18.0", + "pytest-httpserver>=1.1.0", + "pytest-filter-subpackage>=0.2.0", + "pytest-benchmark>=5.0.0", + "pytest-xdist>=3.6.0", + "pytest-lazy-fixtures>=1.1.0", + "hypothesis>=6.84.0", + "tox>=4.0.0", + "pydot>=3.0.0", ] docs = [ "sphinx<9", @@ -183,3 +183,31 @@ version_file = "dkist/_version.py" directory = "performance" name = "Performance Improvements" showcontent = true + +[tool.uv] +constraint-dependencies = [ + # Core deps + "zarr>=2.15.0", + "pandas>=2.2.0", + "isodate>=0.6.0", + "fasteners>=0.18", + "lxml>=5.2.0", + "pyyaml>=6.0.2", + "cffi>=1.17.0", + "frozenlist>=1.5.0", + "pillow>=9.4.0", + "numcodecs>=0.11.0", + "pycparser>=2.22", + "asciitree>=0.3.3", + "entrypoints>=0.4", + "ply>=3.10", + "locket>=1.0.0", + "markupsafe>=3.0.2", + "jinja2>=3.1.3", + "defusedxml>=0.7.1", + "toolz>=1.0.0", + "urllib3>=2.2.0", + # test deps + "py-cpuinfo>=9.0.0", + "iniconfig>=2.3.0", +] diff --git a/pytest.ini b/pytest.ini index f7895dee4..1a0aa1cb1 100644 --- a/pytest.ini +++ b/pytest.ini @@ -74,5 +74,5 @@ filterwarnings = ignore:pkg_resources is deprecated as an API.*:DeprecationWarning ignore:Deprecated call to .*pkg_resources\.declare_namespace.*mpl_toolkits.*:DeprecationWarning ignore:Signature b:UserWarning - ignore:Reshaping is producing a large chunk:dask.array.core.PerformanceWarning + # ignore:Reshaping is producing a large chunk:dask.array.core.PerformanceWarning ignore:The chararray class is deprecated:DeprecationWarning diff --git a/tox.ini b/tox.ini index 39bd07189..a3ac08d6b 100644 --- a/tox.ini +++ b/tox.ini @@ -51,18 +51,23 @@ deps = devdeps: git+https://github.com/sunpy/mpl-animators devdeps: git+https://github.com/globus/globus-sdk-python # Autogenerate oldest dependencies from info in setup.cfg - oldestdeps: minimum_dependencies + # oldestdeps: minimum_dependencies figure-!devdeps: matplotlib==3.10.8 figure-!devdeps: mpl-animators==1.2.4 figure-!devdeps: astropy==7.2.0 figure-!devdeps: ndcube==2.4.0 +uv_resolution = + # The oldestdeps factor is intended to be used to install + # Let uv handle this for us by requesting all requirements should be + # resolved to their oldest compatible versions (including transitive dependencies) + oldestdeps: lowest # The following indicates which extras_require will be installed extras = tests commands_pre = - oldestdeps: minimum_dependencies dkist --filename requirements-min.txt + # oldestdeps: minimum_dependencies dkist --filename requirements-min.txt # We need to pin down the pyparsing transitive dependency because of matplotlib - oldestdeps: pip install -r requirements-min.txt pyparsing<3.3 + # oldestdeps: pip install -r requirements-min.txt pyparsing<3.3 pip freeze --all --no-input commands = figure: /bin/sh -c "mkdir -p ./figure_test_images; python -c 'import matplotlib as mpl; print(mpl.ft2font.__file__, mpl.ft2font.__freetype_version__, mpl.ft2font.__freetype_build_type__)' > ./figure_test_images/figure_version_info.txt"