Skip to content

Commit

Permalink
Add Buildarr v0.7.0 support (#48)
Browse files Browse the repository at this point in the history
* Use the new `state.instance_secrets` attribute to get linked Sonarr and Radarr instance secrets
  • Loading branch information
Callum027 authored Nov 12, 2023
1 parent 76849d3 commit 9d6e86d
Show file tree
Hide file tree
Showing 11 changed files with 144 additions and 168 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ jobs:
uses: JRubics/[email protected]
with:
python_version: "3.11"
poetry_version: "==1.6.1"
poetry_version: "==1.7.0"
ignore_dev_requirements: "yes"
pypi_token: ${{ secrets.PYPI_TOKEN }}
17 changes: 10 additions & 7 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v4.4.0"
rev: "v4.5.0"
hooks:
- id: trailing-whitespace
- id: mixed-line-ending
Expand All @@ -15,27 +15,30 @@ repos:
- id: check-added-large-files
- id: check-merge-conflict
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: "v0.0.287"
rev: "v0.1.5"
hooks:
- id: ruff
args:
- --exit-non-zero-on-fix
- repo: https://github.com/psf/black
rev: "23.7.0"
rev: "23.11.0"
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v1.5.1"
rev: "v1.7.0"
hooks:
- id: mypy
args: []
additional_dependencies:
- types-requests==2.31.0.2
- buildarr==0.6.0
- buildarr==0.7.0
- types-requests==2.31.0.10
- repo: https://github.com/python-poetry/poetry
rev: "1.6.1"
rev: "1.7.0"
hooks:
- id: poetry-check
- id: poetry-lock
args: ["--no-update"]
- id: poetry-export
additional_dependencies:
- poetry-plugin-export==1.6.0
args: ["-f", "requirements.txt", "-o", "requirements.txt"]
8 changes: 4 additions & 4 deletions buildarr_prowlarr/config/settings/apps/applications.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@

from buildarr.config import RemoteMapEntry
from buildarr.state import state
from buildarr.types import BaseEnum, InstanceName, NonEmptyStr, Password
from buildarr.types import BaseEnum, InstanceName, LowerCaseNonEmptyStr, NonEmptyStr, Password
from pydantic import AnyHttpUrl, Field, SecretStr, validator
from typing_extensions import Annotated, Self

from ....api import prowlarr_api_client
from ....secrets import ProwlarrSecrets
from ....types import ArrApiKey, LowerCaseNonEmptyStr
from ....types import ArrApiKey
from ...types import ProwlarrConfigBase

logger = getLogger(__name__)
Expand Down Expand Up @@ -394,7 +394,7 @@ def validate_api_key(
def _resolve(self) -> Self:
if self.instance_name:
resolved = self.copy(deep=True)
resolved.api_key = state.secrets.radarr[ # type: ignore[attr-defined]
resolved.api_key = state.instance_secrets["radarr"][ # type: ignore[attr-defined]
self.instance_name
].api_key.get_secret_value()
return resolved
Expand Down Expand Up @@ -529,7 +529,7 @@ def _get_base_remote_map(
def _resolve(self) -> Self:
if self.instance_name:
resolved = self.copy(deep=True)
resolved.api_key = state.secrets.sonarr[ # type: ignore[attr-defined]
resolved.api_key = state.instance_secrets["sonarr"][ # type: ignore[attr-defined]
self.instance_name
].api_key.get_secret_value()
return resolved
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,9 @@
from typing import Any, Dict, List, Literal, Mapping, Optional, Set

from buildarr.config import RemoteMapEntry
from buildarr.types import BaseEnum, NonEmptyStr, Password, Port
from buildarr.types import BaseEnum, LowerCaseNonEmptyStr, NonEmptyStr, Password, Port
from pydantic import validator

from ....types import LowerCaseNonEmptyStr
from .base import DownloadClient

logger = getLogger(__name__)
Expand Down
3 changes: 1 addition & 2 deletions buildarr_prowlarr/config/settings/download_clients/usenet.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,9 @@
from typing import Dict, List, Literal, Mapping, Optional, Set

from buildarr.config import RemoteMapEntry
from buildarr.types import BaseEnum, NonEmptyStr, Password, Port
from buildarr.types import BaseEnum, LowerCaseNonEmptyStr, NonEmptyStr, Password, Port
from pydantic import SecretStr

from ....types import LowerCaseNonEmptyStr
from .base import DownloadClient

logger = getLogger(__name__)
Expand Down
3 changes: 1 addition & 2 deletions buildarr_prowlarr/config/settings/indexers/indexers.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,12 @@
import prowlarr

from buildarr.config import RemoteMapEntry
from buildarr.types import NonEmptyStr, Password
from buildarr.types import LowerCaseNonEmptyStr, NonEmptyStr, Password
from pydantic import Field, validator
from typing_extensions import Annotated, Self

from ....api import prowlarr_api_client
from ....secrets import ProwlarrSecrets
from ....types import LowerCaseNonEmptyStr
from ....util import zulu_datetime_format
from ...types import ProwlarrConfigBase

Expand Down
5 changes: 2 additions & 3 deletions buildarr_prowlarr/config/settings/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,11 @@
import prowlarr

from buildarr.config import RemoteMapEntry
from buildarr.types import BaseEnum
from buildarr.types import BaseEnum, LowerCaseNonEmptyStr
from typing_extensions import Self

from ...api import prowlarr_api_client
from ...secrets import ProwlarrSecrets
from ...types import LowerCaseStr
from ..types import ProwlarrConfigBase


Expand Down Expand Up @@ -196,7 +195,7 @@ class ProwlarrUISettings(ProwlarrConfigBase):
"""

# Language
ui_language: LowerCaseStr = "en" # type: ignore[assignment]
ui_language: LowerCaseNonEmptyStr = "en" # type: ignore[assignment]
"""
The display language for the Prowlarr UI.
Expand Down
11 changes: 1 addition & 10 deletions buildarr_prowlarr/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,11 @@

from typing import Literal

from pydantic import ConstrainedStr, SecretStr
from pydantic import SecretStr

ProwlarrProtocol = Literal["http", "https"]


class LowerCaseStr(ConstrainedStr):
to_lower = True


class LowerCaseNonEmptyStr(LowerCaseStr):
min_length = 1
strip_whitespace = True


class ArrApiKey(SecretStr):
"""
Constrained secret string type for an Arr stack application API key.
Expand Down
Loading

0 comments on commit 9d6e86d

Please sign in to comment.