Files
FabledScribe/pyproject.toml
T
bvandeusen 2ad2e943f3
CI & Build / Python lint (push) Successful in 2s
CI & Build / integration (push) Failing after 19s
CI & Build / TypeScript typecheck (push) Successful in 20s
CI & Build / Python tests (push) Successful in 45s
CI & Build / Build & push image (push) Successful in 1m1s
test(ci): add Postgres integration lane + real run_maintenance guard
The unit suite can't catch sync/async API mismatches against SQLAlchemy (an
un-awaited execution_options passed green CI but failed at runtime: VACUUM 0/6).
Add a real-Postgres integration lane modelled on the family pattern (rules
6/79-82): a new CI 'integration' job with a postgres:16 service, bridge-IP
discovery, busybox-safe readiness wait, and 'alembic upgrade head', running
pytest -m integration. Non-gating, like the unit lane.

- tests/test_integration_db_maintenance.py: runs run_maintenance() and
  get_table_health() against real Postgres; asserts all allowlisted tables
  vacuum OK (the await regression makes this fail) and health reports real stats.
- pyproject: register the 'integration' marker.
- conftest: integration-marked tests use the real DATABASE_URL, not the stub.
- ci.yml: unit 'test' job now runs -m 'not integration'.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 19:19:18 -04:00

56 lines
1.4 KiB
TOML

[build-system]
requires = ["setuptools>=68.0", "setuptools-scm>=8.0"]
build-backend = "setuptools.build_meta"
[project]
name = "scribe"
version = "0.1.0"
description = "Self-hosted note-taking, project-management, and calendar app exposed to Claude via MCP"
requires-python = ">=3.14"
dependencies = [
"quart>=0.19",
"sqlalchemy[asyncio]>=2.0",
"asyncpg>=0.29",
"alembic>=1.13",
"httpx>=0.27",
"hypercorn>=0.17",
"bcrypt>=4.0",
"aiosmtplib>=3.0",
"caldav>=1.3",
"icalendar>=5.0",
"APScheduler>=3.10,<4.0",
"mcp[cli]>=1.0",
"fastembed>=0.4",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"ruff>=0.6",
]
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
markers = [
"integration: requires a real Postgres database (runs only in the CI integration lane)",
]
[tool.ruff]
line-length = 120
target-version = "py312"
[tool.ruff.lint]
# E = pycodestyle errors, F = pyflakes (catches unused imports, undefined names)
# Start conservative — add more rules as the codebase gains coverage.
select = ["E", "F"]
ignore = [
"E501", # line too long — long lines are acceptable in this codebase
"E402", # module-level import not at top — common in Quart app factories
"F401", # imported but unused — some re-exports are intentional
]