From 15c9e701512e67335b67466dfa34b04fcd44bb62 Mon Sep 17 00:00:00 2001 From: Mridul Seth Date: Wed, 2 Sep 2026 15:32:40 +0200 Subject: [PATCH 1/4] copier bump --- .copier-answers.yml | 8 +-- .github/dependabot.yml | 13 ---- .github/workflows/ci.yml | 4 +- .github/workflows/docs.yml | 10 +-- .github/workflows/nightly_at_main.yml | 2 +- .../workflows/nightly_at_main_lower_bound.yml | 37 +++++++++++ .github/workflows/nightly_at_release.yml | 2 +- .github/workflows/python-version-ci | 2 +- .github/workflows/release.yml | 60 ++++-------------- .github/workflows/test.yml | 10 +-- .github/workflows/unpinned.yml | 2 +- .github/workflows/weekly_windows_macos.yml | 2 +- .gitignore | 2 + .pre-commit-config.yaml | 13 ++-- .python-version | 2 +- LICENSE | 2 +- README.md | 2 +- conda/meta.yaml | 62 ------------------- docs/about/index.md | 4 +- docs/conf.py | 11 +++- docs/developer/getting-started.md | 2 +- docs/index.md | 39 +++++++++++- docs/user-guide/index.md | 9 +++ docs/user-guide/installation.md | 16 +++++ pyproject.toml | 13 ++-- requirements/docs.in | 1 + src/cyclebane/__init__.py | 4 +- tests/package_test.py | 2 +- tox.ini | 10 +-- 29 files changed, 172 insertions(+), 174 deletions(-) delete mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/nightly_at_main_lower_bound.yml delete mode 100644 conda/meta.yaml create mode 100644 docs/user-guide/index.md create mode 100644 docs/user-guide/installation.md diff --git a/.copier-answers.yml b/.copier-answers.yml index 7ea35d9..6905c4a 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,13 +1,13 @@ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY -_commit: 5c4fd02 +_commit: debabf7 _src_path: gh:scipp/copier_template description: Transform directed acyclic graphs using map-reduce and groupby operations -max_python: '3.13' -min_python: '3.10' +max_python: '3.14' +min_python: '3.12' namespace_package: '' nightly_deps: '' orgname: scipp prettyname: Cyclebane projectname: cyclebane related_projects: Sciline -year: 2025 +year: 2026 diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index c8076bb..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: 2 -updates: - # Note: We are not listing package-ecosystem: "github-actions". This causes - # noise in all template instances. Instead dependabot.yml in scipp/copier_template - # triggers updates of github-actions in the *template*. We then use `copier update` - # in template instances. - - package-ecosystem: "pip" - directory: "/requirements" - schedule: - interval: "daily" - allow: - - dependency-name: "scipp" - dependency-type: "direct" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b273e68..93fbf8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,13 +15,13 @@ jobs: min_python: ${{ steps.vars.outputs.min_python }} min_tox_env: ${{ steps.vars.outputs.min_tox_env }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Get Python version for other CI jobs id: vars run: | 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 + - uses: actions/setup-python@v6 with: python-version-file: '.github/workflows/python-version-ci' - uses: pre-commit/action@v3.0.1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a90bcf1..1046240 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -48,12 +48,12 @@ jobs: steps: - run: sudo apt install --yes graphviz pandoc - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ inputs.branch == '' && github.ref_name || inputs.branch }} repository: ${{ github.event.pull_request.head.repo.full_name }} fetch-depth: 0 # history required so cmake can determine version - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version-file: '.github/workflows/python-version-ci' - run: python -m pip install --upgrade pip @@ -64,12 +64,14 @@ jobs: if: ${{ inputs.version == '' }} - run: tox -e linkcheck if: ${{ inputs.linkcheck }} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 + id: artifact-upload-step with: name: docs_html path: html/ + - run: echo "::notice::https://remote-unzip.scipp.deno.net/${{ github.repository }}/artifacts/${{ steps.artifact-upload-step.outputs.artifact-id }}" - - uses: JamesIves/github-pages-deploy-action@v4.7.2 + - uses: JamesIves/github-pages-deploy-action@v4 if: ${{ inputs.publish }} with: branch: gh-pages diff --git a/.github/workflows/nightly_at_main.yml b/.github/workflows/nightly_at_main.yml index 20e9ee4..1011bea 100644 --- a/.github/workflows/nightly_at_main.yml +++ b/.github/workflows/nightly_at_main.yml @@ -12,7 +12,7 @@ jobs: outputs: min_python: ${{ steps.vars.outputs.min_python }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Get Python version for other CI jobs id: vars run: echo "min_python=$(< .github/workflows/python-version-ci)" >> "$GITHUB_OUTPUT" 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 0000000..17a2d5d --- /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@v6 + - 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@v6 + - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + with: + python-version: ${{ matrix.python.version }} + - run: uv run --extra=test --resolution=lowest-direct pytest diff --git a/.github/workflows/nightly_at_release.yml b/.github/workflows/nightly_at_release.yml index 14b7521..d041068 100644 --- a/.github/workflows/nightly_at_release.yml +++ b/.github/workflows/nightly_at_release.yml @@ -13,7 +13,7 @@ jobs: min_python: ${{ steps.vars.outputs.min_python }} release_tag: ${{ steps.release.outputs.release_tag }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 # history required so we can determine latest release tag - name: Get last release tag from git diff --git a/.github/workflows/python-version-ci b/.github/workflows/python-version-ci index c8cfe39..e4fba21 100644 --- a/.github/workflows/python-version-ci +++ b/.github/workflows/python-version-ci @@ -1 +1 @@ -3.10 +3.12 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fe8ef23..cce52f8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,39 +10,16 @@ defaults: shell: bash -l {0} # required for conda env jobs: - build_conda: - name: Conda build - runs-on: 'ubuntu-24.04' - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - fetch-depth: 0 # history required so setuptools_scm can determine version - - - uses: mamba-org/setup-micromamba@v1 - with: - environment-name: build-env - create-args: >- - conda-build - boa - - run: conda mambabuild --channel conda-forge --channel scipp --no-anaconda-upload --override-channels --output-folder conda/package conda - - - uses: actions/upload-artifact@v4 - with: - name: conda-package-noarch - path: conda/package/noarch/*.tar.bz2 - build_wheels: name: Wheels runs-on: 'ubuntu-24.04' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 # history required so setuptools_scm can determine version - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version-file: '.github/workflows/python-version-ci' @@ -53,42 +30,28 @@ jobs: run: python -m build - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: dist path: dist upload_pypi: name: Deploy PyPI - needs: [build_wheels, build_conda] + needs: [build_wheels] runs-on: 'ubuntu-24.04' environment: release permissions: id-token: write if: github.event_name == 'release' && github.event.action == 'published' steps: - - uses: actions/download-artifact@v4 - - uses: pypa/gh-action-pypi-publish@v1.8.14 - - upload_conda: - name: Deploy Conda - needs: [build_wheels, build_conda] - runs-on: 'ubuntu-24.04' - if: github.event_name == 'release' && github.event.action == 'published' - - steps: - - uses: actions/download-artifact@v4 - - uses: mamba-org/setup-micromamba@v1 + - uses: actions/download-artifact@v8 with: - environment-name: upload-env - # frozen python due to breaking removal of 'imp' in 3.12 - create-args: >- - anaconda-client - python=3.11 - - run: anaconda --token ${{ secrets.ANACONDATOKEN }} upload --user scipp --label main $(ls conda-package-noarch/*.tar.bz2) + name: dist + path: dist + - uses: pypa/gh-action-pypi-publish@v1.14.0 docs: - needs: [upload_conda, upload_pypi] + needs: [upload_pypi] uses: ./.github/workflows/docs.yml with: publish: ${{ github.event_name == 'release' && github.event.action == 'published' }} @@ -101,7 +64,10 @@ jobs: permissions: contents: write # This is needed so that the action can upload the asset steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 + with: + name: docs_html + path: docs_html - name: Zip documentation run: | mv docs_html documentation-${{ github.ref_name }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ca40b25..756a105 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,10 +45,10 @@ jobs: runs-on: ${{ inputs.os-variant }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ inputs.checkout_ref }} - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: ${{ inputs.python-version }} - run: python -m pip install --upgrade pip @@ -63,16 +63,16 @@ jobs: ESS_PROTECTED_FILESTORE_PASSWORD: ${{ secrets.ESS_PROTECTED_FILESTORE_PASSWORD }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ inputs.checkout_ref }} - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: ${{ inputs.python-version }} - run: python -m pip install --upgrade pip - run: python -m pip install -r ${{ inputs.pip-recipe }} - run: tox -e ${{ inputs.tox-env }} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 if: ${{ inputs.coverage-report }} with: name: CoverageReport diff --git a/.github/workflows/unpinned.yml b/.github/workflows/unpinned.yml index ff03faa..2a9bbf9 100644 --- a/.github/workflows/unpinned.yml +++ b/.github/workflows/unpinned.yml @@ -13,7 +13,7 @@ jobs: min_python: ${{ steps.vars.outputs.min_python }} release_tag: ${{ steps.release.outputs.release_tag }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 # history required so we can determine latest release tag - name: Get last release tag from git diff --git a/.github/workflows/weekly_windows_macos.yml b/.github/workflows/weekly_windows_macos.yml index 1544d7f..36a1420 100644 --- a/.github/workflows/weekly_windows_macos.yml +++ b/.github/workflows/weekly_windows_macos.yml @@ -13,7 +13,7 @@ jobs: min_python: ${{ steps.vars.outputs.min_python }} min_tox_env: ${{ steps.vars.outputs.min_tox_env }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Get Python version for other CI jobs id: vars run: | diff --git a/.gitignore b/.gitignore index 340e649..c6e4790 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ venv .venv # Caches +*.DS_Store .clangd/ *.ipynb_checkpoints __pycache__/ @@ -45,3 +46,4 @@ docs/generated/ *.zip *.sqw *.nxspe +*.mtz diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0f3f9a9..683b94d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: check-added-large-files - id: check-case-conflict @@ -10,20 +10,19 @@ repos: - id: check-merge-conflict - id: check-toml - id: check-yaml - exclude: conda/meta.yaml - id: detect-private-key - id: trailing-whitespace args: [ --markdown-linebreak-ext=md ] exclude: '\.svg' - repo: https://github.com/kynan/nbstripout - rev: 0.7.1 + rev: 0.8.2 hooks: - id: nbstripout types: [ "jupyter" ] 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.8.0 + rev: v0.14.6 hooks: - id: ruff args: [ --fix ] @@ -31,11 +30,13 @@ repos: - id: ruff-format types_or: [ python, pyi ] - repo: https://github.com/codespell-project/codespell - rev: v2.3.0 + rev: v2.4.1 hooks: - id: codespell additional_dependencies: - tomli + exclude_types: + - svg - repo: https://github.com/pre-commit/pygrep-hooks rev: v1.10.0 hooks: @@ -47,7 +48,7 @@ repos: - id: rst-inline-touching-normal - id: text-unicode-replacement-char - repo: https://github.com/rhysd/actionlint - rev: v1.7.3 + rev: v1.7.9 hooks: - id: actionlint # Disable because of false-positive SC2046 diff --git a/.python-version b/.python-version index c8cfe39..e4fba21 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.10 +3.12 diff --git a/LICENSE b/LICENSE index 7d62083..fb719eb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2025, Scipp contributors (https://github.com/scipp) +Copyright (c) 2026, Scipp contributors (https://github.com/scipp) All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index e46f4c9..25be699 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) [![PyPI badge](http://img.shields.io/pypi/v/cyclebane.svg)](https://pypi.python.org/pypi/cyclebane) -[![Anaconda-Server Badge](https://anaconda.org/scipp/cyclebane/badges/version.svg)](https://anaconda.org/scipp/cyclebane) +[![Anaconda-Server Badge](https://anaconda.org/conda-forge/cyclebane/badges/version.svg)](https://anaconda.org/conda-forge/cyclebane) [![License: BSD 3-Clause](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE) # Cyclebane diff --git a/conda/meta.yaml b/conda/meta.yaml deleted file mode 100644 index 4fc4b05..0000000 --- a/conda/meta.yaml +++ /dev/null @@ -1,62 +0,0 @@ -package: - name: cyclebane - - version: {{ GIT_DESCRIBE_TAG }} - -source: - path: .. - - -{% set pyproject = load_file_data('pyproject.toml') %} -{% set dependencies = pyproject.get('project', {}).get('dependencies', {}) %} -{% set test_dependencies = pyproject.get('project', {}).get('optional-dependencies', {}).get('test', {}) %} - - -requirements: - build: - - setuptools - - setuptools_scm - run: - - python>=3.10 - - {# Conda does not allow spaces between package name and version, so remove them #} - {% for package in dependencies %} - - {% if package == "graphviz" %}python-graphviz{% else %}{{ package|replace(" ", "") }}{% endif %} - {% endfor %} - - -test: - imports: - - cyclebane - requires: - - numpy - - pandas - - pytest - - scipp - - xarray - - {# Conda does not allow spaces between package name and version, so remove them #} - {% for package in test_dependencies %} - - {% if package == "graphviz" %}python-graphviz{% else %}{{ package|replace(" ", "") }}{% endif %} - {% endfor %} - - - source_files: - - pyproject.toml - - tests/ - commands: - # We ignore warnings during release package builds - - python -m pytest -Wignore tests - -build: - noarch: python - script: - - python -m pip install . - -about: - home: https://github.com/scipp/cyclebane - license: BSD-3-Clause - summary: Transform directed acyclic graphs using map-reduce and groupby operations - description: Transform directed acyclic graphs using map-reduce and groupby operations - dev_url: https://github.com/scipp/cyclebane - doc_url: https://scipp.github.io/cyclebane diff --git a/docs/about/index.md b/docs/about/index.md index fcd05a9..543f37f 100644 --- a/docs/about/index.md +++ b/docs/about/index.md @@ -2,11 +2,11 @@ ## Development -Cyclebane is an open source project by the [European Spallation Source ERIC](https://europeanspallationsource.se/) (ESS). +Cyclebane is an open source project by the [European Spallation Source ERIC](https://ess.eu/) (ESS). ## License -Cyclebane is available as open source under the [BSD-3 license](https://opensource.org/licenses/BSD-3-Clause). +Cyclebane is available as open source under the [BSD-3 license](https://opensource.org/license/BSD-3-Clause). ## Citing Cyclebane diff --git a/docs/conf.py b/docs/conf.py index 1cfee6d..2b031aa 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2025 Scipp contributors (https://github.com/scipp) +# Copyright (c) 2026 Scipp contributors (https://github.com/scipp) import doctest import os @@ -15,7 +15,7 @@ # General information about the project. project = 'Cyclebane' -copyright = '2025 Scipp contributors' +copyright = '2026 Scipp contributors' author = 'Scipp contributors' html_show_sourcelink = True @@ -32,6 +32,7 @@ 'sphinx_autodoc_typehints', 'sphinx_copybutton', 'sphinx_design', + 'sphinxcontrib.autodoc_pydantic', 'nbsphinx', 'myst_parser', ] @@ -183,7 +184,7 @@ }, { "name": "Conda", - "url": "https://anaconda.org/scipp/cyclebane", + "url": "https://anaconda.org/conda-forge/cyclebane", "icon": "fa-custom fa-anaconda", "type": "fontawesome", }, @@ -261,4 +262,8 @@ def do_not_plot(*args, **kwargs): linkcheck_ignore = [ # Specific lines in Github blobs cannot be found by linkcheck. r'https?://github\.com/.*?/blob/[a-f0-9]+/.+?#', + # Linkcheck seems to be denied access by some DOI resolvers. + # Since DOIs are supposed to be permanent, we don't need to check them.' + r'https?://doi\.org/', + r'https?://dx\.doi\.org/', ] diff --git a/docs/developer/getting-started.md b/docs/developer/getting-started.md index a196f56..f04aa9c 100644 --- a/docs/developer/getting-started.md +++ b/docs/developer/getting-started.md @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or ` Run the tests using ```sh -tox -e py310 +tox -e py312 ``` (or just `tox` if you want to run all environments). diff --git a/docs/index.md b/docs/index.md index 7377d66..9d1a3ab 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,15 +1,48 @@ -# Cyclebane +:::{image} _static/logo.svg +:class: only-light +:alt: Cyclebane +:width: 60% +:align: center +::: +:::{image} _static/logo-dark.svg +:class: only-dark +:alt: Cyclebane +:width: 60% +:align: center +::: - +```{raw} html + +``` + +```{role} transparent +``` + +# {transparent}`Cyclebane` + +
Transform directed acyclic graphs using map-reduce and groupby operations

- +
+ +:::{include} user-guide/installation.md +:heading-offset: 1 +::: + +## Get in touch + +- If you have questions that are not answered by these documentation pages, ask on [discussions](https://github.com/scipp/cyclebane/discussions). Please include a self-contained reproducible example if possible. +- Report bugs (including unclear, missing, or wrong documentation!), suggest features or view the source code [on GitHub](https://github.com/scipp/cyclebane). ```{toctree} --- hidden: --- +user-guide/index api-reference/index developer/index about/index diff --git a/docs/user-guide/index.md b/docs/user-guide/index.md new file mode 100644 index 0000000..b32fdd3 --- /dev/null +++ b/docs/user-guide/index.md @@ -0,0 +1,9 @@ +# User Guide + +```{toctree} +--- +maxdepth: 1 +--- + +installation +``` diff --git a/docs/user-guide/installation.md b/docs/user-guide/installation.md new file mode 100644 index 0000000..463f499 --- /dev/null +++ b/docs/user-guide/installation.md @@ -0,0 +1,16 @@ +# Installation + +To install Cyclebane and all of its dependencies, use + +`````{tab-set} +````{tab-item} pip +```sh +pip install cyclebane +``` +```` +````{tab-item} conda +```sh +conda install -c conda-forge cyclebane +``` +```` +````` diff --git a/pyproject.toml b/pyproject.toml index 41e5a25..17b076f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] requires = [ - "setuptools>=68", + "setuptools>=77", "setuptools_scm[toml]>=8.0", ] build-backend = "setuptools.build_meta" @@ -9,23 +9,22 @@ build-backend = "setuptools.build_meta" name = "cyclebane" description = "Transform directed acyclic graphs using map-reduce and groupby operations" authors = [{ name = "Scipp contributors" }] -license = { file = "LICENSE" } +license = "BSD-3-Clause" +license-files = ["LICENSE"] readme = "README.md" classifiers = [ "Intended Audience :: Science/Research", - "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering", "Typing :: Typed", ] -requires-python = ">=3.10" +requires-python = ">=3.12" # IMPORTANT: # Run 'tox -e deps' after making changes here. This will update requirement files. @@ -38,7 +37,7 @@ dynamic = ["version"] [project.optional-dependencies] test = [ - "pytest", + "pytest>=8.0", ] [project.urls] diff --git a/requirements/docs.in b/requirements/docs.in index e542e53..e0e1e23 100644 --- a/requirements/docs.in +++ b/requirements/docs.in @@ -1,4 +1,5 @@ -r base.in +autodoc-pydantic ipykernel ipython!=8.7.0 # Breaks syntax highlighting in Jupyter code cells. myst-parser diff --git a/src/cyclebane/__init__.py b/src/cyclebane/__init__.py index 74f9ea8..1e8df59 100644 --- a/src/cyclebane/__init__.py +++ b/src/cyclebane/__init__.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2025 Scipp contributors (https://github.com/scipp) -# ruff: noqa: E402, F401, I +# Copyright (c) 2026 Scipp contributors (https://github.com/scipp) +# ruff: noqa: RUF100, E402, F401, I import importlib.metadata diff --git a/tests/package_test.py b/tests/package_test.py index 98aad84..93c0408 100644 --- a/tests/package_test.py +++ b/tests/package_test.py @@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2025 Scipp contributors (https://github.com/scipp) +# Copyright (c) 2026 Scipp contributors (https://github.com/scipp) """Tests of package integrity. diff --git a/tox.ini b/tox.ini index e2db2da..13f854c 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py310 +envlist = py312 isolated_build = true [testenv] @@ -26,8 +26,8 @@ commands = pytest {posargs} description = invoke sphinx-build to build the HTML docs deps = -r requirements/docs.txt allowlist_externals=find -commands = python -m sphinx -j2 -v -b html -d {toxworkdir}/docs_doctrees docs html - python -m sphinx -j2 -v -b doctest -d {toxworkdir}/docs_doctrees docs html +commands = python -m sphinx -W -j2 -v -b html -d {toxworkdir}/docs_doctrees docs html + python -m sphinx -W -j2 -v -b doctest -d {toxworkdir}/docs_doctrees -D nbsphinx_execute=never docs html find html -type f -name "*.ipynb" -not -path "html/_sources/*" -delete [testenv:releasedocs] @@ -42,7 +42,7 @@ commands = {[testenv:docs]commands} [testenv:linkcheck] description = Run Sphinx linkcheck deps = -r requirements/docs.txt -commands = python -m sphinx -j2 -v -b linkcheck -d {toxworkdir}/docs_doctrees docs html +commands = python -m sphinx -j2 -v -b linkcheck -d {toxworkdir}/docs_doctrees -D nbsphinx_execute=never docs html [testenv:static] description = Code formatting and static analysis @@ -64,6 +64,8 @@ description = Update dependencies by running pip-compile-multi deps = pip-compile-multi tomli + # Avoid https://github.com/jazzband/pip-tools/issues/2131 + pip==24.2 skip_install = true changedir = requirements commands = python ./make_base.py From ac6adbb38cf79db804b71dff841c6703283cbc8e Mon Sep 17 00:00:00 2001 From: Mridul Seth Date: Wed, 2 Sep 2026 15:34:22 +0200 Subject: [PATCH 2/4] tox -e deps --- requirements/base.txt | 6 +- requirements/basetest.in | 2 +- requirements/basetest.txt | 32 +++----- requirements/ci.txt | 51 ++++++------ requirements/dev.txt | 86 +++++++++----------- requirements/docs.txt | 167 ++++++++++++++++++++++---------------- requirements/mypy.txt | 16 ++-- requirements/nightly.in | 2 +- requirements/nightly.txt | 22 +++-- requirements/static.txt | 28 ++++--- requirements/test.txt | 4 +- requirements/wheels.txt | 10 +-- 12 files changed, 222 insertions(+), 204 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index b3d2965..61149a1 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,9 +1,9 @@ # SHA1:21fbd627dcc9dc1abb62f526e0d8f504f4943cb9 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -networkx==3.4.2 +networkx==3.6.1 # via -r base.in diff --git a/requirements/basetest.in b/requirements/basetest.in index 88243fe..d73fa6e 100644 --- a/requirements/basetest.in +++ b/requirements/basetest.in @@ -12,4 +12,4 @@ xarray # will not be touched by ``make_base.py`` # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! -pytest +pytest>=8.0 diff --git a/requirements/basetest.txt b/requirements/basetest.txt index 0fd27c1..b5870bc 100644 --- a/requirements/basetest.txt +++ b/requirements/basetest.txt @@ -1,43 +1,37 @@ -# SHA1:004c99c645462def4477d9a707aa3af67cb897d7 +# SHA1:4a5134b3f1d07dec7ccc6531a0ef764bb8f67f5a # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -exceptiongroup==1.2.2 +iniconfig==2.3.0 # via pytest -iniconfig==2.0.0 - # via pytest -numpy==2.2.3 +numpy==2.5.2 # via # -r basetest.in # pandas # scipp # xarray -packaging==24.2 +packaging==26.3 # via # pytest # xarray -pandas==2.2.3 +pandas==3.0.5 # via # -r basetest.in # xarray -pluggy==1.5.0 +pluggy==1.6.0 + # via pytest +pygments==2.21.0 # via pytest -pytest==8.3.4 +pytest==9.1.1 # via -r basetest.in python-dateutil==2.9.0.post0 # via pandas -pytz==2025.1 - # via pandas -scipp==25.5.1 +scipp==26.8.0 # via -r basetest.in six==1.17.0 # via python-dateutil -tomli==2.2.1 - # via pytest -tzdata==2025.1 - # via pandas -xarray==2025.1.2 +xarray==2026.7.0 # via -r basetest.in diff --git a/requirements/ci.txt b/requirements/ci.txt index 078cca5..57a11e5 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,58 +1,59 @@ # SHA1:6344d52635ea11dca331a3bc6eb1833c4c64d585 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -cachetools==5.5.1 +cachetools==7.1.8 # via tox -certifi==2025.1.31 +certifi==2026.7.22 # via requests -chardet==5.2.0 - # via tox -charset-normalizer==3.4.1 +charset-normalizer==3.5.1 # via requests colorama==0.4.6 # via tox -distlib==0.3.9 +distlib==0.4.3 # via virtualenv -filelock==3.17.0 +filelock==3.32.5 # via + # python-discovery # tox # virtualenv gitdb==4.0.12 # via gitpython -gitpython==3.1.44 +gitpython==3.1.61 # via -r ci.in -idna==3.10 +idna==3.19 # via requests -packaging==24.2 +packaging==26.3 # via # -r ci.in # pyproject-api # tox -platformdirs==4.3.6 +platformdirs==4.11.7 # via # tox # virtualenv -pluggy==1.5.0 +pluggy==1.6.0 # via tox -pyproject-api==1.9.0 +pyproject-api==1.11.0 # via tox -requests==2.32.3 - # via -r ci.in -smmap==5.0.2 - # via gitdb -tomli==2.2.1 +python-discovery==1.6.0 # via - # pyproject-api # tox -tox==4.24.1 + # virtualenv +requests==2.34.2 + # via -r ci.in +smmap==5.0.3 + # via gitdb +tomli-w==1.2.0 + # via tox +tox==4.61.2 # via -r ci.in -typing-extensions==4.12.2 +typing-extensions==4.16.0 # via tox -urllib3==2.3.0 +urllib3==2.7.0 # via requests -virtualenv==20.29.2 +virtualenv==21.7.8 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index fdbc8a2..16b7dbc 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,9 +1,9 @@ # SHA1:efd19a3a98c69fc3d6d6233ed855de7e4a208f74 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r base.txt -r ci.txt @@ -12,37 +12,35 @@ -r static.txt -r test.txt -r wheels.txt -annotated-types==0.7.0 - # via pydantic -anyio==4.8.0 +anyio==4.14.2 # via # httpx # jupyter-server -argon2-cffi==23.1.0 +argon2-cffi==25.1.0 # via jupyter-server -argon2-cffi-bindings==21.2.0 +argon2-cffi-bindings==26.1.0 # via argon2-cffi -arrow==1.3.0 +arrow==1.4.0 # via isoduration -async-lru==2.0.4 +async-lru==2.3.0 # via jupyterlab -cffi==1.17.1 +cffi==2.1.1 # via argon2-cffi-bindings -click==8.1.8 +click==8.5.0 # via # pip-compile-multi # pip-tools -copier==9.5.0 +copier==9.18.1 # via -r dev.in -dunamai==1.23.0 +dunamai==1.26.2 # via copier fqdn==1.5.1 # via jsonschema funcy==2.0 # via copier -h11==0.14.0 +h11==0.16.0 # via httpcore -httpcore==1.0.7 +httpcore==1.0.9 # via httpx httpx==0.28.1 # via jupyterlab @@ -50,54 +48,50 @@ isoduration==20.11.0 # via jsonschema jinja2-ansible-filters==1.3.2 # via copier -json5==0.10.0 +json5==0.15.0 # via jupyterlab-server -jsonpointer==3.0.0 +jsonpointer==3.1.1 # via jsonschema -jsonschema[format-nongpl]==4.23.0 +jsonschema[format-nongpl]==4.26.0 # via # jupyter-events # jupyterlab-server # nbformat -jupyter-events==0.12.0 +jupyter-builder==1.2.2 + # via jupyterlab +jupyter-events==0.12.1 # via jupyter-server -jupyter-lsp==2.2.5 +jupyter-lsp==2.3.1 # via jupyterlab -jupyter-server==2.15.0 +jupyter-server==2.21.0 # via # jupyter-lsp # jupyterlab # jupyterlab-server # notebook-shim -jupyter-server-terminals==0.5.3 +jupyter-server-terminals==0.5.4 # via jupyter-server -jupyterlab==4.3.5 +jupyterlab==4.6.3 # via -r dev.in -jupyterlab-server==2.27.3 +jupyterlab-server==2.28.0 # via jupyterlab +lark==1.3.1 + # via rfc3987-syntax notebook-shim==0.2.4 # via jupyterlab -overrides==7.7.0 - # via jupyter-server -pathspec==0.12.1 - # via copier -pip-compile-multi==2.7.1 +pip-compile-multi==3.3.1 # via -r dev.in -pip-tools==7.4.1 +pip-tools==7.6.1 # via pip-compile-multi -plumbum==1.9.0 +plumbum==2.0.2 # via copier -prometheus-client==0.21.1 +prometheus-client==0.26.0 # via jupyter-server -pycparser==2.22 +pycparser==3.0 # via cffi -pydantic==2.10.6 - # via copier -pydantic-core==2.27.2 - # via pydantic -python-json-logger==3.2.1 +python-json-logger==4.2.0 # via jupyter-events -questionary==2.1.0 +questionary==2.1.1 # via copier rfc3339-validator==0.1.4 # via @@ -107,25 +101,25 @@ rfc3986-validator==0.1.1 # via # jsonschema # jupyter-events -send2trash==1.8.3 +rfc3987-syntax==1.1.0 + # via jsonschema +send2trash==2.1.0 # via jupyter-server -sniffio==1.3.1 - # via anyio terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals toposort==1.10 # via pip-compile-multi -types-python-dateutil==2.9.0.20241206 +tzdata==2026.3 # via arrow uri-template==1.3.0 # via jsonschema -webcolors==24.11.1 +webcolors==25.10.0 # via jsonschema -websocket-client==1.8.0 +websocket-client==1.9.2 # via jupyter-server -wheel==0.45.1 +wheel==0.48.0 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/docs.txt b/requirements/docs.txt index 183f92d..68b4d48 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,84 +1,87 @@ -# SHA1:2175813590b5d31dc1cdf3e3c820f699647e9043 +# SHA1:ccee91a7e71ed3769670138239107748a478cc2c # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r base.txt accessible-pygments==0.0.5 # via pydata-sphinx-theme alabaster==1.0.0 # via sphinx -appnope==0.1.4 +annotated-types==0.8.0 + # via pydantic +appnope==1.0.0 # via ipykernel -asttokens==3.0.0 +asttokens==3.0.2 # via stack-data -attrs==25.1.0 +attrs==26.1.0 # via # jsonschema # referencing -babel==2.17.0 +autodoc-pydantic==2.2.0 + # via -r docs.in +babel==2.18.0 # via # pydata-sphinx-theme # sphinx -beautifulsoup4==4.13.3 +beautifulsoup4==4.15.0 # via # nbconvert # pydata-sphinx-theme -bleach[css]==6.2.0 +bleach[css]==6.4.0 # via nbconvert -certifi==2025.1.31 +certifi==2026.7.22 # via requests -charset-normalizer==3.4.1 +charset-normalizer==3.5.1 # via requests -comm==0.2.2 +comm==0.2.3 # via ipykernel -debugpy==1.8.12 +debugpy==1.8.21 # via ipykernel -decorator==5.1.1 - # via ipython defusedxml==0.7.1 # via nbconvert -docutils==0.21.2 +docutils==0.22.4 # via # myst-parser # nbsphinx # pydata-sphinx-theme # sphinx -exceptiongroup==1.2.2 - # via ipython -executing==2.2.0 +executing==2.2.1 # via stack-data -fastjsonschema==2.21.1 +fastjsonschema==2.22.2 # via nbformat -idna==3.10 +idna==3.19 # via requests -imagesize==1.4.1 +imagesize==2.0.1 # via sphinx -ipykernel==6.29.5 +ipykernel==7.3.0 # via -r docs.in -ipython==8.32.0 +ipython==9.17.1 # via # -r docs.in # ipykernel -jedi==0.19.2 +ipython-pygments-lexers==1.1.1 # via ipython -jinja2==3.1.5 +jedi==0.20.0 + # via ipython +jinja2==3.1.6 # via # myst-parser # nbconvert # nbsphinx + # pydata-sphinx-theme # sphinx -jsonschema==4.23.0 +jsonschema==4.26.0 # via nbformat -jsonschema-specifications==2024.10.1 +jsonschema-specifications==2025.9.1 # via jsonschema -jupyter-client==8.6.3 +jupyter-client==8.10.0 # via # ipykernel # nbclient -jupyter-core==5.7.2 +jupyter-core==5.9.1 # via # ipykernel # jupyter-client @@ -87,107 +90,125 @@ jupyter-core==5.7.2 # nbformat jupyterlab-pygments==0.3.0 # via nbconvert -markdown-it-py==3.0.0 +markdown-it-py==4.2.0 # via # mdit-py-plugins # myst-parser -markupsafe==3.0.2 +markupsafe==3.0.3 # via # jinja2 # nbconvert -matplotlib-inline==0.1.7 +matplotlib-inline==0.2.2 # via # ipykernel # ipython -mdit-py-plugins==0.4.2 +mdit-py-plugins==0.6.1 # via myst-parser mdurl==0.1.2 # via markdown-it-py -mistune==3.1.1 +mistune==3.3.4 # via nbconvert -myst-parser==4.0.1 +myst-parser==5.1.0 # via -r docs.in -nbclient==0.10.2 +nbclient==0.11.0 # via nbconvert -nbconvert==7.16.6 +nbconvert==7.17.1 # via nbsphinx -nbformat==5.10.4 +nbformat==5.11.1 # via # nbclient # nbconvert # nbsphinx -nbsphinx==0.9.6 +nbsphinx==0.9.8 # via -r docs.in -nest-asyncio==1.6.0 +nest-asyncio2==1.7.2 # via ipykernel -packaging==24.2 +packaging==26.3 # via # ipykernel # nbconvert # sphinx pandocfilters==1.5.1 # via nbconvert -parso==0.8.4 +parso==0.8.7 # via jedi pexpect==4.9.0 # via ipython -platformdirs==4.3.6 +platformdirs==4.11.7 # via jupyter-core -prompt-toolkit==3.0.50 +prompt-toolkit==3.0.53 # via ipython -psutil==7.0.0 - # via ipykernel +psutil==7.2.2 + # via + # ipykernel + # ipython ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pydata-sphinx-theme==0.16.1 +pydantic==2.13.5 + # via + # autodoc-pydantic + # pydantic-settings +pydantic-core==2.46.5 + # via pydantic +pydantic-settings==2.15.0 + # via autodoc-pydantic +pydata-sphinx-theme==0.21.0 # via -r docs.in -pygments==2.19.1 +pygments==2.21.0 # via # accessible-pygments # ipython + # ipython-pygments-lexers # nbconvert # pydata-sphinx-theme # sphinx python-dateutil==2.9.0.post0 # via jupyter-client -pyyaml==6.0.2 +python-dotenv==1.2.3 + # via pydantic-settings +pyyaml==6.0.3 # via myst-parser -pyzmq==26.2.1 +pyzmq==27.2.0 # via # ipykernel # jupyter-client -referencing==0.36.2 +referencing==0.37.0 # via # jsonschema # jsonschema-specifications -requests==2.32.3 +requests==2.34.2 + # via + # pydata-sphinx-theme + # sphinx +roman-numerals==4.1.0 # via sphinx -rpds-py==0.22.3 +rpds-py==2026.6.3 # via # jsonschema # referencing six==1.17.0 # via python-dateutil -snowballstemmer==2.2.0 +snowballstemmer==3.1.1 # via sphinx -soupsieve==2.6 +soupsieve==2.9.2 # via beautifulsoup4 -sphinx==8.1.3 +sphinx==9.1.0 # via # -r docs.in + # autodoc-pydantic # myst-parser # nbsphinx # pydata-sphinx-theme # sphinx-autodoc-typehints # sphinx-copybutton # sphinx-design -sphinx-autodoc-typehints==3.0.1 +sphinx-autodoc-typehints==3.13.5 # via -r docs.in sphinx-copybutton==0.5.2 # via -r docs.in -sphinx-design==0.6.1 +sphinx-design==0.7.0 # via -r docs.in sphinxcontrib-applehelp==2.0.0 # via sphinx @@ -203,17 +224,14 @@ sphinxcontrib-serializinghtml==2.0.0 # via sphinx stack-data==0.6.3 # via ipython -tinycss2==1.4.0 +tinycss2==1.5.1 # via bleach -tomli==2.2.1 - # via sphinx -tornado==6.4.2 +tornado==6.5.8 # via # ipykernel # jupyter-client -traitlets==5.14.3 +traitlets==5.16.1 # via - # comm # ipykernel # ipython # jupyter-client @@ -223,18 +241,23 @@ traitlets==5.14.3 # nbconvert # nbformat # nbsphinx -typing-extensions==4.12.2 +typing-extensions==4.16.0 # via # beautifulsoup4 - # ipython - # mistune - # pydata-sphinx-theme + # jupyter-client + # pydantic + # pydantic-core # referencing -urllib3==2.3.0 + # typing-inspection +typing-inspection==0.4.4 + # via + # pydantic + # pydantic-settings +urllib3==2.7.0 # via requests -wcwidth==0.2.13 +wcwidth==0.8.3 # via prompt-toolkit -webencodings==0.5.1 +webencodings==0.6.1 # via # bleach # tinycss2 diff --git a/requirements/mypy.txt b/requirements/mypy.txt index 7f020f7..519ce35 100644 --- a/requirements/mypy.txt +++ b/requirements/mypy.txt @@ -1,14 +1,20 @@ # SHA1:859ef9c15e5e57c6c91510133c01f5751feee941 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r test.txt -mypy==1.15.0 +ast-serialize==0.8.0 + # via mypy +librt==0.15.0 + # via mypy +mypy==2.3.1 # via -r mypy.in -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 + # via mypy +pathspec==1.1.1 # via mypy -typing-extensions==4.12.2 +typing-extensions==4.16.0 # via mypy diff --git a/requirements/nightly.in b/requirements/nightly.in index e2fa798..837ae7e 100644 --- a/requirements/nightly.in +++ b/requirements/nightly.in @@ -2,4 +2,4 @@ # --- END OF CUSTOM SECTION --- # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! networkx -pytest +pytest>=8.0 diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 5b20d38..c068690 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,21 +1,19 @@ -# SHA1:df1e79e5c76aafc0cd4cf9bc7d1fde7d4eb6fe36 +# SHA1:7a8d50425d64c21c786f237ffc2a1bce87ccba1a # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -exceptiongroup==1.2.2 +iniconfig==2.3.0 # via pytest -iniconfig==2.0.0 - # via pytest -networkx==3.4.2 +networkx==3.6.1 # via -r nightly.in -packaging==24.2 +packaging==26.3 # via pytest -pluggy==1.5.0 +pluggy==1.6.0 # via pytest -pytest==8.3.4 - # via -r nightly.in -tomli==2.2.1 +pygments==2.21.0 # via pytest +pytest==9.1.1 + # via -r nightly.in diff --git a/requirements/static.txt b/requirements/static.txt index a0569bd..4086de9 100644 --- a/requirements/static.txt +++ b/requirements/static.txt @@ -1,25 +1,29 @@ # SHA1:5a0b1bb22ae805d8aebba0f3bf05ab91aceae0d8 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -cfgv==3.4.0 +cfgv==3.5.0 # via pre-commit -distlib==0.3.9 +distlib==0.4.3 # via virtualenv -filelock==3.17.0 - # via virtualenv -identify==2.6.7 +filelock==3.32.5 + # via + # python-discovery + # virtualenv +identify==2.6.19 # via pre-commit -nodeenv==1.9.1 +nodeenv==1.10.0 # via pre-commit -platformdirs==4.3.6 +platformdirs==4.11.7 # via virtualenv -pre-commit==4.1.0 +pre-commit==4.6.2 # via -r static.in -pyyaml==6.0.2 +python-discovery==1.6.0 + # via virtualenv +pyyaml==6.0.3 # via pre-commit -virtualenv==20.29.2 +virtualenv==21.7.8 # via pre-commit diff --git a/requirements/test.txt b/requirements/test.txt index 3c7454d..6817392 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,9 +1,9 @@ # SHA1:ef2ee9576d8a9e65b44e2865a26887eed3fc49d1 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -r base.txt -r basetest.txt diff --git a/requirements/wheels.txt b/requirements/wheels.txt index bfae20b..55aeacc 100644 --- a/requirements/wheels.txt +++ b/requirements/wheels.txt @@ -1,15 +1,13 @@ # SHA1:80754af91bfb6d1073585b046fe0a474ce868509 # -# This file is autogenerated by pip-compile-multi +# This file was generated by pip-compile-multi. # To update, run: # -# pip-compile-multi +# requirements upgrade # -build==1.2.2.post1 +build==1.6.0 # via -r wheels.in -packaging==24.2 +packaging==26.3 # via build pyproject-hooks==1.2.0 # via build -tomli==2.2.1 - # via build From 1faad166bb17acd4661fb3f627561ea126c37e1d Mon Sep 17 00:00:00 2001 From: Mridul Seth Date: Wed, 2 Sep 2026 15:46:05 +0200 Subject: [PATCH 3/4] fix lint --- tests/graph_test.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/graph_test.py b/tests/graph_test.py index b25448c..57db452 100644 --- a/tests/graph_test.py +++ b/tests/graph_test.py @@ -431,7 +431,9 @@ def test_reduce_raises_if_new_node_name_exists() -> None: graph = cb.Graph(g) mapped = graph.map({'a': [1, 2, 3]}) - with pytest.raises(ValueError, match="Node 'other' already exists in the graph."): + with pytest.raises( + ValueError, match=re.escape("Node 'other' already exists in the graph.") + ): mapped.reduce(name='other') @@ -597,7 +599,7 @@ def test_delitem_raises_when_removing_mapped_node() -> None: graph = cb.Graph(g) mapped = graph.map({'a': [1, 2, 3]}) - with pytest.raises(ValueError, match="Cannot delete mapped node."): + with pytest.raises(ValueError, match=re.escape("Cannot delete mapped node.")): del mapped['b'] From 2b30535979dd2ad171b51c963abd78135735b5db Mon Sep 17 00:00:00 2001 From: Mridul Seth Date: Wed, 2 Sep 2026 16:05:24 +0200 Subject: [PATCH 4/4] fix warnings --- docs/conf.py | 6 ------ docs/index.md | 25 +------------------------ 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 2b031aa..ad5ce5e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -162,10 +162,6 @@ "header_links_before_dropdown": 4, "pygment_light_style": "github-light-high-contrast", "pygment_dark_style": "github-dark-high-contrast", - "logo": { - "image_light": "_static/logo.svg", - "image_dark": "_static/logo-dark.svg", - }, "external_links": [ {"name": "Sciline", "url": "https://scipp.github.io/sciline"}, ], @@ -200,8 +196,6 @@ } html_title = "Cyclebane" -html_logo = "_static/logo.svg" -html_favicon = "_static/favicon.ico" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/docs/index.md b/docs/index.md index 9d1a3ab..74a3136 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,27 +1,4 @@ -:::{image} _static/logo.svg -:class: only-light -:alt: Cyclebane -:width: 60% -:align: center -::: -:::{image} _static/logo-dark.svg -:class: only-dark -:alt: Cyclebane -:width: 60% -:align: center -::: - -```{raw} html - -``` - -```{role} transparent -``` - -# {transparent}`Cyclebane` +# Cyclebane
Transform directed acyclic graphs using map-reduce and groupby operations