[build-system] requires = ["poetry-core", "setuptools", "wheel"] build-backend = "poetry.core.masonry.api" [tool.poetry] name = "r2r" version = "0.2.59" description = "SciPhi R2R" authors = ["Owen Colegrove "] license = "MIT" readme = "README.md" include = ["config.json", "compose.yaml", "compose.neo4j.yaml"] [tool.poetry.dependencies] # Python Versions python = ">=3.9,<3.13" # Required dependencies # python pydantic = "^2.6.3" python-multipart = "^0.0.9" # infrastructure fastapi = "^0.109.2" fire = "^0.5.0" gunicorn = "^21.2.0" requests = "^2.31.0" types-requests = "^2.31.0" uvicorn = "^0.27.0.post1" # TODO - Make some of these optional # async db providers aiosqlite = "^0.20.0" asyncpg = "^0.29.0" redis = "^5.0.4" # ingestion beautifulsoup4 = "^4.12.3" openpyxl = "^3.1.2" markdown = "^3.6" pypdf = "^4.2.0" python-pptx = "^0.6.23" python-docx = "^1.1.0" nest-asyncio = "^1.6.0" opencv-python = { version = "^4.10.0.82", optional = true } moviepy = { version = "^1.0.3", optional = true } # embedding providers tiktoken = {version = "^0.5.2", optional = true} sentence-transformers = {version = "^2.7.0", optional = true} # vector db providers vecs = "^0.4.0" # llm providers litellm = "^1.35.18" openai = "^1.11.1" # integrations fsspec = "^2024.6.0" posthog = "^3.5.0" sqlalchemy = "^2.0.30" ollama = "^0.2.1" neo4j = "^5.21.0" [tool.poetry.extras] all = ["tiktoken", "sentence-transformers", "moviepy", "opencv-python"] local-embedding = ["sentence-transformers"] ingest-movies = ["moviepy", "opencv-python"] [tool.poetry.group.dev.dependencies] black = "^24.3.0" codecov = "^2.1.13" flake8 = "6.1.0" isort = "5.12.0" mypy = "^1.5.1" pre-commit = "^2.9" pytest = "^8.2.0" pytest-asyncio = "^0.23.6" pytest-dependency = "^0.6.0" pytest-mock = "^3.14.0" pytest-cov = "^5.0.0" [tool.poetry.scripts] r2r = "r2r.cli.cli:main" [tool.black] line-length = 79 [tool.mypy] ignore_missing_imports = true exclude = 'playground/.*|deprecated/.*|dump/.*|docs/source|vecs/*' [[tool.mypy.overrides]] module = "yaml" ignore_missing_imports = true [tool.pytest.ini_options] asyncio_mode = "auto" addopts = "--cov=r2r --cov-report=term-missing --cov-report=xml" testpaths = [ "tests", ] filterwarnings = [ "ignore::DeprecationWarning", "ignore::pytest.PytestUnraisableExceptionWarning", ]