Skip to content

Clean up packaging, CI and docs: drop Python 3.10, add 3.14, test minimum dependencies - #124

Merged
m-reuter merged 4 commits into
Deep-MI:mainfrom
m-reuter:cleanup
Oct 10, 2026
Merged

m-reuter merged 4 commits into
Deep-MI:mainfrom
m-reuter:cleanup

Conversation

@m-reuter

@m-reuter m-reuter commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Housekeeping for packaging, CI and the docs. No change to the LaPy API.

Packaging

  • Remove setup.py. It only called setup(), which pyproject.toml makes unnecessary.
  • Build requirements: numpy is no longer listed, since building a pure Python package does not need it. The minimum
    setuptools is now 77, the first version that understands license = 'MIT' and license-files.
  • Drop Python 3.10 and add 3.14: requires-python >= 3.11 and classifiers for 3.11 to 3.14. Python 3.10 reaches its end
    of life this month, and current numpy and scipy releases already need 3.11.
  • Set real minimum versions for all runtime dependencies: numpy>=1.23.2 and scipy>=1.9.2, the first releases with
    Python 3.11 wheels, plus nibabel>=4.0, plotly>=5.0 and psutil>=5.9. Before, numpy allowed versions that do not
    run on any supported Python, and the other packages had no minimum at all.
  • Remove the full extra, which only repeated all.

CI

  • pytest runs the oldest and newest Python (3.11 and 3.14) on ubuntu, macOS and Windows, and 3.12 and 3.13 on ubuntu
    only: 8 jobs instead of 12, or 15 with 3.14 added to the old matrix. Coverage is uploaded from ubuntu with 3.14.
  • A new job installs the lowest dependency versions that pyproject.toml allows
    (uv pip install --resolution lowest-direct) on Python 3.11 and runs the tests, so the minimums stay true.
  • pytest also runs when only pyproject.toml or its own workflow changes, so dependency and CI changes get tested too.
  • The build workflow is a single ubuntu job on 3.14 instead of 12 jobs, and now runs twine check --strict on the
    built files. The package is pure Python and builds one py3-none-any wheel for every platform, the release files are
    built on ubuntu by the publish workflow, and the pytest jobs already install the package and run its entry point on
    every OS.
  • Docstrings are checked with ruff's pydocstyle rules (numpy convention, same ignores and scope as before) instead of
    pydocstyle, which is no longer maintained. This found 3 extra blank lines after docstrings, which are fixed.

Docs

  • Remove the changelog. It still described version 1.0 and was not maintained; GitHub release notes cover the same
    ground. The sphinx-issues extension was only used there and is removed as well.
  • Remove sphinx-gallery. Its file pattern matched no example, so it only produced an empty gallery page and empty
    minigallery sections. The notebook tutorials are rendered by nbsphinx and are unchanged. memory-profiler was only
    needed for the gallery and is dropped from the doc extras.
  • Remove the empty top-level tutorials/ folder and the gallery header examples/README.rst.

Checks

  • ruff check . passes and the 145 tests pass with the current dependencies.
  • With the minimum versions on Python 3.11 (numpy 1.23.2, scipy 1.9.2, nibabel 4.0.0, plotly 5.0.0, psutil 5.9.0) the
    145 tests pass as well.
  • The docs build with sphinx-build -W --keep-going as in CI. Compared with a build before these changes, only the two
    empty gallery pages are gone.

@codecov

codecov Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 61.72%. Comparing base (cbb70b4) to head (a3bd402).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #124      +/-   ##
==========================================
- Coverage   61.84%   61.72%   -0.13%     
==========================================
  Files          16       16              
  Lines        3182     3182              
  Branches      417      417              
==========================================
- Hits         1968     1964       -4     
- Misses       1046     1049       +3     
- Partials      168      169       +1     
Flag Coverage Δ
unittests 61.72% <ø> (-0.13%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No unresolved review issues were identified, and the approval assessments are unanimous.

0 open findings

What changed in this PR

Modernizes packaging, CI, and documentation for Python 3.11–3.14, with updated dependency minimums and no API changes.

Changes:

  • Updates packaging metadata and dependency requirements.
  • Streamlines CI, build validation, and style checks.
  • Removes obsolete setup, changelog, gallery, and tutorial placeholders.
  • Cleans up affected docstrings and documentation configuration.
File Summary
tutorials/​README.rst Removes empty tutorial placeholder.
setup.py Removes redundant setup shim.
pyproject.toml Updates packaging, dependencies, and Ruff configuration.
lapy/​utils/​_imports.py Fixes docstring spacing.
lapy/​utils/​_config.py Fixes docstring spacing.
examples/​README.rst Removes empty gallery header.
doc/​index.rst Removes changelog navigation.
doc/​conf.py Removes obsolete documentation extensions.
doc/​changes/​latest.rst.template Removes obsolete changelog template.
doc/​changes/​latest.rst Removes obsolete changelog content.
doc/​changes/​index.rst Removes obsolete changelog index.
doc/​changes/​authors.inc Removes obsolete changelog authors file.
doc/​_templates/​autosummary/​function.rst Removes gallery sections.
doc/​_templates/​autosummary/​class.rst Removes gallery sections.
.github/​workflows/​pytest.yml Updates Python matrices and adds minimum-dependency tests.
.github/​workflows/​code-style.yml Replaces standalone pydocstyle checks with Ruff.
.github/​workflows/​build.yml Simplifies builds and adds distribution validation.

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@m-reuter
m-reuter merged commit 0ee51d7 into Deep-MI:main Oct 10, 2026
15 checks passed
@m-reuter
m-reuter deleted the cleanup branch October 10, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants