Skip to content

Modernize packaging, CI, and documentation - #14

Draft
soraros wants to merge 2 commits into
jjcremmers:mainfrom
soraros:modernise-build
Draft

soraros wants to merge 2 commits into
jjcremmers:mainfrom
soraros:modernise-build

Conversation

@soraros

@soraros soraros commented May 27, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

I opened issue #17 to discuss the motivation for this change, as requested by the contribution guide. The aim is to give students and contributors a consistent path from installation to a working example. A common setup also makes it easier to help someone during installation and gives CI and future automated development the same checks that contributors can run locally.

Changes

The PR remains in two commits, each with a separate purpose:

  1. Packaging, CI, and documentation. Upstream CI has stopped testing Python 3.9, so declare 3.10 as the minimum. Keep setuptools and pip support while using uv for environment setup. CI tests Python 3.10–3.14, runs PatchTest8.pro, builds the distributions, and installs the wheel outside the checkout. The documentation build uses one docs extra in CI and Read the Docs, generates the API reference with AutoAPI, and uses Furo for responsive navigation. The existing GitHub Pages publication path moves from writing a branch to GitHub's dedicated Pages actions.
  2. Contributor and quickstart guidance. Use the same uv commands in the README, installation guide, quickstart, and contribution guide, while retaining a pip path for users who prefer it.

No pyfem/ source file or example input differs from the current main; this PR is not intended to alter numerical results.

Verification

  • Locally, uv run --no-sync pytest -q passed all 200 tests on Python 3.10.
  • uv build produced an sdist and wheel. An isolated Python 3.10 installation of the wheel passed import, version, and CLI checks and completed PatchTest8.pro outside the checkout.
  • The full Sphinx HTML build passed locally on Python 3.10 and 3.14. AutoAPI still reports 98 nonfatal diagnostics from existing source docstrings.
  • CI on this head passed all five Python jobs, the package build, and the documentation build. The Pages deployment job was skipped on this PR as intended.

For local reproduction, the commands are in CONTRIBUTING.md and doc/README.md.

Publishing note

After merge, the repository's Settings → Pages → Build and deployment → Source must be set to GitHub Actions. The Pages deployment job runs only on a push to main; Read the Docs remains the primary documentation site.

This contribution was prepared with help from Codex. Thank you for taking the time to read and review it, and for maintaining PyFEM.

@soraros

This comment was marked as outdated.

@soraros
soraros force-pushed the modernise-build branch 2 times, most recently from 03b145c to eb19d16 Compare September 29, 2026 11:28
@soraros
soraros marked this pull request as draft September 29, 2026 13:25
@soraros
soraros force-pushed the modernise-build branch 4 times, most recently from 48ffa29 to 74f3cc1 Compare September 29, 2026 14:03

This branch has not been deployed

No deployments
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.

1 participant