aemo-mdff-reader 2.2.0__tar.gz → 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/CHANGELOG.md +18 -0
  2. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/CONTRIBUTING.md +11 -7
  3. {aemo_mdff_reader-2.2.0/aemo_mdff_reader.egg-info → aemo_mdff_reader-3.0.0}/PKG-INFO +4 -5
  4. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/README.md +2 -2
  5. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/__init__.py +1 -1
  6. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0/aemo_mdff_reader.egg-info}/PKG-INFO +4 -5
  7. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/pyproject.toml +6 -7
  8. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/LICENSE +0 -0
  9. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/MANIFEST.in +0 -0
  10. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/aggregate.py +0 -0
  11. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/cli.py +0 -0
  12. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/parser.py +0 -0
  13. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/py.typed +0 -0
  14. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/reader.py +0 -0
  15. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/spec.py +0 -0
  16. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/sql/__init__.py +0 -0
  17. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/sql/query.py +0 -0
  18. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/sql/store.py +0 -0
  19. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader/types.py +0 -0
  20. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader.egg-info/SOURCES.txt +0 -0
  21. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader.egg-info/dependency_links.txt +0 -0
  22. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader.egg-info/entry_points.txt +0 -0
  23. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader.egg-info/requires.txt +0 -0
  24. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/aemo_mdff_reader.egg-info/top_level.txt +0 -0
  25. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/benchmarks/bench_parser.py +0 -0
  26. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/setup.cfg +0 -0
  27. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/setup.py +0 -0
  28. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/__init__.py +0 -0
  29. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/fixtures/generate.py +0 -0
  30. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/fixtures/sample_nem12.csv +0 -0
  31. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/fixtures/sample_nem13.csv +0 -0
  32. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_cli.py +0 -0
  33. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_datetime_formats.py +0 -0
  34. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_edge_cases.py +0 -0
  35. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_ergonomics.py +0 -0
  36. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_events_b2b.py +0 -0
  37. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_large_files.py +0 -0
  38. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_nem13.py +0 -0
  39. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_parser.py +0 -0
  40. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_spec.py +0 -0
  41. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_sql.py +0 -0
  42. {aemo_mdff_reader-2.2.0 → aemo_mdff_reader-3.0.0}/tests/test_validation.py +0 -0
@@ -4,6 +4,24 @@ All notable changes are documented here. The format is based on
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the
5
5
  project follows [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [3.0.0](https://github.com/Utilified/aemo-mdff-reader/compare/v2.2.1...v3.0.0) (2026-07-16)
8
+
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+
12
+ * minimum Python version is now 3.12. Users on 3.11 should pin to aemo-mdff-reader<2.3.
13
+
14
+ ### Features
15
+
16
+ * drop Python 3.11 support ([#70](https://github.com/Utilified/aemo-mdff-reader/issues/70)) ([383ff6d](https://github.com/Utilified/aemo-mdff-reader/commit/383ff6de7430372a8a67bd1b1a8271aa849f53eb))
17
+
18
+ ## [2.2.1](https://github.com/Utilified/aemo-mdff-reader/compare/v2.2.0...v2.2.1) (2026-05-10)
19
+
20
+
21
+ ### Documentation
22
+
23
+ * bake CI hardening into a 2.2.1 release ([7798a08](https://github.com/Utilified/aemo-mdff-reader/commit/7798a08fe753abff9136c993ea4efc87bddc3a0d))
24
+
7
25
  ## [2.2.0](https://github.com/Utilified/aemo-mdff-reader/compare/v2.1.0...v2.2.0) (2026-05-10)
8
26
 
9
27
 
@@ -36,16 +36,16 @@ To regenerate manually after editing them or `pyproject.toml`:
36
36
 
37
37
  ```bash
38
38
  pip install uv
39
- uv pip compile --generate-hashes --strip-extras --python-version 3.11 --output-file requirements/dev.txt requirements/dev.in
40
- uv pip compile --generate-hashes --strip-extras --python-version 3.11 --output-file requirements/lint.txt requirements/lint.in
41
- uv pip compile --generate-hashes --strip-extras --python-version 3.11 --output-file requirements/build.txt requirements/build.in
42
- uv pip compile --generate-hashes --strip-extras --python-version 3.11 --output-file requirements/audit.txt requirements/audit.in
39
+ uv pip compile --generate-hashes --strip-extras --python-version 3.12 --output-file requirements/dev.txt requirements/dev.in
40
+ uv pip compile --generate-hashes --strip-extras --python-version 3.12 --output-file requirements/lint.txt requirements/lint.in
41
+ uv pip compile --generate-hashes --strip-extras --python-version 3.12 --output-file requirements/build.txt requirements/build.in
42
+ uv pip compile --generate-hashes --strip-extras --python-version 3.12 --output-file requirements/audit.txt requirements/audit.in
43
43
  ```
44
44
 
45
45
  `uv` is used over `pip-tools` because its resolver handles the
46
- 3.11–3.12 matrix without back-tracking failures, and it emits hashes
46
+ 3.12+ matrix without back-tracking failures, and it emits hashes
47
47
  for every wheel of each pinned version (so a single lock file works
48
- across the whole CI matrix). The `--python-version 3.11` flag pins
48
+ across the whole CI matrix). The `--python-version 3.12` flag pins
49
49
  resolution to the lowest supported interpreter so packages whose
50
50
  latest releases dropped support for it are correctly stepped back
51
51
  to a compatible version.
@@ -151,7 +151,11 @@ Maintainers do not run `git tag` by hand for normal releases.
151
151
  build → SLSA build provenance attestation → CycloneDX SBOM +
152
152
  attestation → upload artefacts → wait on the `pypi` Environment
153
153
  reviewer → sigstore sign → PyPI Trusted Publishing → GitHub Release
154
- with wheel + sdist + signatures + SBOM attached.
154
+ with wheel + sdist + sigstore signatures + SBOM + the in-toto
155
+ provenance bundle (`provenance/aemo_mdff_reader.intoto.jsonl`)
156
+ attached. The provenance file lets external scanners (Scorecard,
157
+ in-toto verifiers) confirm the artefacts were built by this
158
+ workflow without a round-trip to the GitHub attestations API.
155
159
  7. Approve the deployment in the `pypi` Environment when GitHub
156
160
  notifies you. The publish completes; verify at
157
161
  https://pypi.org/project/aemo-mdff-reader/ and
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aemo-mdff-reader
3
- Version: 2.2.0
3
+ Version: 3.0.0
4
4
  Summary: Fast streaming reader for AEMO MDFF NEM12 / NEM13 metering files. Zero required dependencies.
5
5
  Author: Utilified Holdings Pty Ltd
6
6
  License-Expression: MIT
@@ -15,13 +15,12 @@ Classifier: Intended Audience :: Information Technology
15
15
  Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Programming Language :: Python :: 3 :: Only
18
- Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: 3.13
21
20
  Classifier: Topic :: Office/Business :: Financial
22
21
  Classifier: Topic :: Scientific/Engineering
23
22
  Classifier: Topic :: Utilities
24
- Requires-Python: >=3.11
23
+ Requires-Python: >=3.12
25
24
  Description-Content-Type: text/markdown
26
25
  License-File: LICENSE
27
26
  Provides-Extra: pandas
@@ -47,7 +46,7 @@ Dynamic: license-file
47
46
 
48
47
  [![CI](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/ci.yml/badge.svg)](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/ci.yml)
49
48
  [![PyPI](https://img.shields.io/pypi/v/aemo-mdff-reader.svg)](https://pypi.org/project/aemo-mdff-reader/)
50
- [![Python versions](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue)](https://pypi.org/project/aemo-mdff-reader/)
49
+ [![Python versions](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue)](https://pypi.org/project/aemo-mdff-reader/)
51
50
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
52
51
  [![CodeQL](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/codeql.yml/badge.svg)](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/codeql.yml)
53
52
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Utilified/aemo-mdff-reader/badge)](https://scorecard.dev/viewer/?uri=github.com/Utilified/aemo-mdff-reader)
@@ -237,7 +236,7 @@ pip install -e .[dev]
237
236
  pytest
238
237
  ```
239
238
 
240
- CI runs ruff, mypy --strict, the test matrix on Python 3.11 → 3.12 /
239
+ CI runs ruff, mypy --strict, the test matrix on Python 3.12 /
241
240
  Linux / macOS / Windows, `pip-audit`, `bandit`, CodeQL, OpenSSF
242
241
  Scorecard, and a wheel-install smoke test.
243
242
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![CI](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/ci.yml/badge.svg)](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/ci.yml)
4
4
  [![PyPI](https://img.shields.io/pypi/v/aemo-mdff-reader.svg)](https://pypi.org/project/aemo-mdff-reader/)
5
- [![Python versions](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue)](https://pypi.org/project/aemo-mdff-reader/)
5
+ [![Python versions](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue)](https://pypi.org/project/aemo-mdff-reader/)
6
6
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
7
  [![CodeQL](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/codeql.yml/badge.svg)](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/codeql.yml)
8
8
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Utilified/aemo-mdff-reader/badge)](https://scorecard.dev/viewer/?uri=github.com/Utilified/aemo-mdff-reader)
@@ -192,7 +192,7 @@ pip install -e .[dev]
192
192
  pytest
193
193
  ```
194
194
 
195
- CI runs ruff, mypy --strict, the test matrix on Python 3.11 → 3.12 /
195
+ CI runs ruff, mypy --strict, the test matrix on Python 3.12 /
196
196
  Linux / macOS / Windows, `pip-audit`, `bandit`, CodeQL, OpenSSF
197
197
  Scorecard, and a wheel-install smoke test.
198
198
 
@@ -48,7 +48,7 @@ from .types import (
48
48
  NMIDetails,
49
49
  )
50
50
 
51
- __version__ = "2.2.0" # x-release-please-version
51
+ __version__ = "3.0.0" # x-release-please-version
52
52
 
53
53
  __all__ = [
54
54
  "INTERVAL_DATA_OUTPUT_HEADERS",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aemo-mdff-reader
3
- Version: 2.2.0
3
+ Version: 3.0.0
4
4
  Summary: Fast streaming reader for AEMO MDFF NEM12 / NEM13 metering files. Zero required dependencies.
5
5
  Author: Utilified Holdings Pty Ltd
6
6
  License-Expression: MIT
@@ -15,13 +15,12 @@ Classifier: Intended Audience :: Information Technology
15
15
  Classifier: Operating System :: OS Independent
16
16
  Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Programming Language :: Python :: 3 :: Only
18
- Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: 3.13
21
20
  Classifier: Topic :: Office/Business :: Financial
22
21
  Classifier: Topic :: Scientific/Engineering
23
22
  Classifier: Topic :: Utilities
24
- Requires-Python: >=3.11
23
+ Requires-Python: >=3.12
25
24
  Description-Content-Type: text/markdown
26
25
  License-File: LICENSE
27
26
  Provides-Extra: pandas
@@ -47,7 +46,7 @@ Dynamic: license-file
47
46
 
48
47
  [![CI](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/ci.yml/badge.svg)](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/ci.yml)
49
48
  [![PyPI](https://img.shields.io/pypi/v/aemo-mdff-reader.svg)](https://pypi.org/project/aemo-mdff-reader/)
50
- [![Python versions](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue)](https://pypi.org/project/aemo-mdff-reader/)
49
+ [![Python versions](https://img.shields.io/badge/python-3.12%20%7C%203.13-blue)](https://pypi.org/project/aemo-mdff-reader/)
51
50
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
52
51
  [![CodeQL](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/codeql.yml/badge.svg)](https://github.com/Utilified/aemo-mdff-reader/actions/workflows/codeql.yml)
53
52
  [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Utilified/aemo-mdff-reader/badge)](https://scorecard.dev/viewer/?uri=github.com/Utilified/aemo-mdff-reader)
@@ -237,7 +236,7 @@ pip install -e .[dev]
237
236
  pytest
238
237
  ```
239
238
 
240
- CI runs ruff, mypy --strict, the test matrix on Python 3.11 → 3.12 /
239
+ CI runs ruff, mypy --strict, the test matrix on Python 3.12 /
241
240
  Linux / macOS / Windows, `pip-audit`, `bandit`, CodeQL, OpenSSF
242
241
  Scorecard, and a wheel-install smoke test.
243
242
 
@@ -11,15 +11,15 @@ build-backend = "setuptools.build_meta"
11
11
  # Pillow / PIL precedent (``pip install Pillow`` → ``import PIL``)
12
12
  # applies here.
13
13
  name = "aemo-mdff-reader"
14
- version = "2.2.0"
14
+ version = "3.0.0"
15
15
  description = "Fast streaming reader for AEMO MDFF NEM12 / NEM13 metering files. Zero required dependencies."
16
16
  readme = "README.md"
17
17
  license = "MIT"
18
18
  license-files = ["LICENSE"]
19
- # Python 3.9 reached EOL in October 2025; pandas 3.0 dropped Python
20
- # 3.10 support. Bumping the floor to 3.11 keeps us aligned with the
21
- # upstream pandas/numpy/pyarrow release trains used by the dev extras.
22
- requires-python = ">=3.11"
19
+ # The floor tracks the upstream pandas/numpy/pyarrow release trains used
20
+ # by the dev extras: numpy 2.5 and pandas 3.0 are 3.12+ only, so pinning
21
+ # to 3.11 held the lock files back on superseded releases.
22
+ requires-python = ">=3.12"
23
23
  authors = [
24
24
  { name = "Utilified Holdings Pty Ltd" },
25
25
  ]
@@ -31,7 +31,6 @@ classifiers = [
31
31
  "Operating System :: OS Independent",
32
32
  "Programming Language :: Python :: 3",
33
33
  "Programming Language :: Python :: 3 :: Only",
34
- "Programming Language :: Python :: 3.11",
35
34
  "Programming Language :: Python :: 3.12",
36
35
  "Programming Language :: Python :: 3.13",
37
36
  "Topic :: Office/Business :: Financial",
@@ -125,7 +124,7 @@ ignore = [
125
124
  "aemo_mdff_reader/sql/*" = ["F401", "F403", "F405", "UP031"]
126
125
 
127
126
  [tool.mypy]
128
- python_version = "3.11"
127
+ python_version = "3.12"
129
128
  strict = true
130
129
  files = ["aemo_mdff_reader"]
131
130
  # Optional dependencies that don't ship type stubs.