mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
### 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 😄
260 lines
6.5 KiB
TOML
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"
|