Files
semantic-kernel/python/pyproject.toml
T
Evan Mattson 7d885ddac1 Consolidate Python and .NET dependency updates (#14222)
### Motivation and Context

Consolidates the currently open Python and .NET Dependabot updates into
one coordinated dependency change. This reduces duplicate review and CI
work while preserving each source PR's update intent.

The npm and Yarn updates are intentionally excluded from this draft and
remain in their original Dependabot PRs.

### Related Issue

Supersedes:

- https://github.com/microsoft/semantic-kernel/pull/14178
- https://github.com/microsoft/semantic-kernel/pull/14184
- https://github.com/microsoft/semantic-kernel/pull/14185
- https://github.com/microsoft/semantic-kernel/pull/14186
- https://github.com/microsoft/semantic-kernel/pull/14187
- https://github.com/microsoft/semantic-kernel/pull/14188
- https://github.com/microsoft/semantic-kernel/pull/14189
- https://github.com/microsoft/semantic-kernel/pull/14191
- https://github.com/microsoft/semantic-kernel/pull/14192
- https://github.com/microsoft/semantic-kernel/pull/14202
- https://github.com/microsoft/semantic-kernel/pull/14203
- https://github.com/microsoft/semantic-kernel/pull/14204
- https://github.com/microsoft/semantic-kernel/pull/14205
- https://github.com/microsoft/semantic-kernel/pull/14207
- https://github.com/microsoft/semantic-kernel/pull/14208
- https://github.com/microsoft/semantic-kernel/pull/14211
- https://github.com/microsoft/semantic-kernel/pull/14212
- https://github.com/microsoft/semantic-kernel/pull/14213
- https://github.com/microsoft/semantic-kernel/pull/14214
- https://github.com/microsoft/semantic-kernel/pull/14215
- https://github.com/microsoft/semantic-kernel/pull/14216
- https://github.com/microsoft/semantic-kernel/pull/14217
- https://github.com/microsoft/semantic-kernel/pull/14218
- https://github.com/microsoft/semantic-kernel/pull/14219
- https://github.com/microsoft/semantic-kernel/pull/14221

### Description

- Updates the selected .NET Aspire and AWS SDK package versions in
central package management.
- Updates the selected Python requirements and regenerates both affected
uv lockfiles without losing earlier bumps.
- Keeps the compatible ONNX Runtime/GenAI pair on Python 3.10 while
applying ONNX Runtime GenAI 0.14.1 on Python 3.11 and newer.
- Retains pyOpenSSL 26.2.0, which is newer than the 26.0.0 requested by
its source PR and is required by the consolidated cryptography update.
- Uses Pinecone 7.3 or newer on Windows, where Pinecone 7.0.1 imports
the unavailable Unix `readline` module, while retaining the existing
`~=7.0` range on macOS and Linux.
- Constrains MCP to the compatible 1.x API because the current Semantic
Kernel integration imports interfaces removed by MCP 2.0.

### Validation

- Python unit tests passed across Python 3.10-3.13 on Ubuntu, Windows,
and macOS, including Dapr jobs.
- Python pre-commit, lock validation, spell checking, and
integration-test aggregate checks passed.
- .NET 9/10 builds, package-install checks, unit tests, AOT tests,
formatting, and coverage checks passed on Ubuntu and Windows.
- Merge Gatekeeper passed.

### Contribution Checklist

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2026-07-29 10:27:10 +00:00

260 lines
6.5 KiB
TOML

[project]
name = "semantic-kernel"
description = "Semantic Kernel Python SDK"
authors = [{ name = "Microsoft", email = "[email protected]"}]
readme = "README.md"
# Version read from __version__ field in __init__.py by Flit
dynamic = ["version"]
requires-python = ">=3.10"
license = {file = "LICENSE"}
urls.homepage = "https://learn.microsoft.com/en-us/semantic-kernel/overview/"
urls.source = "https://github.com/microsoft/semantic-kernel/tree/main/python"
urls.release_notes = "https://github.com/microsoft/semantic-kernel/releases?q=tag%3Apython-1&expanded=true"
urls.issues = "https://github.com/microsoft/semantic-kernel/issues"
classifiers = [
"License :: OSI Approved :: MIT License",
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Framework :: Pydantic :: 2",
"Typing :: Typed",
]
dependencies = [
# azure agents
"azure-ai-projects >= 1.0,< 2.5",
"azure-ai-agents >= 1.2.0b3",
"aiohttp ~= 3.8",
"cloudevents >=1,<3",
"pydantic >=2.0,!=2.10.0,!=2.10.1,!=2.10.2,!=2.10.3,<2.14",
"pydantic-settings ~= 2.0",
"defusedxml ~= 0.7",
# azure identity
"azure-identity >= 1.13",
# embeddings
"numpy >= 1.25.0; python_version < '3.12'",
"numpy >= 1.26.0; python_version >= '3.12'",
# openai connector
"openai >= 2.0.0",
# openapi and swagger
"openapi_core >= 0.18,<0.20",
"websockets >= 13, < 16",
"aiortc>=1.9.0",
# OpenTelemetry
"opentelemetry-api ~= 1.24",
"opentelemetry-sdk ~= 1.24",
"prance >= 23.6.21,< 26.7.20",
# templating
"pybars4 ~= 0.9",
"jinja2 ~= 3.1",
"nest-asyncio ~= 1.6",
"scipy>=1.15.1",
"websockets >= 13, < 16",
"aiortc>=1.9.0",
# Protobuf
# explicit typing extensions
"typing-extensions>=4.13",
"mcp>=1.26.0,<2.0",
]
### Optional dependencies
[project.optional-dependencies]
anthropic = [
"anthropic ~= 0.32"
]
autogen = [
"autogen-agentchat >= 0.2, <0.4"
]
aws = [
"boto3>=1.36.4,<1.43.0",
]
azure = [
"azure-ai-inference >= 1.0.0b6",
"azure-core-tracing-opentelemetry >= 1.0.0b11",
"azure-search-documents >= 11.6.0b4, < 13.0.0",
"azure-cosmos ~= 4.7"
]
chroma = [
"chromadb >= 0.5,< 1.6"
]
copilotstudio = [
"microsoft-agents-copilotstudio-client >= 0.3.1",
"microsoft-agents-activity >= 0.3.1"
]
faiss = [
"faiss-cpu>=1.10.0"
]
google = [
"google-cloud-aiplatform>=1.114,<1.134",
"google-genai >= 1.51,< 1.75"
]
hugging_face = [
"transformers[torch] >= 4.28,< 6.0",
"sentence-transformers >= 2.2,< 6.0",
"torch==2.13.0"
]
mcp = [
"mcp>=1.8,<2.0",
]
milvus = [
"pymilvus >= 2.3,< 2.7",
"milvus >= 2.3,<2.3.8; platform_system != 'Windows'"
]
mistralai = [
"mistralai >= 1.2,< 2.7.3"
]
mongo = [
"pymongo >= 4.8.0, < 4.17",
"motor >= 3.3.2,< 3.8.0"
]
notebooks = [
"ipykernel >= 6.29,< 8.0"
]
ollama = [
"ollama ~= 0.4"
]
onnx = [
# onnxruntime>=1.24.0 dropped Python 3.10 support; retain the last compatible runtime/genai pair for 3.10.
"onnxruntime==1.22.1; python_version == '3.10'",
"onnxruntime>=1.26.0; python_version > '3.10'",
"onnxruntime-genai==0.9.0; python_version == '3.10'",
"onnxruntime-genai==0.14.1; python_version > '3.10'"
]
oracledb = [
"oracledb >= 3.4.1"
]
pandas = [
"pandas ~= 2.2"
]
pinecone = [
"pinecone[asyncio, grpc] ~= 7.0; sys_platform == 'darwin' or sys_platform == 'linux'",
"pinecone[asyncio, grpc] ~= 7.3; sys_platform == 'win32'"
]
postgres = [
"psycopg[binary,pool] ~= 3.2"
]
qdrant = [
"qdrant-client ~= 1.9"
]
redis = [
"redis[hiredis] >= 6,< 8",
"types-redis ~= 4.6.0.20240425",
"redisvl ~= 0.4"
]
realtime = [
"websockets >= 13, < 16",
"aiortc>=1.9.0",
]
sql = [
"pyodbc >= 5.2"
]
usearch = [
"usearch >= 2.16,< 2.25",
"pyarrow>=12.0,<24.0"
]
weaviate = [
"weaviate-client>=4.17.0,<5.0",
]
[dependency-groups]
dev = [
"pre-commit ~= 3.7",
"ipykernel >= 6.29,< 8.0",
"nbconvert ~= 7.16",
"pytest >= 8.2,< 10.0",
"pytest-xdist[psutil] ~= 3.6",
"pytest-cov >= 5.0",
"pytest-asyncio ~= 1.0",
"pytest-timeout>=2.3.1",
"snoop ~= 0.4",
"mypy >= 1.10",
"types-PyYAML ~= 6.0.12.20240311",
"ruff ~= 0.9"
]
[tool.uv]
prerelease = "if-necessary-or-explicit"
environments = [
"sys_platform == 'darwin'",
"sys_platform == 'linux'",
"sys_platform == 'win32'"
]
[tool.pytest.ini_options]
testpaths = 'tests'
addopts = "-ra -q -r fEX"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
filterwarnings = [
'ignore:.*FunctionChoiceBehavior.*:DeprecationWarning'
]
timeout = 120
markers = [
"ollama: mark a test as requiring the Ollama service (use \"not ollama\" to skip those tests)",
"onnx: mark a test as requiring the Onnx service (use \"not onnx\" to skip those tests)"
]
[tool.ruff]
line-length = 120
target-version = "py310"
include = ["*.py", "*.pyi", "**/pyproject.toml", "*.ipynb"]
preview = true
[tool.ruff.lint]
fixable = ["ALL"]
unfixable = []
select = [
"D", #pydocstyle checks
"E", #error checks
"F", #pyflakes checks
"I", #isort
"CPY", #copyright
"ISC", #implicit string concat
"INP", #implicit namespace package
"RSE", #raise exception parantheses check
"RET", #flake8-return check
"SIM", #flake8-simplify check
"TD", #todos
"FIX", #fixme checks
"ERA", #remove connected out code
"RUF" #RUF specific rules
]
ignore = [
"D100", #allow missing docstring in public module
"D104", #allow missing docstring in public package
"D418", #allow docstring on overloaded function
"TD003", #allow missing link to todo issue
"FIX002" #allow todo
]
[tool.ruff.format]
docstring-code-format = true
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.per-file-ignores]
# Ignore all directories named `tests` and `samples`.
"tests/**" = ["D", "INP", "TD", "ERA001", "RUF"]
"samples/**" = ["D", "INP", "ERA001", "RUF"]
# Ignore all files that end in `_test.py`.
"*_test.py" = ["D"]
"*.ipynb" = ["CPY", "E501"]
[tool.ruff.lint.flake8-copyright]
notice-rgx = "^# Copyright \\(c\\) Microsoft\\. All rights reserved\\."
min-file-size = 1
[tool.bandit]
targets = ["semantic_kernel"]
exclude_dirs = ["tests", "samples/demos/mcp_with_oauth"]
[tool.flit.module]
name = "semantic_kernel"
[build-system]
requires = ["flit-core >= 3.9,<4.0"]
build-backend = "flit_core.buildapi"