Skip to content

Releases: Utilified/aemo-mdff-reader

v2.2.1

10 May 14:31
9f9958f

Choose a tag to compare

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

10 May 13:26
a2180a4

Choose a tag to compare

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

10 May 13:05
1172c1e

Choose a tag to compare

2.1.0 (2026-05-10)

Features

  • drop Python 3.9, hash-pin CI installs, scope release-please permissions (447ec98)

Documentation

  • remove broken OpenSSF Best Practices badge (#21) (91a68d5)

What's Changed

Full Changelog: v2.0.4...v2.1.0

v2.0.4

10 May 11:04
1b02edc

Choose a tag to compare

2.0.4 (2026-05-10)

Bug Fixes

  • release-please dispatch + SBOM directory creation (#17) (8e3cd13)

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

10 May 10:45
8e9bbb1

Choose a tag to compare

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:

  1. release-please.yml's dispatch step ran gh workflow run
    without --repo and without actions/checkout, so it had no
    git context to infer the repository from.
  2. release.yml's SBOM step (anchore/sbom-action) tried to
    write sbom/aemo_mdff_reader.cdx.json without 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

10 May 08:59
65a1062

Choose a tag to compare

What's Changed

Full Changelog: https://github.com/Utilified/aemo-mdff-reader/commits/v2.0.2

v2.0.1 — first release under aemo-mdff-reader

10 May 06:08

Choose a tag to compare

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_file plus an aemo-mdff-reader --validate CLI flag.
  • CLI: aemo-mdff-reader file.csv -o out.csv with --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.yml gated on vars.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.1

v1.0.0

27 Feb 11:05

Choose a tag to compare

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