513019786e
Move semantic_search_notes off the full-table Python cosine scan onto a native pgvector column: indexed ORDER BY embedding <=> :q LIMIT k (HNSW, cosine). Migration 0067 enables the extension, converts the JSONB embedding column to vector(384) (stale-dim rows dropped and regenerated by the startup backfill), and builds the HNSW cosine index. Postgres image moves postgres:16-alpine -> pgvector/pgvector:pg17 across prod, quickstart, and CI. Scribe: project 2, milestone 93, task 1031. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xz4j1H7pjYSjKsEpgcNH5E
57 lines
1.4 KiB
TOML
57 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",
|
|
"pgvector>=0.3",
|
|
]
|
|
|
|
[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
|
|
]
|