#23068·llama_index

[Bug]: llama-index-vector-stores-qdrant caps requires-python at <3.14, blocking Python 3.14

Author: marzoliCreated Sep 15, 2026Updated Sep 15, 2026

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 declares requires-python >=3.10 and a Programming Language :: Python :: 3.14 classifier
  • grpcio>=1.60.0,<2 → 1.84.0 ships cp314 wheels
  • llama-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'