Skip to content

v0.2.0

Latest

Choose a tag to compare

@maureeungaro maureeungaro released this 28 May 14:45
· 17 commits to main since this release

pygemc v0.2.0 prepares the Python API for standalone package distribution, improves documentation, and tightens CI/release integration with GEMC.

Release notes

This release keeps the core geometry and analyzer APIs from v0.1.0 and focuses on making pygemc easier to install, document, test, and release independently from the main GEMC source tree.

Packaging and installation

  • Prepared pygemc for stable PyPI publishing with Hatch / hatch-vcs packaging.
  • Added stable-tag version detection restricted to vX.Y.Z tags, so the moving dev tag does not affect package versions.
  • Added the GEMC Software License to the package and configured packaging metadata to use LICENSE.md.
  • Updated package author contact to ungaro@jlab.org.
  • Documented virtual-environment based installation using python -m pip.
  • Documented stable PyPI installation:
    • python -m pip install pygemc
    • python -m pip install "pygemc[root]"
  • Documented development snapshot installation from GitHub:
    • python -m pip install "pygemc @ git+https://github.com/gemc/pygemc.git@dev"
  • Documented editable local-clone development installs:
    • python -m pip install -e ".[dev]"
    • python -m pip install -e ".[dev,root]"

Release workflow

  • Added a nightly GitHub-only dev prerelease workflow.
  • Added generated development release notes in releases/dev.md.
  • Added ci/update-devmd.sh to build dev release notes from commits since a fixed date.
  • Added a manual publish_pypi.yml workflow for stable tagged releases only.
  • Kept development releases off PyPI; the moving dev release is installable from GitHub.
  • Added support for publishing to TestPyPI before publishing to PyPI.

Documentation

  • Rewrote the README with a full project overview, feature list, installation paths, quickstart, geometry API example, command-line tools, analyzer usage, tests, project layout, documentation links, contribution notes, and license information.
  • Added CI, Python, PyPI, license, and documentation badges.
  • Added a PyVista visualization gallery with linked thumbnails for B1, B2, Materials, and Simple Flux examples.
  • Linked gallery thumbnails to hosted VTK.js scenes generated from .vtksz files.
  • Clarified that GitHub README files cannot embed .vtksz scenes inline.

Governance and project metadata

  • Added CODE_OF_CONDUCT.md.
  • Added CONTRIBUTING.md with a fork-and-pull-request workflow.
  • Added SECURITY.md with vulnerability reporting instructions.
  • Standardized feedback, security, and conduct contact email to ungaro@jlab.org.
  • Updated the GEMC Software License coverage through 2026.

CI

  • Renamed and clarified the Python test workflow.
  • Added a workflow to trigger the GEMC source Docker deploy/test workflow after pygemc changes.
  • Added workflow path filters so README and governance-document changes do not trigger CI.
  • Kept automated tests on Python 3.10 and 3.14.

Build-system integration

  • Updated Meson subproject behavior so the parent GEMC build can install pygemc without unnecessary isolated-build PyPI fetches.
  • Pre-installs Hatch build backends into the build-tree virtual environment used by the parent project.

Runtime and visualization fixes

  • Reduced import-time cost by keeping heavy PyVista / Qt / plotting imports lazy where practical.
  • Suppressed a noisy VTK warning in geometry-running workflows.

Supported platforms

  • Linux
  • macOS

Dependencies

  • Python 3.10 or higher
  • numpy, pandas, matplotlib
  • vtk, pyvista, pyvistaqt, pyqt6 for visualization
  • uproot and awkward for optional ROOT-file analysis via the root extra

Compatibility notes

  • The dev GitHub release is a moving development snapshot and is not published to PyPI.
  • PyPI publishing is intended for stable vX.Y.Z tags only.
  • The custom GEMC Software License is provided through LICENSE.md; no OSI license classifier is declared.