Skip to content

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] select unset 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() and cache_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_kwh is now typed as Dict[str, float] (tariff band name → kWh) rather than Dict[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 - Beta to 5 - 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 PinergyAuthError for token rejection reported as success:false with HTTP 200. Stale tokens are now dropped automatically.

[0.1.6] - 2026-06-11

Added

  • Context manager support for PinergyClient.
  • PinergyTimeoutError and PinergyResponseError exceptions.
  • *_dt alias 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.