Skip to main content

Asynchronous client for MeteoSwiss API.

Project description

Python Async API Client

This have in mind to start developing API clients for Home Assistant to be 100% asynchronous

How to Use it?

Fork this repository by using it as a template.

Structure

This package provides good defaults for any API client code that is split on the following modules:

  • errors.py: module that define the custom errors the API and/or client would be returning to their users.
  • model.py: definition of the API data model. All returned objects from the clients would be defined here.
  • client.py: the logic around calling the API

Development

To start developing with this package, fork it, create a virtual environment and install all the dependencies needed for development.

python3 -m venv .venv
source .venv/bin/activate
pip install '.[dev]'

Best Practices

This package provides already an skeleton with some best practices when starting developing your API client.

  1. 100% async from the start: Home Assistant runs its main logic using an asynchronous engine, and having 3rd party clients running async can have performance benefits and ease of integration on new and existing components.
  2. A aiohttp.ClientSession should always to be a constructor argument (so a session and connection pool can be shared between multiple clients). The template already provides a class constructor to create the Client without any initial ClientSession in case it is not available.
  3. The output of each API endpoint is a typed Model that is build as a dataclass and can be parsed from a JSON response or a nested dictionary. This ensures the consumer of the API outputs can take benefits from the benefits dataclasses provide like readaibility on its structure and field types.
  4. The whole library is annotated with Python types so type checkers can help us detect errors early on rather than at runtime.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meteoswiss_async-0.1.1.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meteoswiss_async-0.1.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file meteoswiss_async-0.1.1.tar.gz.

File metadata

  • Download URL: meteoswiss_async-0.1.1.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for meteoswiss_async-0.1.1.tar.gz
Algorithm Hash digest
SHA256 14f6285e32818c2516410471e7fd6df4e03cf22da6e3ec0ff6f917bd6f9344a7
MD5 8d0dd9b15d0b629a7ea90356a51147c5
BLAKE2b-256 c9418850d12509ff8d1d867553f29cad8090f75956ea90cc6fb728ddccf318cb

See more details on using hashes here.

File details

Details for the file meteoswiss_async-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for meteoswiss_async-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 abdfec117050d40ab1bc8e5f90cc27824bde48abcfa221c714f809429351328e
MD5 e21380790b5c2aafb4dac579d9cea7d5
BLAKE2b-256 b40f4f2df0b2ed26d524a5ffdc918bd538402d41a47aa1f9761dcd0800fae46d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page