chore: pydantic-settings config, logging, CI workflow

Config (src/config.py):
- pydantic-settings Settings class: OLLAMA_URL, OLLAMA_MODEL, DEBUG
- Reads from .env (gitignored) with sane defaults
- settings singleton imported by health.py and agent.py

Removes two hardcodes:
- health.py: OLLAMA_URL="http://localhost:11434" → settings.ollama_url
- agent.py:  Ollama(id="llama3.2")              → settings.ollama_model

app.py:
- logging.basicConfig at INFO — requests/errors now visible in terminal
- docs_url/redoc_url gated on settings.debug (off by default)

pyproject.toml:
- pydantic-settings>=2.0.0 added to main dependencies
- hatch wheel config updated to include src/config.py

.env.example: documents all three env vars with inline comments
.gitignore: add !.env.example negation so the template gets committed

.github/workflows/tests.yml: runs pytest --cov on every push/PR
(ubuntu-latest, Python 3.11, pip cache)

All 27 tests pass.

https://claude.ai/code/session_01M4L3R98N5fgXFZRvV8X9b6
This commit is contained in:
Claude
2026-02-19 19:31:48 +00:00
parent 46b848a2d7
commit c1d47eb883
8 changed files with 85 additions and 7 deletions

View File

@@ -19,6 +19,7 @@ dependencies = [
"aiofiles>=24.0.0",
"typer>=0.12.0",
"rich>=13.0.0",
"pydantic-settings>=2.0.0",
]
[project.optional-dependencies]
@@ -32,7 +33,8 @@ dev = [
timmy = "timmy.cli:main"
[tool.hatch.build.targets.wheel]
packages = ["src/timmy", "src/dashboard"]
sources = {"src" = ""}
include = ["src/timmy", "src/dashboard", "src/config.py"]
[tool.pytest.ini_options]
testpaths = ["tests"]