From 196f15a639ac5aff9696c23a541dac9ef0d8ab01 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Tue, 15 Jul 2025 11:35:39 +0200 Subject: [PATCH 1/7] copier update --- .copier-answers.yml | 2 +- .../workflows/nightly_at_main_lower_bound.yml | 37 +++++++++++++++++++ docs/about/index.md | 4 +- docs/conf.py | 30 +++++++-------- 4 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/nightly_at_main_lower_bound.yml diff --git a/.copier-answers.yml b/.copier-answers.yml index 4c28b3de..a92b2ee0 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY -_commit: 3f79959 +_commit: 3561fcd _src_path: gh:scipp/copier_template description: Diffraction data reduction for the European Spallation Source max_python: '3.13' diff --git a/.github/workflows/nightly_at_main_lower_bound.yml b/.github/workflows/nightly_at_main_lower_bound.yml new file mode 100644 index 00000000..c13c3f78 --- /dev/null +++ b/.github/workflows/nightly_at_main_lower_bound.yml @@ -0,0 +1,37 @@ +name: Nightly test using lower bound dependencies + +on: + workflow_dispatch: + schedule: + - cron: '30 1 * * 1-5' + +jobs: + setup: + name: Setup variables + runs-on: 'ubuntu-24.04' + outputs: + min_python: ${{ steps.vars.outputs.min_python }} + steps: + - uses: actions/checkout@v4 + - name: Get Python version for other CI jobs + id: vars + run: echo "min_python=$(< .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" + + tests: + name: Tests at lower bound + needs: setup + strategy: + matrix: + os: ['ubuntu-24.04'] + python: + - version: '${{needs.setup.outputs.min_python}}' + runs-on: ${{ matrix.os }} + env: + ESS_PROTECTED_FILESTORE_USERNAME: ${{ secrets.ESS_PROTECTED_FILESTORE_USERNAME }} + ESS_PROTECTED_FILESTORE_PASSWORD: ${{ secrets.ESS_PROTECTED_FILESTORE_PASSWORD }} + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v6 + with: + python-version: ${{ matrix.python.version }} + - run: uv run --extra=test --resolution=lowest-direct pytest diff --git a/docs/about/index.md b/docs/about/index.md index e7291804..cccf9f45 100644 --- a/docs/about/index.md +++ b/docs/about/index.md @@ -2,11 +2,11 @@ ## Development -ESSdiffraction is an open source project by the [European Spallation Source ERIC](https://europeanspallationsource.se/) (ESS). +ESSdiffraction is an open source project by the [European Spallation Source ERIC](https://ess.eu/) (ESS). ## License -ESSdiffraction is available as open source under the [BSD-3 license](https://opensource.org/licenses/BSD-3-Clause). +ESSdiffraction is available as open source under the [BSD-3 license](https://opensource.org/license/BSD-3-Clause). ## Citing ESSdiffraction diff --git a/docs/conf.py b/docs/conf.py index 53c44237..50955d39 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -21,21 +21,21 @@ html_show_sourcelink = True extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - "sphinx.ext.doctest", - "sphinx.ext.githubpages", - "sphinx.ext.intersphinx", - "sphinx.ext.mathjax", - "sphinx.ext.napoleon", - "sphinx.ext.viewcode", - "sphinx_autodoc_typehints", - "sphinx_copybutton", - "sphinx_design", - "sphinxcontrib.autodoc_pydantic", - "sphinxcontrib.bibtex", - "nbsphinx", - "myst_parser", + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.doctest', + 'sphinx.ext.githubpages', + 'sphinx.ext.intersphinx', + 'sphinx.ext.mathjax', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', + 'sphinx_autodoc_typehints', + 'sphinx_copybutton', + 'sphinx_design', + 'sphinxcontrib.autodoc_pydantic', + 'sphinxcontrib.bibtex', + 'nbsphinx', + 'myst_parser', ] try: From ebde0fb2b7708520715819ec60e098c120b39a82 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Tue, 15 Jul 2025 11:35:58 +0200 Subject: [PATCH 2/7] deps: add lower bounds --- pyproject.toml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f329fe32..dca422d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,12 +31,12 @@ requires-python = ">=3.10" # Run 'tox -e deps' after making changes here. This will update requirement files. # Make sure to list one dependency per line. dependencies = [ - "dask", + "dask>=2024.7.0", "essreduce>=25.05.3", "graphviz", - "numpy", + "numpy>=1.25", "plopp>=25.03.0", - "pythreejs", + "pythreejs>=2.4.1", "sciline>=25.04.1", "scipp>=25.05.1", "scippneutron>=25.02.0", @@ -48,9 +48,10 @@ dynamic = ["version"] [project.optional-dependencies] test = [ - "pandas", - "pooch", - "pytest", + "pandas>=2.2.2", + "pooch>=1.5", + "pytest>=7.0", + "ipywidgets>=8.1.7" ] [project.urls] From 76a6b46874f5a4c5cba781ed2b0d4ef3f6b57757 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Tue, 15 Jul 2025 11:38:46 +0200 Subject: [PATCH 3/7] tox -e deps --- requirements/base.in | 6 ++-- requirements/base.txt | 14 ++++----- requirements/basetest.in | 7 +++-- requirements/basetest.txt | 60 ++++++++++++++++++++++++++++++++++----- requirements/ci.txt | 4 +-- requirements/dev.txt | 6 ++-- requirements/docs.txt | 4 +-- requirements/mypy.txt | 2 +- requirements/nightly.in | 13 +++++---- requirements/nightly.txt | 13 +++++---- 10 files changed, 89 insertions(+), 40 deletions(-) diff --git a/requirements/base.in b/requirements/base.in index f61ba7cb..cf2e8f1b 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -2,12 +2,12 @@ # will not be touched by ``make_base.py`` # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -dask +dask>=2024.7.0 essreduce>=25.05.3 graphviz -numpy +numpy>=1.25 plopp>=25.03.0 -pythreejs +pythreejs>=2.4.1 sciline>=25.04.1 scipp>=25.05.1 scippneutron>=25.02.0 diff --git a/requirements/base.txt b/requirements/base.txt index dec17364..e072e6de 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:81114073dd5e4b765405b54b3976f92d6a96439b +# SHA1:e5f19e89c28c46d0069980c19299af1a774ddf63 # # This file was generated by pip-compile-multi. # To update, run: @@ -21,7 +21,7 @@ cyclebane==24.10.0 # via sciline cycler==0.12.1 # via matplotlib -dask==2025.5.1 +dask==2025.7.0 # via -r base.in decorator==5.2.1 # via ipython @@ -29,13 +29,13 @@ dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via scippneutron -essreduce==25.5.3 +essreduce==25.7.1 # via -r base.in exceptiongroup==1.3.0 # via ipython executing==2.2.0 # via stack-data -fonttools==4.58.4 +fonttools==4.58.5 # via matplotlib fsspec==2025.5.1 # via dask @@ -104,7 +104,7 @@ pexpect==4.9.0 # via ipython pillow==11.3.0 # via matplotlib -plopp==25.6.1 +plopp==25.7.0 # via # -r base.in # scippneutron @@ -143,7 +143,7 @@ scipp==25.5.1 # scippneutron # scippnexus # tof -scippneutron==25.6.0 +scippneutron==25.7.0 # via # -r base.in # essreduce @@ -177,7 +177,7 @@ traitlets==5.14.3 # traittypes traittypes==0.2.1 # via ipydatawidgets -typing-extensions==4.14.0 +typing-extensions==4.14.1 # via # exceptiongroup # ipython diff --git a/requirements/basetest.in b/requirements/basetest.in index 3ddc0c92..12a0aa71 100644 --- a/requirements/basetest.in +++ b/requirements/basetest.in @@ -7,6 +7,7 @@ # will not be touched by ``make_base.py`` # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -pandas -pooch -pytest +pandas>=2.2.2 +pooch>=1.5 +pytest>=7.0 +ipywidgets>=8.1.7 diff --git a/requirements/basetest.txt b/requirements/basetest.txt index ca3cd275..f23d2aa1 100644 --- a/requirements/basetest.txt +++ b/requirements/basetest.txt @@ -1,36 +1,68 @@ -# SHA1:c4f3e9aaa3abd10fcdf497bea14415857f62cc89 +# SHA1:1d482a0b1884b85a0c65c44ffe0f23cc5b20fbad # # This file was generated by pip-compile-multi. # To update, run: # # requirements upgrade # -certifi==2025.6.15 +asttokens==3.0.0 + # via stack-data +certifi==2025.7.14 # via requests charset-normalizer==3.4.2 # via requests +comm==0.2.2 + # via ipywidgets +decorator==5.2.1 + # via ipython exceptiongroup==1.3.0 - # via pytest + # via + # ipython + # pytest +executing==2.2.0 + # via stack-data idna==3.10 # via requests iniconfig==2.1.0 # via pytest +ipython==8.37.0 + # via ipywidgets +ipywidgets==8.1.7 + # via -r basetest.in +jedi==0.19.2 + # via ipython +jupyterlab-widgets==3.0.15 + # via ipywidgets +matplotlib-inline==0.1.7 + # via ipython numpy==2.2.6 # via pandas packaging==25.0 # via # pooch # pytest -pandas==2.3.0 +pandas==2.3.1 # via -r basetest.in +parso==0.8.4 + # via jedi +pexpect==4.9.0 + # via ipython platformdirs==4.3.8 # via pooch pluggy==1.6.0 # via pytest pooch==1.8.2 # via -r basetest.in +prompt-toolkit==3.0.51 + # via ipython +ptyprocess==0.7.0 + # via pexpect +pure-eval==0.2.3 + # via stack-data pygments==2.19.2 - # via pytest + # via + # ipython + # pytest pytest==8.4.1 # via -r basetest.in python-dateutil==2.9.0.post0 @@ -41,11 +73,25 @@ requests==2.32.4 # via pooch six==1.17.0 # via python-dateutil +stack-data==0.6.3 + # via ipython tomli==2.2.1 # via pytest -typing-extensions==4.14.0 - # via exceptiongroup +traitlets==5.14.3 + # via + # comm + # ipython + # ipywidgets + # matplotlib-inline +typing-extensions==4.14.1 + # via + # exceptiongroup + # ipython tzdata==2025.2 # via pandas urllib3==2.5.0 # via requests +wcwidth==0.2.13 + # via prompt-toolkit +widgetsnbextension==4.0.14 + # via ipywidgets diff --git a/requirements/ci.txt b/requirements/ci.txt index 80413abd..629701a6 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -7,7 +7,7 @@ # cachetools==6.1.0 # via tox -certifi==2025.6.15 +certifi==2025.7.14 # via requests chardet==5.2.0 # via tox @@ -50,7 +50,7 @@ tomli==2.2.1 # tox tox==4.27.0 # via -r ci.in -typing-extensions==4.14.0 +typing-extensions==4.14.1 # via tox urllib3==2.5.0 # via requests diff --git a/requirements/dev.txt b/requirements/dev.txt index 3d156317..290f4dcc 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -26,9 +26,9 @@ async-lru==2.0.5 # via jupyterlab cffi==1.17.1 # via argon2-cffi-bindings -copier==9.7.1 +copier==9.8.0 # via -r dev.in -dunamai==1.24.1 +dunamai==1.25.0 # via copier fqdn==1.5.1 # via jsonschema @@ -105,7 +105,7 @@ terminado==0.18.1 # jupyter-server-terminals toposort==1.10 # via pip-compile-multi -types-python-dateutil==2.9.0.20250516 +types-python-dateutil==2.9.0.20250708 # via arrow uri-template==1.3.0 # via jsonschema diff --git a/requirements/docs.txt b/requirements/docs.txt index 1881f381..347a4396 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -26,7 +26,7 @@ beautifulsoup4==4.13.4 # pydata-sphinx-theme bleach[css]==6.2.0 # via nbconvert -certifi==2025.6.15 +certifi==2025.7.14 # via requests charset-normalizer==3.4.2 # via requests @@ -104,7 +104,7 @@ nbsphinx==0.9.7 # via -r docs.in nest-asyncio==1.6.0 # via ipykernel -pandas==2.3.0 +pandas==2.3.1 # via -r docs.in pandocfilters==1.5.1 # via nbconvert diff --git a/requirements/mypy.txt b/requirements/mypy.txt index 1d56fca3..3c79935b 100644 --- a/requirements/mypy.txt +++ b/requirements/mypy.txt @@ -6,7 +6,7 @@ # requirements upgrade # -r test.txt -mypy==1.16.1 +mypy==1.17.0 # via -r mypy.in mypy-extensions==1.1.0 # via mypy diff --git a/requirements/nightly.in b/requirements/nightly.in index 4219857b..f75e7d1f 100644 --- a/requirements/nightly.in +++ b/requirements/nightly.in @@ -1,13 +1,14 @@ # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -dask +dask>=2024.7.0 graphviz -numpy -pythreejs -pandas -pooch -pytest +numpy>=1.25 +pythreejs>=2.4.1 +pandas>=2.2.2 +pooch>=1.5 +pytest>=7.0 +ipywidgets>=8.1.7 scipp --index-url=https://pypi.anaconda.org/scipp-nightly-wheels/simple/ --extra-index-url=https://pypi.org/simple diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 8d7f6c05..55d2f213 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,4 +1,4 @@ -# SHA1:366263fa92dc0eb9f81d46f056e0c80a931f671e +# SHA1:6031a640f9590a12eee0bcc3dc58ec5a1f101996 # # This file was generated by pip-compile-multi. # To update, run: @@ -12,7 +12,7 @@ annotated-types==0.7.0 # via pydantic asttokens==3.0.0 # via stack-data -certifi==2025.6.15 +certifi==2025.7.14 # via requests charset-normalizer==3.4.2 # via requests @@ -28,7 +28,7 @@ cyclebane==24.10.0 # via sciline cycler==0.12.1 # via matplotlib -dask==2025.5.1 +dask==2025.7.0 # via -r nightly.in decorator==5.2.1 # via ipython @@ -44,7 +44,7 @@ exceptiongroup==1.3.0 # pytest executing==2.2.0 # via stack-data -fonttools==4.58.4 +fonttools==4.58.5 # via matplotlib fsspec==2025.5.1 # via dask @@ -68,6 +68,7 @@ ipython==8.37.0 # via ipywidgets ipywidgets==8.1.7 # via + # -r nightly.in # ipydatawidgets # pythreejs jedi==0.19.2 @@ -112,7 +113,7 @@ packaging==25.0 # matplotlib # pooch # pytest -pandas==2.3.0 +pandas==2.3.1 # via -r nightly.in parso==0.8.4 # via jedi @@ -212,7 +213,7 @@ traitlets==5.14.3 # traittypes traittypes==0.2.1 # via ipydatawidgets -typing-extensions==4.14.0 +typing-extensions==4.14.1 # via # exceptiongroup # ipython From 959b7ee791d497ca418046d523d4fa9026baaac0 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Wed, 16 Jul 2025 10:11:30 +0200 Subject: [PATCH 4/7] deps: earlier dask pin --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dca422d4..c13205b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ requires-python = ">=3.10" # Run 'tox -e deps' after making changes here. This will update requirement files. # Make sure to list one dependency per line. dependencies = [ - "dask>=2024.7.0", + "dask>=2022.1.0", "essreduce>=25.05.3", "graphviz", "numpy>=1.25", From f84bead5ef7c6d854639659648b664409d07a835 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Wed, 16 Jul 2025 10:13:11 +0200 Subject: [PATCH 5/7] tox -e deps --- requirements/base.in | 2 +- requirements/base.txt | 4 ++-- requirements/docs.txt | 2 +- requirements/nightly.in | 2 +- requirements/nightly.txt | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/requirements/base.in b/requirements/base.in index cf2e8f1b..a7d25dbd 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -2,7 +2,7 @@ # will not be touched by ``make_base.py`` # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -dask>=2024.7.0 +dask>=2022.1.0 essreduce>=25.05.3 graphviz numpy>=1.25 diff --git a/requirements/base.txt b/requirements/base.txt index e072e6de..f7d090c7 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:e5f19e89c28c46d0069980c19299af1a774ddf63 +# SHA1:8cd11f24389497f17c533713cf71285ce2961028 # # This file was generated by pip-compile-multi. # To update, run: @@ -37,7 +37,7 @@ executing==2.2.0 # via stack-data fonttools==4.58.5 # via matplotlib -fsspec==2025.5.1 +fsspec==2025.7.0 # via dask graphviz==0.21 # via -r base.in diff --git a/requirements/docs.txt b/requirements/docs.txt index 347a4396..ad7f100b 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -30,7 +30,7 @@ certifi==2025.7.14 # via requests charset-normalizer==3.4.2 # via requests -debugpy==1.8.14 +debugpy==1.8.15 # via ipykernel defusedxml==0.7.1 # via nbconvert diff --git a/requirements/nightly.in b/requirements/nightly.in index f75e7d1f..dac8aa7d 100644 --- a/requirements/nightly.in +++ b/requirements/nightly.in @@ -1,7 +1,7 @@ # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -dask>=2024.7.0 +dask>=2022.1.0 graphviz numpy>=1.25 pythreejs>=2.4.1 diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 55d2f213..0df09acb 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,4 +1,4 @@ -# SHA1:6031a640f9590a12eee0bcc3dc58ec5a1f101996 +# SHA1:0ba9f657845acc0b421eda91268e9e6cbaa4d4ae # # This file was generated by pip-compile-multi. # To update, run: @@ -46,7 +46,7 @@ executing==2.2.0 # via stack-data fonttools==4.58.5 # via matplotlib -fsspec==2025.5.1 +fsspec==2025.7.0 # via dask graphviz==0.21 # via -r nightly.in From 135b3a7478265d513557dc73c5fd0a54587271f3 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Wed, 16 Jul 2025 10:28:58 +0200 Subject: [PATCH 6/7] deps: relax pandas --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c13205b6..28051464 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dynamic = ["version"] [project.optional-dependencies] test = [ - "pandas>=2.2.2", + "pandas>=2.1.2", "pooch>=1.5", "pytest>=7.0", "ipywidgets>=8.1.7" From c57a290a72bedb80a03a827aabcdc2cb8eca3022 Mon Sep 17 00:00:00 2001 From: Johannes Kasimir Date: Wed, 16 Jul 2025 10:30:30 +0200 Subject: [PATCH 7/7] tox -e deps --- requirements/basetest.in | 2 +- requirements/basetest.txt | 2 +- requirements/nightly.in | 2 +- requirements/nightly.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements/basetest.in b/requirements/basetest.in index 12a0aa71..7b5c6f56 100644 --- a/requirements/basetest.in +++ b/requirements/basetest.in @@ -7,7 +7,7 @@ # will not be touched by ``make_base.py`` # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -pandas>=2.2.2 +pandas>=2.1.2 pooch>=1.5 pytest>=7.0 ipywidgets>=8.1.7 diff --git a/requirements/basetest.txt b/requirements/basetest.txt index f23d2aa1..c67524dc 100644 --- a/requirements/basetest.txt +++ b/requirements/basetest.txt @@ -1,4 +1,4 @@ -# SHA1:1d482a0b1884b85a0c65c44ffe0f23cc5b20fbad +# SHA1:7f34665dae8380142bc93ee5745242a803a4e60c # # This file was generated by pip-compile-multi. # To update, run: diff --git a/requirements/nightly.in b/requirements/nightly.in index dac8aa7d..27cced00 100644 --- a/requirements/nightly.in +++ b/requirements/nightly.in @@ -5,7 +5,7 @@ dask>=2022.1.0 graphviz numpy>=1.25 pythreejs>=2.4.1 -pandas>=2.2.2 +pandas>=2.1.2 pooch>=1.5 pytest>=7.0 ipywidgets>=8.1.7 diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 0df09acb..3f0e175e 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,4 +1,4 @@ -# SHA1:0ba9f657845acc0b421eda91268e9e6cbaa4d4ae +# SHA1:10d896bcca3d382aa5b0e4215a8175e9d33097fb # # This file was generated by pip-compile-multi. # To update, run: