121 lines
2.7 KiB
TOML
121 lines
2.7 KiB
TOML
[project]
|
|
name = "ragcore"
|
|
version = "1.2.1"
|
|
description = "Central, secure, local-first RAG platform"
|
|
readme = "README.md"
|
|
requires-python = ">=3.13,<3.14"
|
|
license = { text = "Proprietary" }
|
|
authors = [{ name = "ITWorx" }]
|
|
dependencies = [
|
|
"fastapi>=0.116,<1",
|
|
"pydantic-settings>=2.10,<3",
|
|
"uvicorn[standard]>=0.35,<1",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
control = [
|
|
"alembic>=1.16,<2",
|
|
"psycopg[binary,pool]>=3.2,<4",
|
|
"sqlalchemy[asyncio]>=2.0.41,<3",
|
|
]
|
|
retrieval = [
|
|
"httpx>=0.28,<1",
|
|
"qdrant-client>=1.15,<2",
|
|
]
|
|
ingestion = [
|
|
"docling>=2.117,<2.118",
|
|
"python-multipart>=0.0.20,<1",
|
|
]
|
|
auth = [
|
|
"httpx>=0.28,<1",
|
|
"pyjwt[crypto]>=2.10,<3",
|
|
]
|
|
telemetry = [
|
|
"opentelemetry-api>=1.27,<2",
|
|
"opentelemetry-sdk>=1.27,<2",
|
|
"opentelemetry-exporter-otlp-proto-http>=1.27,<2",
|
|
]
|
|
web = [
|
|
"jinja2>=3.1.6,<4",
|
|
"python-multipart>=0.0.20,<1",
|
|
]
|
|
mcp = [
|
|
"mcp>=1.12,<3",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"mypy>=1.17,<2",
|
|
"pytest>=8.4,<9",
|
|
"pytest-asyncio>=1.1,<2",
|
|
"pytest-cov>=6.2,<7",
|
|
"pyyaml>=6.0.2,<7",
|
|
"ruff>=0.12,<1",
|
|
"types-pyyaml>=6.0.12,<7",
|
|
"httpx>=0.28,<1",
|
|
"playwright>=1.62.0",
|
|
"ragcore-sdk",
|
|
]
|
|
|
|
[project.scripts]
|
|
ragcore = "ragcore.main:run"
|
|
ragcore-worker = "ragcore.worker:run"
|
|
ragcore-mcp = "ragcore.mcp.main:run"
|
|
ragcore-modelforge-shadow = "ragcore.ops.modelforge_shadow:run"
|
|
ragcore-modelforge-evaluate = "ragcore.ops.modelforge_evaluate:run"
|
|
ragcore-modelforge-rerank-evaluate = "ragcore.ops.modelforge_rerank_evaluate:run"
|
|
ragcore-modelforge-selected-comparison = "ragcore.ops.modelforge_selected_comparison:run"
|
|
ragcore-modelforge-embedding-cutover = "ragcore.ops.modelforge_embedding_cutover:run"
|
|
ragcore-modelforge-embedding-bootstrap = "ragcore.ops.modelforge_embedding_bootstrap:run"
|
|
|
|
[build-system]
|
|
requires = ["uv_build>=0.8,<1"]
|
|
build-backend = "uv_build"
|
|
|
|
[tool.uv.build-backend]
|
|
module-name = "ragcore"
|
|
module-root = "src"
|
|
|
|
[tool.uv.workspace]
|
|
members = ["sdk/python"]
|
|
|
|
[tool.uv.sources]
|
|
ragcore-sdk = { workspace = true }
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
addopts = "-ra --strict-markers --strict-config"
|
|
asyncio_mode = "auto"
|
|
markers = [
|
|
"integration: requires disposable infrastructure",
|
|
"security: authorization or adversarial security test",
|
|
"evaluation: retrieval/generation quality gate",
|
|
]
|
|
|
|
[tool.ruff]
|
|
target-version = "py313"
|
|
line-length = 100
|
|
src = ["src", "tests", "scripts"]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP", "B", "SIM", "ASYNC", "S", "RUF"]
|
|
ignore = ["S101"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/**" = ["S105", "S106"]
|
|
"scripts/**" = ["S603", "S607"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.13"
|
|
strict = true
|
|
mypy_path = "src"
|
|
plugins = ["pydantic.mypy"]
|
|
|
|
[tool.coverage.run]
|
|
branch = true
|
|
source = ["ragcore"]
|
|
|
|
[tool.coverage.report]
|
|
show_missing = true
|
|
fail_under = 80
|