Skip to content

Release/v1.5.0#43

Open
crvernon wants to merge 24 commits into
mainfrom
release/v1.5.0
Open

Release/v1.5.0#43
crvernon wants to merge 24 commits into
mainfrom
release/v1.5.0

Conversation

@crvernon

@crvernon crvernon commented Jun 15, 2026

Copy link
Copy Markdown
Member

This pull request modernizes the gcamreader package's infrastructure and documentation, introducing a new behavioral regression test suite, updating packaging and CI workflows, and improving user and developer guidance. No computational behavior is changed; instead, the focus is on maintainability, reproducibility, and modernization.

Modernization and Infrastructure Overhaul:

  • Migrated build and packaging metadata from setup.py/setup.cfg/requirements.txt to a single pyproject.toml file, and removed legacy packaging files (setup.py, setup.cfg, requirements.txt, MANIFEST.in). Raised the minimum supported Python version to 3.11 and updated dependency requirements. [1] [2]
  • Introduced a new behavioral baseline and regression test suite in benchmarks/ to guarantee identical outputs to v1.4.0, including committed reference fixtures and a pytest-based regression gate. [1] [2] [3] [4] [5]
  • Added a comprehensive changelog (CHANGELOG.md) following Keep a Changelog and Semantic Versioning.

Continuous Integration and Automation:

  • Replaced and expanded GitHub Actions workflows: added separate workflows for build/test (build.yml), linting (lint.yml), documentation (docs.yml), and release/publishing to PyPI (release.yml). Modernized the build matrix to test multiple Python versions and improved caching and concurrency. [1] [2] [3] [4]
  • Added Dependabot configuration for automatic dependency updates (GitHub Actions and pip).

Documentation and Developer Experience:

  • Significantly expanded and modernized README.md with a project logo, clearer installation instructions (including virtual environments and conda), quickstart code samples, CLI usage, contribution guidelines, and links to full documentation.
  • Added documentation build and deployment workflow, with Sphinx build and GitHub Pages integration.

Summary of Most Important Changes:

1. Modernization and Regression Testing

  • Migrated packaging to pyproject.toml, removed legacy files, and raised Python minimum to 3.11. [1] [2]
  • Added a behavioral baseline and regression test suite in benchmarks/ to ensure output consistency with v1.4.0. [1] [2] [3] [4] [5]

2. Continuous Integration and Automation

  • Overhauled CI with new GitHub Actions workflows for build/test, lint, docs, and release, and added Dependabot for dependency updates. [1] [2] [3] [4] [5]

3. Documentation and Developer Experience

  • Expanded README.md with modern usage, installation, and contribution instructions, and added a project logo.
  • Added automated documentation build and deploy workflow for GitHub Pages.

4. Changelog

  • Introduced CHANGELOG.md to track all notable changes using a standardized format.This pull request modernizes the gcamreader package infrastructure and development workflow, focusing on improved packaging, CI/CD automation, and reproducibility, without changing computational results. It introduces a behavioral regression suite to guarantee identical outputs to v1.4.0, migrates to pyproject.toml-based builds, raises the minimum Python version, and replaces the CLI implementation. Additionally, new GitHub Actions workflows are added for building, linting, documentation, and releasing, and the documentation is significantly expanded.

CI/CD and Automation

  • Added comprehensive GitHub Actions workflows for build/test (build.yml), linting (lint.yml), documentation (docs.yml), and release/publishing (release.yml). These workflows support modern Python versions, matrix testing, concurrency controls, and automated deployment to PyPI and GitHub Pages. (.github/workflows/build.yml, .github/workflows/lint.yml, .github/workflows/docs.yml, .github/workflows/release.yml) [1] [2] [3] [4]
  • Introduced Dependabot configuration for automated dependency update PRs for both GitHub Actions and Python packages. (.github/dependabot.yml)

Reproducibility and Regression Testing

  • Added a behavioral baseline and regression test suite in the new benchmarks/ directory, capturing v1.4.0 outputs and enforcing result stability for queries, scenarios, and CLI operations. (benchmarks/README.md, benchmarks/baseline/manifest.json, benchmarks/baseline/parse_batch_query.json, benchmarks/baseline/query_outputs/list_scenarios.csv) [1] [2] [3] [4]

Packaging and Project Structure

  • Migrated packaging metadata from legacy files (setup.py, setup.cfg, requirements.txt, MANIFEST.in) to pyproject.toml using the setuptools backend, and removed obsolete files. Minimum Python version is now 3.11. (CHANGELOG.md, MANIFEST.in) [1] [2]
  • Added a CHANGELOG.md following Keep a Changelog and Semantic Versioning conventions to track all notable changes.

Documentation and Developer Experience

  • Greatly expanded the README.md with installation, requirements, quickstart examples, CLI usage, documentation links, contribution guidelines, and citation/license information.

These changes lay the foundation for future development by ensuring reproducibility, modernizing the development workflow, and improving documentation and usability.

Issues and PRs Addressed
Fixes #42
Fixes #39
Fixes #18
Fixes #12
Fixes #40

crvernon added 21 commits June 15, 2026 10:50
- add pyproject.toml (setuptools backend) with deps, extras, scripts
- single-source version via gcamreader.__version__ (1.5.0) and fix exports
- modernize querymi.py: drop Py2/3.5 branches, use importlib.resources,
  add full type hints and docstrings
- replace Click CLI with Typer (local/remote subcommands, --version)
- add CHANGELOG.md (Keep a Changelog)
- update benchmark CLI invocation for Typer boolean flag
- move test data to gcamreader/data (package data) via importlib.resources
- add public sample_data_dir() helper and export it
- move test suite to top-level tests/ with pytest-style tests + conftest
- move notebooks to top-level notebooks/
- update benchmark harness to use sample_data_dir()
- remove setup.py, setup.cfg, requirements.txt, MANIFEST.in
- modern README with install, quickstart, CLI usage, badges, citation
- Sphinx docs (furo theme, autodoc, napoleon, type hints, MyST)
- pages: index, installation, usage, CLI reference, API, contributing
- build.yml: Python 3.11/3.12/3.13 matrix, submodules, Java, pytest+coverage
- docs.yml: build Sphinx and deploy to GitHub Pages
- lint.yml: ruff + black checks
- release.yml: build and publish to PyPI via Trusted Publishing
- add dependabot config for actions and pip
- ruff/black autofixes; ignore E501 (delegated to black) and exclude notebooks
@crvernon crvernon requested a review from pralitp June 16, 2026 17:57

@pralitp pralitp 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.

Looks good to me. One minor comment

module load java/17.0.18

# Activate the virtual environment that contains gcamreader
source /people/d3y010/envs/gcamreader/bin/activate

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.

Flagging path to home dir which could run into permissions issues for other users.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants