Changelog
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Fixed
- Pin the Ruff lint rule set explicitly in
pyproject.toml. The config previously left[tool.ruff.lint] selectunset and inherited Ruff's built-in defaults, so a Ruff release that widened those defaults failed CI on an unchanged commit.
[1.2.0] - 2026-06-24
Added
- Client-side token-bucket rate limiting to prevent API abuse — default 2 req/s, burst 5 (#196).
- Response body size limit (default 2 MB) to prevent memory exhaustion from malformed responses (#199).
- Automatic retries with jittered exponential backoff for transient failures on GET requests (#197).
- In-memory TTL response caching with per-endpoint expiration, thread-safe and flushed on logout (#198).
cache_flush()andcache_invalidate(endpoint)public methods for manual cache control.- New constructor parameters:
rate_limit,rate_burst,max_response_bytes,max_retries,retry_base_delay,retry_max_delay,cache_disabled.
[1.1.0] - 2026-06-15
Added
- Pre-commit configuration with Ruff (formatting, linting) and MyPy (strict typing) hooks (#186).
- Automated API schema documentation generator script to introspect dataclasses (#187).
- Support updating notification preferences via client method (#183).
top_up(amount, cc_token)method to initiate instant top-ups via a saved payment card (#182).
Fixed
- Prevent CRLF HTTP Header Injection in check_email (#188).
- Prevent multiple redundant login calls and race conditions on concurrent token rejection (#184).
- Make LevelPayUsageResponse and LevelPayDailyValue parsing robust against missing daily data or custom tariff types (#185).
[1.0.0] - 2026-06-13
Added
LevelPayDailyValue.day_kwhis now typed asDict[str, float](tariff band name → kWh) rather thanDict[str, Any].- Expanded API reference documentation to cover all 26 exported symbols.
- Python 3.13 added to CI test matrix.
- Troubleshooting section in the user guide.
Changed
- PyPI classifier upgraded from
4 - Betato5 - Production/Stable. The public API is stable.
[0.1.9] - 2026-06-12
Changed
- README logo URLs made absolute for correct rendering on PyPI.
[0.1.8] - 2026-06-12
Changed
- Added PyPinergy branding, logos, and custom MkDocs theme styling.
- Enabled Mermaid diagram support in MkDocs.
- Added lazy auth flow diagram and contributing guide to documentation.
[0.1.7] - 2026-06-11
Fixed
- Raise
PinergyAuthErrorfor token rejection reported assuccess:falsewith HTTP 200. Stale tokens are now dropped automatically.
[0.1.6] - 2026-06-11
Added
- Context manager support for
PinergyClient. PinergyTimeoutErrorandPinergyResponseErrorexceptions.*_dtalias fields in models for better naming consistency.- Automatic token self-healing on 401 errors.
Changed
- Improved model parsing robustness.
- Hardened client lifecycle management.
[0.1.0] - 2026-06-01
Added
- Initial release with support for usage, balance, top-ups, and comparison.