Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
182 lines (172 loc) · 5.12 KB
/
Copy pathpyproject.toml
File metadata and controls
182 lines (172 loc) · 5.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
[project]
name = "redisvl"
# NOTE: This version value is automatically incremented by the release workflow - do not manually adjust it.
version = "0.28.0"
description = "Python client library and CLI for using Redis as a vector database"
authors = [{ name = "Redis Inc.", email = "applied.ai@redis.com" }]
requires-python = ">=3.10,<3.15"
readme = "README.md"
license = "MIT"
keywords = [
"ai",
"redis",
"redis-client",
"vector-database",
"vector-search",
]
classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"License :: OSI Approved :: MIT License",
]
dependencies = [
"numpy>=1.26.0,<3",
"pyyaml>=5.4,<7.0",
# 6.3.0 first accepts SVS-VAMANA. redis-py 8.0.0 returns empty RESP3
# search results (redis-py #4107), so 8.1.0 is the supported 8.x floor.
"redis>=6.3.0,!=8.0.0,<9.0",
"pydantic>=2,<3",
"tenacity>=8.2.2",
"ml-dtypes>=0.4.0,<1.0.0",
"python-ulid>=3.0.0",
"jsonpath-ng>=1.5.0",
]
[project.optional-dependencies]
mcp = [
# Upper-bounded because the MCP protocol revision is chosen by this
# dependency, not by RedisVL: the SDK's LATEST_PROTOCOL_VERSION is the
# ceiling a server can negotiate. The 2026-07-28 revision is a breaking,
# stateless redesign of the protocol core, so a major bump could change both
# the negotiated version and how tools advertise their input schemas.
# Supporting that revision is its own piece of work.
"fastmcp>=2.0.0,<4",
"pydantic-settings>=2.0,<3",
]
mistralai = ["mistralai>=1.0.0,<2"]
openai = ["openai>=1.1.0"]
cohere = ["cohere>=4.44"]
# The [video] extra pulls ffmpeg-python, which voyageai>=0.5.0 moved out of its
# core deps; embed_video's Video.from_path needs it, so keep it here to preserve
# out-of-the-box video support (ffmpeg-python is a lightweight pure-Python wrapper).
voyageai = ["voyageai[video]>=0.5.0"]
# Floor is a security constraint, not an API one: below 5.2.0 pins transformers<5.0.0.
sentence-transformers = ["sentence-transformers>=5.2.0,<6"]
langcache = ["langcache>=0.11.0"]
# Legacy Google backend for the deprecated VertexAIVectorizer. The <2.0.0 cap is
# intentional: Google's model-garden modules (vertexai.language_models /
# vertexai.vision_models) that this vectorizer imports are deprecated with a
# scheduled removal. They still ship in the 1.x line (latest 1.162.0); the 2.0.0
# release that drops them is yanked on PyPI. Keep the cap so the deprecated class
# (and its multimodal path, which has no google-genai replacement yet) keeps
# importing. New text embeddings should use the `google-genai` extra below.
vertexai = [
"google-cloud-aiplatform>=1.26,<2.0.0",
# Uncapped on purpose: nothing here imports protobuf, so the bound belongs
# to google-cloud-aiplatform, which declares its own.
"protobuf>=5.28.0",
]
# Modern Google backend (Vertex AI + Gemini Developer API) for GoogleGenAIVectorizer.
google-genai = ["google-genai>=1.0.0"]
bedrock = [
"boto3>=1.36.0,<2",
"urllib3<2.9.0",
]
pillow = [
"pillow>=11.3.0",
]
sql-redis = [
"sql-redis>=0.7.1",
]
all = [
"mistralai>=1.0.0,<2",
"openai>=1.1.0",
"cohere>=4.44",
"voyageai[video]>=0.5.0",
"sentence-transformers>=5.2.0,<6",
"langcache>=0.11.0",
"google-cloud-aiplatform>=1.26,<2.0.0",
"protobuf>=5.28.0",
"google-genai>=1.0.0",
"boto3>=1.36.0,<2",
"urllib3<2.9.0",
"pillow>=11.3.0",
"sql-redis>=0.7.1",
"ollama>=0.5.4",
]
ollama = [
"ollama>=0.5.4",
]
[project.urls]
Homepage = "https://github.com/redis/redis-vl-python"
Repository = "https://github.com/redis/redis-vl-python"
Documentation = "https://docs.redisvl.com"
[project.scripts]
rvl = "redisvl.cli.runner:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[dependency-groups]
dev = [
"black>=25.1.0,<27",
"isort>=5.6.4,<6",
"pylint>=3.1.0,<4",
"pytest>=8.1.1,<9",
"pytest-asyncio>=0.23.6,<0.24",
"pytest-xdist[psutil]>=3.6.1,<4",
"pre-commit>=4.1.0,<5",
"mypy>=1.11.0,<2",
"nbval>=0.11.0,<0.12",
"types-pyyaml",
"types-pyopenssl",
"testcontainers>=4.3.1,<5",
"filelock>=3.12,<4",
"cryptography>=44.0.1",
"codespell>=2.4.1,<3",
"langcache>=0.9.0",
]
docs = [
"sphinx>=4.4.0",
"sphinx-book-theme>=1.0.0",
"nbsphinx>=0.9.3,<0.10",
"jinja2>=3.1.3,<4",
"sphinx-copybutton>=0.5.2,<0.6",
"sphinx-favicon>=1.0.1,<2",
"sphinx-design>=0.5.0,<0.6",
"myst-nb>=1.1.0,<2",
"sphinxcontrib-mermaid>=0.9.2,<1",
]
[tool.uv]
default-groups = [
"dev",
"docs",
]
[tool.black]
target-version = ['py310', 'py311', 'py312', 'py313', 'py314']
exclude = '''
(
| \.egg
| \.git
| \.hg
| \.mypy_cache
| \.nox
| \.tox
| \.venv
| _build
| build
| dist
| setup.py
)
'''
[tool.pytest.ini_options]
log_cli = true
asyncio_mode = "auto"
[tool.mypy]
warn_unused_configs = true
ignore_missing_imports = true
exclude = ["env", "venv", ".venv"]
[[tool.mypy.overrides]]
module = ["mistralai", "mistralai.*"]
follow_imports = "skip"