-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
112 lines (96 loc) · 2.9 KB
/
Copy pathpyproject.toml
File metadata and controls
112 lines (96 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
[project]
name = "agentic-rag-api"
version = "0.1.0"
description = "Enterprise API for Document Analysis"
requires-python = ">=3.13"
dependencies = [
# Web framework & server
"fastapi>=0.136",
"starlette>=1.3.1",
"uvicorn>=0.48",
"python-multipart>=0.0.31",
# Database
"sqlalchemy[asyncio]>=2.0",
"alembic>=1.13",
"asyncpg>=0.31",
"psycopg2-binary>=2.9",
"pgvector>=0.4",
# Config & validation
"pydantic-settings>=2.14.2",
"cryptography>=48.0.1",
# Auth & security
"python-jose[cryptography]>=3.5",
"bcrypt>=5.0",
# Task queue
"celery[redis]>=5.6",
# AI / LangChain stack
"langchain-core>=1.4",
"langchain-huggingface>=1.2",
"langchain-ollama>=1.1",
"langchain-text-splitters>=1.1",
"langgraph>=1.2",
"langsmith>=0.8.18",
"sentence-transformers>=5.5",
# Document processing
"pypdf>=6.13.3",
"pdfplumber>=0.11",
"rapidocr-onnxruntime>=1.4",
"pypdfium2>=5.0",
# Cloud storage
"boto3>=1.38",
]
[dependency-groups]
dev = [
"ruff>=0.11",
"black>=25.0",
"interrogate>=1.7",
"pytest>=8.4",
"vulture>=2.13",
"bandit>=1.8",
"pip-audit>=2.9",
]
# ---------------------------------------------------------------------------
# Ruff — linting (pycodestyle, pyflakes, isort, pyupgrade, bugbear)
# ---------------------------------------------------------------------------
[tool.ruff]
line-length = 120
target-version = "py313"
[tool.ruff.lint]
select = ["E", "W", "F", "I", "UP", "B", "C90", "ERA"]
ignore = [
"E501", # line too long — enforced by black instead
"B008", # do not perform function calls in default arguments (FastAPI Depends())
"UP007", # use X | Y for union types — Optional kept for broad compatibility in signatures
"UP042", # (str, enum.Enum) → StrEnum breaks SQLAlchemy's column value resolver;
# SQLAlchemy uses .name (uppercase) for StrEnum instead of .value,
# causing InvalidTextRepresentationError against lowercase DB enum labels
]
[tool.ruff.lint.isort]
known-first-party = ["app"]
[tool.ruff.lint.mccabe]
max-complexity = 12
# ---------------------------------------------------------------------------
# Black — code formatting
# ---------------------------------------------------------------------------
[tool.black]
line-length = 120
target-version = ["py313"]
# ---------------------------------------------------------------------------
# Interrogate — docstring coverage
# ---------------------------------------------------------------------------
[tool.interrogate]
ignore-init-method = true
ignore-init-module = true
ignore-magic = true
ignore-semiprivate = true
ignore-private = true
ignore-property-decorators = true
ignore-nested-functions = true
fail-under = 80
verbose = 1
[tool.pytest.ini_options]
pythonpath = ["."]
testpaths = ["tests"]
[tool.vulture]
min_confidence = 70
paths = ["app", "scripts"]