Spaces:
Running
Running
| [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", | |
| ] | |