Skip to main content

Typed sync + async Python client for Radarr v3 and Sonarr v3 APIs

Project description

arr-py-client

Typed synchronous and asynchronous Python client for Radarr and Sonarr v3 APIs.

CI PyPI Python License

Features

  • Pydantic v2 models for every request and response
  • Sync (RadarrClient, SonarrClient) and async (AsyncRadarrClient, AsyncSonarrClient) clients sharing the same API
  • Full v3 endpoint coverage for both apps, generated from upstream OpenAPI specs
  • Typed exceptions (ArrNotFoundError, ArrValidationError, etc.) with validation-detail parsing
  • Env / .env fallback for credentials via pydantic-settings
  • Configurable retry policy (idempotent GET only by default)
  • Ships py.typed (PEP 561) — IDEs and type checkers just work
  • Python 3.11–3.14

Install

pip install arr-py-client

Quickstart

from arr_py_client import RadarrClient

with RadarrClient(base_url="http://radarr:7878", api_key="YOUR_KEY") as client:
    movies = client.movies.list()
    for m in movies[:5]:
        print(m.id, m.title, m.year)

Or via environment variables — set RADARR_BASE_URL and RADARR_API_KEY and:

from arr_py_client import RadarrClient

with RadarrClient() as client:
    print(len(client.movies.list()))

Async mirrors the sync API:

from arr_py_client import AsyncRadarrClient

async def main() -> None:
    async with AsyncRadarrClient() as client:
        movies = await client.movies.list()
        print(len(movies))

The client also exposes auto-generated wrappers for every OpenAPI tag — for example client.tag.list_(), client.queue.list_(), client.system.list_status(). Method names follow <verb>[_<distinguisher>] (e.g., list_, get_by_id, create, update_by_id, delete_by_id).

Compared to pyarr

arr-py-client pyarr
Pydantic v2 models yes no (returns dicts)
Async support yes no
Full Radarr/Sonarr v3 coverage yes yes
Lidarr/Readarr/Prowlarr not yet yes
Ships py.typed yes no

Documentation

API reference: https://allada-homelab.github.io/arr-py-client/

Development

git clone https://github.com/allada-homelab/arr-py-client
cd arr-py-client
uv sync --all-groups
just test

Integration tests (require Docker):

just test-int

Regenerate clients from upstream specs:

just gen-radarr <radarr-tag>
just gen-sonarr <sonarr-tag>

License

MIT. See LICENSE.

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

arr_py_client-0.1.0.tar.gz (138.8 kB view details)

Uploaded Source

Built Distribution

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

arr_py_client-0.1.0-py3-none-any.whl (267.7 kB view details)

Uploaded Python 3

File details

Details for the file arr_py_client-0.1.0.tar.gz.

File metadata

  • Download URL: arr_py_client-0.1.0.tar.gz
  • Upload date:
  • Size: 138.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for arr_py_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 183bfc4bd10c74d46db4746df4a50d6c1007d9943e6e74aafe6f6dbebe0009da
MD5 42a0c8870b116f55500c394f7f1e6d4c
BLAKE2b-256 01f444dc70e5bb64efb38d5b9b76cecdb5f6b5d45f1a64b46df6a8ae117ae8b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for arr_py_client-0.1.0.tar.gz:

Publisher: release.yml on allada-homelab/arr-py-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file arr_py_client-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: arr_py_client-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 267.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for arr_py_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6586eb55a8cbe212dc38d6032b40814eb48ab5afda65908b539a6e10af8ea6b4
MD5 3635d7c4c94924edeb82fc11582c24ad
BLAKE2b-256 a8e5c45c0dfa3149493f48b9fa23c9a77151c4351b836bd8b717d5b3f1d1fc50

See more details on using hashes here.

Provenance

The following attestation bundles were made for arr_py_client-0.1.0-py3-none-any.whl:

Publisher: release.yml on allada-homelab/arr-py-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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