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
pygemcfor stable PyPI publishing with Hatch /hatch-vcspackaging. - Added stable-tag version detection restricted to
vX.Y.Ztags, so the movingdevtag 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 pygemcpython -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
devprerelease workflow. - Added generated development release notes in
releases/dev.md. - Added
ci/update-devmd.shto build dev release notes from commits since a fixed date. - Added a manual
publish_pypi.ymlworkflow for stable tagged releases only. - Kept development releases off PyPI; the moving
devrelease 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
.vtkszfiles. - Clarified that GitHub README files cannot embed
.vtkszscenes inline.
Governance and project metadata
- Added
CODE_OF_CONDUCT.md. - Added
CONTRIBUTING.mdwith a fork-and-pull-request workflow. - Added
SECURITY.mdwith 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
pygemcchanges. - 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
pygemcwithout 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
rootextra
Compatibility notes
- The
devGitHub release is a moving development snapshot and is not published to PyPI. - PyPI publishing is intended for stable
vX.Y.Ztags only. - The custom GEMC Software License is provided through
LICENSE.md; no OSI license classifier is declared.