Spaces:
Running
Running
File size: 3,064 Bytes
09ed8ca 2a83c3b 09ed8ca 2a83c3b 09ed8ca 2206073 09ed8ca | 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 113 114 115 116 117 118 119 120 121 122 123 124 | [project]
name = "secureagentrag"
version = "0.1.0"
description = "Privacy-First, Multi-Agent, Production-Grade RAG Platform"
readme = "README.md"
license = { text = "MIT" }
authors = [{ name = "Moaz Muhammad", email = "moazmo@users.noreply.github.com" }]
requires-python = ">=3.11,<3.14"
dependencies = [
"langgraph>=0.2.0",
"langgraph-checkpoint-sqlite>=2.0.0",
"aiosqlite>=0.20.0",
"langchain-core>=0.3.0",
"qdrant-client>=1.12.0",
"ollama>=0.4.0",
"streamlit>=1.40.0",
"pydantic>=2.0",
"pydantic-settings>=2.6.0",
"python-docx>=1.1.0",
"pymupdf>=1.25.0",
"Pillow>=11.0.0",
"structlog>=24.4.0",
"httpx>=0.28.0",
"tenacity>=9.0.0",
"uuid6>=2024.7.10",
"nest-asyncio>=1.6.0",
]
[project.optional-dependencies]
ocr = [
"paddleocr>=2.9.0",
"paddlepaddle>=3.0.0",
]
embeddings-local = [
"sentence-transformers>=3.3.0",
]
evaluation = [
"ragas>=0.2.0",
"pandas>=2.2.0",
]
observability = [
"arize-phoenix>=8.0.0",
"openinference-instrumentation-langchain>=0.1.0",
"openinference-instrumentation-openai>=0.1.0",
"opentelemetry-api>=1.28.0",
"opentelemetry-sdk>=1.28.0",
]
metrics = [
"prometheus-client>=0.21.0",
"prometheus-fastapi-instrumentator>=7.0.0",
]
persistence = [
"psycopg[binary,pool]>=3.2.0",
"langgraph-checkpoint-postgres>=2.0.0",
]
cache = [
"redis>=5.0.0",
]
api = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.32.0",
"python-jose[cryptography]>=3.3.0",
"python-multipart>=0.0.12",
]
mcp = [
"mcp>=1.0.0",
]
pii = [
"presidio-analyzer>=2.2.0",
"presidio-anonymizer>=2.2.0",
]
all = [
"secureagentrag[ocr,embeddings-local,evaluation,observability,metrics,persistence,cache,api,mcp,pii]",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["."]
[dependency-groups]
dev = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=6.0.0",
"ruff>=0.8.0",
]
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # flake8-bugbear
"SIM", # flake8-simplify
"TCH", # flake8-type-checking
"RUF", # ruff-specific rules
]
# RUF001/002/003 flag "ambiguous" Unicode (e.g. Arabic full stop ۔, question
# mark ؟). Arabic is a first-class supported language here, so these fire on
# every legitimate Arabic literal/comment — ignore them project-wide.
ignore = ["E501", "RUF001", "RUF002", "RUF003"]
[tool.ruff.lint.isort]
known-first-party = ["config", "core", "ingestion", "retrieval", "inference", "evaluation", "utils", "app"]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = "-v --tb=short --strict-markers"
markers = [
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
"integration: marks integration tests requiring external services",
]
|