Skip to content

test: test compatible integrations with Python 3.15; update pyproject - #4104

Merged
julian-risch merged 6 commits into
mainfrom
test/python-3.15
Oct 15, 2026
Merged

julian-risch merged 6 commits into
mainfrom
test/python-3.15

Conversation

@julian-risch

@julian-risch julian-risch commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Related Issues

Proposed Changes:

Python 3.15.0 was released on 2026-10-09, and haystack-ai supports it since deepset-ai/haystack#13054. This PR follows #3001, which did the same for 3.14:

  • 79 integrations whose dependencies install and import on 3.15: TEST_MATRIX_PYTHON now tests 3.15 instead of 3.14 as the maximum version, and pyproject.toml declares the Python :: 3.15 classifier. This includes pinecone's inline matrix (index name unchanged), docling_serve's static matrix and llama_stack (["3.12", "3.15"]).
  • cohere and ollama: add pydantic>=2.14.0; python_version >= '3.15'.
    • Their pydantic>=2.12.0 floor made the lowest-direct job on 3.15 resolve pydantic-core 2.41.1, which uses PyO3 0.26 and doesn't build on 3.15.
    • pydantic 2.14.0 is the first release whose pydantic-core has cp315 wheels.
    • The floor on 3.11–3.14 is unchanged.
  • Templates: scripts/utils/templates/workflow.yml and pyproject.toml use 3.15 for new integrations.

These integrations stay on 3.14, without the 3.15 classifier, until upstream ships:

Blocker on 3.15 Integrations
onnxruntime has no cp315 wheels (microsoft/onnxruntime#33271) chroma, fastembed, markitdown, optimum
torch has no cp315 wheels on PyPI. The ones on download.pytorch.org segfault in non-main threads on macOS and Windows (pytorch/pytorch#200779) docling, hanlp, sentence_transformers, transformers
torchaudio has no cp315 wheels funasr
Rust extensions built with PyO3 < 0.29 don't build on 3.15 (fastuuid, jiter, ormsgpack, pydantic-core, tiktoken) litellm, dspy, ragas, cognee
ddtrace declares requires-python <3.15 datadog
spacy.load() fails on 3.15 (explosion/spaCy#14047) spacy, presidio, unstructured
ibm-watsonx-ai declares requires-python <3.15 watsonx
weaviate-client 4.23.1 fails on import: class BatchCollectionProtocol(Generic[Properties], Protocol[Properties]) raises "Cannot inherit from Generic[...] multiple times" weaviate
No CPU build of vLLM for 3.15 vllm
jq 1.12.0 has no cp315 Windows wheel, and its sdist doesn't build on Windows mirage
valkey-glide has no cp315 wheels, and its sdist needs protoc valkey
The openai-whisper sdist doesn't build on 3.15, and it needs torch whisper
Our own oracledb<3.0.0 pin has no cp315 wheels. oracledb 26.x has them, so relaxing the pin is a separate change oracle
Already tested below 3.14 chonkie, langfuse, paddleocr, nvidia

How did you test it?

  • Resolved every integration's dependencies for CPython 3.15 on Linux, macOS and Windows with uv pip compile, and checked every pinned version on PyPI for cp315, abi3 or pure-Python wheels. The only gap that affects every integration is PyYAML 6.0.3, which has no cp315 wheels yet and installs from its sdist as pure Python, the same way haystack-ai does.
  • Locally on CPython 3.15.0 (macOS arm64), I ran hatch run test:unit, then the nightly path with haystack-ai from main:
    • anthropic: 147 passed
    • qdrant: 140 passed
    • weaviate: weaviate-client fails on import, so weaviate is excluded
  • This PR's CI runs every changed workflow on 3.11 and 3.15 on all configured OSes.
    • The first run covered 83 integrations. vllm, mirage, valkey and whisper failed on 3.15 and are back on 3.14, and the cohere and ollama lowest-direct jobs are fixed as described above.
    • The remaining failures are integration tests on 3.11:
      • togetherai, perplexity, huggingface_api, astra, openrouter and hetzner: these same tests also fail on main.
      • ollama: one test failed because the local model refused to answer (assert '42' in "I'm sorry, ...").

Notes for the reviewer

Checklist

  • I have read the contributors guidelines and the code of conduct
  • I have updated the related issue with new insights and changes
  • I added unit tests and updated the docstrings — n/a, CI and metadata only
  • I've used one of the conventional commit types for my PR title: fix:, feat:, build:, chore:, ci:, docs:, style:, refactor:, perf:, test:.

🤖 Generated with Claude Code

julian-risch and others added 2 commits October 15, 2026 09:06
haystack-ai main (3.5.0rc0) and the upcoming 3.4.0 require Python >=3.11,
so the nightly "run unit tests with Haystack main branch" step fails on
every 3.10 leg. Move the minimum tested version to 3.11 in all workflows
and the workflow template. llama_stack's push default and coverage gates
use 3.12, its minimum version.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Python 3.15.0 was released on 2026-10-09. Integrations whose dependencies
install on 3.15 now test 3.15 instead of 3.14 as their maximum version and
declare the 3.15 classifier. Integrations blocked by missing cp315 wheels
upstream (torch, torchaudio, onnxruntime, PyO3 < 0.29 extensions, packages
capped below 3.15) stay on 3.14.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (gotenberg)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (arcadedb)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (monty)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (agent_pack)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (libreoffice)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (sqlalchemy)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (twelvelabs)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (falkordb)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (openrouter)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (parallel)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (perplexity)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (amazon_bedrock)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (pgvector)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (aimlapi)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (deepeval)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (huggingface_api)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (supabase)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (mcp)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (solr)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (elasticsearch)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (opensearch)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (vespa)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (llama_stack)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (ibm_db)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (ollama)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (llama_cpp)

This PR does not seem to contain any modification to coverable code.

@github-actions

Copy link
Copy Markdown
Contributor

Coverage report (azure_documentdb)

This PR does not seem to contain any modification to coverable code.

@julian-risch

Copy link
Copy Markdown
Member Author

@anakin87 Regarding the six failures: hetzner is fixed on main now. The other five are quota/API key issues. Not related to this PR.

@anakin87 anakin87 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

integration:agent-pack integration:aimlapi integration:alloydb integration:amazon-bedrock integration:amazon-sagemaker integration:amazon-textract integration:anthropic integration:arangodb integration:arcadedb integration:astra integration:azure-ai-search integration:azure-doc-intelligence integration:azure-documentdb integration:azure-form-recognizer integration:brave integration:cohere integration:cometapi integration:ddgs integration:deepeval integration:docling-serve integration:dynamodb integration:e2b integration:edenai integration:elasticsearch integration:faiss integration:falkordb integration:firecrawl integration:github integration:google-drive integration:google-genai integration:gotenberg integration:hetzner integration:huggingface-api integration:ibm-db integration:jina integration:kreuzberg integration:langdetect integration:lara integration:libreoffice integration:linkup integration:llama_cpp integration:llama_stack integration:mariadb integration:mcp integration:mem0 integration:microsoft-sharepoint integration:mirage integration:mistral integration:mongodb-atlas integration:monty integration:oauth integration:ollama integration:openapi integration:opendataloader-pdf integration:openrouter integration:opensearch integration:opentelemetry integration:orcarouter integration:parallel integration:perplexity integration:pgvector integration:pinecone integration:pyversity integration:qdrant integration:rhesis integration:searchapi integration:serperdev integration:snowflake integration:solr integration:sqlalchemy integration:stackit integration:supabase integration:tavily integration:tika integration:togetherai integration:twelvelabs integration:typesafe integration:valkey integration:vespa integration:vllm integration:weave components coming from Weights and Biases integration:whisper integration:youcom topic:CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants