Metadata-Version: 2.4
Name: python-izone
Version: 1.3.8
Summary: A python interface to the iZone airconditioner controller
Project-URL: Homepage, https://github.com/Swamp-Ig/pizone
Author-email: Penny Wood <pypl@ninjateaparty.com>
License-Expression: GPL-3.0-or-later
License-File: licence.txt
Keywords: IoT,iZone
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Home Automation
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.14
Requires-Dist: aiohttp>=3.14.1
Requires-Dist: ifaddr>=0.2.0
Provides-Extra: test
Requires-Dist: pytest-aio; extra == 'test'
Requires-Dist: pytest-aiohttp; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Requires-Dist: pytest>=6.2.2; extra == 'test'
Description-Content-Type: text/markdown

# python-izone

Python library for the [iZone](https://izone.com.au/) air conditioning system.

Used by the [Home Assistant iZone integration](https://www.home-assistant.io/integrations/izone/).

## Install

```bash
pip install python-izone
```

## Overview

The main entry points are `Controller` and `Zone` for device control, and
`DiscoveryService` for UDP discovery on the local network.

Synchronous property reads return cached device data and do not raise
`ConnectionError`. Async command and refresh methods perform HTTP I/O and
raise `ConnectionError` when the device cannot be reached. They raise
`ControllerCommandError` when the device responds but rejects the request
(`{ERROR}` body or HTTP 4xx).

## Dependencies

Requires `aiohttp>=3.14.1`. Home Assistant pins `aiohttp==3.14.1`; that version
includes the HTTP POST coalescing fix ([aiohttp#10991](https://github.com/aio-libs/aiohttp/pull/10991))
needed for iZone controllers that read the request in a single operation.

## Protocol documentation

The iZone Ethernet interface is documented in
[AC-DOC-1401-11_iZoneEthernetInterface.pdf](./AC-DOC-1401-11_iZoneEthernetInterface.pdf).

## Development

1. Install [uv](https://docs.astral.sh/uv/).
2. `uv sync --all-extras --group dev`
3. `./scripts/check` — lint, type-check, test, and build (same as CI)
4. `./scripts/coverage` — test coverage report (advisory; not part of the CI gate)

Individual commands:

- `uv run pytest tests/`
- `uv run ruff check pizone tests`
- `uv run ruff format pizone tests`
- `uv run mypy pizone`
- `uv build`

To run integration tests against a controller on your network:

```bash
uv run pytest tests/test_fullstack.py -m hardware -o addopts=
```
