steward_mirror/pyproject.toml
Daniel Wagner d5eac108f8 feat: implement OmegaConf-based configuration management with uv
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
2026-07-26 12:34:23 +10:00

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"]