Skip to content

Update SQL Server vector search to latest VECTOR_SEARCH() syntax#1

Closed
roji wants to merge 3839 commits intomainfrom
roji/sql-server-vector-search-update
Closed

Update SQL Server vector search to latest VECTOR_SEARCH() syntax#1
roji wants to merge 3839 commits intomainfrom
roji/sql-server-vector-search-update

Conversation

@roji
Copy link
Copy Markdown
Owner

@roji roji commented Apr 13, 2026

Updates the SQL Server vector store connector to support the latest Azure SQL VECTOR_SEARCH() features, matching what was done in EF Core (dotnet/efcore#38075).

Changes

VECTOR_SEARCH syntax update

  • Replace deprecated TOP_N parameter with SELECT TOP(N) WITH APPROXIMATE
  • Enable iterative filtering — WHERE predicates are now applied during the vector search process, not after retrieval
  • Support skip via subquery wrapping (TOP and OFFSET/FETCH can't coexist in the same SELECT)

Hybrid search

  • Same VECTOR_SEARCH syntax changes in the semantic search CTE
  • Filter support added in the vector search CTE (iterative filtering)

Azure SQL runtime detection

  • DiskAnn vector indexes and VECTOR_SEARCH require Azure SQL Database or SQL database in Microsoft Fabric
  • Added runtime check via SERVERPROPERTY('EngineEdition') at table creation and query time
  • Throws informative NotSupportedException when used against on-prem SQL Server
  • Result is cached per collection instance

Test infrastructure

  • Deleted SqlServerDiskAnnVectorSearchTests.cs (read-only table workaround no longer needed — tables with latest vector indexes now support full DML)
  • Created SqlServerConnectionStringRequiredAttribute to gate DiskAnn tests on Azure SQL connection string availability
  • Rewrote DiskAnn conformance test to handle 100-row minimum requirement for vector index creation
  • Updated all command builder unit tests for new SQL syntax

Kept

  • PREVIEW_FEATURES command in CreateTable (needed for future on-prem SQL Server support)

shethaadit and others added 30 commits August 12, 2025 12:24
… for endpoint. (microsoft#12810)

### Description

This PR fixes an issue where AddOpenAIEmbeddingGenerator() ignored the
BaseAddress of the provided HttpClient, always using the default OpenAI
endpoint. Now, if a custom BaseAddress is set on the HttpClient, it is
passed as the endpoint parameter, ensuring requests are sent to the
correct server. This aligns the behavior with other OpenAI service
registrations and enables proxy or custom endpoint scenarios.

FIxes microsoft#12806

---------

Co-authored-by: Adit Sheth <adsheth@microsoft.com>
Co-authored-by: Roger Barreto <19890735+RogerBarreto@users.noreply.github.com>
Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
Update mistake in description

### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  fix incorrect documentation
  2. What problem does it solve?
  fix incorrect documentation
  3. What scenario does it contribute to?
  fix incorrect documentation
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
fix incorrect documentation

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄

---------

Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
…icrosoft#12907)

### Motivation and Context

When running a reasoning model with the OpenAI responses agent, it was
producing 400s due to the way we were either including or not including
FCC related to tool calls. This PR fixes it for both the default
(store_enabled=True) and the case where uses don't want to use OpenAI's
previous response id as a pseudo-thread (store_enabled=False).

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

- Closes microsoft#12843

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
…crosoft#12940)

### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->
We are adding two new attributes to the execute tool span according to
this proposal to Otel Semantic Conventions:
open-telemetry/semantic-conventions#2528

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->
The following two attributes are added to the `execute_tool` span:
1. `gen_ai.tool.call.arguments`
2. `gen_ai.tool.call.result`

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
### Motivation and Context

Bump Python version to 1.35.3 for a release

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Bump Python version to 1.35.3 for a release

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
### Motivation and Context

Tool/tool_calls are getting orphaned.

Issue : microsoft#12708

How to reproduce :

```python
from semantic_kernel.contents import (
    AuthorRole,
    ChatMessageContent,
    FunctionCallContent,
    FunctionResultContent,
    ChatHistoryTruncationReducer,
)

messages = [
    ChatMessageContent(role=AuthorRole.SYSTEM, content="sys"),
    ChatMessageContent(role=AuthorRole.USER, content="user A"),
    ChatMessageContent(
        role=AuthorRole.ASSISTANT,
        items=[
            FunctionCallContent(
                id="123", function_name="search", plugin_name="plugin", arguments={"q": "x"}
            )
        ],
    ),
    ChatMessageContent(
        role=AuthorRole.TOOL,
        items=[
            FunctionResultContent(
                id="123", function_name="search", plugin_name="plugin", result="RESULT"
            )
        ],
    ),
    ChatMessageContent(role=AuthorRole.USER, content="user B"),
    ChatMessageContent(role=AuthorRole.ASSISTANT, content="done"),
]

reducer = ChatHistoryTruncationReducer(target_count=3, threshold_count=0)
reducer.messages = messages

print("Before reduce:", [m.role for m in reducer.messages])
await reducer.reduce()
print("After reduce:", [m.role for m in reducer.messages])

# After reduce: [<AuthorRole.TOOL: 'tool'>, <AuthorRole.USER: 'user'>, <AuthorRole.ASSISTANT: 'assistant'>]
```

### Description

Move backward as long as we are in a tool/tool_call island when reducing
the messages.

---------

Co-authored-by: Allaoua Benchikh <allaoua.benchikh@ext.saint-gobain.com>
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
### Motivation and Context

The MCPStreamableHttpPlugin concept sample pointing to GitHub isn't
working. Updating it to use the Microsoft Learn site MCP server instead.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Update sample.

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
…microsoft#12827)

### Motivation and Context

The MongoDB connector currently only supports string key types.

### Description

Adds support for Guid and ObjectId key types to the MongoDB Connector. 

### 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 😄

---------

Co-authored-by: SergeyMenshykh <68852919+SergeyMenshykh@users.noreply.github.com>
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
This PR adds OpenAPI parameter description to its schema to provide more
details to ai model about it.
)

### Motivation and Context

Fixes microsoft#12934 

The filter translation layer set all 4 (Gt, Gte, Lt, Lte) properties of
the datetime range object, which resulted in always 0 results being
returned as no rows can be greater and smaller than the set date at the
same time.

### Description

At first I added some simple tests and an `DateTimeOffset` properties to
the unit tests, which failed. After debugging and finding the issue, I
made the changes and the tests passed.

I was only able to test the Qdrant and InMemory integrations though, due
to lack of locally running and preconfigured databases.

**Open**

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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
- [ ] I didn't break anyone 😄

Co-authored-by: TsengSR <kpgit@atomic-gear.net>
…5) (microsoft#12962)

### Motivation and Context

This PR addresses a recent vulnerability warning received while working
in the Semantic Kernel solution, limited to specific packages for
Prompty, Milvus and Microsoft Graph Plugin.

As part of addressing the vulnerabilities was also necessary to upgrade
the logic to use the newest packages from Microsoft.Graph library.
### Motivation and Context

Update to the latest version of OpenAI related packages:

- `Microsoft.Extensions.AI.* 9.8.0-*`
- `Azure.AI.OpenAI 2.3.0-beta.1`
- `OllamaSharp 5.3.5`
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
### Motivation and Context

This demo shows how to implement human-in-the-loop in Process Framework
with SignalR. It is based on the ProcessWithCloudEvents one, readapting
it to use SignalR.

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄

---------

Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
Co-authored-by: Chris Rickman <crickman@microsoft.com>
…rameworkWithSignalR/src/ProcessFramework.Aspire.SignalR.ReactFrontend (microsoft#12980)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 6.2.5 to 6.2.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.7</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.7/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.7 (2025-04-30)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: check static serve file inside sirv (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19965">#19965</a>)
(<a
href="https://github.com/vitejs/vite/commit/99980ecf669aa42379ab0cb0c5889c4b671f4866">99980ec</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19965">#19965</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.6 (2025-04-10)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)
(<a
href="https://github.com/vitejs/vite/commit/3bb0883d22d59cfd901ff18f338e8b4bf11395f7">3bb0883</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19830">#19830</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/3d6a42728f645bcab7c391983604ecdb3619eca9"><code>3d6a427</code></a>
release: v6.2.7</li>
<li><a
href="https://github.com/vitejs/vite/commit/99980ecf669aa42379ab0cb0c5889c4b671f4866"><code>99980ec</code></a>
fix: check static serve file inside sirv (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19965">#19965</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/d3dbf25fd5e21448f9ea6cec8fb5ac45d220037b"><code>d3dbf25</code></a>
release: v6.2.6</li>
<li><a
href="https://github.com/vitejs/vite/commit/3bb0883d22d59cfd901ff18f338e8b4bf11395f7"><code>3bb0883</code></a>
fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.7/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=6.2.5&new-version=6.2.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/semantic-kernel/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…onnectors (microsoft#12989)

This PR resolves issue microsoft#12887 by adding support for the new 'minimal'
reasoning effort level introduced with gpt-5 models.

Interestingly enought the latest 2.3.0 version of OpenAI SDK doesn't
have a specific `ChatReasoningEffortLevel.Minimal` option, but this is
possible using a string "minimal" effort.

## Problem

Users were unable to use the new 'minimal' reasoning effort level with
GPT-5 and other reasoning models, receiving the error:
```
The provided reasoning effort 'minimal' is not supported.
```

## Solution

The fix adds support for the "minimal" string value in the
`GetEffortLevel` method within `ClientCore.ChatCompletion.cs`. The
implementation leverages OpenAI SDK implicit string conversion
capability for `ChatReasoningEffortLevel` type.

### Changes Made

1. **Updated `GetEffortLevel` method** to recognize "MINIMAL"
(case-insensitive) and convert it to
`(ChatReasoningEffortLevel)"minimal"`
2. **Added comprehensive test coverage** for the new "minimal" option in
both OpenAI and AzureOpenAI connector unit tests
3. **Updated documentation** in `OpenAIPromptExecutionSettings.cs` to
include "minimal" as a supported string value

### Usage

Users can now specify reasoning effort in multiple ways:

```csharp
// Using string (new minimal option)
var settings = new OpenAIPromptExecutionSettings 
{ 
    ReasoningEffort = "minimal" 
};

// Using existing enum values (unchanged)
var settings = new OpenAIPromptExecutionSettings 
{ 
    ReasoningEffort = ChatReasoningEffortLevel.Low 
};
```

All supported string values: `"low"`, `"medium"`, `"high"`, `"minimal"`

## Testing

- ✅ All existing tests continue to pass (471 OpenAI + 490 AzureOpenAI
tests)
- ✅ New test cases validate "minimal" support in both connectors
- ✅ Backward compatibility maintained for existing reasoning effort
values
- ✅ Invalid strings still throw appropriate `NotSupportedException`

Fixes microsoft#12887

<!-- START COPILOT CODING AGENT TIPS -->
---

✨ Let Copilot coding agent [set things up for
you](https://github.com/microsoft/semantic-kernel/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

The usage of `DefaultAzureCredential` by default is unsafe and raises
security issues. Instead, users should provide their own credential
types such as `AzureCliCredential`, `ManagedIdentityCredential` and so
on. More information here:

https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.aio?view=azure-python

In this PR:
1. Removed the usage of `DefaultAzureCredential` from authentication
logic.
2. Replaced `DefaultAzureCredential` with `AzureCliCredential` in all
examples.

**Note**: this is breaking change for Azure users, who relies on
`DefaultAzureCredential`. Users will need to update the code and pass
the credential type of their choice by using `credential` parameter when
initializing one of the Azure clients.

Before:
```python
chat_completion = AzureChatCompletion()
```

After:
```python
chat_completion = AzureChatCompletion(credential=AzureCliCredential())
```

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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
- [ ] I didn't break anyone 😄
…2983)

### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

Resolves: microsoft#11821

Today, the encoding of template arguments is performed only if argument
type is `string`. In case of custom type, anonymous type or collection -
the encoding is not performed.

This PR contains changes to throw an exception in case if encoding is
enabled but complex type is used. In case of complex type, the encoding
should be performed manually according to business logic and automatic
encoding should be explicitly disabled.

This enforces stricter, but more secure template rendering rules.

**Note**: this is a breaking change for customers who use Handlebars or
Liquid template with complex type arguments. Code changes are required
when initializing template arguments:
```diff
var arguments = new KernelArguments()
{
    { "customer", new
        {
-             firstName = userInput.FirstName,
-             lastName = userInput.LastName,
+             firstName = HttpUtility.HtmlEncode(userInput.FirstName),
+             lastName = HttpUtility.HtmlEncode(userInput.LastName),
        }
    }
};

var templateFactory = new LiquidPromptTemplateFactory();
var promptTemplateConfig = new PromptTemplateConfig()
{
    TemplateFormat = "liquid"
+   InputVariables = new()
+   {
+       // We set AllowDangerouslySetContent to 'true' because each property of this argument is encoded manually. 
+       new() { Name = "customer", AllowDangerouslySetContent = true },
+   }
};

var promptTemplate = templateFactory.Create(promptTemplateConfig);
var renderedPrompt = await promptTemplate.RenderAsync(kernel, arguments); 
```

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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
- [ ] I didn't break anyone 😄
### Motivation and Context

Bump Python version to 1.36.0 for a release.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Bump Python version to 1.36.0 for a release.

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->
The OTel workgroup has been thinking about enhancing tracing for agents.
This is a proposal from our tracing team:
open-telemetry/semantic-conventions#2528. This
PR implements part of the proposal so that when the proposal gets
merged, we can quickly follow.

This is a follow-up PR after the Python PR microsoft#12834 
### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

Two new attributes are added to the invoke_agent span, namely the
`gen_ai.agent.invocation_input` and `gen_ai.agent.invocation_output`.

<img width="870" height="384" alt="image"
src="https://github.com/user-attachments/assets/c2cf069a-af00-4ae2-8fed-745c166d9cbc"
/>

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄

---------

Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

Resolves: microsoft#12982

Removed experimental flags in following items:
1. `ChatClientExtensions`
2. `ChatClientBuilderExtensions`
3. `AIFunctionExtensions`
4. `ChatCompletionServiceExtensions`
5. `AuthorName` property in `ChatMessageContent` and
`StreamingChatMessageContent` models.
6. `KernelFunctionExtensions`
7. `KernelPlugin`

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
…osoft#13019)

### Motivation and Context

Closes microsoft#12888 

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
…crosoft#13020)

### Motivation and Context

Closes microsoft#12904 

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
…ss (microsoft#12985)

### Motivation and Context

I confirmed that Code Interpreter can run via Azure Responses API in
Semantic Kernel, but I found two issues: an error occurs when a file is
created inside the Code Interpreter, and the response lacks parameters
required to access the created file.

### Description

#### Bug 1: ValidationError for AnnotationContent

Semantic Kernel uses the following enum for
`AnnotationContent.content_type`:

```python
@experimental
class CitationType(str, Enum):
    """Citation type."""

    URL_CITATION = "url_citation"
    FILE_PATH = "file_path"
    FILE_CITATION = "file_citation"
```

However, the Responses API returns file citations with a `type` like
this:

```json
{"container_id": "cntr_68a6c50135d88190b6fdc062051155b50847ddec73d3be1b", "end_index": 94, "file_id": "cfile_68a6c67a7fcc8190889d7e1789d485e2", "filename": "sample.txt", "start_index": 66, "type": "container_file_citation"}
```

There is no matching enum member on the Semantic Kernel side. The
`CitationType` should include `CONTAINER_FILE_CITATION`, for example:

```python
@experimental
class CitationType(str, Enum):
    """Citation type."""

    URL_CITATION = "url_citation"
    FILE_PATH = "file_path"
    FILE_CITATION = "file_citation"
    CONTAINER_FILE_CITATION = "container_file_citation"
```

#### Bug 2: Missing parameters to access generated files

The response returned by the agent shows a `file_id`, but lacks the
`container_id` and `filename` required to download the file (the
filename is needed to replace `sandbox:/mnt/data/sample.txt`):

Example call:

```python
r = await agent.get_response(cast(list, history.messages), thread=thread)
print(r.content.items)
```

Example output:

```python
[
  TextContent(inner_content=None, ai_model_id=None, metadata={}, content_type='text', text='<user_prompt>', encoding=None),
  TextContent(inner_content=None, ai_model_id=None, metadata={}, content_type='text', text='<assistant_message>\n\n[sample.txt](sandbox:/mnt/data/sample.txt)', encoding=None), 
  AnnotationContent(inner_content=None, ai_model_id=None, metadata={}, content_type='annotation', file_id='cfile_68a6c67a7fcc8190889d7e1789d485e2', quote=None, start_index=88, end_index=116, url=None, title=None, citation_type=<CitationType.CONTAINER_FILE_CITATION: 'container_file_citation'>)
]
```

To include these values in the parsed result, `AnnotationContent` in
`semantic_kernel/contents/annotation_content.py` should expose
`container_id` and `filename`, and map the incoming `type` to
`citation_type`. Example suggested structure:

```python
@experimental
class AnnotationContent(KernelContent):
    """Annotation content."""

    content_type: Literal[ContentTypes.ANNOTATION_CONTENT] = Field(ANNOTATION_CONTENT_TAG, init=False)  # type: ignore
    tag: ClassVar[str] = ANNOTATION_CONTENT_TAG
    file_id: str | None = None
    quote: str | None = None
    start_index: int | None = None
    end_index: int | None = None
    url: str | None = None
    title: str | None = None
    # added
    container_id: str | None = None
    filename: str | None = None
    citation_type: CitationType | None = Field(None, alias="type")

    model_config = ConfigDict(
        extra="ignore",
        populate_by_name=True,
    )

    def __str__(self) -> str:
        ...

    def to_element(self) -> Element:
        ...

    @classmethod
    def from_element(cls: type[_T], element: Element) -> _T:
        ...

    def to_dict(self) -> dict[str, Any]:
        ...
```

Summary: add the missing enum value `container_file_citation` and extend
`AnnotationContent` to include `container_id` and `filename` (and map
`type` to `citation_type`) so file references returned by the Azure
Responses API are fully usable.

#### Code

```python
client: AsyncAzureOpenAI = AsyncAzureOpenAI(
    base_url=urljoin(server_settings.AZURE_OPENAI_COMPLETION_ENDPOINT.rstrip("/") + "/", "openai/v1/"),
    api_key=server_settings.AZURE_OPENAI_COMPLETION_API_KEY,
    api_version="preview",
)

async def run(history: ChatHistory) -> dict[str, Any]:
    with open("sample.txt", "rb") as fp:
        f = await client.files.create(file=fp, purpose="assistants")

    agent = AzureResponsesAgent(
        ai_model_id=server_settings.AZURE_OPENAI_COMPLETION_DEPLOYMENT_NAME,
        client=client,
        name="name",
        function_choice_behavior=FunctionChoiceBehavior.Required(),
        tools=[
            CodeInterpreter(
                type="code_interpreter",
                container=CodeInterpreterContainerCodeInterpreterToolAuto(type="auto", file_ids=[f.id]),
            )
        ],
    )

    thread = ResponsesAgentThread(client, history, previous_response_id=None, enable_store=True)
    r = await agent.get_response(cast(list, history.messages), thread=thread)
    print(thread.id, r.content.items)

    annotation_content = [item for item in r.content.items if isinstance(item, AnnotationContent)]

    for ac in annotation_content:
        print(ac.file_id, ac.filename, ac.container_id)
```

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄

Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
…mini, o3) (microsoft#12881)

## Summary

Adds reasoning capabilities to Python OpenAI ResponsesAgent, bringing
parity with the C# implementation. This enables fine-grained control
over reasoning effort for O-series models (o1, o3-mini, o4-mini) and
gpt-5 that support the reasoning parameter.

Fixes microsoft#12843

## Changes

### Core Implementation
- **`openai_responses_agent.py`**: Added reasoning configuration support
  - Constructor-level reasoning effort setting
  - Per-invocation reasoning effort override capability
  - Proper parameter validation and model compatibility checks
- **`responses_agent_thread_actions.py`**: Extended thread actions to
support reasoning parameters
  - Reasoning effort propagation through thread operations
  - Metadata preservation for reasoning tokens and summaries

### Sample and Tests
- **`responses_agent_reasoning.py`**: Comprehensive demonstration sample
  - Constructor vs per-invocation reasoning configuration
  - Function calling integration with reasoning
  - Reasoning comparison scenarios (low/medium/high effort)
  - Error handling and troubleshooting guidance
- **`test_openai_responses_agent_reasoning.py`**: Full unit test
coverage
  - Parameter validation tests
  - Integration scenarios with function calling
  - Edge cases and error conditions

## Features

✅ **Constructor-Level Reasoning**: Set default reasoning effort when
creating agents
✅ **Per-Invocation Override**: Override reasoning effort per request  
✅ **Priority Hierarchy**: per-invocation > constructor > model default  
✅ **Function Calling Compatible**: Works seamlessly with existing plugin
system
✅ **Azure OpenAI & OpenAI Support**: Compatible with both service
providers
✅ **Model Validation**: Automatic compatibility checks for O-series
models nad GÜT-5
✅ **Metadata Access**: Reasoning tokens and summaries available in
response metadata

## Usage Example

```python
# Constructor-level reasoning
# Constructor-level reasoning configuration
agent = AzureResponsesAgent(
    ai_model_id="gpt-5",
    client=client,
    reasoning={"effort": "low"}  # Default reasoning for all requests
)

# Per-invocation override
response = await agent.invoke(
    "Solve this complex problem step by step",
    reasoning={"effort": "high"}  
)


# Invoke with reasoning callback to capture intermediate thoughts
response = await agent.invoke(
    "Analyze this data step by step",
    reasoning={"effort": "high", "summary": "detailed"},
    on_intermediate_message=handle_reasoning_message
)

# Streaming with reasoning
async for response in agent.invoke_stream(
    "Explain quantum computing in detail",
    reasoning={"effort": "high", "summary": "detailed"},
    on_intermediate_message=handle_reasoning_message
):
    print(response.content, end="", flush=True)

---------

Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
Co-authored-by: Evan Mattson <evan.mattson@microsoft.com>
### Motivation and Context

To fix unreliable MongoDB Test Container start-up. 

Fixes microsoft#13025

### Description

TestContainers.NET is, by default checking, for the string `Waiting for
connections` to appear TWICE in the MongoDB logs before deciding the
container is available. While this can happen quite often it doesn't
**always** happen and I believe this is a mistake (introduced in a large
PR).

TestContainers clients for Go and Rust only check the message appears
once (and TestContainers for Java has a different mechanism altogether).

This introduces an alternative waiting mechanism until I can get the fix
shipped upstream that only checks the message appears once.

Note: This PR does not yet enable the MongoDB tests as I think there are
some other intermittent issues relating to the use of lock/counting
mechanism that sometimes responds with a very different error.

### 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 😄
…t#13032)

### Motivation and Context

As part of invoking an AzureAIAgent via streaming, we weren't providing
the `thread_id` via the `AgentStreamEvent.THREAD_MESSAGE_CREATED` event.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Supply the caller with the `thread_msg_id` by sticking it into the
returned SCMC's `metadata` dictionary.
- Closes microsoft#12959

Sample output looks like:

```
Sample Output:

# User: 'Hello'
# AuthorRole.ASSISTANT: (thread message id: msg_HZ2h4Wzbj7GEcnVCjnyEuYWT) Hello! How can I assist you with 
    the menu today?
# User: 'What is the special soup?'
# AuthorRole.ASSISTANT: (thread message id: msg_TSjkJK6hHJojIkPvF6uUofHD) The special soup today is 
    Clam Chowder. Would you like to know more about it or anything else from the menu?
# User: 'How much does that cost?'
# AuthorRole.ASSISTANT: (thread message id: msg_liwTpBFrB9JpCM1oM9EXKiwq) The Clam Chowder costs $9.99. 
    Is there anything else you'd like to know?
# User: 'Thank you'
# AuthorRole.ASSISTANT: (thread message id: msg_K6lpR3gYIHethXq17T6gJcxi) You're welcome! 
    If you have any more questions or need assistance, feel free to ask. Enjoy your meal!
```

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
rogerbarreto and others added 28 commits March 18, 2026 21:52
…lugin (microsoft#13644)

### Motivation and Context

Improve control and security settings for WebFileDownloadPlugin

- Change AllowedDomains and AllowedFolders defaults from null
(allow-all) to empty (deny-all)
- Change DisableFileOverwrite default to true
- Set MaximumDownloadSize default to 10 MB
- Add path canonicalization via Path.GetFullPath() to prevent directory
traversal
- Switch folder matching from exact to prefix-based with separator
handling
- Fix fileMode variable not being used in FileStream constructor
- Add XML doc security remarks to all three plugins
- Update tests for new defaults

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Motivation and Context

Link to the Chroma is incorrect.

### Description

This PR fixes link for Chroma documentation in README.

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄

Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.1 to
3.1.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/werkzeug/releases">werkzeug's
releases</a>.</em></p>
<blockquote>
<h2>3.1.6</h2>
<p>This is the Werkzeug 3.1.6 security fix release, which fixes a
security issue but does not otherwise change behavior and should not
result in breaking changes compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/Werkzeug/3.1.6/">https://pypi.org/project/Werkzeug/3.1.6/</a>
Changes: <a
href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6</a></p>
<ul>
<li><code>safe_join</code> on Windows does not allow special devices
names in multi-segment paths. <a
href="https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x">GHSA-29vq-49wr-vm6x</a></li>
</ul>
<h2>3.1.5</h2>
<p>This is the Werkzeug 3.1.5 security fix release, which fixes security
issues and bugs but does not otherwise change behavior and should not
result in breaking changes compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/Werkzeug/3.1.5/">https://pypi.org/project/Werkzeug/3.1.5/</a>
Changes: <a
href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5</a>
Milestone: <a
href="https://github.com/pallets/werkzeug/milestone/43?closed=1">https://github.com/pallets/werkzeug/milestone/43?closed=1</a></p>
<ul>
<li><code>safe_join</code> on Windows does not allow more special device
names, regardless of extension or surrounding spaces. <a
href="https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7">GHSA-87hc-h4r5-73f7</a></li>
<li>The multipart form parser handles a <code>\r\n</code> sequence at a
chunk boundary. This fixes the previous attempt, which caused incorrect
content lengths. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3065">#3065</a>
<a
href="https://redirect.github.com/pallets/werkzeug/issues/3077">#3077</a></li>
<li>Fix <code>AttributeError</code> when initializing
<code>DebuggedApplication</code> with <code>pin_security=False</code>.
<a
href="https://redirect.github.com/pallets/werkzeug/issues/3075">#3075</a></li>
</ul>
<h2>3.1.4</h2>
<p>This is the Werkzeug 3.1.4 fix release, which fixes bugs but does not
otherwise change behavior and should not result in breaking changes
compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/Werkzeug/3.1.4/">https://pypi.org/project/Werkzeug/3.1.4/</a>
Changes: <a
href="https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4">https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4</a>
Milestone: <a
href="https://github.com/pallets/werkzeug/milestone/42?closed=1">https://github.com/pallets/werkzeug/milestone/42?closed=1</a></p>
<ul>
<li><code>safe_join</code> on Windows does not allow special device
names. This prevents reading from these when using
<code>send_from_directory</code>. <code>secure_filename</code> already
prevented writing to these. <a
href="https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2">ghsa-hgf8-39gv-g3f2</a></li>
<li>The debugger pin fails after 10 attempts instead of 11. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3020">#3020</a></li>
<li>The multipart form parser handles a <code>\r\n</code> sequence at a
chunk boundary. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3065">#3065</a></li>
<li>Improve CPU usage during Watchdog reloader. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3054">#3054</a></li>
<li><code>Request.json</code> annotation is more accurate. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3067">#3067</a></li>
<li>Traceback rendering handles when the line number is beyond the
available source lines. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3044">#3044</a></li>
<li><code>HTTPException.get_response</code> annotation and doc better
conveys the distinction between WSGI and sans-IO responses. <a
href="https://redirect.github.com/pallets/werkzeug/issues/3056">#3056</a></li>
</ul>
<h2>3.1.3</h2>
<p>This is the Werkzeug 3.1.3 fix release, which fixes bugs but does not
otherwise change behavior and should not result in breaking changes vs
3.1.0.</p>
<p>PyPI: <a
href="https://pypi.org/project/Werkzeug/3.1.3/">https://pypi.org/project/Werkzeug/3.1.3/</a>
Changes: <a
href="https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3">https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3</a>
Milestone: <a
href="https://github.com/pallets/werkzeug/milestone/41?closed=1">https://github.com/pallets/werkzeug/milestone/41?closed=1</a></p>
<ul>
<li>Initial data passed to <code>MultiDict</code> and similar interfaces
only accepts <code>list</code>, <code>tuple</code>, or <code>set</code>
when passing multiple values. It had been changed to accept any
<code>Collection</code>, but this matched types that should be treated
as single values, such as <code>bytes</code>. <a
href="https://redirect.github.com/pallets/werkzeug/issues/2994">#2994</a></li>
<li>When the <code>Host</code> header is not set and
<code>Request.host</code> falls back to the WSGI
<code>SERVER_NAME</code> value, if that value is an IPv6 address it is
wrapped in <code>[]</code> to match the <code>Host</code> header. <a
href="https://redirect.github.com/pallets/werkzeug/issues/2993">#2993</a></li>
</ul>
<h2>3.1.2</h2>
<p>This is the Werkzeug 3.1.2 fix release, which fixes bugs but does not
otherwise change behavior and should not result in breaking changes vs
3.1.0.</p>
<p>PyPI: <a
href="https://pypi.org/project/Werkzeug/3.1.2/">https://pypi.org/project/Werkzeug/3.1.2/</a>
Changes: <a
href="https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2">https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/werkzeug/blob/main/CHANGES.rst">werkzeug's
changelog</a>.</em></p>
<blockquote>
<h2>Version 3.1.6</h2>
<p>Released 2026-02-19</p>
<ul>
<li><code>safe_join</code> on Windows does not allow special devices
names in
multi-segment paths. :ghsa:<code>29vq-49wr-vm6x</code></li>
</ul>
<h2>Version 3.1.5</h2>
<p>Released 2026-01-08</p>
<ul>
<li><code>safe_join</code> on Windows does not allow more special device
names, regardless
of extension or surrounding spaces.
:ghsa:<code>87hc-h4r5-73f7</code></li>
<li>The multipart form parser handles a <code>\r\n</code> sequence at a
chunk boundary.
This fixes the previous attempt, which caused incorrect content lengths.
:issue:<code>3065</code> :issue:<code>3077</code></li>
<li>Fix <code>AttributeError</code> when initializing
<code>DebuggedApplication</code> with
<code>pin_security=False</code>. :issue:<code>3075</code></li>
</ul>
<h2>Version 3.1.4</h2>
<p>Released 2025-11-28</p>
<ul>
<li><code>safe_join</code> on Windows does not allow special device
names. This prevents
reading from these when using <code>send_from_directory</code>.
<code>secure_filename</code>
already prevented writing to these.
:ghsa:<code>hgf8-39gv-g3f2</code></li>
<li>The debugger pin fails after 10 attempts instead of 11.
:pr:<code>3020</code></li>
<li>The multipart form parser handles a <code>\r\n</code> sequence at a
chunk boundary.
:issue:<code>3065</code></li>
<li>Improve CPU usage during Watchdog reloader.
:issue:<code>3054</code></li>
<li><code>Request.json</code> annotation is more accurate.
:issue:<code>3067</code></li>
<li>Traceback rendering handles when the line number is beyond the
available
source lines. :issue:<code>3044</code></li>
<li><code>HTTPException.get_response</code> annotation and doc better
conveys the
distinction between WSGI and sans-IO responses.
:issue:<code>3056</code></li>
</ul>
<h2>Version 3.1.3</h2>
<p>Released 2024-11-08</p>
<ul>
<li>Initial data passed to <code>MultiDict</code> and similar interfaces
only accepts
<code>list</code>, <code>tuple</code>, or <code>set</code> when passing
multiple values. It had been
changed to accept any <code>Collection</code>, but this matched types
that should be</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/werkzeug/commit/04da1b5221b7a7b57e82246e4b5741d37a6b2e56"><code>04da1b5</code></a>
release version 3.1.6</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d"><code>f407712</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/f54fe98026253e70fbbcd35a6b52fb67cfff1c03"><code>f54fe98</code></a>
safe_join prevents Windows special device names in multi-segment
paths</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/d005985ef69ffe3275eda8fb6fb25e074dbe871b"><code>d005985</code></a>
start version 3.1.6</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/8565c2cbd6681ae8463e77d4fc0795324a7fdae7"><code>8565c2c</code></a>
document rule priority (<a
href="https://redirect.github.com/pallets/werkzeug/issues/3102">#3102</a>)</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/3febc7e90072bffe04c27e6b7478dfc4f88930df"><code>3febc7e</code></a>
document rule priority</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/2525b827646c10ab7adb334664e6a4af1b769181"><code>2525b82</code></a>
remove state machine docs</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/4abfbd553cdeb6d4e6fa693340d52b13c884079f"><code>4abfbd5</code></a>
rewrite build docstring (<a
href="https://redirect.github.com/pallets/werkzeug/issues/3097">#3097</a>)</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/161c18b2a8800ae6ef377fb3cbdb933a878fea67"><code>161c18b</code></a>
rewrite build docstring</li>
<li><a
href="https://github.com/pallets/werkzeug/commit/86e11c29e44726dae524cd9db11549b3b1ad681d"><code>86e11c2</code></a>
release version 3.1.5 (<a
href="https://redirect.github.com/pallets/werkzeug/issues/3085">#3085</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/werkzeug/compare/3.1.1...3.1.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=werkzeug&package-manager=uv&previous-version=3.1.1&new-version=3.1.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/semantic-kernel/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
### Motivation and Context

Reduce macos runner coverage due to capacity

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Reduce macos runner coverage due to capacity

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
…osoft#13610)

## Summary

`ChatHistoryTruncationReducer.reduce()` silently deletes
system/developer messages when truncating chat history. This is because
it calls `extract_range()`, which unconditionally filters out
system/developer messages — a function designed for the summarization
use case, not truncation.

Fixes microsoft#12612.

## Approach

Port the .NET SDK fix (PR microsoft#10344) to Python:

1. Detect the first system/developer message before truncation
2. Pass `has_system_message=True` to `locate_safe_reduction_index` so
`target_count` accounts for the preserved message (matches .NET's
`targetCount -= hasSystemMessage ? 1 : 0`)
3. Use a simple `history[truncation_index:]` slice instead of
`extract_range` (which strips system messages)
4. Prepend the system message if it was truncated away

Also adds a guard for `target_count <= 0` after the system message
adjustment to prevent `IndexError` when `target_count=1`.

## Changes

| File | Change |
|------|--------|
| `chat_history_reducer_utils.py` | Add `has_system_message` parameter,
adjust `target_count`, guard against `<= 0` |
| `chat_history_truncation_reducer.py` | Detect system message, bypass
`extract_range`, prepend if truncated |
| `test_chat_history_truncation_reducer.py` | Update 2 existing tests +
4 new tests (system, developer, no-system, target_count=1) |

## Note

The summarization reducer (`ChatHistorySummarizationReducer`) has the
same bug — it also uses `extract_range` and loses system messages during
summarization. The .NET summarization reducer preserves system messages
via `AssemblySummarizedHistory`. This should be addressed in a follow-up
PR to keep this change focused.

## Test plan

- [x] 11/11 truncation reducer tests pass (was 7, now 11)
- [x] 9/9 utils tests pass (no regressions from new parameter)
- [x] 11/11 summarization reducer tests pass (unaffected)
- [x] Reproduces and fixes the exact scenario from microsoft#12612
- [x] Edge case: `target_count=1` with system message does not crash

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
…jects to 2.0.0-beta.2, Microsoft.Extensions.AI* to 10.4.0 (microsoft#13668)

### Motivation and Context

Bumps core AI SDK dependencies to their latest versions to pick up new
features and fixes.

### Description

Updates the following packages in `Directory.Packages.props`:

- **OpenAI** 2.8.0 → 2.9.1
- **Azure.AI.OpenAI** 2.8.0-beta.1 → 2.9.0-beta.1
- **Azure.AI.Projects** 1.1.0 → 2.0.0-beta.2
- **Azure.Identity** 1.17.1 → 1.19.0 (cascading dependency from
Azure.AI.Projects 2.0.0-beta.2)
- **Microsoft.Extensions.AI\*** 10.3.0 → 10.4.0
- **System.Text.Json, System.Numerics.Tensors,
Microsoft.Extensions.Logging.Abstractions,
Microsoft.Bcl.AsyncInterfaces, System.Threading.Channels** → 10.0.4

Addresses the following breaking changes introduced by OpenAI 2.9.1:

- `CreateInputImagePart` BinaryData overload removed (replaced with data
URI approach)
- Realtime API type renames (`ConversationTool` → `RealtimeTool`,
`ConversationSessionOptions` → `RealtimeConversationSessionOptions`,
etc.)
- `ResponsesClient` constructor no longer accepts a model parameter;
model is now specified on `CreateResponseOptions.Model`
- `ResponseResult.Instructions` is now read-only

Code changes to adapt:

- Added `ModelId` property to `OpenAIResponseAgent` and propagated it
through `ResponseCreationOptionsFactory`
- Updated unit tests (`BaseOpenAIResponseClientTest`,
`OpenAIResponseAgentExtensionsTests`, `OpenAIResponseExtensionsTests`)
- Updated integration tests (`OpenAIResponseAgentTests`,
`OpenAIResponseAgentFixture`)
- Updated `BaseResponsesAgentTest` and `GettingStartedWithAgents`
samples
- Updated `AgentFrameworkMigration` samples (`GetResponsesClient`,
`AsIChatClient`, `CreateAIAgent`, modelId propagation)
- Rewrote `OpenAIRealtime` demo for the restructured Realtime API event
model

### 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
- [ ] I didn't break anyone 😄

<!-- START COPILOT CODING AGENT TIPS -->
---

📍 Connect Copilot coding agent with [Jira](https://gh.io/cca-jira-docs),
[Azure Boards](https://gh.io/cca-azure-boards-docs) or
[Linear](https://gh.io/cca-linear-docs) to delegate work to Copilot in
one click without leaving your project management tool.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
### Motivation and Context

DF Automated PR review workflow.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄
microsoft#13612)

### Motivation and Context

**Why is this change required?**
PR microsoft#10489 added support for configuring embedding [dimensions]
(outputDimensionality) for the Google AI connector, but the equivalent
Vertex AI connector was not updated. This means specifying [Dimensions]
in [EmbeddingGenerationOptions] or via the constructor has no effect
when using Vertex AI — the API always returns the model's default
dimensionality.

**What problem does it solve?**
When using [VertexAIEmbeddingGenerator] or
[VertexAITextEmbeddingGenerationService]with a [dimensions] value (e.g.
128), the output embedding length is the model default (e.g. 3072)
instead of the requested size.

**What scenario does it contribute to?**
Users who need to control embedding dimensionality for storage
optimization, performance, or compatibility with downstream systems when
using the Vertex AI endpoint.

Fixes: microsoft#12988

### Description

This PR adds outputDimensionality support to the Vertex AI embedding
connector, mirroring the existing Google AI implementation from PR
microsoft#10489.

The Google connector has two parallel embedding paths — Google AI (uses
API key, calls generativelanguage.googleapis.com) and Vertex AI (uses
bearer token, calls [{location}-aiplatform.googleapis.com]). PR microsoft#10489
only wired up dimensions for the Google AI path. This PR applies the
same pattern to every layer of the Vertex AI path.

The key structural difference between the two APIs is where
outputDimensionality goes in the request JSON:

Google AI puts it per-content-item: `{ "requests": [{ "content": {...},
"outputDimensionality": 128 }] }`
Vertex AI puts it in the shared parameters block: `{ "instances": [...],
"parameters": { "autoTruncate": false, "outputDimensionality": 128 } }`
The implementation follows this difference. In
[VertexAIEmbeddingRequest], outputDimensionality is added to the
existing [RequestParameters] class (alongside autoTruncate), rather than
on each instance item.

Dimensions flow through the same chain as Google AI:

1. Extension methods accept int? dimensions = null and pass it to the
generator/service constructor
2. [VertexAIEmbeddingGenerator] passes it to
[VertexAITextEmbeddingGenerationService]
3. The service passes it to [VertexAIEmbeddingClient], which stores it
as a default
4. At request time, the client resolves the final value as
[options?.Dimensions ?? this._dimensions] — runtime
[EmbeddingGenerationOptions] take priority over the constructor default
5. [VertexAIEmbeddingRequest.FromData()] sets it on the parameters
block, and [JsonIgnore(WhenWritingNull)] ensures it's omitted when not
specified

All new parameters default to null, preserving full backward
compatibility.

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: abbottdev <3226335+abbottdev@users.noreply.github.com>
Co-authored-by: westey <164392973+westey-m@users.noreply.github.com>
Removes all legacy filtering logic from MEVD, leaving only (obsoleted)
FilterClause and subclasses, which are still needed by ITextSearch (see
conversation in
microsoft#13384 (comment)).

As suggested by @westey-m let's do an SK release before merging this
(see above).

Closes microsoft#10456

/cc @alzarei
…compile-time attribute argument (microsoft#13698)

### Motivation and Context

`VectorStoreKeyAttribute.IsAutoGenerated` was typed as `bool?`, which C#
does not permit as a compile-time attribute argument. This made the
following valid-looking code fail to compile:

```csharp
[VectorStoreKey(StorageName = "name", IsAutoGenerated = true)]
public Guid Key { get; set; }
```

### Description

- **`VectorStoreKeyAttribute.IsAutoGenerated`**: Changed from `public
bool?` to a `public bool` property. Its setter stores the value into a
new `internal bool? IsAutoGeneratedNullable` backing property. The
getter returns `IsAutoGeneratedNullable.GetValueOrDefault()` rather than
throwing; an inline comment explains this is a workaround for the C#
compiler restriction that prevents `Nullable<bool>` from being used as a
compile-time attribute argument. The `bool?` backing preserves the "not
explicitly set" vs. "explicitly set" distinction the framework relies
on.

- **`CollectionModelBuilder`**: Updated to read
`keyAttribute.IsAutoGeneratedNullable` (the `bool?` backing) instead of
the former `bool?` public property, keeping the existing `??
SupportsKeyAutoGeneration(...)` fallback behaviour intact.

- **`KernelFunctionFromMethod`**: Fixed a pre-existing operator
precedence bug in a pattern match expression (`value is not JsonElement
or JsonDocument or JsonNode`) that caused CS9336 redundant-pattern
errors on the .NET 10 compiler. Added parentheses to correctly express
the intended negation of all three types: `value is not (JsonElement or
JsonDocument or JsonNode)`.

- **`CollectionModelBuilderTests`**: Added four new unit tests covering
all `IsAutoGenerated` attribute scenarios: explicitly set to `true`,
explicitly set to `false`, omitted on a `Guid` key (fallback to
`SupportsKeyAutoGeneration` returns `true`), and omitted on an `int` key
(fallback returns `false`).

```csharp
// Now compiles and works correctly
[VectorStoreKey(IsAutoGenerated = true)]
public Guid Key { get; set; }

[VectorStoreKey(IsAutoGenerated = false)]
public Guid Key { get; set; }

[VectorStoreKey]  // IsAutoGeneratedNullable remains null, fallback to SupportsKeyAutoGeneration()
public Guid Key { get; set; }
```

### Contribution Checklist

- [x] The code builds clean without any errors or warnings
- [ ] 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
- [ ] I didn't break anyone 😄

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>[MEVD] Can't set IsAutoGenerated property of
VectorStoreKeyAttribute at compile time</issue_title>
> <issue_description>The following code fails to compile:
> 
> ```csharp
> [VectorStoreKey(StorageName = "name", IsAutoGenerated = true)]
> public Guid Key { get; set; }
> ```
> 
> Because the `IsAutoGenerated` is `bool?`:
> 
>
https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/RecordAttributes/VectorStoreKeyAttribute.cs#L30
> 
> Which in C# maps to `System.Nullable<bool>` (a struct) and can't be
set at compile time.
> 
> Could we make it just a `bool` like what it's mapped to at the end?
> 
>
https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/ProviderServices/KeyPropertyModel.cs#L18
> 
> Context:
https://github.com/dotnet/extensions/pull/7423/changes#r2974567816
> 
> cc @roji </issue_description>
> 
> <agent_instructions>1. Make
[this](https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/RecordAttributes/VectorStoreKeyAttribute.cs#L30)
property be a `bool` rather than `bool?` property.
> 2. Implement the getter and setter for it.
> 3. The setter should set an internal `bool?` property that should be
used instead of the public property everywhere in the repo.
[Example]https://github.com/microsoft/semantic-kernel/blob/082e28e52ec2b45ad8cf287176d844150617e8b5/dotnet/src/VectorData/VectorData.Abstractions/ProviderServices/CollectionModelBuilder.cs#L162)
> 3. Proof of concept code that I've used to verify it's going to get us
what we need:
> 
> ```csharp
> using System.Reflection;
> 
> namespace ConsoleApp15
> {
>     public class Program
>     {
>         static void Main()
>         {
> TestAttribute setToTrue =
typeof(Program).GetMethod(nameof(SetToTrue))!.GetCustomAttribute<TestAttribute>()!;
> Console.WriteLine($"IsAutoGenerated_Core for [Test(IsAutoGenerated =
true)]: {setToTrue.IsAutoGenerated_Core}");
> 
> TestAttribute setToFalse =
typeof(Program).GetMethod(nameof(SetToFalse))!.GetCustomAttribute<TestAttribute>()!;
> Console.WriteLine($"IsAutoGenerated_Core for [Test(IsAutoGenerated =
false)]: {setToFalse.IsAutoGenerated_Core}");
> 
> TestAttribute notSet =
typeof(Program).GetMethod(nameof(NotSet))!.GetCustomAttribute<TestAttribute>()!;
> Console.WriteLine($"IsAutoGenerated_Core for [Test]:
{notSet.IsAutoGenerated_Core}");
>         }
> 
>         [Test(IsAutoGenerated = true)]
>         public static void SetToTrue() { }
> 
>         [Test(IsAutoGenerated = false)]
>         public static void SetToFalse() { }
> 
>         [Test]
>         public static void NotSet() { }
>     }
> 
>     [AttributeUsage(AttributeTargets.All)]
>     public class TestAttribute : Attribute
>     {
>         public bool IsAutoGenerated
>         {
> get => throw new InvalidOperationException(); // provided to satisfy
compiler requirements
>             set => IsAutoGenerated_Core = value;
>         }
> 
>         internal bool? IsAutoGenerated_Core { get; set; }
>     }
> }
> ```</agent_instructions>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes microsoft#13697

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 Send tasks to Copilot coding agent from
[Slack](https://gh.io/cca-slack-docs) and
[Teams](https://gh.io/cca-teams-docs) to turn conversations into code.
Copilot posts an update in your thread when it's finished.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: adamsitnik <6011991+adamsitnik@users.noreply.github.com>
…icrosoft#13608)

## Summary

Fixes microsoft#12708

`ChatHistoryTruncationReducer.reduce()` can orphan `TOOL` role messages
by truncating the preceding `assistant` message that contains the
`tool_calls`, causing OpenAI to reject the history with:

```
messages with role 'tool' must be a response to a preceding message with 'tool_calls'
```

## Root Cause

`locate_safe_reduction_index()` uses
`contains_function_call_or_result()` to detect tool-related messages
during its backward scan. This function only checks `msg.items` for
`FunctionCallContent`/`FunctionResultContent` instances.

However, `TOOL` role messages can contain only text content (no
`FunctionResultContent` in `items`), which causes the backward scan to
treat them as regular messages. The truncation point then lands between
the `tool_calls` assistant message and its `TOOL` responses, orphaning
the tool results.

## Fix

Added `AuthorRole.TOOL` check to `contains_function_call_or_result()`:

```python
if msg.role == AuthorRole.TOOL:
    return True
```

This ensures **any** `TOOL` role message is recognized as part of a tool
call/result pair, regardless of whether it has `FunctionResultContent`
in its `items`.

## Test

Added
`test_locate_safe_reduction_index_tool_role_without_function_result_content`
that verifies TOOL role messages with only text content are not
separated from their tool call.

---------

Co-authored-by: giulio-leone <giulio.leone@users.noreply.github.com>
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
### Motivation and Context

Improve PR parsing by just operating on the PR number - no need for a
full URL.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [ ] The code builds clean without any errors or warnings
- [ ] 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
- [ ] All unit tests pass, and I have added new tests where possible
- [ ] I didn't break anyone 😄

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: MAF Dashboard Bot <maf-dashboard-bot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…osoft#13596)

### Motivation and Context

Follow-up to microsoft#13499. The previous PR added the `allowed_module_prefixes`
parameter but defaulted it to `None`, which meant the module restriction
was only active if developers discovered and configured it.
Secure-by-default is the right posture here — restrict first, let
developers widen as needed.

- Change `allowed_module_prefixes` default from `None` to
`("semantic_kernel.",)` across Dapr runtime step loading
- Non-SK step classes now require developers to explicitly add their
module prefix (e.g. `("semantic_kernel.", "myapp.steps.")`)
- Developers can pass `None` to opt out entirely, but the secure default
is now enforced
- The Dapr runtime code is experimental, so this is a non-breaking
change per our stability guarantees

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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
- [ ] I didn't break anyone 😄

---------

Co-authored-by: MAF Dashboard Bot <maf-dashboard-bot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…icrosoft#13607)

## Summary

Fixes microsoft#13483

### Motivation and Context

When `use_vertexai=True`, users authenticate via Application Default
Credentials (ADC) and don't need an API key. However, the initialization
check for `api_key` runs unconditionally, blocking Vertex AI users with:

```
ServiceInitializationError: The API key is required when use_vertexai is False.
```

### Description

Guard the `api_key` validation with `not
google_ai_settings.use_vertexai` in all three Google AI service classes:

- `GoogleAIChatCompletion`
- `GoogleAITextCompletion`
- `GoogleAITextEmbedding`

The error message already reads *"when use_vertexai is False"*, so the
condition now matches the intent.

### Before / After

```python
# Before — fails even with use_vertexai=True
GoogleAIChatCompletion(
    use_vertexai=True,
    cloud_project_id="my-project",
    cloud_region="us-central1"
)
# → ServiceInitializationError: The API key is required when use_vertexai is False.

# After — works correctly
GoogleAIChatCompletion(
    use_vertexai=True,
    cloud_project_id="my-project",
    cloud_region="us-central1"
)
# → Initializes successfully, uses ADC for authentication
```

### 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)
- [x] The code follows the [SK coding
standards](https://github.com/microsoft/semantic-kernel/blob/main/python/README.md)

---------

Co-authored-by: giulio-leone <giulio.leone@users.noreply.github.com>
Co-authored-by: giulio-leone <6887247+giulio-leone@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… (microsoft#13624)

### Motivation and Context

Closes microsoft#12442

When `ChatCompletionAgent` instances are used as plugins with
`GoogleAIChatCompletion`, the application crashes with:
```
ValueError: Unknown field for Schema: anyOf
```

**Root cause**: The Semantic Kernel JSON schema builder generates
`anyOf` for Union types (e.g. `str | list[str]` on the agent's
`messages` parameter) and type-as-array for Optional types (e.g.
`["string", "null"]`). Google AI's protobuf `Schema` does not support
these constructs.

### Description

Add `sanitize_schema_for_google_ai()` to `shared_utils.py` that
recursively rewrites unsupported schema constructs:

- `anyOf` / `oneOf` with a null variant → single type + `nullable: true`
- `anyOf` / `oneOf` without null → picks the first variant
- `type` as array (e.g. `["string", "null"]`) → single type + `nullable:
true`

Applied in both
`kernel_function_metadata_to_google_ai_function_call_format()` and
`kernel_function_metadata_to_vertex_ai_function_call_format()`.

### 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)
- [x] The existing tests pass, and I have added 12 new regression tests
- [x] I didn't break any existing functionality

> [!NOTE]
> AI-assisted contribution: Claude helped with code review, test
generation, and formatting.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
### Motivation and Context

Bump Pythong version to 1.41.1 for a release

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Bump Pythong version to 1.41.1 for a release

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
…erfaces (microsoft#13699)

## Changes

* **Extract `ConfigureVectorPropertyEmbedding()`**: Deduplicated
embedding resolution logic that was repeated across
`ProcessTypeProperties` and `ProcessRecordDefinition`.
* **Replace `IRecordCreator` with `Func<object>`**: Removed
`IRecordCreator` interface and two implementing classes
(`ActivatorBasedRecordCreator`, `DynamicRecordCreator`), replacing them
with simple lambdas.
* **Rename `TemporaryStorageName` → `SerializedKeyName`**: Moved from
`PropertyModel` base to `KeyPropertyModel` where it belongs (only used
by CosmosNoSql for key property JSON serializer name remapping).
* **Delegate-based property accessors**: Replaced virtual
`GetValueAsObject`/`SetValueAsObject` overrides with delegate fields
(`_getter`/`_setter`), configured via
`ConfigurePocoAccessors()`/`ConfigureDynamicAccessors()`. Converted
null-coalescing throws to `Debug.Assert`.
* **Improved xmldoc** on `VectorPropertyModel.EmbeddingType` explaining
the `[AllowNull]` invariant.
* **Introduce read-only interfaces** (`IPropertyModel`,
`IKeyPropertyModel`, `IDataPropertyModel`, `IVectorPropertyModel`):
`CollectionModel` now exposes `IReadOnlyList<IVectorPropertyModel>`
etc., giving providers an immutable view post-build. All provider code
updated to consume interface types.

Note that the last is a non-trivial breaking change for providers (not
users), which I think is fine (note that the provider-facing APIs are
flagged as [Experimental]).

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
We are currently using Npgsql 8.0 because that's the last version that's
still compatible with .NET Standard 2.0/netfx; but it seems wrong to
force an older version of Npgsql on modern .NET users just because netfx
users require it

So for the versions of the PgVector MEVD provider targeting
net8.0/net10.0, use the latest Npgsql 10.0; netstandard2.0/net462 still
use Npgsql 8.0. It's not ideal to use different versions of Npgsql
across different TFM targets of the same library, but it seems like the
lesser of the possible evils here.

This incidentally also takes care of the ReloadTypesAsync problem in
microsoft#13706.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…soft#13738)

### Motivation and Context

This PR updates the Jinja2 and Handlebars prompt-template helpers to
serialize chat messages through the existing XML/message serializer
instead of assembling message XML manually. It also aligns the
prompt-template samples with the serializer-backed helper and adds
regression coverage for common message content.

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

Prompt template message serialize improvements.

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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
- [ ] I didn't break anyone 😄

---------

Co-authored-by: MAF Dashboard Bot <maf-dashboard-bot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…thon (microsoft#13329)

Updates the requirements on
[redis[hiredis]](https://github.com/redis/redis-py) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/redis/redis-py/releases">redis[hiredis]'s
releases</a>.</em></p>
<blockquote>
<h2>7.0.1</h2>
<h1>Changes</h1>
<p>This release adds small fixes related to documentation.</p>
<h2>🧰 Maintenance</h2>
<ul>
<li>Add 'multi_database' section to documentation index (313d93f)</li>
<li>Revised multi-database client documentation(78df745)</li>
<li>Adding info about Multi-database client in README.md (3f7a55e)</li>
</ul>
<p>We'd like to thank all the contributors who worked on this release!
<a href="https://github.com/dmaier"><code>@​dmaier</code></a> <a
href="https://github.com/petyaslavova"><code>@​petyaslavova</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/redis/redis-py/commit/613a06f5bee94ee8aad3d841dd8c595ae6cc62d2"><code>613a06f</code></a>
Updating redis-py package version to 7.0.1</li>
<li><a
href="https://github.com/redis/redis-py/commit/3f7a55e5914f82787fde15c56c18b105f001745e"><code>3f7a55e</code></a>
Adding info about Multi-database client in README.md</li>
<li><a
href="https://github.com/redis/redis-py/commit/313d93f0b90c69ea5e6c7af8ff9b31ee005f4994"><code>313d93f</code></a>
Add 'multi_database' section to documentation index</li>
<li><a
href="https://github.com/redis/redis-py/commit/78df74522f76341be965e5c719427be6dcd5bedf"><code>78df745</code></a>
Revised multi-database client documentation</li>
<li><a
href="https://github.com/redis/redis-py/commit/7a4e8bc42a1cbda6b1e8e2e1dfbe8a94766e07f9"><code>7a4e8bc</code></a>
Updating package version to 7.0.0 and supported redis versions in
readme.md</li>
<li><a
href="https://github.com/redis/redis-py/commit/64a2721d6b0303e7a723066530b467145ee10841"><code>64a2721</code></a>
Refactor healthcheck to use PING instead of ECHO (<a
href="https://redirect.github.com/redis/redis-py/issues/3811">#3811</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/24a7a1027bd6390e161c1c88be35c8acb242833d"><code>24a7a10</code></a>
Fixing SORTABLE, INDEXEMPTY and INDEXMISSING order when using RediSearch
fiel...</li>
<li><a
href="https://github.com/redis/redis-py/commit/32ba6d89d2061a44c0c3f36d249fb9929836fca6"><code>32ba6d8</code></a>
DOC-5821 update index/query example for runnable notebook (<a
href="https://redirect.github.com/redis/redis-py/issues/3807">#3807</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/c1e566f9fbd99912d7073b871eeda76d70f61b63"><code>c1e566f</code></a>
Add handling of empty spaces during CLIENT LIST response parsing (<a
href="https://redirect.github.com/redis/redis-py/issues/3797">#3797</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/295bec67ddbf99c205376483f08a3ddebb72f2b2"><code>295bec6</code></a>
Adding new ExternalAuthProviderError that will be raised when we receive
'pro...</li>
<li>Additional commits viewable in <a
href="https://github.com/redis/redis-py/compare/v6.0.0...v7.0.1">compare
view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…/python (microsoft#13331)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updates the requirements on
[chromadb](https://github.com/chroma-core/chroma) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chroma-core/chroma/releases">chromadb's
releases</a>.</em></p>
<blockquote>
<h2>1.3.0</h2>
<p>Version: <code>1.3.0</code>
Git ref: <code>refs/tags/1.3.0</code>
Build Date: <code>2025-10-29T03:08</code>
PIP Package: <code>chroma-1.3.0.tar.gz</code>
Github Container Registry Image: <code>:1.3.0</code>
DockerHub Image: <code>:1.3.0</code></p>
<h2>What's Changed</h2>
<ul>
<li>[ENH] - Adds rust client to list of clients by <a
href="https://github.com/tjkrusinskichroma"><code>@​tjkrusinskichroma</code></a>
in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5740">chroma-core/chroma#5740</a></li>
<li>[ENH]: Integrate task operators into compaction by <a
href="https://github.com/tanujnay112"><code>@​tanujnay112</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5687">chroma-core/chroma#5687</a></li>
<li>[ENH]: Add heaptender client to compaction and make finishtask use
this by <a
href="https://github.com/tanujnay112"><code>@​tanujnay112</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5715">chroma-core/chroma#5715</a></li>
<li>[ENH] Add local support for schema by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5714">chroma-core/chroma#5714</a></li>
<li>[ENH]: Implement create_task with 2PC and backfill + make it
idemptotent by <a
href="https://github.com/tanujnay112"><code>@​tanujnay112</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5729">chroma-core/chroma#5729</a></li>
<li>[CHORE] reconcile schema in compaction orchetrator and use in
spann&amp;hnsw by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5742">chroma-core/chroma#5742</a></li>
<li>[ENH] Export schema and search types from chromadb.api by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5736">chroma-core/chroma#5736</a></li>
<li>Add Sync to roadmap by <a
href="https://github.com/kylediaz"><code>@​kylediaz</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5745">chroma-core/chroma#5745</a></li>
<li>[ENH]: limit concurrency on operators spawned by GC by <a
href="https://github.com/codetheweb"><code>@​codetheweb</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5720">chroma-core/chroma#5720</a></li>
<li>[BLD] Bump hnswlib dep by <a
href="https://github.com/Sicheng-Pan"><code>@​Sicheng-Pan</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5743">chroma-core/chroma#5743</a></li>
<li>[ENH] recognize and flush new metadata keys to schema on local
compaction by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5728">chroma-core/chroma#5728</a></li>
<li>[ENH]: Error if source_key set but no ef by <a
href="https://github.com/sanketkedia"><code>@​sanketkedia</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5751">chroma-core/chroma#5751</a></li>
<li>[ENH]: (Rust client): add <code>true.into::&lt;Where&gt;()</code>
helper by <a
href="https://github.com/codetheweb"><code>@​codetheweb</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5750">chroma-core/chroma#5750</a></li>
<li>Revert &quot;[ENH]: Error if source_key set but no ef&quot; by <a
href="https://github.com/sanketkedia"><code>@​sanketkedia</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5757">chroma-core/chroma#5757</a></li>
<li>[ENH]: Disallow setting only source_key without an ef by <a
href="https://github.com/sanketkedia"><code>@​sanketkedia</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5758">chroma-core/chroma#5758</a></li>
<li>[BUG] use keys instead of key_overrides in query embedding strings
by <a href="https://github.com/jairad26"><code>@​jairad26</code></a> in
<a
href="https://redirect.github.com/chroma-core/chroma/pull/5754">chroma-core/chroma#5754</a></li>
<li>[ENH] Add BM25 embedding function to JS by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5756">chroma-core/chroma#5756</a></li>
<li>[CHORE] Bump js ai-embeddings versions by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5759">chroma-core/chroma#5759</a></li>
<li>[TST] add space checks &amp; local modify test for schema by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5761">chroma-core/chroma#5761</a></li>
<li>[RELEASE] Python 1.3.0 by <a
href="https://github.com/jairad26"><code>@​jairad26</code></a> in <a
href="https://redirect.github.com/chroma-core/chroma/pull/5760">chroma-core/chroma#5760</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chroma-core/chroma/compare/1.2.2...1.3.0">https://github.com/chroma-core/chroma/compare/1.2.2...1.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/chroma-core/chroma/commit/6b30ba6104cb8feeac8c58e39ff1b1f327b343fa"><code>6b30ba6</code></a>
[RELEASE] Python 1.3.0 (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5760">#5760</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/589bfbc967b8d17c8d6ffad6d12d6de31b4b86fb"><code>589bfbc</code></a>
[TST] add space checks &amp; local modify test for schema (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5761">#5761</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/810eecc153c915a061cc5b463f00b0a741191ead"><code>810eecc</code></a>
[CHORE] Bump js ai-embeddings versions (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5759">#5759</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/83252aa0f8d4524908107de70b809b1dad1f7daa"><code>83252aa</code></a>
[ENH] Add BM25 embedding function to JS (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5756">#5756</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/ff1285d2572bf9ca0018d38c69bd1eae3846f82b"><code>ff1285d</code></a>
[BUG] use keys instead of key_overrides in query embedding strings (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5754">#5754</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/8e8fb95c2cde9e24b01069947b3b5e613e633ccd"><code>8e8fb95</code></a>
[ENH]: Disallow setting only source_key without an ef (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5758">#5758</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/0734fdffa5f73ff6886eec9a10d07810d63e99ed"><code>0734fdf</code></a>
Revert &quot;[ENH]: Error if source_key set but no ef&quot; (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5757">#5757</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/34ebde8d4f8debd5a26d5fd740c85cfbb66379e7"><code>34ebde8</code></a>
[ENH]: (Rust client): add <code>true.into::\&lt;Where&gt;()</code>
helper (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5750">#5750</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/0d3bd2afdcba32f1de74007d3e77bbae89d67849"><code>0d3bd2a</code></a>
[ENH]: Error if source_key set but no ef (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5751">#5751</a>)</li>
<li><a
href="https://github.com/chroma-core/chroma/commit/a1ea81a69275bdf25d7526df520d4aab3d82a76d"><code>a1ea81a</code></a>
[ENH] recognize and flush new metadata keys to schema on local
compaction (<a
href="https://redirect.github.com/chroma-core/chroma/issues/5">#5</a>...</li>
<li>Additional commits viewable in <a
href="https://github.com/chroma-core/chroma/compare/0.5.0...1.3.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
…6 in /python (microsoft#13124)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updates the requirements on
[pymongo](https://github.com/mongodb/mongo-python-driver) to permit the
latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mongodb/mongo-python-driver/releases">pymongo's
releases</a>.</em></p>
<blockquote>
<h2>PyMongo 4.15.0</h2>
<p>Community notes: <a
href="https://www.mongodb.com/community/forums/t/pymongo-4-15-released/328574">https://www.mongodb.com/community/forums/t/pymongo-4-15-released/328574</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst">pymongo's
changelog</a>.</em></p>
<blockquote>
<h2>Changes in Version 4.15.0 (2025/09/10)</h2>
<p>PyMongo 4.15 brings a number of changes including:</p>
<ul>
<li>Added :class:<code>~pymongo.encryption_options.TextOpts</code>,
:attr:<code>~pymongo.encryption.Algorithm.TEXTPREVIEW</code>,
:attr:<code>~pymongo.encryption.QueryType.PREFIXPREVIEW</code>,
:attr:<code>~pymongo.encryption.QueryType.SUFFIXPREVIEW</code>,
:attr:<code>~pymongo.encryption.QueryType.SUBSTRINGPREVIEW</code>,
as part of the experimental Queryable Encryption text queries beta.
<code>pymongocrypt&gt;=1.16</code> is required for text query
support.</li>
<li>Added :class:<code>bson.decimal128.DecimalEncoder</code> and
:class:<code>bson.decimal128.DecimalDecoder</code>
to support encoding and decoding of BSON Decimal128 values to
decimal.Decimal values using the TypeRegistry API.</li>
<li>Added support for Windows <code>arm64</code> wheels.</li>
</ul>
<h2>Changes in Version 4.14.1 (2025/08/19)</h2>
<p>Version 4.14.1 is a bug fix release.</p>
<ul>
<li>Fixed a bug in <code>MongoClient.append_metadata()</code> and
<code>AsyncMongoClient.append_metadata()</code>
that allowed duplicate <code>DriverInfo.name</code> to be appended to
the metadata.</li>
</ul>
<p>Issues Resolved
...............</p>
<p>See the <code>PyMongo 4.14.1 release notes in JIRA</code>_ for the
list of resolved issues
in this release.</p>
<p>.. _PyMongo 4.14.1 release notes in JIRA: <a
href="https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=45256">https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=45256</a></p>
<h2>Changes in Version 4.14.0 (2025/08/06)</h2>
<p>.. warning:: PyMongo 4.14 drops support for MongoDB 4.0. PyMongo now
supports
MongoDB 4.2+.</p>
<p>PyMongo 4.14 brings a number of changes including:</p>
<ul>
<li>
<p>Dropped support for MongoDB 4.0.</p>
</li>
<li>
<p>Added preliminary support for Python 3.14 and 3.14 with
free-threading. We do
not yet support the following with Python 3.14:</p>
<ul>
<li>Subinterpreters (<code>concurrent.interpreters</code>)</li>
<li>Free-threading with Encryption</li>
<li>mod_wsgi</li>
</ul>
</li>
<li>
<p>Removed experimental support for free-threading support in Python
3.13.</p>
</li>
<li>
<p>Added :attr:<code>bson.codec_options.TypeRegistry.codecs</code>
and</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/1514e9b784ed395e7dad806c7b722fef531ecb15"><code>1514e9b</code></a>
Prepare 4.15 release (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2523">#2523</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/98e9f5ecc1396abf2fafe070de36e1bed5691930"><code>98e9f5e</code></a>
PYTHON-5538 Clean up uv lock file handling (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2522">#2522</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/d7316afb632fb16e23214ec2a404b308a1054896"><code>d7316af</code></a>
PYTHON-5328 CRUD Support in Driver for Prefix/Suffix/Substring Indexes
(<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2521">#2521</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/7580309e993fdda26dc4ea38ccfd0178e78c99e7"><code>7580309</code></a>
PYTHON-4928 Convert CSFLE spec tests to unified test format (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2520">#2520</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/47c5460d2ec7eced587add33cb6ab0d717218f49"><code>47c5460</code></a>
Bump pyright from 1.1.404 to 1.1.405 (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2518">#2518</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/b84e1a7ce4f53faf3b4898fdf8b5b89251f8c047"><code>b84e1a7</code></a>
PYTHON-5527 - Unified test typo in 'Expected error' (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2517">#2517</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/c0e0554a3b69b7c3140a792934682c19b43fc269"><code>c0e0554</code></a>
PYTHON-5521 - Update TestBsonSizeBatches.test_06_insert_fails_over_16MiB
erro...</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/d63edf7aea260be286a3bc98e28f961db43a71b0"><code>d63edf7</code></a>
PYTHON-5524 - Fix CSFLE spec test min version checks (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2516">#2516</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/b756bbd2a392ee9a810dd9b5df97fc4e16cfae37"><code>b756bbd</code></a>
Bump the actions group with 2 updates (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2513">#2513</a>)</li>
<li><a
href="https://github.com/mongodb/mongo-python-driver/commit/b2bba67b61f033be5360bebc1ea260164ae75bb2"><code>b2bba67</code></a>
Update coverage requirement from &lt;=7.10.5,&gt;=5 to
&gt;=5,&lt;=7.10.6 (<a
href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2512">#2512</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mongodb/mongo-python-driver/compare/4.8.0...4.15.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
…=2.10.3,<2.12,>=2.0 to >=2.0,!=2.10.0,!=2.10.1,!=2.10.2,!=2.10.3,<2.13 in /python (microsoft#13246)

Updates the requirements on
[pydantic](https://github.com/pydantic/pydantic) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/releases">pydantic's
releases</a>.</em></p>
<blockquote>
<h2>v2.12.1 2025-10-13</h2>
<h2>v2.12.1 (2025-10-13)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.12.1">GitHub
release</a></p>
<h3>What's Changed</h3>
<p>This is the first 2.12 patch release, addressing most (but not all
yet) regressions from the initial 2.12.0 release.</p>
<h4>Fixes</h4>
<ul>
<li>Do not evaluate annotations when inspecting validators and
serializers by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12355">#12355</a></li>
<li>Make sure <code>None</code> is converted as <code>NoneType</code> in
Python 3.14 by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12370">#12370</a></li>
<li>Backport V1 runtime warning when using Python 3.14 by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12367">#12367</a></li>
<li>Fix error message for invalid validator signatures by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12366">#12366</a></li>
<li>Populate field name in <code>ValidationInfo</code> for validation of
default value by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1826">pydantic-core#1826</a></li>
<li>Encode credentials in <code>MultiHostUrl</code> builder by <a
href="https://github.com/willswire"><code>@​willswire</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li>
<li>Respect field serializers when using <code>serialize_as_any</code>
serialization flag by <a
href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li>
<li>Fix various <code>RootModel</code> serialization issues by <a
href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1836">pydantic-core#1836</a></li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/willswire"><code>@​willswire</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic/compare/v2.12.0...v2.12.1">https://github.com/pydantic/pydantic/compare/v2.12.0...v2.12.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/blob/v2.12.1/HISTORY.md">pydantic's
changelog</a>.</em></p>
<blockquote>
<h2>v2.12.1 (2025-10-13)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.12.1">GitHub
release</a></p>
<h3>What's Changed</h3>
<p>This is the first 2.12 patch release, addressing most (but not all
yet) regressions from the initial 2.12.0 release.</p>
<h4>Fixes</h4>
<ul>
<li>Do not evaluate annotations when inspecting validators and
serializers by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12355">#12355</a></li>
<li>Make sure <code>None</code> is converted as <code>NoneType</code> in
Python 3.14 by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12370">#12370</a></li>
<li>Backport V1 runtime warning when using Python 3.14 by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12367">#12367</a></li>
<li>Fix error message for invalid validator signatures by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12366">#12366</a></li>
<li>Populate field name in <code>ValidationInfo</code> for validation of
default value by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1826">pydantic-core#1826</a></li>
<li>Encode credentials in <code>MultiHostUrl</code> builder by <a
href="https://github.com/willswire"><code>@​willswire</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li>
<li>Respect field serializers when using <code>serialize_as_any</code>
serialization flag by <a
href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li>
<li>Fix various <code>RootModel</code> serialization issues by <a
href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1836">pydantic-core#1836</a></li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/willswire"><code>@​willswire</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic-core/pull/1829">pydantic-core#1829</a></li>
</ul>
<h2>v2.12.0 (2025-10-07)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.12.0">GitHub
release</a></p>
<h3>What's Changed</h3>
<p>This is the final 2.12 release. It features the work of 20 external
contributors and provides useful new features, along with initial Python
3.14 support.
Several minor changes (considered non-breaking changes according to our
<a
href="https://docs.pydantic.dev/2.12/version-policy/#pydantic-v2">versioning
policy</a>)
are also included in this release. Make sure to look into them before
upgrading.</p>
<p><strong>Note that Pydantic V1 is not compatible with Python 3.14 and
greater</strong>.</p>
<p>Changes (see the alpha and beta releases for additional changes since
2.11):</p>
<h4>Packaging</h4>
<ul>
<li>Update V1 copy to v1.10.24 by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12338">#12338</a></li>
</ul>
<h4>New Features</h4>
<ul>
<li>Add <code>extra</code> parameter to the validate functions by <a
href="https://github.com/anvilpete"><code>@​anvilpete</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12233">#12233</a></li>
<li>Add <code>exclude_computed_fields</code> serialization option by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12334">#12334</a></li>
<li>Add <code>preverse_empty_path</code> URL options by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12336">#12336</a></li>
<li>Add <code>union_format</code> parameter to JSON Schema generation by
<a href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12147">#12147</a></li>
<li>Add <code>__qualname__</code> parameter for
<code>create_model</code> by <a
href="https://github.com/Atry"><code>@​Atry</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/12001">#12001</a></li>
</ul>
<h4>Fixes</h4>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic/commit/b4076c66773b514d4891f036a4cc562b8ff0ff21"><code>b4076c6</code></a>
Prepare release 2.12.1</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/b67f07291167b4005a6eeee05fcad67b43a53f41"><code>b67f072</code></a>
Bump <code>pydantic-core</code> to v2.41.3</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/529f7ddc4a2eac8eb41b39d8b4d6c07997de46f8"><code>529f7dd</code></a>
Fix error message for invalid validator signatures</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/445fa79f2eda31e2a1922f9736f7613bbd9680b5"><code>445fa79</code></a>
Backport V1 runtime warning</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/b3dba9be0705293019c368d8acc5b8b60dcf5148"><code>b3dba9b</code></a>
Make sure <code>None</code> is converted as <code>NoneType</code> in
Python 3.14</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/1e8c41ee1327c153c713f47feb98a5fa7bb8ce89"><code>1e8c41e</code></a>
Do not evaluate annotations when inspecting validators and
serializers</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/e2a199fe4fc5f8cbc32c93840c9783b332b4f112"><code>e2a199f</code></a>
Upgrade dependencies for 3.14</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/79353e6a6b9fc7a34304d5981b670832044caa99"><code>79353e6</code></a>
Fix spelling in <code>model_dump()</code> docstring</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/aa6b6cd206253c24a46a5fb830e2ff029d21fb95"><code>aa6b6cd</code></a>
Fix typo in experimental.md documentation</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a7928e692e5a7841c4379d1af1fd37966941dade"><code>a7928e6</code></a>
Update Python version in documentation publishing CI job (<a
href="https://redirect.github.com/pydantic/pydantic/issues/12344">#12344</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pydantic/pydantic/compare/v2.0...v2.12.1">compare
view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ent tools (microsoft#13235)

issue: microsoft#13234

## Summary
- honor FunctionChoiceBehavior filters when retrieving kernel function
metadata
 
### 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 😄

---------

Co-authored-by: Evan Mattson <35585003+moonbox3@users.noreply.github.com>
…ython (microsoft#13330)

Updates the requirements on
[ipykernel](https://github.com/ipython/ipykernel) to permit the latest
version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ipython/ipykernel/releases">ipykernel's
releases</a>.</em></p>
<blockquote>
<h2>v7.1.0</h2>
<h2>7.1.0</h2>
<p>IPykernel 7.1.0 fixes an issue where display outputs such as
Matplotlib plots were not included when using <code>%notebook</code>
magic to save sessions as <code>.ipynb</code> files (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1435">#1435</a>).
This is enabled using the traitlet
<code>ZMQDisplayPublisher.store_display_history</code> which defaults to
the previous behaviour of False. This is a minor release rather than a
patch release due to the addition of the new traitlet.</p>
<p>Output from threads is restored to the pre-6.29 behavior by default
(route to latest cell, unless <code>get_ipython().set_parent()</code> is
called explicitly from the thread. If it is called, output from that
thread will continue to be routed to the same cell). This behavior is
now opt-in, instead of unconditional (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1451">#1451</a>).</p>
<p>This release also fixes bugs that were introduced into the 7.x branch
relating to Matplotlib plots in separate windows not being displayed
correctly (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1458">#1458</a>),
kernels launched in new threads failing asserts (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1455">#1455</a>),
and <code>ContextVar</code>s persisting between cells (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1462">#1462</a>).
There is also a fix for keyboard interrupts on Windows (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1434">#1434</a>).</p>
<p>(<a
href="https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43">Full
Changelog</a>)</p>
<h3>Enhancements made</h3>
<ul>
<li>Store display outputs in history for <code>%notebook</code> magic <a
href="https://redirect.github.com/ipython/ipykernel/pull/1435">#1435</a>
(<a
href="https://github.com/Darshan808"><code>@​Darshan808</code></a>)</li>
</ul>
<h3>Bugs fixed</h3>
<ul>
<li>fix ContextVar persistence across cells <a
href="https://redirect.github.com/ipython/ipykernel/pull/1462">#1462</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
<li>Fix matplotlib eventloops <a
href="https://redirect.github.com/ipython/ipykernel/pull/1458">#1458</a>
(<a
href="https://github.com/ianthomas23"><code>@​ianthomas23</code></a>)</li>
<li>Refer to kernel launching thread instead of assuming the main thread
<a
href="https://redirect.github.com/ipython/ipykernel/pull/1455">#1455</a>
(<a href="https://github.com/dfalbel"><code>@​dfalbel</code></a>)</li>
<li>Fix routing of background thread output when no parent is set
explicitly <a
href="https://redirect.github.com/ipython/ipykernel/pull/1451">#1451</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
<li>Fix KeyboardInterrupt on Windows by manually resetting interrupt
event <a
href="https://redirect.github.com/ipython/ipykernel/pull/1434">#1434</a>
(<a href="https://github.com/ptosco"><code>@​ptosco</code></a>)</li>
</ul>
<h3>Maintenance and upkeep improvements</h3>
<ul>
<li>update pre-commit and related <a
href="https://redirect.github.com/ipython/ipykernel/pull/1465">#1465</a>
(<a href="https://github.com/Carreau"><code>@​Carreau</code></a>)</li>
<li>test that matplotlib event loop integration is responsive <a
href="https://redirect.github.com/ipython/ipykernel/pull/1463">#1463</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
<li>update tests for 3.14 <a
href="https://redirect.github.com/ipython/ipykernel/pull/1453">#1453</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
</ul>
<h3>Contributors to this release</h3>
<p>(<a
href="https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14&amp;to=2025-10-27&amp;type=c">GitHub
contributors page for this release</a>)</p>
<p><a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​Carreau</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​Darshan808</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​dfalbel</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​ianthomas23</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​krassowski</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​lumberbot-app</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​minrk</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​ptosco</code></a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md">ipykernel's
changelog</a>.</em></p>
<blockquote>
<h2>7.1.0</h2>
<p>IPykernel 7.1.0 fixes an issue where display outputs such as
Matplotlib plots were not included when using <code>%notebook</code>
magic to save sessions as <code>.ipynb</code> files (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1435">#1435</a>).
This is enabled using the traitlet
<code>ZMQDisplayPublisher.store_display_history</code> which defaults to
the previous behaviour of False. This is a minor release rather than a
patch release due to the addition of the new traitlet.</p>
<p>Output from threads is restored to the pre-6.29 behavior by default
(route to latest cell, unless <code>get_ipython().set_parent()</code> is
called explicitly from the thread. If it is called, output from that
thread will continue to be routed to the same cell). This behavior is
now opt-in, instead of unconditional (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1451">#1451</a>).</p>
<p>This release also fixes bugs that were introduced into the 7.x branch
relating to Matplotlib plots in separate windows not being displayed
correctly (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1458">#1458</a>),
kernels launched in new threads failing asserts (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1455">#1455</a>),
and <code>ContextVar</code>s persisting between cells (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1462">#1462</a>).
There is also a fix for keyboard interrupts on Windows (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1434">#1434</a>).</p>
<p>(<a
href="https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43">Full
Changelog</a>)</p>
<h3>Enhancements made</h3>
<ul>
<li>Store display outputs in history for <code>%notebook</code> magic <a
href="https://redirect.github.com/ipython/ipykernel/pull/1435">#1435</a>
(<a
href="https://github.com/Darshan808"><code>@​Darshan808</code></a>)</li>
</ul>
<h3>Bugs fixed</h3>
<ul>
<li>fix ContextVar persistence across cells <a
href="https://redirect.github.com/ipython/ipykernel/pull/1462">#1462</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
<li>Fix matplotlib eventloops <a
href="https://redirect.github.com/ipython/ipykernel/pull/1458">#1458</a>
(<a
href="https://github.com/ianthomas23"><code>@​ianthomas23</code></a>)</li>
<li>Refer to kernel launching thread instead of assuming the main thread
<a
href="https://redirect.github.com/ipython/ipykernel/pull/1455">#1455</a>
(<a href="https://github.com/dfalbel"><code>@​dfalbel</code></a>)</li>
<li>Fix routing of background thread output when no parent is set
explicitly <a
href="https://redirect.github.com/ipython/ipykernel/pull/1451">#1451</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
<li>Fix KeyboardInterrupt on Windows by manually resetting interrupt
event <a
href="https://redirect.github.com/ipython/ipykernel/pull/1434">#1434</a>
(<a href="https://github.com/ptosco"><code>@​ptosco</code></a>)</li>
</ul>
<h3>Maintenance and upkeep improvements</h3>
<ul>
<li>update pre-commit and related <a
href="https://redirect.github.com/ipython/ipykernel/pull/1465">#1465</a>
(<a href="https://github.com/Carreau"><code>@​Carreau</code></a>)</li>
<li>test that matplotlib event loop integration is responsive <a
href="https://redirect.github.com/ipython/ipykernel/pull/1463">#1463</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
<li>update tests for 3.14 <a
href="https://redirect.github.com/ipython/ipykernel/pull/1453">#1453</a>
(<a href="https://github.com/minrk"><code>@​minrk</code></a>)</li>
</ul>
<h3>Contributors to this release</h3>
<p>(<a
href="https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14&amp;to=2025-10-27&amp;type=c">GitHub
contributors page for this release</a>)</p>
<p><a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​Carreau</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​Darshan808</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​dfalbel</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​ianthomas23</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​krassowski</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​lumberbot-app</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​minrk</code></a>
| <a
href="https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27&amp;type=Issues"><code>@​ptosco</code></a></p>
<!-- raw HTML omitted -->
<h2>7.0.1</h2>
<p>IPykernel 7.0.1 is a bug fix release to support CPython 3.14.</p>
<p>(<a
href="https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45">Full
Changelog</a>)</p>
<h3>Bugs fixed</h3>
<ul>
<li>Avoid overriding Thread._context in Python 3.14 <a
href="https://redirect.github.com/ipython/ipykernel/pull/1447">#1447</a>
(<a
href="https://github.com/ianthomas23"><code>@​ianthomas23</code></a>)</li>
</ul>
<h3>Maintenance and upkeep improvements</h3>
<ul>
<li>Fix 7.x license warnings <a
href="https://redirect.github.com/ipython/ipykernel/pull/1448">#1448</a>
(<a href="https://github.com/bollwyvl"><code>@​bollwyvl</code></a>)</li>
<li>ci: Test on PyPy 3.11 instead of 3.10 <a
href="https://redirect.github.com/ipython/ipykernel/pull/1444">#1444</a>
(<a href="https://github.com/cclauss"><code>@​cclauss</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ipython/ipykernel/commit/39eaf96ab6db0d0ff9ad269831384c53a11e11d8"><code>39eaf96</code></a>
Publish 7.1.0</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/6f61a6835c217e42c406ee01b359e2fa235baf43"><code>6f61a68</code></a>
test that matplotlib event loop integration is responsive (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1463">#1463</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/8446e02948c390793e129affeceedfa30ed5080f"><code>8446e02</code></a>
Fix KeyboardInterrupt on Windows by manually resetting interrupt event
(<a
href="https://redirect.github.com/ipython/ipykernel/issues/1434">#1434</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/dd1e09484854c8dedcd98436bc01b6b8e1cc9034"><code>dd1e094</code></a>
update pre-commit and related (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1465">#1465</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/95f245138589db4f723b8af06107cdfeadc53314"><code>95f2451</code></a>
fix ContextVar persistence across cells (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1462">#1462</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/c56a7aab3cad1fb91f7e7185dc7403d561ecd667"><code>c56a7aa</code></a>
Fix matplotlib eventloops (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1458">#1458</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/c7af34cd19ebcd43f5aafe1919909feb6e898387"><code>c7af34c</code></a>
Refer to kernel laucnhing thread instead of assuming the main thread (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1455">#1455</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/7193d14de447a18470a18d60b81eda5f0048b6aa"><code>7193d14</code></a>
Fix routing of background thread output when no parent is set explicitly
(<a
href="https://redirect.github.com/ipython/ipykernel/issues/1451">#1451</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/b8f5dfc3a35a658c66b85213e60f634bd8a44488"><code>b8f5dfc</code></a>
Store display outputs in history for <code>%notebook</code> magic (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1435">#1435</a>)</li>
<li><a
href="https://github.com/ipython/ipykernel/commit/93f11dbb02692a7922cb6fdb4ebadffdb8b691c0"><code>93f11db</code></a>
update tests for 3.14 (<a
href="https://redirect.github.com/ipython/ipykernel/issues/1453">#1453</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ipython/ipykernel/compare/v6.29.0...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
### Motivation and Context

bump py version to 1.41.2 for a release

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->

### Description

bump py version to 1.41.2 for a release

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [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 😄
- Replace deprecated TOP_N parameter with SELECT TOP(N) WITH APPROXIMATE
- Enable iterative filtering (WHERE predicates during vector search)
- Support skip via subquery wrapping (TOP and OFFSET/FETCH can't coexist)
- Add Azure SQL runtime detection for DiskAnn (SERVERPROPERTY EngineEdition)
- Remove read-only table workaround (SqlServerDiskAnnVectorSearchTests)
- Update hybrid search CTE with new VECTOR_SEARCH syntax
- Gate DiskAnn conformance test on Azure SQL connection string
- Handle 100-row minimum requirement for DiskAnn vector index creation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@roji roji closed this Apr 13, 2026
@roji roji deployed to integration April 13, 2026 19:46 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.