pyproject.toml 5.6 KB

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