Enable Ruff PTH for the script directory (#124441)

* Enable Ruff PTH for the script directory

* Address review comments

* Fix translations script

* Update script/hassfest/config_flow.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
Sid
2024-09-06 11:33:01 +02:00
committed by GitHub
parent 7752789c3a
commit 1db68327f9
18 changed files with 125 additions and 163 deletions

View File

@@ -4,8 +4,7 @@
from __future__ import annotations
import json
import os
import pathlib
from pathlib import Path
import re
import subprocess
@@ -14,7 +13,7 @@ from .error import ExitApp
from .util import get_lokalise_token, load_json_from_path
FILENAME_FORMAT = re.compile(r"strings\.(?P<suffix>\w+)\.json")
DOWNLOAD_DIR = pathlib.Path("build/translations-download").absolute()
DOWNLOAD_DIR = Path("build/translations-download").absolute()
def run_download_docker():
@@ -56,35 +55,32 @@ def run_download_docker():
raise ExitApp("Failed to download translations")
def save_json(filename: str, data: list | dict):
"""Save JSON data to a file.
Returns True on success.
"""
data = json.dumps(data, sort_keys=True, indent=4)
with open(filename, "w", encoding="utf-8") as fdesc:
fdesc.write(data)
return True
return False
def save_json(filename: Path, data: list | dict) -> None:
"""Save JSON data to a file."""
filename.write_text(json.dumps(data, sort_keys=True, indent=4), encoding="utf-8")
def get_component_path(lang, component):
def get_component_path(lang, component) -> Path | None:
"""Get the component translation path."""
if os.path.isdir(os.path.join("homeassistant", "components", component)):
return os.path.join(
"homeassistant", "components", component, "translations", f"{lang}.json"
if (Path("homeassistant") / "components" / component).is_dir():
return (
Path("homeassistant")
/ "components"
/ component
/ "translations"
/ f"{lang}.json"
)
return None
def get_platform_path(lang, component, platform):
def get_platform_path(lang, component, platform) -> Path:
"""Get the platform translation path."""
return os.path.join(
"homeassistant",
"components",
component,
"translations",
f"{platform}.{lang}.json",
return (
Path("homeassistant")
/ "components"
/ component
/ "translations"
/ f"{platform}.{lang}.json"
)
@@ -107,7 +103,7 @@ def save_language_translations(lang, translations):
f"Skipping {lang} for {component}, as the integration doesn't seem to exist."
)
continue
os.makedirs(os.path.dirname(path), exist_ok=True)
path.parent.mkdir(parents=True, exist_ok=True)
save_json(path, base_translations)
if "platform" not in component_translations:
@@ -117,7 +113,7 @@ def save_language_translations(lang, translations):
"platform"
].items():
path = get_platform_path(lang, component, platform)
os.makedirs(os.path.dirname(path), exist_ok=True)
path.parent.mkdir(parents=True, exist_ok=True)
save_json(path, platform_translations)