feat(supervisor): port Python supervisor from padelnomics + workflows.toml
Port padelnomics' schedule-aware Python supervisor to materia: - src/materia/supervisor.py — croniter scheduling, topological wave execution (parallel independent workflows), tag-based git pull + deploy, status CLI subcommand - infra/supervisor/workflows.toml — workflow registry (psd daily, cot weekly, prices daily, ice daily, weather daily) - infra/supervisor/materia-supervisor.service — updated ExecStart to Python supervisor, added SUPERVISOR_GIT_PULL=1 Adaptations from padelnomics: - Uses extract_core.state.open_state_db (not padelnomics_extract.utils) - uv run sqlmesh -p transform/sqlmesh_materia run - uv run materia pipeline run export_serving - web/deploy.sh path (materia's deploy.sh is under web/) - Removed proxy_mode (not used in materia) Also: add croniter dependency to src/materia, delete old supervisor.sh. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
34
uv.lock
generated
34
uv.lock
generated
@@ -14,7 +14,7 @@ members = [
|
||||
"extract-core",
|
||||
"ice-stocks",
|
||||
"materia",
|
||||
"openweathermap",
|
||||
"openmeteo",
|
||||
"psdonline",
|
||||
"sqlmesh-materia",
|
||||
]
|
||||
@@ -1566,6 +1566,7 @@ name = "materia"
|
||||
version = "0.1.0"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "croniter" },
|
||||
{ name = "hcloud" },
|
||||
{ name = "msgspec" },
|
||||
{ name = "niquests" },
|
||||
@@ -1593,6 +1594,7 @@ exploration = [
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "croniter", specifier = ">=6.0.0" },
|
||||
{ name = "hcloud", specifier = ">=2.8.0" },
|
||||
{ name = "msgspec", specifier = ">=0.19" },
|
||||
{ name = "niquests", specifier = ">=3.15.2" },
|
||||
@@ -1766,6 +1768,21 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openmeteo"
|
||||
version = "0.1.0"
|
||||
source = { editable = "extract/openmeteo" }
|
||||
dependencies = [
|
||||
{ name = "extract-core" },
|
||||
{ name = "niquests" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "extract-core", editable = "extract/extract_core" },
|
||||
{ name = "niquests", specifier = ">=3.14.1" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-api"
|
||||
version = "1.39.1"
|
||||
@@ -1779,21 +1796,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openweathermap"
|
||||
version = "0.1.0"
|
||||
source = { editable = "extract/openweathermap" }
|
||||
dependencies = [
|
||||
{ name = "extract-core" },
|
||||
{ name = "niquests" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "extract-core", editable = "extract/extract_core" },
|
||||
{ name = "niquests", specifier = ">=3.14.1" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "orjson"
|
||||
version = "3.11.7"
|
||||
|
||||
Reference in New Issue
Block a user