8cdeadd6dd
PR 1 of 4 for the runtime service registry change. - Add Fernet encryption helper (services/secrets.py) with a required MANAGE_ENCRYPTION_KEY; validate it on startup. - Add closed integrations/ registry with Pydantic config + widget-config definitions for grafana, prometheus, jellyfin, nextcloud, and ssh_tasks. - Add services + service_task_runs tables and SettingsStore CRUD with cascade-delete (defensive until widgets carry service_id). - Add /api/services/types and /api/services/instances CRUD (encrypted secrets, secrets_set flags only; never plaintext). - Declare cryptography as a direct dependency. - Require MANAGE_ENCRYPTION_KEY in compose + .env.example + README. - Add 25 backend tests (registry, encryption, CRUD, cascade, task-run history). Verification: ruff clean; pytest 225 passed; frontend lint/build green.
42 lines
873 B
TOML
42 lines
873 B
TOML
[project]
|
|
name = "media-library-viewer-backend"
|
|
version = "0.1.0"
|
|
description = "FastAPI backend for Manage"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"fastapi>=0.100",
|
|
"uvicorn[standard]>=0.20",
|
|
"pydantic-settings>=2.0",
|
|
"paramiko>=3.0",
|
|
"requests>=2.28",
|
|
"python-dotenv>=1.0",
|
|
"pandas>=2.0",
|
|
"PyJWT[crypto]>=2.8",
|
|
"python-multipart>=0.0.9",
|
|
"prometheus-client>=0.21",
|
|
"python-json-logger>=2.0",
|
|
"cryptography>=42.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["httpx", "pytest", "pytest-asyncio", "ruff"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/media_library_viewer_api"]
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
target-version = "py311"
|
|
src = ["src"]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "W"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
pythonpath = ["src"]
|