diff --git a/.copier-answers.yml b/.copier-answers.yml index 1799bcae..a804ae96 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,8 +1,8 @@ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY -_commit: 75b9a8f +_commit: 4180f34 _src_path: gh:scipp/copier_template description: Diffraction data reduction for the European Spallation Source -max_python: '3.12' +max_python: '3.13' min_python: '3.10' namespace_package: ess nightly_deps: scipp,scippnexus,sciline,plopp,scippneutron,essreduce @@ -10,4 +10,4 @@ orgname: scipp prettyname: ESSdiffraction projectname: essdiffraction related_projects: Scipp,ScippNexus,ScippNeutron,Sciline,Plopp,ESSreduce -year: 2024 +year: 2025 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 356700a7..b273e684 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ on: jobs: formatting: name: Formatting and static analysis - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' outputs: min_python: ${{ steps.vars.outputs.min_python }} min_tox_env: ${{ steps.vars.outputs.min_tox_env }} @@ -19,15 +19,15 @@ jobs: - name: Get Python version for other CI jobs id: vars run: | - echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT - echo "min_tox_env=py$(cat .github/workflows/python-version-ci | sed 's/\.//g')" >> $GITHUB_OUTPUT + echo "min_python=$(< .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" + echo "min_tox_env=py$(sed 's/\.//g' < .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" - uses: actions/setup-python@v5 with: python-version-file: '.github/workflows/python-version-ci' - uses: pre-commit/action@v3.0.1 with: extra_args: --all-files - - uses: pre-commit-ci/lite-action@v1.0.3 + - uses: pre-commit-ci/lite-action@v1.1.0 if: always() with: msg: Apply automatic formatting @@ -37,7 +37,7 @@ jobs: needs: formatting strategy: matrix: - os: ['ubuntu-22.04'] + os: ['ubuntu-24.04'] python: - version: '${{needs.formatting.outputs.min_python}}' tox-env: '${{needs.formatting.outputs.min_tox_env}}' @@ -53,6 +53,6 @@ jobs: uses: ./.github/workflows/docs.yml with: publish: false - linkcheck: ${{ contains(matrix.variant.os, 'ubuntu') && github.ref == 'refs/heads/main' }} + linkcheck: ${{ github.ref == 'refs/heads/main' }} branch: ${{ github.head_ref == '' && github.ref_name || github.head_ref }} secrets: inherit diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c6a413ea..a90bcf10 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -41,7 +41,7 @@ env: jobs: docs: name: Build documentation - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' env: ESS_PROTECTED_FILESTORE_USERNAME: ${{ secrets.ESS_PROTECTED_FILESTORE_USERNAME }} ESS_PROTECTED_FILESTORE_PASSWORD: ${{ secrets.ESS_PROTECTED_FILESTORE_PASSWORD }} @@ -58,7 +58,7 @@ jobs: python-version-file: '.github/workflows/python-version-ci' - run: python -m pip install --upgrade pip - run: python -m pip install -r requirements/ci.txt - - run: tox -e releasedocs -- ${VERSION} + - run: tox -e releasedocs -- "${VERSION}" if: ${{ inputs.version != '' }} - run: tox -e docs if: ${{ inputs.version == '' }} @@ -69,7 +69,7 @@ jobs: name: docs_html path: html/ - - uses: JamesIves/github-pages-deploy-action@v4.6.4 + - uses: JamesIves/github-pages-deploy-action@v4.7.2 if: ${{ inputs.publish }} with: branch: gh-pages diff --git a/.github/workflows/nightly_at_main.yml b/.github/workflows/nightly_at_main.yml index c2b9d33a..20e9ee4a 100644 --- a/.github/workflows/nightly_at_main.yml +++ b/.github/workflows/nightly_at_main.yml @@ -8,21 +8,21 @@ on: jobs: setup: name: Setup variables - runs-on: 'ubuntu-22.04' + 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=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT + run: echo "min_python=$(< .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" tests: name: Tests needs: setup strategy: matrix: - os: ['ubuntu-22.04'] + os: ['ubuntu-24.04'] python: - version: '${{needs.setup.outputs.min_python}}' tox-env: 'nightly' diff --git a/.github/workflows/nightly_at_release.yml b/.github/workflows/nightly_at_release.yml index 3faa1c23..14b75213 100644 --- a/.github/workflows/nightly_at_release.yml +++ b/.github/workflows/nightly_at_release.yml @@ -8,7 +8,7 @@ on: jobs: setup: name: Setup variables - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' outputs: min_python: ${{ steps.vars.outputs.min_python }} release_tag: ${{ steps.release.outputs.release_tag }} @@ -18,17 +18,17 @@ jobs: fetch-depth: 0 # history required so we can determine latest release tag - name: Get last release tag from git id: release - run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> $GITHUB_OUTPUT + run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> "$GITHUB_OUTPUT" - name: Get Python version for other CI jobs id: vars - run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT + run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" tests: name: Tests needs: setup strategy: matrix: - os: ['ubuntu-22.04'] + os: ['ubuntu-24.04'] python: - version: '${{needs.setup.outputs.min_python}}' tox-env: 'nightly' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d1317a76..fe8ef23d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ defaults: jobs: build_conda: name: Conda build - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: actions/checkout@v4 @@ -35,7 +35,7 @@ jobs: build_wheels: name: Wheels - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' steps: - uses: actions/checkout@v4 @@ -61,7 +61,7 @@ jobs: upload_pypi: name: Deploy PyPI needs: [build_wheels, build_conda] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' environment: release permissions: id-token: write @@ -73,7 +73,7 @@ jobs: upload_conda: name: Deploy Conda needs: [build_wheels, build_conda] - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' if: github.event_name == 'release' && github.event.action == 'published' steps: @@ -97,7 +97,7 @@ jobs: assets: name: Upload docs needs: docs - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' permissions: contents: write # This is needed so that the action can upload the asset steps: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e98ed7cd..ca40b253 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: os-variant: - default: 'ubuntu-22.04' + default: 'ubuntu-24.04' type: string python-version: type: string @@ -23,7 +23,7 @@ on: workflow_call: inputs: os-variant: - default: 'ubuntu-22.04' + default: 'ubuntu-24.04' type: string python-version: type: string diff --git a/.github/workflows/unpinned.yml b/.github/workflows/unpinned.yml index 3f49f722..ff03faa1 100644 --- a/.github/workflows/unpinned.yml +++ b/.github/workflows/unpinned.yml @@ -8,7 +8,7 @@ on: jobs: setup: name: Setup variables - runs-on: 'ubuntu-22.04' + runs-on: 'ubuntu-24.04' outputs: min_python: ${{ steps.vars.outputs.min_python }} release_tag: ${{ steps.release.outputs.release_tag }} @@ -18,17 +18,17 @@ jobs: fetch-depth: 0 # history required so we can determine latest release tag - name: Get last release tag from git id: release - run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> $GITHUB_OUTPUT + run: echo "release_tag=$(git describe --tags --abbrev=0 --match '[0-9]*.[0-9]*.[0-9]*')" >> "$GITHUB_OUTPUT" - name: Get Python version for other CI jobs id: vars - run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT + run: echo "min_python=$(cat .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" tests: name: Tests needs: setup strategy: matrix: - os: ['ubuntu-22.04'] + os: ['ubuntu-24.04'] python: - version: '${{needs.setup.outputs.min_python}}' tox-env: 'unpinned' diff --git a/.github/workflows/weekly_windows_macos.yml b/.github/workflows/weekly_windows_macos.yml new file mode 100644 index 00000000..1544d7f9 --- /dev/null +++ b/.github/workflows/weekly_windows_macos.yml @@ -0,0 +1,42 @@ +name: Windows and MacOS weekly tests + +on: + workflow_dispatch: + schedule: + - cron: '0 2 * * 1' + +jobs: + pytox: + name: Python and Tox env + runs-on: 'ubuntu-24.04' + outputs: + min_python: ${{ steps.vars.outputs.min_python }} + min_tox_env: ${{ steps.vars.outputs.min_tox_env }} + steps: + - uses: actions/checkout@v4 + - name: Get Python version for other CI jobs + id: vars + run: | + echo "min_python=$(cat .github/workflows/python-version-ci)" >> $GITHUB_OUTPUT + echo "min_tox_env=py$(cat .github/workflows/python-version-ci | sed 's/\.//g')" >> $GITHUB_OUTPUT + tests: + name: Tests + needs: pytox + strategy: + matrix: + os: ['macos-latest', 'windows-latest'] + python: + - version: '${{needs.pytox.outputs.min_python}}' + tox-env: '${{needs.pytox.outputs.min_tox_env}}' + uses: ./.github/workflows/test.yml + with: + os-variant: ${{ matrix.os }} + python-version: ${{ matrix.python.version }} + tox-env: ${{ matrix.python.tox-env }} + + docs: + needs: tests + uses: ./.github/workflows/docs.yml + with: + publish: false + branch: ${{ github.head_ref == '' && github.ref_name || github.head_ref }} diff --git a/.gitignore b/.gitignore index cc2a0f8d..3e02ecce 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ docs/generated/ *.rcif *.ort *.zip +*.sqw +*.nxspe diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e0c499ee..0f3f9a95 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,8 +1,10 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-added-large-files + - id: check-case-conflict + - id: check-illegal-windows-names - id: check-json exclude: asv.conf.json - id: check-merge-conflict @@ -21,7 +23,7 @@ repos: args: [ "--drop-empty-cells", "--extra-keys 'metadata.language_info.version cell.metadata.jp-MarkdownHeadingCollapsed cell.metadata.pycharm'" ] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.2 + rev: v0.8.0 hooks: - id: ruff args: [ --fix ] @@ -44,3 +46,9 @@ repos: - id: rst-directive-colons - id: rst-inline-touching-normal - id: text-unicode-replacement-char + - repo: https://github.com/rhysd/actionlint + rev: v1.7.3 + hooks: + - id: actionlint + # Disable because of false-positive SC2046 + args: ["-shellcheck="] diff --git a/LICENSE b/LICENSE index 54b3cf4d..7d62083d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2024, Scipp contributors (https://github.com/scipp) +Copyright (c) 2025, Scipp contributors (https://github.com/scipp) All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/docs/conf.py b/docs/conf.py index 1f1ee3ef..640fd9e8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2024 Scipp contributors (https://github.com/scipp) +# Copyright (c) 2025 Scipp contributors (https://github.com/scipp) import doctest import os @@ -14,9 +14,9 @@ logger = logging.getLogger(__name__) # General information about the project. -project = "ESSdiffraction" -copyright = "2024 Scipp contributors" -author = "Scipp contributors" +project = 'ESSdiffraction' +copyright = '2025 Scipp contributors' +author = 'Scipp contributors' html_show_sourcelink = True diff --git a/pyproject.toml b/pyproject.toml index 01430733..3e060134 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering", "Typing :: Typed", ] @@ -90,13 +91,12 @@ ignore = [ # https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules "COM812", "COM819", "D206", "D300", "E111", "E114", "E117", "ISC001", "ISC002", "Q000", "Q001", "Q002", "Q003", "W191", ] -fixable = ["B010", "I001", "PT001"] +fixable = ["B010", "I001", "PT001", "RUF022"] isort.known-first-party = ["ess.diffraction", "ess.dream", "ess.powder"] pydocstyle.convention = "numpy" [tool.ruff.lint.per-file-ignores] # those files have an increased risk of relying on import order -"__init__.py" = ["I"] "tests/*" = [ "S101", # asserts are fine in tests "B018", # 'useless expressions' are ok because some tests just check for exceptions diff --git a/requirements/base.txt b/requirements/base.txt index 9db8b550..95b7a3a3 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -7,9 +7,9 @@ # asttokens==3.0.0 # via stack-data -click==8.1.7 +click==8.1.8 # via dask -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via dask comm==0.2.2 # via ipywidgets @@ -25,13 +25,11 @@ decorator==5.1.1 # via ipython essreduce==24.12.0 # via -r base.in -exceptiongroup==1.2.2 - # via ipython executing==2.1.0 # via stack-data fonttools==4.55.3 # via matplotlib -fsspec==2024.10.0 +fsspec==2024.12.0 # via dask graphviz==0.20.3 # via -r base.in @@ -39,11 +37,9 @@ h5py==3.12.1 # via # scippneutron # scippnexus -importlib-metadata==8.5.0 - # via dask ipydatawidgets==4.3.5 # via pythreejs -ipython==8.30.0 +ipython==8.31.0 # via ipywidgets ipywidgets==8.1.5 # via @@ -53,7 +49,7 @@ jedi==0.19.2 # via ipython jupyterlab-widgets==3.0.13 # via ipywidgets -kiwisolver==1.4.7 +kiwisolver==1.4.8 # via matplotlib locket==1.0.0 # via partd @@ -67,7 +63,7 @@ mpltoolbox==24.5.1 # via scippneutron networkx==3.4.2 # via cyclebane -numpy==2.2.0 +numpy==2.2.1 # via # -r base.in # contourpy @@ -89,7 +85,7 @@ partd==1.4.2 # via dask pexpect==4.9.0 # via ipython -pillow==11.0.0 +pillow==11.1.0 # via matplotlib plopp==24.10.0 # via @@ -101,9 +97,9 @@ ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pygments==2.18.0 +pygments==2.19.1 # via ipython -pyparsing==3.2.0 +pyparsing==3.2.1 # via matplotlib python-dateutil==2.9.0.post0 # via @@ -132,7 +128,7 @@ scippnexus==24.11.1 # -r base.in # essreduce # scippneutron -scipy==1.14.1 +scipy==1.15.1 # via # scippneutron # scippnexus @@ -154,11 +150,7 @@ traitlets==5.14.3 # traittypes traittypes==0.2.1 # via ipydatawidgets -typing-extensions==4.12.2 - # via ipython wcwidth==0.2.13 # via prompt-toolkit widgetsnbextension==4.0.13 # via ipywidgets -zipp==3.21.0 - # via importlib-metadata diff --git a/requirements/basetest.txt b/requirements/basetest.txt index 906d87e8..33fe900e 100644 --- a/requirements/basetest.txt +++ b/requirements/basetest.txt @@ -7,15 +7,13 @@ # certifi==2024.12.14 # via requests -charset-normalizer==3.4.0 +charset-normalizer==3.4.1 # via requests -exceptiongroup==1.2.2 - # via pytest idna==3.10 # via requests iniconfig==2.0.0 # via pytest -numpy==2.2.0 +numpy==2.2.1 # via pandas packaging==24.2 # via @@ -39,9 +37,7 @@ requests==2.32.3 # via pooch six==1.17.0 # via python-dateutil -tomli==2.2.1 - # via pytest tzdata==2024.2 # via pandas -urllib3==2.2.3 +urllib3==2.3.0 # via requests diff --git a/requirements/ci.txt b/requirements/ci.txt index c3ccdde1..45a0f9b8 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -11,7 +11,7 @@ certifi==2024.12.14 # via requests chardet==5.2.0 # via tox -charset-normalizer==3.4.0 +charset-normalizer==3.4.1 # via requests colorama==0.4.6 # via tox @@ -21,9 +21,9 @@ filelock==3.16.1 # via # tox # virtualenv -gitdb==4.0.11 +gitdb==4.0.12 # via gitpython -gitpython==3.1.43 +gitpython==3.1.44 # via -r ci.in idna==3.10 # via requests @@ -42,17 +42,11 @@ pyproject-api==1.8.0 # via tox requests==2.32.3 # via -r ci.in -smmap==5.0.1 +smmap==5.0.2 # via gitdb -tomli==2.2.1 - # via - # pyproject-api - # tox tox==4.23.2 # via -r ci.in -typing-extensions==4.12.2 - # via tox -urllib3==2.2.3 +urllib3==2.3.0 # via requests -virtualenv==20.28.0 +virtualenv==20.28.1 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index cfc7565c..6b109ba2 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -14,7 +14,7 @@ -r wheels.txt annotated-types==0.7.0 # via pydantic -anyio==4.7.0 +anyio==4.8.0 # via # httpx # jupyter-server @@ -59,7 +59,7 @@ jupyter-events==0.11.0 # via jupyter-server jupyter-lsp==2.2.5 # via jupyterlab -jupyter-server==2.14.2 +jupyter-server==2.15.0 # via # jupyter-lsp # jupyterlab @@ -87,13 +87,13 @@ prometheus-client==0.21.1 # via jupyter-server pycparser==2.22 # via cffi -pydantic==2.10.4 +pydantic==2.10.5 # via copier pydantic-core==2.27.2 # via pydantic python-json-logger==3.2.1 # via jupyter-events -questionary==1.10.0 +questionary==2.1.0 # via copier rfc3339-validator==0.1.4 # via diff --git a/requirements/docs.txt b/requirements/docs.txt index 94f3f008..12f53678 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -10,6 +10,8 @@ accessible-pygments==0.0.5 # via pydata-sphinx-theme alabaster==1.0.0 # via sphinx +appnope==0.1.4 + # via ipykernel attrs==24.3.0 # via # jsonschema @@ -22,11 +24,11 @@ beautifulsoup4==4.12.3 # via # nbconvert # pydata-sphinx-theme -bleach==6.2.0 +bleach[css]==6.2.0 # via nbconvert certifi==2024.12.14 # via requests -charset-normalizer==3.4.0 +charset-normalizer==3.4.1 # via requests debugpy==1.8.11 # via ipykernel @@ -48,9 +50,9 @@ imagesize==1.4.1 # via sphinx ipykernel==6.29.5 # via -r docs.in -ipympl==0.9.5 +ipympl==0.9.6 # via -r docs.in -jinja2==3.1.4 +jinja2==3.1.5 # via # myst-parser # nbconvert @@ -87,20 +89,20 @@ mdit-py-plugins==0.4.2 # via myst-parser mdurl==0.1.2 # via markdown-it-py -mistune==3.0.2 +mistune==3.1.0 # via nbconvert myst-parser==4.0.0 # via -r docs.in nbclient==0.10.2 # via nbconvert -nbconvert==7.16.4 +nbconvert==7.16.5 # via nbsphinx nbformat==5.10.4 # via # nbclient # nbconvert # nbsphinx -nbsphinx==0.9.5 +nbsphinx==0.9.6 # via -r docs.in nest-asyncio==1.6.0 # via ipykernel @@ -114,7 +116,7 @@ platformdirs==4.3.6 # pooch pooch==1.8.2 # via -r docs.in -psutil==6.1.0 +psutil==6.1.1 # via ipykernel pyarrow==18.1.0 # via -r docs.in @@ -158,7 +160,7 @@ sphinx==8.1.3 # sphinx-copybutton # sphinx-design # sphinxcontrib-bibtex -sphinx-autodoc-typehints==2.5.0 +sphinx-autodoc-typehints==3.0.0 # via -r docs.in sphinx-copybutton==0.5.2 # via -r docs.in @@ -179,18 +181,21 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx tinycss2==1.4.0 - # via nbconvert -tomli==2.2.1 - # via sphinx + # via bleach tornado==6.4.2 # via # ipykernel # jupyter-client +typing-extensions==4.12.2 + # via pydata-sphinx-theme tzdata==2024.2 # via pandas -urllib3==2.2.3 +urllib3==2.3.0 # via requests webencodings==0.5.1 # via # bleach # tinycss2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements/make_base.py b/requirements/make_base.py index ccbab001..2cda547f 100644 --- a/requirements/make_base.py +++ b/requirements/make_base.py @@ -1,4 +1,3 @@ -import sys from argparse import ArgumentParser from pathlib import Path @@ -58,16 +57,22 @@ def as_nightly(repo: str) -> str: else: org = "scipp" if repo == "scipp": - version = f"cp{sys.version_info.major}{sys.version_info.minor}" - base = "https://github.com/scipp/scipp/releases/download/nightly/scipp-nightly" - suffix = "manylinux_2_17_x86_64.manylinux2014_x86_64.whl" - prefix = "scipp @ " - return prefix + "-".join([base, version, version, suffix]) + # With the standard pip resolver index-url takes precedence over + # extra-index-url but with uv it's reversed, so if we move to tox-uv + # this needs to be reversed. + return ( + "scipp\n" + "--index-url=https://pypi.anaconda.org/scipp-nightly-wheels/simple/\n" + "--extra-index-url=https://pypi.org/simple\n" + "--pre" + ) return f"{repo} @ git+https://github.com/{org}/{repo}@main" nightly = tuple(args.nightly.split(",") if args.nightly else []) -nightly_dependencies = [dep for dep in dependencies if not dep.startswith(nightly)] +nightly_dependencies = [ + dep for dep in dependencies + test_dependencies if not dep.startswith(nightly) +] nightly_dependencies += [as_nightly(arg) for arg in nightly] write_dependencies("nightly", nightly_dependencies) diff --git a/requirements/mypy.txt b/requirements/mypy.txt index 0b6fa4cc..6eb0592c 100644 --- a/requirements/mypy.txt +++ b/requirements/mypy.txt @@ -6,7 +6,9 @@ # pip-compile-multi # -r test.txt -mypy==1.13.0 +mypy==1.14.1 # via -r mypy.in mypy-extensions==1.0.0 # via mypy +typing-extensions==4.12.2 + # via mypy diff --git a/requirements/nightly.in b/requirements/nightly.in index a1ea3a88..b71e3631 100644 --- a/requirements/nightly.in +++ b/requirements/nightly.in @@ -1,11 +1,17 @@ --r basetest.in + # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! dask graphviz numpy pythreejs -scipp @ https://github.com/scipp/scipp/releases/download/nightly/scipp-nightly-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +pandas +pooch +pytest +scipp +--index-url=https://pypi.anaconda.org/scipp-nightly-wheels/simple/ +--extra-index-url=https://pypi.org/simple +--pre scippnexus @ git+https://github.com/scipp/scippnexus@main sciline @ git+https://github.com/scipp/sciline@main plopp @ git+https://github.com/scipp/plopp@main diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 6f5fbfdc..790c52f3 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,16 +1,22 @@ -# SHA1:14c661e4a5ccde65d56656d46e7d4e7077f040bf +# SHA1:b20670ae7cbdca0a2dae7facc845a0a636ee537c # # This file is autogenerated by pip-compile-multi # To update, run: # # pip-compile-multi # --r basetest.txt +--index-url https://pypi.anaconda.org/scipp-nightly-wheels/simple/ +--extra-index-url https://pypi.org/simple + asttokens==3.0.0 # via stack-data -click==8.1.7 +certifi==2024.12.14 + # via requests +charset-normalizer==3.4.1 + # via requests +click==8.1.8 # via dask -cloudpickle==3.1.0 +cloudpickle==3.1.1 # via dask comm==0.2.2 # via ipywidgets @@ -30,7 +36,7 @@ executing==2.1.0 # via stack-data fonttools==4.55.3 # via matplotlib -fsspec==2024.10.0 +fsspec==2024.12.0 # via dask graphviz==0.20.3 # via -r nightly.in @@ -38,11 +44,13 @@ h5py==3.12.1 # via # scippneutron # scippnexus -importlib-metadata==8.5.0 - # via dask +idna==3.10 + # via requests +iniconfig==2.0.0 + # via pytest ipydatawidgets==4.3.5 # via pythreejs -ipython==8.30.0 +ipython==8.31.0 # via ipywidgets ipywidgets==8.1.5 # via @@ -52,7 +60,7 @@ jedi==0.19.2 # via ipython jupyterlab-widgets==3.0.13 # via ipywidgets -kiwisolver==1.4.7 +kiwisolver==1.4.8 # via matplotlib locket==1.0.0 # via partd @@ -66,37 +74,75 @@ mpltoolbox==24.5.1 # via scippneutron networkx==3.4.2 # via cyclebane +numpy==2.2.1 + # via + # -r nightly.in + # contourpy + # h5py + # ipydatawidgets + # matplotlib + # mpltoolbox + # pandas + # pythreejs + # scipp + # scippneutron + # scipy +packaging==24.2 + # via + # dask + # matplotlib + # pooch + # pytest +pandas==2.2.3 + # via -r nightly.in parso==0.8.4 # via jedi partd==1.4.2 # via dask pexpect==4.9.0 # via ipython -pillow==11.0.0 +pillow==11.1.0 # via matplotlib +platformdirs==4.3.6 + # via pooch plopp @ git+https://github.com/scipp/plopp@main # via # -r nightly.in # scippneutron +pluggy==1.5.0 + # via pytest +pooch==1.8.2 + # via -r nightly.in prompt-toolkit==3.0.48 # via ipython ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pygments==2.18.0 +pygments==2.19.1 # via ipython -pyparsing==3.2.0 +pyparsing==3.2.1 # via matplotlib +pytest==8.3.4 + # via -r nightly.in +python-dateutil==2.9.0.post0 + # via + # matplotlib + # pandas + # scippnexus pythreejs==2.4.2 # via -r nightly.in +pytz==2024.2 + # via pandas pyyaml==6.0.2 # via dask +requests==2.32.3 + # via pooch sciline @ git+https://github.com/scipp/sciline@main # via # -r nightly.in # essreduce -scipp @ https://github.com/scipp/scipp/releases/download/nightly/scipp-nightly-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +scipp==24.11.3.dev27+g47efd60e3 # via # -r nightly.in # essreduce @@ -111,10 +157,12 @@ scippnexus @ git+https://github.com/scipp/scippnexus@main # -r nightly.in # essreduce # scippneutron -scipy==1.14.1 +scipy==1.15.1 # via # scippneutron # scippnexus +six==1.17.0 + # via python-dateutil stack-data==0.6.3 # via ipython toolz==1.0.0 @@ -131,11 +179,11 @@ traitlets==5.14.3 # traittypes traittypes==0.2.1 # via ipydatawidgets -typing-extensions==4.12.2 - # via ipython +tzdata==2024.2 + # via pandas +urllib3==2.3.0 + # via requests wcwidth==0.2.13 # via prompt-toolkit widgetsnbextension==4.0.13 # via ipywidgets -zipp==3.21.0 - # via importlib-metadata diff --git a/requirements/static.txt b/requirements/static.txt index 1d6ae539..aa0e67cd 100644 --- a/requirements/static.txt +++ b/requirements/static.txt @@ -11,7 +11,7 @@ distlib==0.3.9 # via virtualenv filelock==3.16.1 # via virtualenv -identify==2.6.3 +identify==2.6.5 # via pre-commit nodeenv==1.9.1 # via pre-commit @@ -21,5 +21,5 @@ pre-commit==4.0.1 # via -r static.in pyyaml==6.0.2 # via pre-commit -virtualenv==20.28.0 +virtualenv==20.28.1 # via pre-commit diff --git a/requirements/wheels.txt b/requirements/wheels.txt index bfae20bf..198dd23e 100644 --- a/requirements/wheels.txt +++ b/requirements/wheels.txt @@ -11,5 +11,3 @@ packaging==24.2 # via build pyproject-hooks==1.2.0 # via build -tomli==2.2.1 - # via build diff --git a/src/ess/diffraction/__init__.py b/src/ess/diffraction/__init__.py index 1986f16f..a4dda032 100644 --- a/src/ess/diffraction/__init__.py +++ b/src/ess/diffraction/__init__.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2024 Scipp contributors (https://github.com/scipp) -# ruff: noqa: E402, F401 +# Copyright (c) 2025 Scipp contributors (https://github.com/scipp) +# ruff: noqa: E402, F401, I """ Components for diffraction experiments (powder and single crystal). diff --git a/src/ess/dream/__init__.py b/src/ess/dream/__init__.py index 68aae7bf..b080c6f2 100644 --- a/src/ess/dream/__init__.py +++ b/src/ess/dream/__init__.py @@ -19,8 +19,8 @@ del importlib __all__ = [ - '__version__', 'DreamGeant4Workflow', + '__version__', 'default_parameters', 'instrument_view', 'load_geant4_csv', diff --git a/src/ess/dream/io/__init__.py b/src/ess/dream/io/__init__.py index 5a9e5351..9e8045c2 100644 --- a/src/ess/dream/io/__init__.py +++ b/src/ess/dream/io/__init__.py @@ -4,9 +4,9 @@ """Input/output for DREAM.""" from . import nexus -from .geant4 import load_geant4_csv from .cif import prepare_reduced_tof_cif +from .geant4 import load_geant4_csv providers = (prepare_reduced_tof_cif,) -__all__ = ["nexus", "load_geant4_csv", "prepare_reduced_tof_cif", "providers"] +__all__ = ["load_geant4_csv", "nexus", "prepare_reduced_tof_cif", "providers"] diff --git a/src/ess/powder/__init__.py b/src/ess/powder/__init__.py index 42b372b9..fafe19ea 100644 --- a/src/ess/powder/__init__.py +++ b/src/ess/powder/__init__.py @@ -16,8 +16,8 @@ smoothing, transform, ) -from .masking import with_pixel_mask_filenames from .correction import RunNormalization +from .masking import with_pixel_mask_filenames try: __version__ = importlib.metadata.version("essdiffraction") @@ -38,15 +38,15 @@ """Sciline providers for powder diffraction.""" __all__ = [ - "__version__", "RunNormalization", + "__version__", "conversion", "correction", "filtering", "grouping", "masking", - "transform", "providers", "smoothing", + "transform", "with_pixel_mask_filenames", ] diff --git a/tests/package_test.py b/tests/package_test.py index 31b57c60..5c0df376 100644 --- a/tests/package_test.py +++ b/tests/package_test.py @@ -1,9 +1,9 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2024 Scipp contributors (https://github.com/scipp) +# Copyright (c) 2025 Scipp contributors (https://github.com/scipp) """Tests of package integrity. -Note that addidional imports need to be added for repositories that +Note that additional imports need to be added for repositories that contain multiple packages. """ diff --git a/tox.ini b/tox.ini index c933dc84..d9003072 100644 --- a/tox.ini +++ b/tox.ini @@ -10,6 +10,9 @@ commands = pytest {posargs} [testenv:nightly] deps = -r requirements/nightly.txt +setenv = + PIP_INDEX_URL = https://pypi.anaconda.org/scipp-nightly-wheels/simple + PIP_EXTRA_INDEX_URL = https://pypi.org/simple commands = pytest {posargs} [testenv:unpinned] @@ -68,4 +71,4 @@ deps = skip_install = true changedir = requirements commands = python ./make_base.py --nightly scipp,scippnexus,sciline,plopp,scippneutron,essreduce - pip-compile-multi -d . --backtracking + pip-compile-multi -d . --backtracking --annotate-index