pyproject.toml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. [[tool.poetry.source]]
  2. name = "aliyun"
  3. url = "https://mirrors.aliyun.com/pypi/simple"
  4. priority = "primary"
  5. [build-system]
  6. requires = ["poetry-core", "setuptools", "wheel"]
  7. build-backend = "poetry.core.masonry.api"
  8. [tool.poetry]
  9. name = "r2r"
  10. readme = "README.md"
  11. version = "3.3.14"
  12. description = "SciPhi R2R"
  13. authors = ["Owen Colegrove <owen@sciphi.ai>"]
  14. license = "MIT"
  15. include = ["r2r.toml", "compose.yaml", "compose.full.yaml", "pyproject.toml", "migrations/**/*" ]
  16. packages = [
  17. { include = "r2r" },
  18. { include = "sdk", from = "." },
  19. { include = "shared", from = "." },
  20. { include = "core", from = "." },
  21. { include = "cli", from = "." },
  22. ]
  23. [tool.poetry.dependencies]
  24. # Python Versions
  25. python = ">=3.10,<3.13"
  26. alembic = "^1.13.3"
  27. asyncclick = "^8.1.7.2"
  28. click = "^8.0.0"
  29. fastapi = "^0.114.0"
  30. httpx = "^0.27.0"
  31. litellm = "^1.52.8" # move back to optional after zerox integration is complete
  32. nest-asyncio = "^1.6.0"
  33. openai = "^1.11.1"
  34. posthog = "^3.5.0"
  35. python-dotenv = "^1.0.1"
  36. requests = "^2.31.0"
  37. toml = "^0.10.2"
  38. types-requests = "^2.31.0"
  39. unstructured-client = "^0.25.5"
  40. psycopg-binary = "^3.2.3"
  41. aiosmtplib = "^3.0.2"
  42. types-aiofiles = "^24.1.0.20240626"
  43. aiohttp = "^3.10.10"
  44. typing-extensions = "^4.12.2"
  45. # Shared dependencies (optional)
  46. aiosqlite = { version = "^0.20.0", optional = true }
  47. apscheduler = { version = "^3.10.4", optional = true }
  48. asyncpg = { version = "^0.29.0", optional = true }
  49. bcrypt = { version = "^4.1.3", optional = true }
  50. boto3 = { version = "^1.35.17", optional = true } # for AWS bedrock support
  51. colorlog = { version = "^6.9.0", optional = true }
  52. deepdiff = { version = "^7.0.1", optional = true }
  53. fire = { version = "^0.5.0", optional = true }
  54. fsspec = { version = "^2024.6.0", optional = true }
  55. future = { version = "^1.0.0", optional = true }
  56. graspologic = { version = "^3.4.1", optional = true }
  57. gunicorn = { version = "^21.2.0", optional = true }
  58. hatchet-sdk = { version = "^0.38.0", optional = true }
  59. networkx = { version = "^3.3", optional = true }
  60. ollama = { version = "^0.3.1", optional = true }
  61. passlib = { version = "^1.7.4", optional = true }
  62. psutil = { version = "^6.0.0", optional = true }
  63. python-multipart = { version = "^0.0.9", optional = true }
  64. pydantic = { extras = ["email"], version = "^2.8.2", optional = true }
  65. pyjwt = { version = "^2.8.0", optional = true }
  66. pyyaml = { version = "^6.0.1", optional = true }
  67. sendgrid = { version = "^6.11.0", optional = true }
  68. sqlalchemy = { version = "^2.0.30", optional = true }
  69. supabase = { version = "^2.7.4", optional = true }
  70. tokenizers = { version = "0.19", optional = true }
  71. uvicorn = { version = "^0.27.0.post1", optional = true }
  72. vecs = { version = "^0.4.0", optional = true }
  73. # R2R Ingestion
  74. aiofiles = { version = "^24.1.0", optional = true }
  75. aioshutil = { version = "^1.5", optional = true }
  76. beautifulsoup4 = { version = "^4.12.3", optional = true }
  77. bs4 = { version = "^0.0.2", optional = true }
  78. numpy = { version = ">=1.22.4,<1.29.0", optional = true }
  79. markdown = { version = "^3.6", optional = true }
  80. openpyxl = { version = "^3.1.2", optional = true }
  81. pdf2image = { version = "^1.17.0", optional = true }
  82. pypdf = { version = "^4.2.0", optional = true }
  83. pypdf2 = { version = "^3.0.1", optional = true }
  84. python-pptx = { version = "^1.0.1", optional = true }
  85. python-docx = { version = "^1.1.0", optional = true }
  86. [tool.poetry.extras]
  87. core = [
  88. "aiosqlite",
  89. "apscheduler",
  90. "asyncpg",
  91. "bcrypt",
  92. "boto3",
  93. "colorlog",
  94. "deepdiff",
  95. "fire",
  96. "fsspec",
  97. "future",
  98. "graspologic",
  99. "gunicorn",
  100. "hatchet-sdk",
  101. "networkx",
  102. "ollama",
  103. "passlib",
  104. "psutil",
  105. "pydantic",
  106. "pyjwt",
  107. "pyyaml",
  108. "sendgrid",
  109. "sqlalchemy",
  110. "supabase",
  111. "tokenizers",
  112. "unstructured-client",
  113. "uvicorn",
  114. "vecs",
  115. "python-multipart",
  116. ]
  117. ingestion-bundle = [
  118. "aiofiles",
  119. "aioshutil",
  120. "beautifulsoup4",
  121. "bs4",
  122. "numpy",
  123. "markdown",
  124. "openpyxl",
  125. "pdf2image",
  126. "pypdf",
  127. "pypdf2",
  128. "python-pptx",
  129. "python-docx",
  130. ]
  131. [tool.poetry.group.dev.dependencies]
  132. black = "^24.3.0"
  133. colorama = "^0.4.6"
  134. isort = "5.12.0"
  135. mypy = "^1.5.1"
  136. pre-commit = "^2.9"
  137. pytest = "^8.2.0"
  138. pytest-asyncio = "^0.23.6"
  139. pytest-dependency = "^0.6.0"
  140. pytest-mock = "^3.14.0"
  141. pytest-cov = "^5.0.0"
  142. pytest-html = "^4.1.1"
  143. types-toml = "^0.10.8"
  144. [tool.black]
  145. line-length = 79
  146. target-version = ['py39']
  147. include = '\.pyi?$'
  148. extend-exclude = '''
  149. /(
  150. # directories
  151. \.eggs
  152. | \.git
  153. | \.hg
  154. | \.mypy_cache
  155. | \.tox
  156. | \.venv
  157. | build
  158. | dist
  159. )/
  160. '''
  161. [tool.isort]
  162. line_length = 79
  163. profile = "black"
  164. [tool.mypy]
  165. ignore_missing_imports = true
  166. exclude = 'core/parsers/media/pyzerox/.*|playground/.*|deprecated/.*|dump/.*|docs/source|vecs/*|core/examples/*|sdk/examples/*|cli/examples/*|tests/*'
  167. [[tool.mypy.overrides]]
  168. module = "yaml"
  169. ignore_missing_imports = true
  170. [tool.poetry.scripts]
  171. r2r = "cli.main:main"
  172. [tool.pytest.ini_options]
  173. asyncio_mode = "auto"
  174. addopts = "--cov=r2r --cov-report=term-missing --cov-report=xml --cache-clear"
  175. testpaths = [
  176. "tests",
  177. ]
  178. filterwarnings = [
  179. "ignore::DeprecationWarning",
  180. "ignore::pytest.PytestUnraisableExceptionWarning",
  181. ]