Configuration changes: - Replace pydantic-settings with OmegaConf for flexible config management - Support YAML config files via CONFIG_FILE environment variable - Support environment variables with STEWARD__SECTION__KEY format - Add config_schema.yaml as default configuration schema - Create pydantic models for each configuration section for type safety - Maintain backward compatibility via properties on Settings class - Add CONFIGURATION.md with comprehensive setup and usage guide - Update pyproject.toml to include config_schema.yaml in package data Build/deployment changes: - Replace pip with uv in Dockerfile for faster dependency installation - Create docker-compose.dev.yml for local development (build .) - Keep docker-compose.yml for production (uses ghcr.io/djw4/steward:latest) - Update .env.example with new STEWARD__* variable format This setup is designed for Kubernetes deployment: - Non-sensitive config goes in ConfigMap (config.yaml) - Secrets go in Secret resources (environment variables) - Single unified configuration system for all environments
57 lines
1.1 KiB
TOML
57 lines
1.1 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "steward"
|
|
version = "0.1.1"
|
|
description = "A long-running, AI-assisted personal operations platform"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"python-telegram-bot>=21.0",
|
|
"openai>=1.30",
|
|
"httpx>=0.27",
|
|
"python-dotenv>=1.0",
|
|
"apscheduler>=3.10",
|
|
"pydantic>=2.7",
|
|
"pydantic-settings>=2.3",
|
|
"omegaconf>=2.3",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.2",
|
|
"pytest-asyncio>=0.23",
|
|
"pytest-mock>=3.14",
|
|
"ruff>=0.4",
|
|
"mypy>=1.10",
|
|
"respx>=0.21",
|
|
]
|
|
|
|
[project.scripts]
|
|
steward = "steward.main:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["steward*"]
|
|
|
|
[tool.setuptools.package-data]
|
|
steward = ["config_schema.yaml"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py312"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.12"
|
|
strict = true
|
|
ignore_missing_imports = true
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = ["tests"]
|