Skip to main content

charmarr-lib-core

Core charm libraries for Charmarr media automation.

Features

  • Juju relation interfaces for media automation
  • API clients for *arr applications (Radarr, Sonarr, Prowlarr, etc.)
  • Reconcilers for managing application configuration
  • Pydantic models for type-safe data validation
  • K8s storage utilities for StatefulSet patching

Installation

pip install charmarr-lib-core

Usage

Interfaces

from charmarr_lib.core.interfaces import (
    # Media Indexer (Prowlarr <-> Radarr/Sonarr/Lidarr)
    MediaIndexerProvider,
    MediaIndexerRequirer,
    MediaIndexerProviderData,
    MediaIndexerRequirerData,
    # Download Client (qBittorrent/SABnzbd <-> Radarr/Sonarr/Lidarr)
    DownloadClientProvider,
    DownloadClientRequirer,
    DownloadClientProviderData,
    DownloadClientRequirerData,
    # Media Storage (shared PVC <-> all apps)
    MediaStorageProvider,
    MediaStorageRequirer,
    MediaStorageProviderData,
    MediaStorageRequirerData,
    # Media Manager (Radarr/Sonarr <-> Overseerr/Jellyseerr)
    MediaManagerProvider,
    MediaManagerRequirer,
    MediaManagerProviderData,
    MediaManagerRequirerData,
    QualityProfile,
)

API Clients

from charmarr_lib.core import (
    # Radarr/Sonarr/Lidarr client (v3 API)
    ArrApiClient,
    # Prowlarr client (v1 API)
    ProwlarrApiClient,
    # Errors
    ArrApiError,
    ArrApiConnectionError,
    ArrApiResponseError,
)

# Connect to Radarr
with ArrApiClient("http://radarr:7878", api_key) as client:
    profiles = client.get_quality_profiles()
    client.add_root_folder("/movies")

Reconcilers

from charmarr_lib.core import (
    reconcile_download_clients,
    reconcile_media_manager_connections,
    reconcile_root_folder,
    reconcile_external_url,
)

# Sync download clients from relations to Radarr
reconcile_download_clients(
    api_client=arr_client,
    desired_clients=download_client_data_from_relations,
    category="radarr",
    media_manager=MediaManager.RADARR,
    get_secret=lambda sid: model.get_secret(id=sid).get_content(),
)

Storage Utilities

from charmarr_lib.core import (
    reconcile_storage_volume,
    is_storage_mounted,
    K8sResourceManager,
    ReconcileResult,
)

manager = K8sResourceManager()
result = reconcile_storage_volume(
    manager=manager,
    statefulset_name="radarr",
    container_name="radarr",  # from charmcraft.yaml
    namespace="media",
    pvc_name="media-storage",
    mount_path="/data",
)

Download files

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

Source Distribution

charmarr_lib_core-0.19.1.tar.gz (50.8 kB view details)

Uploaded Source

Built Distribution

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

charmarr_lib_core-0.19.1-py3-none-any.whl (49.5 kB view details)

Uploaded Python 3

File details

Details for the file charmarr_lib_core-0.19.1.tar.gz.

File metadata

  • Download URL: charmarr_lib_core-0.19.1.tar.gz
  • Upload date:
  • Size: 50.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for charmarr_lib_core-0.19.1.tar.gz
Algorithm Hash digest
SHA256 782a8076ba5128c6ce5431fa257edc61a1d9e488e84e0af0681d8fbebdb70068
MD5 da476d0ccb66c874fb804b3179f85caf
BLAKE2b-256 4c6d28fe81d0ebb8104da42539a15255e04e1391ed7c804a97d8a90a91dcc58a

See more details on using hashes here.

Provenance

The following attestation bundles were made for charmarr_lib_core-0.19.1.tar.gz:

Publisher: release.yml on charmarr/charmarr-lib

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

File details

Details for the file charmarr_lib_core-0.19.1-py3-none-any.whl.

File metadata

File hashes

Hashes for charmarr_lib_core-0.19.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0c28505918ef4029f968016e60a56130887d36fc323e75b70b1280fe6e9405de
MD5 7281540e47164a552e1c90d26f589fbe
BLAKE2b-256 ca4e5a65a45517c45344ca454e5ad30631c481b5e37539f7d46be6a58b629ed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for charmarr_lib_core-0.19.1-py3-none-any.whl:

Publisher: release.yml on charmarr/charmarr-lib

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

Release history Release notifications | RSS feed

This release

0.19.1 This release

2 files

0.19.0

2 files

0.18.0

2 files

0.17.0

2 files

0.16.0

2 files

0.15.0

2 files

0.14.1

2 files

0.14.0

2 files

0.13.0

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.5

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page