[Bug]: llama-index-vector-stores-qdrant caps requires-python at <3.14, blocking Python 3.14
Bug Description
llama-index-vector-stores-qdrant declares requires-python = ">=3.10,<3.14", which makes it the only package in an otherwise 3.14-ready LlamaIndex stack that cannot be installed on Python 3.14. pip honours the bound and refuses every release from 0.1.5 onwards; the last installable version on 3.14 is 0.1.4 (from January 2024).
The upper bound looks purely declarative — nothing in the dependency tree requires it:
| package | requires-python | 3.14 |
|---|---|---|
llama-index / llama-index-core 0.14.24 |
>=3.10,<4.0 |
✅ |
llama-index-vector-stores-chroma 0.6.0 |
>=3.10,<4.0 |
✅ |
llama-index-llms-ollama 0.11.0, llama-index-tools-mcp 0.6.0, llama-index-readers-file 0.7.0 |
>=3.10,<4.0 |
✅ |
llama-index-llms-litellm 0.8.0, llama-index-embeddings-litellm 0.6.0 |
>=3.11,<4.0 |
✅ |
llama-index-vector-stores-qdrant 0.10.3 |
>=3.10,<3.14 |
❌ |
Its three dependencies are all fine on 3.14:
qdrant-client>=1.16.0→ 1.19.0 declaresrequires-python >=3.10and aProgramming Language :: Python :: 3.14classifiergrpcio>=1.60.0,<2→ 1.84.0 shipscp314wheelsllama-index-core>=0.13.0,<0.15→>=3.10,<4.0
The package itself is 3.14-clean: installing 0.10.3 with --ignore-requires-python on CPython 3.14.5 and running a real round-trip against an in-memory Qdrant (import, add(), query()) works with no errors — see the logs below.
Requested change: relax the bound to >=3.10,<4.0, in line with llama-index-core and the other vector-store integrations. main still carries <3.14 today.
Impact: projects that target Python 3.14 (we are migrating an Apache Airflow 3.3.1 deployment) cannot install the integration with pip at all. uv happens to ignore Requires-Python upper bounds and installs it anyway, which is how we confirmed the package works — but that is a resolver-specific escape hatch, not a fix, and it leaves the published metadata saying the integration is unsupported on the current Python.
Version
llama-index-core 0.14.24 / llama-index-vector-stores-qdrant 0.10.3 (main unchanged at >=3.10,<3.14)
Steps to Reproduce
$ python3.14 -m venv .venv
$ .venv/bin/pip install "llama-index-vector-stores-qdrant>=0.8.0"
Then, to show the cap is the only thing in the way:
$ .venv/bin/pip install --ignore-requires-python "llama-index-vector-stores-qdrant==0.10.3"
Relevant Logs/Tracebacks
# pip on Python 3.14.5 — every modern release filtered out by the bound
ERROR: Ignored the following versions that require a different python version:
... 0.8.0 Requires-Python >=3.9,<3.14; ... 0.9.2 Requires-Python >=3.9,<3.14;
0.10.0 Requires-Python >=3.10,<3.14; 0.10.1 Requires-Python >=3.10,<3.14;
0.10.2 Requires-Python >=3.10,<3.14; 0.10.3 Requires-Python >=3.10,<3.14
ERROR: Could not find a version that satisfies the requirement llama-index-vector-stores-qdrant>=0.8.0 (from versions: 0.1.3, 0.1.4)
ERROR: No matching distribution found for llama-index-vector-stores-qdrant>=0.8.0
# same interpreter, installed with --ignore-requires-python
python 3.14.5
llama-index-vector-stores-qdrant 0.10.3
llama-index-core 0.14.24
qdrant-client 1.19.0
grpcio 1.84.0
>>> from llama_index.vector_stores.qdrant import QdrantVectorStore
>>> from qdrant_client import QdrantClient
>>> from llama_index.core.schema import TextNode
>>> from llama_index.core.vector_stores.types import VectorStoreQuery
>>> vs = QdrantVectorStore(collection_name="t", client=QdrantClient(location=":memory:"))
>>> vs.add([TextNode(text="hello", embedding=[0.1, 0.2, 0.3])])
['e573b3ad-4540-438c-b085-af7d544a26f7']
>>> vs.query(VectorStoreQuery(query_embedding=[0.1, 0.2, 0.3], similarity_top_k=1)).nodes[0].text
'hello'
Source: run-llama/llama_index