pyproject.toml 5.7 KB

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