📢 Preamble
This release solidifies the vision of this API client. Our current vision is to ship:
- A Python idiomatic client with documentation and examples
- A command line utility to interact with the Gallagher API and aid with automation
- A Terminal Interface that provides a superb experience for power users including the use of LLMs to query using natural language (English supported for now)
This release provides a near complete version of the Python API and the related tools, creating a foundation and making is ready for release.
✨ New
- Vendors in [betodealmeida/shillelagh](https://github.com/betodealmeida/shillelagh) by betodealmeida who gracefully chimed in on #9
- Adds `Typer` based command line interface, thanks to tiangolo for maintaining it
- Automated publishing to Pypi on tagging a release 16
💅 Improvements
- Adds `task` endpoint for debugging the Gallagher REST endpoints, for example use `task debug:get -- alarms` to trigger a `get` request. This will use `httpie` to execute the request and append necessary headers and parameters
- Dependencies have been updated across the various deliverables to ensure we keep up security protocols and enhancements provided by upstream packages
- Documentation across the entire project, getting ready for the final release, moves to using [bruce-szalwinski/mkdocs-typer](https://github.com/bruce-szalwinski/mkdocs-typer) by bruce-szalwinski for producing `cli` documentation.
- Drastic improvements in `testsuite` performance by transforming network requests into `fixtures` for examples we can fetch alarms and then perform multiple validation operations on the data:
py
pytest.fixture
async def alarm_summary() -> AlarmSummaryResponse:
""" Get a list of item types and iterates through it
these are a summary response
"""
response = await Alarms.list()
return response
🛠️ Fixes
- Handles API endpoints errors properly and raises exceptions rather than letting the API client fail 8
- Renames various incorrectly named DTO classes, this is due to the rapidly evolving nature of the project and should stabilise past these initial alpha/beta releases.