Releases: Utilified/aemo-mdff-reader
v2.2.1
2.2.1 (2026-05-10)
Documentation
- bake CI hardening into a 2.2.1 release (7798a08)
What's Changed
- ci: add ClusterFuzzLite + SLSA provenance file in releases by @cohenrobinson in #28
- ci: pin OSS-Fuzz base-builder-python by SHA by @cohenrobinson in #29
- docs: bake CI hardening into a 2.2.1 release by @cohenrobinson in #30
- chore(main): release 2.2.1 by @github-actions[bot] in #31
Full Changelog: v2.2.0...v2.2.1
v2.2.0
2.2.0 (2026-05-10)
⚠ BREAKING CHANGES
- minimum Python version is now 3.11. Users on 3.10 should pin to
aemo-mdff-reader<2.2.
Features
- drop Python 3.10, bump dev floor to pandas 3 / numpy 2.x (876c863)
What's Changed
- chore(deps): bump googleapis/release-please-action from 4.4.0 to 5.0.0 by @dependabot[bot] in #24
- feat: drop Python 3.10, bump dev floor to pandas 3 by @cohenrobinson in #26
- chore(main): release 2.2.0 by @github-actions[bot] in #27
Full Changelog: v2.1.0...v2.2.0
v2.1.0
2.1.0 (2026-05-10)
Features
- drop Python 3.9, hash-pin CI installs, scope release-please permissions (447ec98)
Documentation
What's Changed
- chore: gitignore CLAUDE.md and .claude/ by @cohenrobinson in #19
- chore: address CodeQL quality findings by @cohenrobinson in #20
- docs: remove broken OpenSSF Best Practices badge by @cohenrobinson in #21
- feat!: drop Python 3.9, hash-pin CI, fully resolve Code Scanning by @cohenrobinson in #23
- chore(main): release 2.1.0 by @github-actions[bot] in #22
Full Changelog: v2.0.4...v2.1.0
v2.0.4
2.0.4 (2026-05-10)
Bug Fixes
What's Changed
- fix: release-please dispatch + SBOM directory creation by @cohenrobinson in #17
- chore(main): release 2.0.4 by @github-actions[bot] in #18
Full Changelog: v2.0.3...v2.0.4
v2.0.3
Warning
Skipped — no published artifacts on this tag.
The release pipeline failed during the build job for v2.0.3 (the
first run after the SLSA + SBOM + release-please automation
landed). Two bugs blocked it:
release-please.yml's dispatch step rangh workflow run
without--repoand withoutactions/checkout, so it had no
git context to infer the repository from.release.yml's SBOM step (anchore/sbom-action) tried to
writesbom/aemo_mdff_reader.cdx.jsonwithout the parent
directory existing.
Both are fixed in #17.
The equivalent set of changes ships in v2.0.4 with attestations,
SBOM, and PyPI artifacts attached. Use that release.
The git tag is preserved for historical traceability — it points at
the same commit the v2.0.3 release-please PR merged.
v2.0.2
What's Changed
- release: v2.0.2 by @cohenrobinson in #10
Full Changelog: https://github.com/Utilified/aemo-mdff-reader/commits/v2.0.2
v2.0.1 — first release under aemo-mdff-reader
Note: this release is not yet on PyPI — the publish step is intentionally gated until Trusted Publishing is configured. Internal consumers should pin against this tag via git:
aemo-mdff-reader = {git = "git@github.com:Utilified/aemo-mdff-reader.git", tag = "v2.0.1"}The build artefacts (sdist + wheel) are attached to this release for direct download.
The 2.0.0 tag was cut before the project was renamed to aemo-mdff-reader. 2.0.1 is the first version published under the new name end-to-end. Source semantics are unchanged — this release exists to give consumers a single stable tag matching the aemo_mdff_reader import path and the aemo-mdff-reader PyPI dist + CLI command.
What's new since v1
This is the first stable v2 release after a substantial rewrite. Highlights:
- Spec target: AEMO MDFF v2.6 (effective 29 September 2024). v1 targeted MDFF v1.02 (2017). v2 surfaces all v2.6 record types (100, 200, 250, 300, 400, 500, 550, 900) and exposes the v2.6 enumerations (quality flags, transaction codes, reason codes including the 100-109 series, UOM, direction indicators, allowed interval lengths) as constants in
aemo_mdff_reader.spec. - Zero required runtime dependencies. pandas / pyarrow / PyMySQL move to opt-in extras (
pip install aemo-mdff-reader[pandas|parquet|mysql|dev]). - Streaming parser (
parse(source)) — O(1) memory; processes a 10.5 M-reading (71 MiB) file with 1.3 MiB peak Δ. - Bounded-memory chunked APIs (
iter_dataframes,iter_columns_chunks,aggregate.iter_chunks) for arbitrary-size pandas / columnar workflows. - Columnar fast path (
parse_to_columns,to_dataframe(path)) — ~2 M readings/sec, ~7× faster than the v1 tree-based reader. - Full record-type coverage:
parse(),parse_accumulations(),parse_events(),parse_b2b(),parse_all(),parse_header(). - Aggregation helpers in
aemo_mdff_reader.aggregate:group_by_nmi,daily_totals,iter_chunks. - Spec-conformance utilities:
nmi_checksum,validate_nmi,validate_fileplus anaemo-mdff-reader --validateCLI flag. - CLI:
aemo-mdff-reader file.csv -o out.csvwith--records intervals|accumulations,--format csv|parquet,--nmi,--start/--end,--validate. - Quality: 157 tests, 91.95% coverage, mypy
--strict, ruff lint+format, bandit, pip-audit, twine--strict. CI matrix on Python 3.9–3.12 / Linux + macOS + Windows.
Migration from v1
from nem12_reader import … → from aemo_mdff_reader import …. The internal nem12_reader.nemstructure package is gone; use the typed surface (Header, NMIDetails, IntervalReading, IntervalEvent, AccumulationReading, B2BDetails) and the streaming entry points instead. The NEMReader facade (read_from_file, to_dataframe, to_csv) still works under the new import name. See CHANGELOG.md for the full v2.0.0 detail.
Changes since v2.0.0
- Project renamed end-to-end to
aemo-mdff-reader(GitHub repo, PyPI dist, Python import, CLI). - Tooling refresh:
actions/setup-python@v6,actions/upload-artifact@v7,actions/download-artifact@v8,softprops/action-gh-release@v3,sigstore/gh-action-sigstore-python@v3.3.0. - PyPI publish step in
release.ymlgated onvars.PYPI_PUBLISH_ENABLED == 'true'so tag pushes run cleanly without Trusted Publishing configured. - Repository metadata (description, homepage, topics) configured for discoverability.
Verifying the artefacts
The attached aemo_mdff_reader-2.0.1.tar.gz and aemo_mdff_reader-2.0.1-py3-none-any.whl were built and validated by the Release workflow run. Verify locally:
python -m venv /tmp/smoke
/tmp/smoke/bin/pip install aemo_mdff_reader-2.0.1-py3-none-any.whl
/tmp/smoke/bin/python -c "import aemo_mdff_reader as m; print(m.__version__)"
# → 2.0.1
/tmp/smoke/bin/aemo-mdff-reader --version
# → aemo-mdff-reader 2.0.1v1.0.0
v1.0.0
Release Notes
This first release supports the reading of NEM-12 files as per the AEMO specification. The initial NEM12Reader class can read NEM-12 files, interpret the data and export to a dataframe and/or CSV file.
Full Changelog: https://github.com/Utilified/nem12-reader/commits/v1.0.0