Skip to content

release: Refresh 2026.6 candidate from current main - #26164

Merged
Eleanor Boyd (eleanorjboyd) merged 24 commits into
microsoft:release/2026.6from
eleanorjboyd:agents/release-branch-20266-update
Sep 24, 2026
Merged

Eleanor Boyd (eleanorjboyd) merged 24 commits into
microsoft:release/2026.6from
eleanorjboyd:agents/release-branch-20266-update

Conversation

@eleanorjboyd

@eleanorjboyd Eleanor Boyd (eleanorjboyd) commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Bring the existing 2026.6 release candidate forward to the latest main, incorporating the 23 changes that have been in 2026.7 Insiders.
  • Keep package.json and package-lock.json at 2026.6.0; leave main at 2026.7.0-dev.
  • Keep the stable PET pipeline on release/2026.4 for now; its upgrade is a separate release decision.

## Summary
- bump the extension version from `2026.6.0` to `2026.7.0-dev`
- refresh `package-lock.json` with `npm install`

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Updates `@vscode/test-electron` from `^2.3.8` to `^3.1.0`.

## Changes
- `package.json`: version constraint updated to `^3.1.0`
- `package-lock.json`: resolved to `3.1.0`

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 4 to 4.37.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.3</h2>
<p>No user facing changes.</p>
<h2>v4.37.2</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
<h2>v4.37.1</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.20.6 and earlier. These versions of
CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise
Server 3.16, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li>
</ul>
<h2>v4.37.0</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
<li>In addition to the existing input format, the
<code>config-file</code> input for the <code>codeql-action/init</code>
step will soon support a new <code>[owner/]repo[@ref][:path]</code>
format. All components except the repository name are optional. If
omitted, <code>owner</code> defaults to the same owner as the repository
the analysis is running for, <code>ref</code> to <code>main</code>, and
<code>path</code> to <code>.github/codeql-action.yaml</code>. Support
for this format ships in this version of the CodeQL Action, but will
only be enabled over the coming weeks. <a
href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li>
</ul>
<h2>v4.36.3</h2>
<p>No user facing changes.</p>
<h2>v4.36.2</h2>
<ul>
<li>Cache CodeQL CLI version information across Actions steps. <a
href="https://redirect.github.com/github/codeql-action/pull/3943">#3943</a></li>
<li>Reduce requests while waiting for analysis processing by using
exponential backoff when polling SARIF processing status. <a
href="https://redirect.github.com/github/codeql-action/pull/3937">#3937</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6">2.25.6</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3948">#3948</a></li>
</ul>
<h2>v4.36.1</h2>
<p>No user facing changes.</p>
<h2>v4.36.0</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>v4.35.5</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
<h2>v4.35.4</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4">2.25.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3881">#3881</a></li>
</ul>
<h2>v4.35.3</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.19.3 and earlier. These versions of
CodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise
Server 3.15, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3837">#3837</a></li>
<li>Configurations for private registries that use Cloudsmith or GCP
OIDC are now accepted. <a
href="https://redirect.github.com/github/codeql-action/pull/3850">#3850</a></li>
<li>Best-effort connection tests for private registries now use
<code>GET</code> requests instead of <code>HEAD</code> for better
compatibility with various registry implementations. For NuGet feeds,
the test is now always performed against the service index. <a
href="https://redirect.github.com/github/codeql-action/pull/3853">#3853</a></li>
<li>Fixed a bug where two diagnostics produced within the same
millisecond could overwrite each other on disk, causing one of them to
be lost. <a
href="https://redirect.github.com/github/codeql-action/pull/3852">#3852</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3">2.25.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3865">#3865</a></li>
</ul>
<h2>v4.35.2</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.37.3 - 22 Jul 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.2 - 21 Jul 2026</h2>
<ul>
<li>The new address format for the <code>config-file</code> input that
was introduced in CodeQL Action 4.37.0 is now enabled by default. In
addition to the format described there, the <code>remote=</code> prefix
can now be used to explicitly indicate that the input refers to a remote
file. All previous input formats continue to be accepted as well. <a
href="https://redirect.github.com/github/codeql-action/pull/4023">#4023</a></li>
<li>The CodeQL Action can now make use of <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">configured
private registries</a> in Default Setup to retrieve CodeQL configuration
files from remote repositories that require authentication. This will
allow customers to store their CodeQL configuration in a single
repository that can then be referenced by Default Setup workflows in
other repositories. We expect to roll this and other, related changes
out to everyone in July. <a
href="https://redirect.github.com/github/codeql-action/pull/4007">#4007</a></li>
</ul>
<h2>4.37.1 - 16 Jul 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.20.6 and earlier. These versions of
CodeQL were discontinued on 1 July 2026 alongside GitHub Enterprise
Server 3.16, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3956">#3956</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.1">2.26.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4019">#4019</a></li>
</ul>
<h2>4.37.0 - 08 Jul 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
<li>In addition to the existing input format, the
<code>config-file</code> input for the <code>codeql-action/init</code>
step will soon support a new <code>[owner/]repo[@ref][:path]</code>
format. All components except the repository name are optional. If
omitted, <code>owner</code> defaults to the same owner as the repository
the analysis is running for, <code>ref</code> to <code>main</code>, and
<code>path</code> to <code>.github/codeql-action.yaml</code>. Support
for this format ships in this version of the CodeQL Action, but will
only be enabled over the coming weeks. <a
href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li>
</ul>
<h2>4.36.3 - 01 Jul 2026</h2>
<p>No user facing changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81"><code>e4fba86</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4031">#4031</a>
from github/update-v4.37.3-72f6a9da0</li>
<li><a
href="https://github.com/github/codeql-action/commit/fb50ab5d62a274adf3ef3e22cfe750ae87a0ede7"><code>fb50ab5</code></a>
Update changelog for v4.37.3</li>
<li><a
href="https://github.com/github/codeql-action/commit/72f6a9da0def52d9193d6a758f0378b65091f8d1"><code>72f6a9d</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4030">#4030</a>
from github/mbg/fix/no-proxy</li>
<li><a
href="https://github.com/github/codeql-action/commit/3b5ee58597653d9cc6785f3f1277f796d81f3646"><code>3b5ee58</code></a>
Use default <code>request</code> options instead of
<code>undefined</code></li>
<li><a
href="https://github.com/github/codeql-action/commit/bfb6be4b5ecd3650f02f530571453e8c64ef0778"><code>bfb6be4</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4028">#4028</a>
from github/mergeback/v4.37.2-to-main-e0647621</li>
<li><a
href="https://github.com/github/codeql-action/commit/526ab84f9858816d9cf5f7b9df4dd5e2235f0eba"><code>526ab84</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/d6217b9b8c14166e4851db94c11155d03bd13c07"><code>d6217b9</code></a>
Update changelog and version after v4.37.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/e0647621c2984b5ed2f768cb892365bf2a616ad1"><code>e064762</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4027">#4027</a>
from github/update-v4.37.2-385bcdc5a</li>
<li><a
href="https://github.com/github/codeql-action/commit/e0faed839190caa67a5cd42f1cc16246028ca3df"><code>e0faed8</code></a>
Add a couple of change notes</li>
<li><a
href="https://github.com/github/codeql-action/commit/73aad0eaa9df172668665a150d17b8bc5a650c20"><code>73aad0e</code></a>
Update changelog for v4.37.2</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/v4...v4.37.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=4&new-version=4.37.3)](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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.4 to
3.1.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastify/fast-uri/releases">fast-uri's
releases</a>.</em></p>
<blockquote>
<h2>v3.1.5</h2>
<h2>⚠️ Security Warning</h2>
<p>Fix for <a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-7p8r-x3mc-p8w7">https://github.com/fastify/fast-uri/security/advisories/GHSA-7p8r-x3mc-p8w7</a></p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.4...v3.1.5">https://github.com/fastify/fast-uri/compare/v3.1.4...v3.1.5</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastify/fast-uri/commit/5e179cbb4636d5f773ed21126e5bd3068e87e94e"><code>5e179cb</code></a>
Bumped v3.1.5</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/2cad02d6ed428a720499bb7a3c3d6c3d41f10f5a"><code>2cad02d</code></a>
Merge commit from fork</li>
<li>See full diff in <a
href="https://github.com/fastify/fast-uri/compare/v3.1.4...v3.1.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fast-uri&package-manager=npm_and_yarn&previous-version=3.1.4&new-version=3.1.5)](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/vscode-python/network/alerts).

</details>

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

Adds GDPR classifications for the Pyrefly shadow telemetry introduced by
microsoft/pyrx#9077.

- Declares the paired-request, shadow lifecycle, child lifecycle,
sampling, and type-server child lifecycle events.
- Adds the Pyrefly shadow health properties to `language_server.crash`.
- Adds `pyreflyextensioninstalled` to the existing `pyrefly.detection`
declaration.

All fields are closed-set system metadata used for feature insight or
performance and health analysis. Duration and counter fields are marked
as measurements.

## Testing

Not run (GDPR metadata-only change).

Copilot-Session: f79da128-47e2-4a55-854d-0cf09f4673ad
…#26112)

## Summary

- skip Conda environment placeholders that do not contain a Python
interpreter
- isolate EnvExt conversion failures per item so one unsupported
environment cannot discard later valid environments in the same update
batch
- harden active-interpreter conversion and use consistent executable
identity when removing environments from the compatibility collection
- add focused coverage for discovery, active-environment, removal, and
refresh flows

Fixes microsoft/vscode-python-environments#1681
Related to microsoft/vscode-python-environments#1671

## Context

The Python Environments extension can discover and manage Conda
environments that do not currently have Python installed. It
intentionally exposes those entries to its Environment Manager UI as
placeholders:

```text
name: empty-env
version: no-python
run executable: conda
```

That is useful in the management UI, but the entry is not a selectable
Python interpreter.

Users reported that PET and Environment Manager showed every Conda
environment while both `Python: Select Interpreter` and Jupyter's
Python-environment kernel picker showed only System Python and the
current project environment. Both users confirmed that Python was
delegating discovery to the Python Environments extension, ruling out
the legacy discovery path.

One user then performed a reversible A/B test:

1. with a no-Python Conda environment under `miniconda3/envs`, Python
and Jupyter omitted the other valid Conda environments
2. moving that unchanged directory outside `envs` and reloading restored
both pickers
3. moving it back and reloading reproduced the failure

## Root cause

`src/client/envExt/envExtApi.ts` translates Python Environments API
objects into the legacy `PythonEnvInfo` format consumed by Python and
Jupyter.

The adapter previously parsed every version unconditionally:

```ts
parseVersion(pythonEnv.version)
```

`parseVersion('no-python')` throws `invalid version no-python`.

Environment-list changes arrive as a batch and were processed by an
unguarded `forEach`. When the no-Python placeholder appeared before
valid Conda environments, its conversion exception aborted the callback,
so every valid item later in that batch was lost:

```text
no-python placeholder -> throws
valid Conda A         -> never processed
valid Conda B         -> never processed
```

System environments arrive through a separate valid batch, and
individually resolved/current environments can use separate paths,
explaining the restricted list users observed.

Refresh did not self-heal because each Conda refresh sent another batch
containing the same placeholder and failed at the same conversion point.

## Fix

### Safe version conversion

A shared EnvExt conversion helper now:

- treats the expected `no-python` sentinel as a non-interpreter and
skips it at debug log level
- catches and logs unexpected malformed version strings instead of
throwing into callers

Both discovery-list conversion and active-interpreter compatibility
conversion use this boundary.

### Per-item fault isolation

Every environment-list change is processed independently. A malformed
runtime item is logged and skipped without preventing later valid items
from reaching Python/Jupyter.

Active-environment events are emitted only when every supplied side can
be converted, avoiding synthetic partial clear/set transitions while
preserving normal valid set, clear, and change behavior.

### Consistent removal identity

Adds are keyed by the Python executable path. Removals now derive the
same executable identity from the source environment. Previously Conda
removals used the environment prefix, so they generally could not remove
an entry stored by interpreter executable.

## Behavior and compatibility

| Scenario | Result |
| --- | --- |
| Conda environment without Python | remains visible/manageable in
Environment Manager; omitted from Python/Jupyter interpreter lists |
| Valid Conda, venv, system, Poetry, Pipenv, Pyenv environments | same
conversion and picker behavior as before |
| No-Python item before valid items in a batch | placeholder skipped;
all valid later items retained |
| Unexpected malformed provider item | logged and isolated; later items
continue |
| Valid active environment set/change/clear | unchanged |
| Invalid active environment | ignored instead of throwing |
| Conda refresh remove/add batch | old executable entries removed and
valid refreshed entries restored |

The valid hot path adds only a helper call and the existing version
parse. There are no new filesystem operations, environment discovery
calls, or background tasks.

## Tests

New adapter coverage includes:

- `[no-python, valid, valid]` batch handling
- malformed version in the middle of a batch
- structurally malformed event followed by a valid item
- no-Python and partially invalid active-environment events
- valid active set/change/clear events
- Conda removal by executable identity
- refresh batches containing removals, a no-Python placeholder, and
valid additions
- the actual `triggerRefresh()` path
- active-interpreter resolution for no-Python and malformed versions

Validation performed:

- `gulp compile`
- full repository ESLint
- focused EnvExt tests: **14 passing**
- 24 downstream EnvExt/interpreter-selector/interpreter/environment-API
test files: **345 passing, 1 expected pending**
- full unit suite: **5,178 passing, 34 pending**; the remaining 10
failures are pre-existing/unrelated Windows PATH-casing assertions and
native PET timeouts in untouched suites

The complete diff also went through two code-review passes and a
design-focused review; no production issues remained after addressing
malformed-event and active set/clear coverage.

## Follow-up

The EnvExt adapter currently relies on change events rather than
hydrating an authoritative initial snapshot. That is a separate
resilience concern; this PR intentionally targets the user-confirmed
`no-python` batch-abort failure.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2f537bc5-b389-4ee2-aac2-e2b83be47f5c
Fixes microsoft#25577 

<img width="1300" height="485" alt="image"
src="https://github.com/user-attachments/assets/11faa8d3-d5ce-4057-acdf-3a70775dc784"
/>


This pull request makes a small change to the logic that configures the
Python startup environment. The setting of the `PYTHON_BASIC_REPL`
environment variable has been removed, so the extension will no longer
explicitly disable PyREPL from CPython when shell integration is
enabled.

- Removed the line that set the `PYTHON_BASIC_REPL` environment variable
in `applyPythonStartupSetting`, which previously disabled PyREPL when
shell integration was enabled.

---------

Copilot-Session: d598cbab-c8ac-496d-9757-ac98a8c9846f
Bumps and
[brace-expansion](https://github.com/juliangruber/brace-expansion).
These dependencies needed to be updated together.
Updates `brace-expansion` from 1.1.13 to 1.1.18
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/juliangruber/brace-expansion/releases">brace-expansion's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.15</h2>
<ul>
<li>Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)
0b09384</li>
</ul>
<hr />
<p><a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15">https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/758fcd6d188a95c2342818519c77b8c06794552b"><code>758fcd6</code></a>
1.1.18</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/27fbeed22b4fdf2c5f732f66bcf84d43f4a26c6e"><code>27fbeed</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/5c57cc2519dfb067e188b7cb0733fffbd02946bf"><code>5c57cc2</code></a>
1.1.17</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d757f1dde7808bcbcd7a4628ab913e5185ed3d57"><code>d757f1d</code></a>
npm ignore <code>.claude</code></li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031"><code>cb4b9e4</code></a>
fix: backport GHSA-mh99-v99m-4gvg (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/129">#129</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/447763a91a613cfa67ac73096cbc1de9a2304f97"><code>447763a</code></a>
1.1.16</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d74e63030c012e3b7ae81657b8d665619cd51b95"><code>d74e630</code></a>
fix: v1 backport for CVE-2026-13149 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/122">#122</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/2203f4f4895eba16c4d408b4219ce1b8e5f6ff24"><code>2203f4f</code></a>
1.1.15</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/0b0938410732370559704230724ca4a44d1b29fd"><code>0b09384</code></a>
Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/10c05fcf3699b1a29ef5e611c011af3d3c97e6e3"><code>10c05fc</code></a>
1.1.14</li>
<li>Additional commits viewable in <a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.13...v1.1.18">compare
view</a></li>
</ul>
</details>
<br />

Updates `brace-expansion` from 2.0.3 to 2.1.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/juliangruber/brace-expansion/releases">brace-expansion's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.15</h2>
<ul>
<li>Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)
0b09384</li>
</ul>
<hr />
<p><a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15">https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/758fcd6d188a95c2342818519c77b8c06794552b"><code>758fcd6</code></a>
1.1.18</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/27fbeed22b4fdf2c5f732f66bcf84d43f4a26c6e"><code>27fbeed</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/5c57cc2519dfb067e188b7cb0733fffbd02946bf"><code>5c57cc2</code></a>
1.1.17</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d757f1dde7808bcbcd7a4628ab913e5185ed3d57"><code>d757f1d</code></a>
npm ignore <code>.claude</code></li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031"><code>cb4b9e4</code></a>
fix: backport GHSA-mh99-v99m-4gvg (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/129">#129</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/447763a91a613cfa67ac73096cbc1de9a2304f97"><code>447763a</code></a>
1.1.16</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d74e63030c012e3b7ae81657b8d665619cd51b95"><code>d74e630</code></a>
fix: v1 backport for CVE-2026-13149 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/122">#122</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/2203f4f4895eba16c4d408b4219ce1b8e5f6ff24"><code>2203f4f</code></a>
1.1.15</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/0b0938410732370559704230724ca4a44d1b29fd"><code>0b09384</code></a>
Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/10c05fcf3699b1a29ef5e611c011af3d3c97e6e3"><code>10c05fc</code></a>
1.1.14</li>
<li>Additional commits viewable in <a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.13...v1.1.18">compare
view</a></li>
</ul>
</details>
<br />

Updates `brace-expansion` from 5.0.6 to 5.0.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/juliangruber/brace-expansion/releases">brace-expansion's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.15</h2>
<ul>
<li>Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)
0b09384</li>
</ul>
<hr />
<p><a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15">https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/758fcd6d188a95c2342818519c77b8c06794552b"><code>758fcd6</code></a>
1.1.18</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/27fbeed22b4fdf2c5f732f66bcf84d43f4a26c6e"><code>27fbeed</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/5c57cc2519dfb067e188b7cb0733fffbd02946bf"><code>5c57cc2</code></a>
1.1.17</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d757f1dde7808bcbcd7a4628ab913e5185ed3d57"><code>d757f1d</code></a>
npm ignore <code>.claude</code></li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031"><code>cb4b9e4</code></a>
fix: backport GHSA-mh99-v99m-4gvg (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/129">#129</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/447763a91a613cfa67ac73096cbc1de9a2304f97"><code>447763a</code></a>
1.1.16</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d74e63030c012e3b7ae81657b8d665619cd51b95"><code>d74e630</code></a>
fix: v1 backport for CVE-2026-13149 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/122">#122</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/2203f4f4895eba16c4d408b4219ce1b8e5f6ff24"><code>2203f4f</code></a>
1.1.15</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/0b0938410732370559704230724ca4a44d1b29fd"><code>0b09384</code></a>
Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/10c05fcf3699b1a29ef5e611c011af3d3c97e6e3"><code>10c05fc</code></a>
1.1.14</li>
<li>Additional commits viewable in <a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.13...v1.1.18">compare
view</a></li>
</ul>
</details>
<br />

Updates `brace-expansion` from 5.0.7 to 5.0.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/juliangruber/brace-expansion/releases">brace-expansion's
releases</a>.</em></p>
<blockquote>
<h2>v1.1.15</h2>
<ul>
<li>Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)
0b09384</li>
</ul>
<hr />
<p><a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15">https://github.com/juliangruber/brace-expansion/compare/v1.1.14...v1.1.15</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/758fcd6d188a95c2342818519c77b8c06794552b"><code>758fcd6</code></a>
1.1.18</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/27fbeed22b4fdf2c5f732f66bcf84d43f4a26c6e"><code>27fbeed</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/5c57cc2519dfb067e188b7cb0733fffbd02946bf"><code>5c57cc2</code></a>
1.1.17</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d757f1dde7808bcbcd7a4628ab913e5185ed3d57"><code>d757f1d</code></a>
npm ignore <code>.claude</code></li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031"><code>cb4b9e4</code></a>
fix: backport GHSA-mh99-v99m-4gvg (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/129">#129</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/447763a91a613cfa67ac73096cbc1de9a2304f97"><code>447763a</code></a>
1.1.16</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/d74e63030c012e3b7ae81657b8d665619cd51b95"><code>d74e630</code></a>
fix: v1 backport for CVE-2026-13149 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/122">#122</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/2203f4f4895eba16c4d408b4219ce1b8e5f6ff24"><code>2203f4f</code></a>
1.1.15</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/0b0938410732370559704230724ca4a44d1b29fd"><code>0b09384</code></a>
Backport v5.0.6 change to v1 (<a
href="https://redirect.github.com/juliangruber/brace-expansion/issues/111">#111</a>)</li>
<li><a
href="https://github.com/juliangruber/brace-expansion/commit/10c05fcf3699b1a29ef5e611c011af3d3c97e6e3"><code>10c05fc</code></a>
1.1.14</li>
<li>Additional commits viewable in <a
href="https://github.com/juliangruber/brace-expansion/compare/v1.1.13...v1.1.18">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 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/vscode-python/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 4.37.3 to 4.37.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.9</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4">2.26.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4106">#4106</a></li>
</ul>
<h2>v4.37.8</h2>
<p>No user facing changes.</p>
<h2>v4.37.7</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3">2.26.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4085">#4085</a></li>
</ul>
<h2>v4.37.6</h2>
<ul>
<li>Changed the default filepath for the new remote file address format
that was introduced in CodeQL Action 4.37.0 / 3.37.0 to
<code>.github/codeql-config.yml</code> to align it with the suggested
path that is used elsewhere. <a
href="https://redirect.github.com/github/codeql-action/pull/4070">#4070</a></li>
</ul>
<h2>v4.37.5</h2>
<ul>
<li>Fixed a bug where a network error while streaming the download of
the CodeQL bundle could terminate the <code>init</code> Action instead
of falling back to downloading the bundle before extracting it. <a
href="https://redirect.github.com/github/codeql-action/pull/4061">#4061</a></li>
</ul>
<h2>v4.37.4</h2>
<ul>
<li>This version of the CodeQL Action adds support for the
<code>tools</code> input for the <code>codeql-action/init</code> step to
be specified using a <code>github-codeql-tools</code> <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository
property</a>. This feature will gradually be rolled out following the
release of this version. Once rolled out, this allows for the CodeQL CLI
version that is used in GitHub-managed workflows, such as Default Setup,
to be set to a custom value. For example, customers who run into issues
with rate limits when a new CodeQL CLI version is released can set the
value to <code>toolcache</code> to always use the CodeQL CLI version
that is available in the runner toolcache. For Advanced Setup workflows,
the value provided for <code>tools</code> in the workflow definition
always takes precedence unless the value of the repository property
starts with <code>!</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.2">2.26.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4051">#4051</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.37.9 - 26 Aug 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.4">2.26.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4106">#4106</a></li>
</ul>
<h2>4.37.8 - 21 Aug 2026</h2>
<p>No user facing changes.</p>
<h2>4.37.7 - 13 Aug 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.3">2.26.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4085">#4085</a></li>
</ul>
<h2>4.37.6 - 04 Aug 2026</h2>
<ul>
<li>Changed the default filepath for the new remote file address format
that was introduced in CodeQL Action 4.37.0 / 3.37.0 to
<code>.github/codeql-config.yml</code> to align it with the suggested
path that is used elsewhere. <a
href="https://redirect.github.com/github/codeql-action/pull/4070">#4070</a></li>
</ul>
<h2>4.37.5 - 03 Aug 2026</h2>
<ul>
<li>Fixed a bug where a network error while streaming the download of
the CodeQL bundle could terminate the <code>init</code> Action instead
of falling back to downloading the bundle before extracting it. <a
href="https://redirect.github.com/github/codeql-action/pull/4061">#4061</a></li>
</ul>
<h2>4.37.4 - 29 Jul 2026</h2>
<ul>
<li>This version of the CodeQL Action adds support for the
<code>tools</code> input for the <code>codeql-action/init</code> step to
be specified using a <code>github-codeql-tools</code> <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">repository
property</a>. This feature will gradually be rolled out following the
release of this version. Once rolled out, this allows for the CodeQL CLI
version that is used in GitHub-managed workflows, such as Default Setup,
to be set to a custom value. For example, customers who run into issues
with rate limits when a new CodeQL CLI version is released can set the
value to <code>toolcache</code> to always use the CodeQL CLI version
that is available in the runner toolcache. For Advanced Setup workflows,
the value provided for <code>tools</code> in the workflow definition
always takes precedence unless the value of the repository property
starts with <code>!</code>. <a
href="https://redirect.github.com/github/codeql-action/pull/4037">#4037</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.2">2.26.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/4051">#4051</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/cdf488f595d80d6e07e03d4674febd5ab45fa938"><code>cdf488f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4107">#4107</a>
from github/update-v4.37.9-920ba7cd1</li>
<li><a
href="https://github.com/github/codeql-action/commit/7243f38558d187dde99730d224bb47aa26a95306"><code>7243f38</code></a>
Update changelog for v4.37.9</li>
<li><a
href="https://github.com/github/codeql-action/commit/920ba7cd1596037e042122c00381eb16b397d68e"><code>920ba7c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4106">#4106</a>
from github/update-bundle/codeql-bundle-v2.26.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/ecfa6e16817b8f490bc9a59baa391baf4fa3e3c2"><code>ecfa6e1</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/adcdf4a70d247343cf9c29e0f7a6658b51c3a2b1"><code>adcdf4a</code></a>
Update default bundle to codeql-bundle-v2.26.4</li>
<li><a
href="https://github.com/github/codeql-action/commit/486fec2a3ea2626afcd8c7e9208b4f515078dd7e"><code>486fec2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4099">#4099</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/134624c67b20869c2aaa36dafa726375b78a5d76"><code>134624c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4101">#4101</a>
from github/dependabot/npm_and_yarn/npm-minor-457d82...</li>
<li><a
href="https://github.com/github/codeql-action/commit/ff43db8f982a368288f117354fb8d046e937124c"><code>ff43db8</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/4103">#4103</a>
from github/mergeback/v4.37.8-to-main-db488dde</li>
<li><a
href="https://github.com/github/codeql-action/commit/4605e03a74cf891614c4d76f82384a16c1c11816"><code>4605e03</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/099c869cad6bf3b88657154d4ae47ffed27e632d"><code>099c869</code></a>
Update changelog and version after v4.37.8</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/v4.37.3...v4.37.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=4.37.3&new-version=4.37.9)](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)


</details>

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

Bumps
[serialize-javascript](https://github.com/yahoo/serialize-javascript) to
7.1.1 and updates ancestor dependencies
[serialize-javascript](https://github.com/yahoo/serialize-javascript),
[copy-webpack-plugin](https://github.com/webpack/copy-webpack-plugin)
and [mocha](https://github.com/mochajs/mocha). These dependencies need
to be updated together.

Updates `serialize-javascript` from 6.0.2 to 7.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/yahoo/serialize-javascript/releases">serialize-javascript's
releases</a>.</em></p>
<blockquote>
<h2>v7.1.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: fix XSS bypass via split <code>&lt;/script</code> payload
across function bodies by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/226">yahoo/serialize-javascript#226</a></li>
<li>release: v7.1.1 by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/227">yahoo/serialize-javascript#227</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yahoo/serialize-javascript/compare/v7.1.0...v7.1.1">https://github.com/yahoo/serialize-javascript/compare/v7.1.0...v7.1.1</a></p>
<h2>v7.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add Node.js 26 to test matrix by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/224">yahoo/serialize-javascript#224</a></li>
<li>release: v7.1.0 by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/225">yahoo/serialize-javascript#225</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yahoo/serialize-javascript/compare/v7.0.7...v7.1.0">https://github.com/yahoo/serialize-javascript/compare/v7.0.7...v7.1.0</a></p>
<h2>v7.0.7</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: reject spoofed RegExp objects with non-string source property
by <a href="https://github.com/redonkulus"><code>@​redonkulus</code></a>
in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/222">yahoo/serialize-javascript#222</a></li>
<li>release: v7.0.7 by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/223">yahoo/serialize-javascript#223</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yahoo/serialize-javascript/compare/v7.0.6...v7.0.7">https://github.com/yahoo/serialize-javascript/compare/v7.0.6...v7.0.7</a></p>
<h2>v7.0.6</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): bump lodash from 4.17.23 to 4.18.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/215">yahoo/serialize-javascript#215</a></li>
<li>fix: reject spoofed URL objects with non-string toString() result by
<a href="https://github.com/redonkulus"><code>@​redonkulus</code></a> in
<a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/217">yahoo/serialize-javascript#217</a></li>
<li>release: v7.0.6 by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/221">yahoo/serialize-javascript#221</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.0.6">https://github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.0.6</a></p>
<h2>v7.0.5</h2>
<h3>Fixes</h3>
<ul>
<li>Improve robustness and validation for array-like object
serialization.</li>
<li>Fix an issue where certain object structures could lead to excessive
CPU usage.</li>
</ul>
<p>For more details, please see GHSA-qj8w-gfj5-8c6v.</p>
<h2>v7.0.4</h2>
<h2>What's Changed</h2>
<ul>
<li>release: v7.0.4 by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/211">yahoo/serialize-javascript#211</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yahoo/serialize-javascript/compare/v7.0.3...v7.0.4">https://github.com/yahoo/serialize-javascript/compare/v7.0.3...v7.0.4</a></p>
<h2>v7.0.3</h2>
<ul>
<li>fix(CVE-2020-7660): fix for RegExp.flags and
Date.prototype.toISOString (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/207">#207</a>)
2e609d0</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/8c8caa7066a52106fa719c6abb5dc69858c9f799"><code>8c8caa7</code></a>
release: v7.1.1</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/ffda9f11d946f2d161471340f92ac0b7a7208449"><code>ffda9f1</code></a>
fix: fix XSS bypass via split <code>&lt;/script</code> payload across
function bodies</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/739145a671afd4b81a416e15888f8f5e637d08d6"><code>739145a</code></a>
release: v7.1.0</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/57865edc0f3ae4fcc3c649bbb135122303519c11"><code>57865ed</code></a>
feat: add Node.js 26 to test matrix</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/01bec60c108143e69f6b105e443d62a13b61cbbe"><code>01bec60</code></a>
release: v7.0.7</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/500971592a433239011332b7f0217aa0cb011226"><code>5009715</code></a>
fix: reject spoofed RegExp objects with non-string source property</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/153eb437d45310f34f4b8414a4ac1f8658a622dd"><code>153eb43</code></a>
release: v7.0.6</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/a83d2cb9e04a85726827a23c941f03177018774b"><code>a83d2cb</code></a>
fix: reject spoofed URL objects with non-string toString() result</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/451af655bcf055489f39a2629673ae8f67023b90"><code>451af65</code></a>
build(deps-dev): bump lodash from 4.17.23 to 4.18.1 (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/215">#215</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/df3f1c1fa9ca16b050ae893cb63ac23c91deed55"><code>df3f1c1</code></a>
release: v7.0.5</li>
<li>Additional commits viewable in <a
href="https://github.com/yahoo/serialize-javascript/compare/v6.0.2...v7.1.1">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for serialize-javascript since your current version.</p>
</details>
<br />

Updates `copy-webpack-plugin` from 9.1.0 to 14.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/copy-webpack-plugin/releases">copy-webpack-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v14.0.0</h2>
<h2><a
href="https://github.com/webpack/copy-webpack-plugin/compare/v13.0.1...v14.0.0">14.0.0</a>
(2026-03-02)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>minimum supported <code>Node.js</code> version is
<code>20.9.0</code> (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/819">#819</a>)
(<a
href="https://github.com/webpack/copy-webpack-plugin/commit/28812036cea4aa3e76e75597b0cd72eec53fe70d">2881203</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update <code>serialize-javascript</code> to fix security
problems</li>
</ul>
<h2>v13.0.1</h2>
<h3><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v13.0.0...v13.0.1">13.0.1</a>
(2025-08-12)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>better handling globs for watching (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/808">#808</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/a527c8985ab1fcd32b9a581df26653268e12ce2c">a527c89</a>)</li>
</ul>
<h2>v13.0.0</h2>
<h2><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.2...v13.0.0">13.0.0</a>
(2025-02-27)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>switch from <code>globby</code> and <code>fast-glob</code> to
<code>tinyglobby</code> (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/795">#795</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/19fd937705ccb2161619e1e919f0b37b47453368">19fd937</a>)</li>
</ul>
<p>For more information please visit <a
href="https://github.com/SuperchupuDev/tinyglobby"><code>tinyglobby</code></a>.</p>
<p>The breaking change only affects the developer who used these options
- <a
href="https://github.com/sindresorhus/globby#gitignore"><code>gitignore</code></a>
and <a
href="https://github.com/sindresorhus/globby#gitignore"><code>ignoreFiles</code></a>
in the <code>globOptions</code> option.</p>
<p>Please migrate to the <a
href="https://github.com/SuperchupuDev/tinyglobby#options"><code>ignore</code></a>
option.</p>
<h3>Bug Fixes</h3>
<ul>
<li>concurrency option is limited to files now (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/796">#796</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/d42469cfdc99a81f0f0ba97f6561f0e0db143994">d42469c</a>)</li>
<li>the order of patterns provided by the developer is respected</li>
</ul>
<h2>v12.0.2</h2>
<h3><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.1...v12.0.2">12.0.2</a>
(2024-01-17)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>improve perf (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/764">#764</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/a7379a9907b78e27b9fa44b474fd2a35671d806d">a7379a9</a>)</li>
</ul>
<h2>v12.0.1</h2>
<h3><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.0...v12.0.1">12.0.1</a>
(2024-01-11)</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/copy-webpack-plugin/blob/main/CHANGELOG.md">copy-webpack-plugin's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/webpack/copy-webpack-plugin/compare/v13.0.1...v14.0.0">14.0.0</a>
(2026-03-02)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>minimum supported <code>Node.js</code> version is
<code>20.9.0</code> (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/819">#819</a>)
(<a
href="https://github.com/webpack/copy-webpack-plugin/commit/28812036cea4aa3e76e75597b0cd72eec53fe70d">2881203</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update <code>serialize-javascript</code> to fix security
problems</li>
</ul>
<h3><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v13.0.0...v13.0.1">13.0.1</a>
(2025-08-12)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>better handling globs for watching (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/808">#808</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/a527c8985ab1fcd32b9a581df26653268e12ce2c">a527c89</a>)</li>
</ul>
<h2><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.2...v13.0.0">13.0.0</a>
(2025-02-27)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>switch from <code>globby</code> and <code>fast-glob</code> to
<code>tinyglobby</code> (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/795">#795</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/19fd937705ccb2161619e1e919f0b37b47453368">19fd937</a>)</li>
</ul>
<p>For more information please visit <a
href="https://github.com/SuperchupuDev/tinyglobby"><code>tinyglobby</code></a>.</p>
<p>The breaking change only affects the developer who used these options
- <a
href="https://github.com/sindresorhus/globby#gitignore"><code>gitignore</code></a>
and <a
href="https://github.com/sindresorhus/globby#gitignore"><code>ignoreFiles</code></a>
in the <code>globOptions</code> option.</p>
<p>Please migrate to the <a
href="https://github.com/SuperchupuDev/tinyglobby#options"><code>ignore</code></a>
option.</p>
<h3>Bug Fixes</h3>
<ul>
<li>concurrency option is limited to files now (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/796">#796</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/d42469cfdc99a81f0f0ba97f6561f0e0db143994">d42469c</a>)</li>
<li>the order of patterns provided by the developer is respected</li>
</ul>
<h3><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.1...v12.0.2">12.0.2</a>
(2024-01-17)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>improve perf (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/764">#764</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/a7379a9907b78e27b9fa44b474fd2a35671d806d">a7379a9</a>)</li>
</ul>
<h3><a
href="https://github.com/webpack-contrib/copy-webpack-plugin/compare/v12.0.0...v12.0.1">12.0.1</a>
(2024-01-11)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>improve perf (<a
href="https://redirect.github.com/webpack-contrib/copy-webpack-plugin/issues/760">#760</a>)
(<a
href="https://github.com/webpack-contrib/copy-webpack-plugin/commit/55036ab50357326dafdbeb7dc91c93b75796fadd">55036ab</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/18eb9d9fd4d01bfb886ae60ead7df184d75ba265"><code>18eb9d9</code></a>
chore(release): 14.0.0</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/28812036cea4aa3e76e75597b0cd72eec53fe70d"><code>2881203</code></a>
refactor!: minimum supported <code>Node.js</code> version is
<code>20.9.0</code> (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/819">#819</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/9dc3d31182b6b240c14f38134f11960cdafda613"><code>9dc3d31</code></a>
chore(deps-dev): bump ajv from 6.12.6 to 6.14.0 (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/815">#815</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/5cf5a1dc8f6d2c4c6d36825eb252109f1b763cd7"><code>5cf5a1d</code></a>
chore(deps): update (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/814">#814</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/3dd5b6ee7be9ebd20c3bf12e7084e15a504ae3d8"><code>3dd5b6e</code></a>
chore(deps): bump js-yaml (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/813">#813</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/9ac38bb37f6fba3592f383fe880cd448119099a6"><code>9ac38bb</code></a>
chore(deps-dev): bump lodash from 4.17.21 to 4.17.23 (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/812">#812</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/6a16bac55dafc6eaad71d36d5bf6fcdd214a0f63"><code>6a16bac</code></a>
Update link to contributing guidelines in README</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/a1625f9990f876753377cf4b90ea1aabce15f7c1"><code>a1625f9</code></a>
chore: migrate from contrib (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/810">#810</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/9f6f20444bb25924d3eabcf92feaeadf728b5ab7"><code>9f6f204</code></a>
chore: update github actions/checkout from v4 to v5 (<a
href="https://redirect.github.com/webpack/copy-webpack-plugin/issues/809">#809</a>)</li>
<li><a
href="https://github.com/webpack/copy-webpack-plugin/commit/73a30bcabd31457674d818553aa64ebe54f4c064"><code>73a30bc</code></a>
chore(release): 13.0.1</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/copy-webpack-plugin/compare/v9.1.0...v14.0.0">compare
view</a></li>
</ul>
</details>
<details>
<summary>Install script changes</summary>
<p>This version modifies <code>prepare</code> script that runs during
installation. Review the package contents before updating.</p>
</details>
<br />

Updates `mocha` from 11.7.5 to 12.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mochajs/mocha/releases">mocha's
releases</a>.</em></p>
<blockquote>
<h2>v12.0.0</h2>
<h2><a
href="https://github.com/mochajs/mocha/compare/v12.0.0-rc.6...v12.0.0">12.0.0</a>
(2026-08-31)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li>fixup parsing negative numbers and quoted strings (<a
href="https://redirect.github.com/mochajs/mocha/issues/6250">#6250</a>)
(<a
href="https://github.com/mochajs/mocha/commit/2962875f70df72ec5f0aaba45b3776167902894e">2962875</a>)</li>
<li>preserve FIFO descriptors when respawning (<a
href="https://redirect.github.com/mochajs/mocha/issues/6254">#6254</a>)
(<a
href="https://github.com/mochajs/mocha/commit/3bb317dbe7edc460f44328e630f607aa26773a4d">3bb317d</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>fix minor correctness issues (<a
href="https://redirect.github.com/mochajs/mocha/issues/6215">#6215</a>)
(<a
href="https://github.com/mochajs/mocha/commit/e6b9ee773481fd739ae24caeb42f32ac0b010f95">e6b9ee7</a>)</li>
<li>link to mochajs.org instead of the wiki (<a
href="https://redirect.github.com/mochajs/mocha/issues/6216">#6216</a>)
(<a
href="https://github.com/mochajs/mocha/commit/8720225413002aeda0a8760e911374fddd6e7b24">8720225</a>)</li>
</ul>
<h3>🧹 Chores</h3>
<ul>
<li>setup Release Please for v12 stable (<a
href="https://redirect.github.com/mochajs/mocha/issues/6084">#6084</a>)
(<a
href="https://github.com/mochajs/mocha/commit/219674fa5bfaf8fa740fab783344703a2991532d">219674f</a>)</li>
</ul>
<h2>v12.0.0-rc.6</h2>
<h2><a
href="https://github.com/mochajs/mocha/compare/v12.0.0-rc.5...v12.0.0-rc.6">12.0.0-rc.6</a>
(2026-08-09)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>deps:</strong> update dependency starlight-blog to ^0.28.0
(<a
href="https://redirect.github.com/mochajs/mocha/issues/6153">#6153</a>)
(<a
href="https://github.com/mochajs/mocha/commit/6b79044a260d096d8266585dfbd7daf173886937">6b79044</a>)</li>
<li><strong>docs:</strong> restore homepage logo (<a
href="https://redirect.github.com/mochajs/mocha/issues/6183">#6183</a>)
(<a
href="https://github.com/mochajs/mocha/commit/06e81a800356bb5ea42304e978919d833c8558b4">06e81a8</a>)</li>
<li><strong>docs:</strong> restore spacing around footer links (<a
href="https://redirect.github.com/mochajs/mocha/issues/6185">#6185</a>)
(<a
href="https://github.com/mochajs/mocha/commit/163d751ebb0a9587559ed24aae74564c09f10312">163d751</a>)</li>
<li>use main instead of exports for the package entry point (<a
href="https://redirect.github.com/mochajs/mocha/issues/6193">#6193</a>)
(<a
href="https://github.com/mochajs/mocha/commit/c32a696f0963737eedc9dde5a3e122a6fa1586b3">c32a696</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li><strong>blog:</strong> add community contributions post (<a
href="https://redirect.github.com/mochajs/mocha/issues/6172">#6172</a>)
(<a
href="https://github.com/mochajs/mocha/commit/5fcc0fe4e2bf7a260cd1cc7f312132e26abd1a05">5fcc0fe</a>)</li>
<li><strong>blog:</strong> update community-contributions to
2026-community-sponsorships (<a
href="https://github.com/mochajs/mocha/commit/5462d841264d28f0bd3c1fe90479b40af6ba03d3">5462d84</a>)</li>
<li>fix blog/2026-community-sponsorships description (<a
href="https://redirect.github.com/mochajs/mocha/issues/6177">#6177</a>)
(<a
href="https://github.com/mochajs/mocha/commit/98c47466fc7bdfb7e1ff7bdabad04739e892ff09">98c4746</a>)</li>
<li>sync CLI docs with v12 options and defaults (<a
href="https://redirect.github.com/mochajs/mocha/issues/6140">#6140</a>)
(<a
href="https://github.com/mochajs/mocha/commit/579fd1563822564d528d99e10303dd3a5e29116c">579fd15</a>)</li>
</ul>
<h3>🧹 Chores</h3>
<ul>
<li><strong>deps:</strong> update dependency
<code>@​playwright/test</code> to v1.62.1 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6197">#6197</a>)
(<a
href="https://github.com/mochajs/mocha/commit/dcc539ad05427c010136bd17f57e9d3148f3ebee">dcc539a</a>)</li>
<li><strong>deps:</strong> update dependency eslint to v10.8.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6196">#6196</a>)
(<a
href="https://github.com/mochajs/mocha/commit/deeeec61f2f40fafa035dfd25dffa8fed672a877">deeeec6</a>)</li>
<li><strong>deps:</strong> update dependency globals to v17.9.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6201">#6201</a>)
(<a
href="https://github.com/mochajs/mocha/commit/c2c6d63967a7def05452c9f2074ec092ef80e4c0">c2c6d63</a>)</li>
<li><strong>deps:</strong> update dependency knip to v6.31.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6166">#6166</a>)
(<a
href="https://github.com/mochajs/mocha/commit/b7cd1bd9d75cef7d6f350dd038fdaaf553e27e82">b7cd1bd</a>)</li>
<li><strong>deps:</strong> update dependency sinon to v22.1.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6188">#6188</a>)
(<a
href="https://github.com/mochajs/mocha/commit/284f0c23082e3e55106d61c3e69e29f6637b86bd">284f0c2</a>)</li>
<li><strong>deps:</strong> update dependency webpack to v5.109.2 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6194">#6194</a>)
(<a
href="https://github.com/mochajs/mocha/commit/badf73375430c5352fcf0314417b2d87ce1f7c3d">badf733</a>)</li>
<li>extract stripLeadingDashes helper + cover CLI arg-parsing edge cases
(<a
href="https://redirect.github.com/mochajs/mocha/issues/6171">#6171</a>)
(<a
href="https://github.com/mochajs/mocha/commit/867e17566beb8f7077e969e9c58e9383bcf6d657">867e175</a>)</li>
<li>fix esm-utils tests when run without coverage (<a
href="https://redirect.github.com/mochajs/mocha/issues/6160">#6160</a>)
(<a
href="https://github.com/mochajs/mocha/commit/c54539f570c005ea1a6b74b283664e0aee7972b1">c54539f</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mochajs/mocha/blob/main/CHANGELOG.md">mocha's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/mochajs/mocha/compare/v12.0.0-rc.6...v12.0.0">12.0.0</a>
(2026-08-31)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li>fixup parsing negative numbers and quoted strings (<a
href="https://redirect.github.com/mochajs/mocha/issues/6250">#6250</a>)
(<a
href="https://github.com/mochajs/mocha/commit/2962875f70df72ec5f0aaba45b3776167902894e">2962875</a>)</li>
<li>preserve FIFO descriptors when respawning (<a
href="https://redirect.github.com/mochajs/mocha/issues/6254">#6254</a>)
(<a
href="https://github.com/mochajs/mocha/commit/3bb317dbe7edc460f44328e630f607aa26773a4d">3bb317d</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>fix minor correctness issues (<a
href="https://redirect.github.com/mochajs/mocha/issues/6215">#6215</a>)
(<a
href="https://github.com/mochajs/mocha/commit/e6b9ee773481fd739ae24caeb42f32ac0b010f95">e6b9ee7</a>)</li>
<li>link to mochajs.org instead of the wiki (<a
href="https://redirect.github.com/mochajs/mocha/issues/6216">#6216</a>)
(<a
href="https://github.com/mochajs/mocha/commit/8720225413002aeda0a8760e911374fddd6e7b24">8720225</a>)</li>
</ul>
<h3>🧹 Chores</h3>
<ul>
<li>setup Release Please for v12 stable (<a
href="https://redirect.github.com/mochajs/mocha/issues/6084">#6084</a>)
(<a
href="https://github.com/mochajs/mocha/commit/219674fa5bfaf8fa740fab783344703a2991532d">219674f</a>)</li>
</ul>
<h2><a
href="https://github.com/mochajs/mocha/compare/v12.0.0-rc.5...v12.0.0-rc.6">12.0.0-rc.6</a>
(2026-08-09)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>deps:</strong> update dependency starlight-blog to ^0.28.0
(<a
href="https://redirect.github.com/mochajs/mocha/issues/6153">#6153</a>)
(<a
href="https://github.com/mochajs/mocha/commit/6b79044a260d096d8266585dfbd7daf173886937">6b79044</a>)</li>
<li><strong>docs:</strong> restore homepage logo (<a
href="https://redirect.github.com/mochajs/mocha/issues/6183">#6183</a>)
(<a
href="https://github.com/mochajs/mocha/commit/06e81a800356bb5ea42304e978919d833c8558b4">06e81a8</a>)</li>
<li><strong>docs:</strong> restore spacing around footer links (<a
href="https://redirect.github.com/mochajs/mocha/issues/6185">#6185</a>)
(<a
href="https://github.com/mochajs/mocha/commit/163d751ebb0a9587559ed24aae74564c09f10312">163d751</a>)</li>
<li>use main instead of exports for the package entry point (<a
href="https://redirect.github.com/mochajs/mocha/issues/6193">#6193</a>)
(<a
href="https://github.com/mochajs/mocha/commit/c32a696f0963737eedc9dde5a3e122a6fa1586b3">c32a696</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li><strong>blog:</strong> add community contributions post (<a
href="https://redirect.github.com/mochajs/mocha/issues/6172">#6172</a>)
(<a
href="https://github.com/mochajs/mocha/commit/5fcc0fe4e2bf7a260cd1cc7f312132e26abd1a05">5fcc0fe</a>)</li>
<li><strong>blog:</strong> update community-contributions to
2026-community-sponsorships (<a
href="https://github.com/mochajs/mocha/commit/5462d841264d28f0bd3c1fe90479b40af6ba03d3">5462d84</a>)</li>
<li>fix blog/2026-community-sponsorships description (<a
href="https://redirect.github.com/mochajs/mocha/issues/6177">#6177</a>)
(<a
href="https://github.com/mochajs/mocha/commit/98c47466fc7bdfb7e1ff7bdabad04739e892ff09">98c4746</a>)</li>
<li>sync CLI docs with v12 options and defaults (<a
href="https://redirect.github.com/mochajs/mocha/issues/6140">#6140</a>)
(<a
href="https://github.com/mochajs/mocha/commit/579fd1563822564d528d99e10303dd3a5e29116c">579fd15</a>)</li>
</ul>
<h3>🧹 Chores</h3>
<ul>
<li><strong>deps:</strong> update dependency
<code>@​playwright/test</code> to v1.62.1 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6197">#6197</a>)
(<a
href="https://github.com/mochajs/mocha/commit/dcc539ad05427c010136bd17f57e9d3148f3ebee">dcc539a</a>)</li>
<li><strong>deps:</strong> update dependency eslint to v10.8.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6196">#6196</a>)
(<a
href="https://github.com/mochajs/mocha/commit/deeeec61f2f40fafa035dfd25dffa8fed672a877">deeeec6</a>)</li>
<li><strong>deps:</strong> update dependency globals to v17.9.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6201">#6201</a>)
(<a
href="https://github.com/mochajs/mocha/commit/c2c6d63967a7def05452c9f2074ec092ef80e4c0">c2c6d63</a>)</li>
<li><strong>deps:</strong> update dependency knip to v6.31.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6166">#6166</a>)
(<a
href="https://github.com/mochajs/mocha/commit/b7cd1bd9d75cef7d6f350dd038fdaaf553e27e82">b7cd1bd</a>)</li>
<li><strong>deps:</strong> update dependency sinon to v22.1.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6188">#6188</a>)
(<a
href="https://github.com/mochajs/mocha/commit/284f0c23082e3e55106d61c3e69e29f6637b86bd">284f0c2</a>)</li>
<li><strong>deps:</strong> update dependency webpack to v5.109.2 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6194">#6194</a>)
(<a
href="https://github.com/mochajs/mocha/commit/badf73375430c5352fcf0314417b2d87ce1f7c3d">badf733</a>)</li>
<li>extract stripLeadingDashes helper + cover CLI arg-parsing edge cases
(<a
href="https://redirect.github.com/mochajs/mocha/issues/6171">#6171</a>)
(<a
href="https://github.com/mochajs/mocha/commit/867e17566beb8f7077e969e9c58e9383bcf6d657">867e175</a>)</li>
<li>fix esm-utils tests when run without coverage (<a
href="https://redirect.github.com/mochajs/mocha/issues/6160">#6160</a>)
(<a
href="https://github.com/mochajs/mocha/commit/c54539f570c005ea1a6b74b283664e0aee7972b1">c54539f</a>)</li>
<li>keep stderr out of the JSON parsed by the FIFO test (<a
href="https://redirect.github.com/mochajs/mocha/issues/6187">#6187</a>)
(<a
href="https://github.com/mochajs/mocha/commit/ea6489e973fde53ef2a9e3455110befc064f5ed0">ea6489e</a>)</li>
<li>limit token perms in protect-manifest workflow (<a
href="https://redirect.github.com/mochajs/mocha/issues/6175">#6175</a>)
(<a
href="https://github.com/mochajs/mocha/commit/8cf003021a4184dfce85367c6622a08b0c8d0891">8cf0030</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mochajs/mocha/commit/07c92f9f41e1152cde9d01a4f927892d8dd954bb"><code>07c92f9</code></a>
chore(main): release 12.0.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6217">#6217</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/219674fa5bfaf8fa740fab783344703a2991532d"><code>219674f</code></a>
chore: setup Release Please for v12 stable (<a
href="https://redirect.github.com/mochajs/mocha/issues/6084">#6084</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/3bb317dbe7edc460f44328e630f607aa26773a4d"><code>3bb317d</code></a>
fix: preserve FIFO descriptors when respawning (<a
href="https://redirect.github.com/mochajs/mocha/issues/6254">#6254</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/2962875f70df72ec5f0aaba45b3776167902894e"><code>2962875</code></a>
fix: fixup parsing negative numbers and quoted strings (<a
href="https://redirect.github.com/mochajs/mocha/issues/6250">#6250</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/e6b9ee773481fd739ae24caeb42f32ac0b010f95"><code>e6b9ee7</code></a>
docs: fix minor correctness issues (<a
href="https://redirect.github.com/mochajs/mocha/issues/6215">#6215</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/8720225413002aeda0a8760e911374fddd6e7b24"><code>8720225</code></a>
docs: link to mochajs.org instead of the wiki (<a
href="https://redirect.github.com/mochajs/mocha/issues/6216">#6216</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/505b5e9cec2f0fcbb1e52457f9c638fbfaf87900"><code>505b5e9</code></a>
chore(main): release 12.0.0-rc.6 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6173">#6173</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/c54539f570c005ea1a6b74b283664e0aee7972b1"><code>c54539f</code></a>
chore: fix esm-utils tests when run without coverage (<a
href="https://redirect.github.com/mochajs/mocha/issues/6160">#6160</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/dcc539ad05427c010136bd17f57e9d3148f3ebee"><code>dcc539a</code></a>
chore(deps): update dependency <code>@​playwright/test</code> to v1.62.1
(<a
href="https://redirect.github.com/mochajs/mocha/issues/6197">#6197</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/c2c6d63967a7def05452c9f2074ec092ef80e4c0"><code>c2c6d63</code></a>
chore(deps): update dependency globals to v17.9.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/6201">#6201</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mochajs/mocha/compare/v11.7.5...v12.0.0">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for mocha since your current version.</p>
</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 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/vscode-python/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com>
…rosoft#26129)

> Part of
[microsoft/vscode-python-environments#1602](microsoft/vscode-python-environments#1602).
Design doc:
[microsoft/vscode-python-environments#1601](microsoft/vscode-python-environments#1601).

### Roadmap context

This is **cross-repository PR 19** in the PEP 723 roadmap. It closes the
Python extension's per-file lookup gaps for debugging and Pylance
configuration.

| Cross-repository integration | PR | Status |
|---|---|---|
| | Environments PR 7: persisted script associations | merged
([microsoft#1697](microsoft/vscode-python-environments#1697))
|
| | Environments PR 10: exact script projects |
[microsoft/vscode-python-environments#1744](microsoft/vscode-python-environments#1744)
|
| | PR 17: Pylance per-file Python path lookup |
[microsoft/pyrx#9265](microsoft/pyrx#9265) |
| | **PR 19: exact Python-file lookup and debugger resolution** | **this
PR** |

### Why this PR

`IInterpreterService.getActiveInterpreter(resource)` normally shares
in-flight, timeout, and last-known state by workspace folder. A file URI
can therefore receive the workspace interpreter when a workspace lookup
is already running or when exact environment resolution exceeds the
timeout.

That breaks two per-file consumers:

- debugger launch resolution can select the workspace interpreter
instead of the launch program's interpreter;
- Pylance's file-scoped `workspace/configuration` request can receive a
cached workspace interpreter.

The exact lookup must also avoid publishing a file interpreter as a
workspace-wide interpreter change.

### What this PR does

- Adds an internal `exactResource` option to `IInterpreterService`.
- Bypasses workspace-keyed in-flight, timeout, and last-known state for
exact environment-extension lookups.
- Suppresses workspace-level interpreter-change reporting for those
silent exact reads.
- Resolves debugger programs from:
  - absolute paths;
  - `${file}`;
  - `${workspaceFolder}`;
  - `${workspaceFolder:name}`.
- Prefers the program interpreter and falls back to the normal workspace
interpreter only when no exact environment is available.
- Reuses the selected interpreter for both legacy `pythonPath` and
command-valued `python`.
- Applies activation variables when the program interpreter differs from
the workspace interpreter.
- Uses exact lookup only for `.py`-scoped Pylance configuration
requests; workspace-level requests retain the existing cached fast path.

### Lookup semantics

| Condition | Behavior |
|---|---|
| No concrete launch program | Preserve workspace lookup |
| Exact program environment exists | Use it for debugger resolution |
| Exact program lookup returns no environment | Fall back to workspace
interpreter |
| Program and workspace interpreters match | Preserve existing terminal
activation behavior |
| Program interpreter differs | Apply its activation variables |
| Pylance requests `python` config for a `.py` URI | Resolve the exact
file environment |
| Pylance requests workspace-level config | Preserve normal workspace
caching |
| Exact lookup resolves an environment | Do not publish a false
workspace interpreter-change event |

### Performance and safety

- The existing fast workspace cache remains unchanged for normal
consumers.
- Exact lookup is opt-in and used only by debugger program selection and
`.py` configuration scopes.
- The environments extension's own URI-scoped timeout/last-known
behavior remains in effect.
- No public Python or environments API is changed.

### User impact

Users without a per-file environment retain the same interpreter and
debugger behavior. When a Python file has a distinct environment,
Pylance configuration and debugger launch consistently use that file's
interpreter rather than a workspace-cached value.

### Tests

- Prettier check for all changed files
- ESLint for all changed files
- Focused middleware, resolver, launch, environment-adapter, and
interpreter-service tests: **181 passing**, 3 pending
- Repository-wide TypeScript compilation currently also reports two
existing `TelemetryReporter` import errors in untouched files.
- The full unit command was run; its failures were confined to untouched
platform/path, terminal activation, activated-environment, and
native-finder tests.

### Scope and follow-up

This PR does not implement Pylance's open-file rerouting notification.
Live movement and reanalysis after a per-file environment change remain
in PR 18.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fixes microsoft#24754

<img width="1466" height="373" alt="image"
src="https://github.com/user-attachments/assets/5b683332-c5ff-47fa-937e-60a097b1395c"
/>


This pull request refactors how shell integration sequences are managed
in `python_files/pythonrc.py` by introducing a dedicated
`ShellIntegrationSequence` enum, and updates related string formatting
to use this enum. It also updates user-facing messages in both the
Python startup script and the VS Code terminal link provider to include
a documentation URL. These changes improve maintainability, clarity, and
user guidance.

**Shell integration refactoring:**
* Introduced the `ShellIntegrationSequence` enum to centralize shell
integration control sequences, replacing hard-coded string literals
throughout the code.
[[1]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaR3)
[[2]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaR12-R22)
* Refactored the `__str__` method in the prompt class to use the new
enum values, improving readability and reducing duplication.

**User guidance improvements:**
* Updated the printed startup message in `pythonrc.py` to include a
documentation URL, guiding users to more information about the VS Code
Native REPL.
* Updated the expected link text in `pythonStartupLinkProvider.ts` to
match the new message format (excluding the URL), ensuring the link
detection logic remains consistent with the Python script output.
Bumps [packaging](https://github.com/pypa/packaging) from 26.2 to 26.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/packaging/releases">packaging's
releases</a>.</em></p>
<blockquote>
<h2>26.3</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Features</h3>
<ul>
<li>Add a public <code>VersionRange</code> API and
<code>SpecifierSet.to_range()</code>, representing the versions a
specifier set accepts as an interval set that supports intersection,
union, difference, complement, set relations, membership tests, and
filtering. <code>VersionRange.to_specifier_set()</code> converts a range
back to a <code>SpecifierSet</code> where a PEP 440 form exists. (<a
href="https://redirect.github.com/pypa/packaging/pull/1267">#1267</a>,
<a
href="https://redirect.github.com/pypa/packaging/pull/1270">#1270</a>,
<a
href="https://redirect.github.com/pypa/packaging/pull/1298">#1298</a>)</li>
<li>PEP 808: accept <code>Metadata-Version: 2.6</code>. (<a
href="https://redirect.github.com/pypa/packaging/pull/1194">#1194</a>)</li>
<li>Add a <code>limit</code> argument to <code>parse_tag()</code> for
compressed tag sets. (<a
href="https://redirect.github.com/pypa/packaging/issues/1220">#1220</a>)</li>
<li>Add a <code>prefer_sdist_predicate</code> argument to
<code>Pylock.select()</code> to prefer source distributions over wheels
for selected packages. (<a
href="https://redirect.github.com/pypa/packaging/pull/1334">#1334</a>)</li>
<li>Add <code>pure_python_tags()</code> to generate the pure-Python tags
for a Python version without touching the running platform. (<a
href="https://redirect.github.com/pypa/packaging/pull/1346">#1346</a>)</li>
<li>Add <code>SpecifierSet.is_subset()</code>,
<code>SpecifierSet.is_superset()</code>, and
<code>SpecifierSet.is_disjoint()</code>, which compare the versions two
specifier sets accept. (<a
href="https://redirect.github.com/pypa/packaging/pull/1313">#1313</a>)</li>
</ul>
<h3>Behavior adaptations</h3>
<ul>
<li>Drop support for Python 3.8; packaging now requires Python 3.9 or
later. (<a
href="https://redirect.github.com/pypa/packaging/pull/1157">#1157</a>)</li>
<li>Prefer native <code>linux_*</code> platform tags over
<code>manylinux</code> and <code>musllinux</code> tags on Linux. (<a
href="https://redirect.github.com/pypa/packaging/issues/160">#160</a>)</li>
</ul>
<h3>Fixes for versions and specifiers</h3>
<ul>
<li>Raise <code>InvalidVersion</code> instead of <code>TypeError</code>
when <code>Version</code> is given a non-string. (<a
href="https://redirect.github.com/pypa/packaging/pull/1319">#1319</a>)</li>
<li>Raise <code>InvalidVersion</code> for non-string pre-release letters
passed to <code>Version.from_parts</code>. (<a
href="https://redirect.github.com/pypa/packaging/pull/1241">#1241</a>)</li>
<li>Fix an <code>AttributeError</code> when hashing internally trimmed
versions. (<a
href="https://redirect.github.com/pypa/packaging/pull/1242">#1242</a>)</li>
<li>Fix <code>SpecifierSet.is_unsatisfiable</code> for post-release
boundary intersections. (<a
href="https://redirect.github.com/pypa/packaging/pull/1257">#1257</a>)</li>
</ul>
<h3>Fixes for requirements and markers</h3>
<ul>
<li>Make <code>Requirement.__hash__</code> consistent with
<code>__eq__</code> for trailing-zero-equivalent specifiers (e.g.
<code>foo==1.0.0</code> and <code>foo==1.0.0.0</code>), so equal
requirements hash equal and deduplicate in sets and dicts. (<a
href="https://redirect.github.com/pypa/packaging/pull/1232">#1232</a>)</li>
<li>Normalize requested extra names before comparing or hashing
requirements. (<a
href="https://redirect.github.com/pypa/packaging/issues/644">#644</a>)</li>
<li>Preserve a <code>Requirement</code>'s specifier
<code>prereleases</code> override across a pickle round trip. (<a
href="https://redirect.github.com/pypa/packaging/issues/1204">#1204</a>)</li>
<li>Raise <code>InvalidRequirement</code> instead of
<code>InvalidSpecifier</code> when a requirement contains an invalid
specifier. (<a
href="https://redirect.github.com/pypa/packaging/pull/1332">#1332</a>)</li>
<li>Clarify the error for post-release prefix wildcards like
<code>==1.0.post1.*</code>. (<a
href="https://redirect.github.com/pypa/packaging/pull/1299">#1299</a>)</li>
<li>Preserve quoting semantics when serializing marker values, so
round-tripped markers parse back to the same marker. (<a
href="https://redirect.github.com/pypa/packaging/pull/1213">#1213</a>)</li>
<li>Keep the parentheses of a nested group when serializing markers. (<a
href="https://redirect.github.com/pypa/packaging/pull/1316">#1316</a>)</li>
<li>Normalize <code>extra</code> and <code>dependency_groups</code>
values in nested markers at parse time. (<a
href="https://redirect.github.com/pypa/packaging/pull/1246">#1246</a>,
<a
href="https://redirect.github.com/pypa/packaging/pull/1310">#1310</a>)</li>
<li>Raise <code>UndefinedComparison</code> when a set-valued variable
like <code>extras</code> is used outside the membership form. (<a
href="https://redirect.github.com/pypa/packaging/pull/1265">#1265</a>)</li>
<li>Raise <code>UndefinedEnvironmentName</code> (a <code>KeyError</code>
subclass) for missing environment keys during marker evaluation. (<a
href="https://redirect.github.com/pypa/packaging/pull/1276">#1276</a>)</li>
<li>Wrap malformed string literal errors in <code>InvalidMarker</code> /
<code>InvalidRequirement</code> instead of leaking a low-level error.
(<a
href="https://redirect.github.com/pypa/packaging/pull/1249">#1249</a>)</li>
<li>Reject requirements and markers with a trailing line break. (<a
href="https://redirect.github.com/pypa/packaging/pull/1345">#1345</a>)</li>
</ul>
<h3>Fixes for metadata and licenses</h3>
<ul>
<li>Collect all <code>from_email</code> validation errors into one
<code>ExceptionGroup</code> instead of raising the first. (<a
href="https://redirect.github.com/pypa/packaging/pull/1268">#1268</a>)</li>
<li>Accept the UTF-8 charset case-insensitively in email payloads. (<a
href="https://redirect.github.com/pypa/packaging/pull/1330">#1330</a>)</li>
<li>Reject malformed <code>Description-Content-Type</code> values. (<a
href="https://redirect.github.com/pypa/packaging/pull/1329">#1329</a>)</li>
<li>Don't rewrite user values that contain <code>{field}</code>
placeholders in error messages. (<a
href="https://redirect.github.com/pypa/packaging/pull/1327">#1327</a>)</li>
<li>Route multipart email payloads to <code>unparsed</code> instead of
asserting. (<a
href="https://redirect.github.com/pypa/packaging/pull/1247">#1247</a>)</li>
<li>Make <code>InvalidMetadata</code> and
<code>CyclicDependencyGroup</code> picklable. (<a
href="https://redirect.github.com/pypa/packaging/pull/1328">#1328</a>)</li>
<li>Fold every line boundary <code>str.splitlines</code> recognizes when
writing a header with <code>RFC822Message</code>. (<a
href="https://redirect.github.com/pypa/packaging/pull/1356">#1356</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/packaging/blob/main/CHANGELOG.rst">packaging's
changelog</a>.</em></p>
<blockquote>
<p>26.3 - 2026-08-03</p>
<pre><code>
Features:
<ul>
<li>Add a public :class:<code>~packaging.ranges.VersionRange</code> API
and<br />
:meth:<code>SpecifierSet.to_range()
&amp;lt;packaging.specifiers.SpecifierSet.to_range&amp;gt;</code>,<br />
representing the versions a specifier set accepts as an interval set
that<br />
supports intersection, union, difference, complement, set relations,<br
/>
membership tests, and filtering.<br />
:meth:<code>~packaging.ranges.VersionRange.to_specifier_set</code>
converts a range back<br />
to a :class:<code>~packaging.specifiers.SpecifierSet</code> where a PEP
440 form exists.<br />
(:pull:<code>1267</code>, :pull:<code>1270</code>,
:pull:<code>1298</code>)</li>
<li>PEP 808: accept <code>Metadata-Version: 2.6</code>.
(:pull:<code>1194</code>)</li>
<li>Add a <code>limit</code> argument to <code>parse_tag()</code> for
compressed tag sets.<br />
(:issue:<code>1220</code>)</li>
<li>Add a <code>prefer_sdist_predicate</code> argument to
<code>Pylock.select()</code> to prefer<br />
source distributions over wheels for selected packages.
(:pull:<code>1334</code>)</li>
<li>Add :func:<code>~packaging.tags.pure_python_tags</code> to generate
the pure-Python<br />
tags for a Python version without touching the running platform.<br />
(:pull:<code>1346</code>)</li>
<li>Add :meth:<code>SpecifierSet.is_subset()
&amp;lt;packaging.specifiers.SpecifierSet.is_subset&amp;gt;</code>,
:meth:<code>~packaging.specifiers.SpecifierSet.is_superset</code>,<br />
and :meth:<code>~packaging.specifiers.SpecifierSet.is_disjoint</code>,
which compare the<br />
versions two specifier sets accept. (:pull:<code>1313</code>)</li>
</ul>
<p>Behavior adaptations:</p>
<ul>
<li>Drop support for Python 3.8; packaging now requires Python 3.9 or
later.<br />
(:pull:<code>1157</code>)</li>
<li>Prefer native <code>linux_*</code> platform tags over
<code>manylinux</code> and <code>musllinux</code><br />
tags on Linux. (:issue:<code>160</code>)</li>
</ul>
<p>Fixes for versions and specifiers:</p>
<ul>
<li>Raise <code>InvalidVersion</code> instead of <code>TypeError</code>
when <code>Version</code> is given a<br />
non-string. (:pull:<code>1319</code>)</li>
<li>Raise <code>InvalidVersion</code> for non-string pre-release letters
passed to<br />
<code>Version.from_parts</code>. (:pull:<code>1241</code>)</li>
<li>Fix an <code>AttributeError</code> when hashing internally trimmed
versions.<br />
(:pull:<code>1242</code>)</li>
<li>Fix <code>SpecifierSet.is_unsatisfiable</code> for post-release
boundary<br />
intersections. (:pull:<code>1257</code>)</li>
</ul>
<p>Fixes for requirements and markers:</p>
<ul>
<li>Make <code>Requirement.__hash__</code> consistent with
<code>__eq__</code> for<br />
trailing-zero-equivalent specifiers (e.g. <code>foo==1.0.0</code> and<br
/>
<code>foo==1.0.0.0</code>), so equal requirements hash equal and
deduplicate in<br />
sets and dicts. (:pull:<code>1232</code>)<br />
&lt;/tr&gt;&lt;/table&gt;<br />
</code></pre></li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/packaging/commit/929fd4b1410ac7ef61ef3f45b2f5d7e87711a9b5"><code>929fd4b</code></a>
Bump for release</li>
<li><a
href="https://github.com/pypa/packaging/commit/f300ebf0c155e1f7ea6d62fba11dba4bac3d1944"><code>f300ebf</code></a>
chore(deps): bump the pre-commit group with 5 updates (<a
href="https://redirect.github.com/pypa/packaging/issues/1357">#1357</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/f91d97566a966177ad7ea5a7c703b12a7273e3b1"><code>f91d975</code></a>
ci(downstream): bump hatchling to 1.31.0 and fix its pytest rootdir (<a
href="https://redirect.github.com/pypa/packaging/issues/1361">#1361</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/b1a7124fe3d40c3302c029e9eb01ac3fc3496a54"><code>b1a7124</code></a>
chore(deps): bump the github-actions group with 7 updates (<a
href="https://redirect.github.com/pypa/packaging/issues/1358">#1358</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/2d873eb6002021a8c007c933fbdab58b37a5079b"><code>2d873eb</code></a>
fix(metadata): fold every line boundary when writing headers (<a
href="https://redirect.github.com/pypa/packaging/issues/1356">#1356</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/413d006fadf5b9b14d78ad444201d8189bff8c64"><code>413d006</code></a>
docs: changelog for 26.3 (<a
href="https://redirect.github.com/pypa/packaging/issues/1343">#1343</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/4eb0753dba8fcaaac8eb75463374e448f0931558"><code>4eb0753</code></a>
docs(metadata): explain selective field validation (<a
href="https://redirect.github.com/pypa/packaging/issues/1342">#1342</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/77e9ed42b6db9c5c011a5148047a356ebe42692a"><code>77e9ed4</code></a>
feat(tags): add pure Python tag generator (<a
href="https://redirect.github.com/pypa/packaging/issues/1346">#1346</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/7cea5e88671ed14016e9ab3dd08eab064f596564"><code>7cea5e8</code></a>
ci: drop 3.13t on Windows (3.13.14t may fail to build, run takes 9
minutes) (...</li>
<li><a
href="https://github.com/pypa/packaging/commit/45a8b3402db5ff82158f2d0eabaf8447aa7a50bf"><code>45a8b34</code></a>
docs: add missing versionadded/versionchanged directives (<a
href="https://redirect.github.com/pypa/packaging/issues/1344">#1344</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/packaging/compare/26.2...26.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=packaging&package-manager=pip&previous-version=26.2&new-version=26.3)](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)


</details>

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

<img width="2113" height="494" alt="image"
src="https://github.com/user-attachments/assets/7dc82d66-60ca-43e8-9cc1-9d3fa44e1a25"
/>

Fixes microsoft#21996

Terminal REPLs launched by the extension only set a title, so VS Code
fell back to the default shell/profile icon. This threads an optional
`iconPath` through the terminal creation pipeline and sets
`ThemeIcon('snake')` for the REPL only.

### Changes

- **`common/terminal/types.ts`**: `TerminalCreationOptions` gains
`iconPath?: TerminalOptions['iconPath']`, keeping the internal type
aligned with the VS Code API.
- **`common/terminal/service.ts`**: `ensureTerminal` forwards `iconPath`
on both creation paths — `ensureTerminalLegacy(...)` (env extension,
whose options extend `TerminalOptions`) and
`terminalManager.createTerminal(...)`.
- **`terminals/codeExecution/terminalCodeExecution.ts`**: new `protected
terminalIcon?: TerminalOptions['iconPath']`, passed to
`terminalServiceFactory.getTerminalService(...)` alongside the title.
- **`terminals/codeExecution/repl.ts`**: sets the icon, so plain Python
terminals, Django shells, native REPL tabs, and user-typed `python`
sessions are untouched.

```ts
// repl.ts
this.terminalTitle = 'REPL';
this.terminalIcon = new ThemeIcon('snake');
```

### Tests

- `terminalCodeExec.unit.test.ts`: the title matcher now also asserts
the expected icon id per suite — `snake` for `ReplProvider`, none for
the Terminal and Django providers.
- `service.unit.test.ts`: two tests assert `iconPath` reaches
`terminalManager.createTerminal(...)` and, with `useEnvExtension()`
stubbed on, `ensureTerminalLegacy(...)`.

The env-extension test stubs `ensureTerminalLegacy` with a plain object
rather than a TypeMoq mock: dynamic mocks answer any property access, so
`await`ing one hangs on the phantom `then`.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: edvilme <5952839+edvilme@users.noreply.github.com>
This pull request refactors the naming and usage of exception and
display hooks in the `pythonrc.py` file to better reflect their
association with VS Code integration. It also simplifies the REPL launch
message and updates related tests to use the new hook names.
**Refactoring and renaming for clarity:** * Renamed `my_excepthook` and
`my_displayhook` methods in `REPLHooks` to `vscode_excepthook` and
`vscode_displayhook`, and updated all references and assignments
accordingly in `pythonrc.py`. * Updated test cases in
`test_shell_integration.py` to use the new hook method names
(`vscode_displayhook` and `vscode_excepthook`).
[[1]](diffhunk://#diff-f900183871669133df435002b57b4e9e7b8d57779718d41d65427fccc833172bL49-R49)
[[2]](diffhunk://#diff-f900183871669133df435002b57b4e9e7b8d57779718d41d65427fccc833172bL62-R62)
**Prompt message simplification:** * Simplified the REPL launch message
to dynamically use "Cmd" or "Ctrl" based on the platform, reducing
duplicated code.

Fixes microsoft#26146
Fixes microsoft#26147

## Before
<img width="2173" height="996" alt="image"
src="https://github.com/user-attachments/assets/91d35602-10f9-48a8-bca7-61fa549d5b76"
/>

## After
<img width="1740" height="930" alt="image"
src="https://github.com/user-attachments/assets/dcce043b-662e-4928-9ee4-3246215a8b9a"
/>


This pull request refactors the initialization logic in
`python_files/pythonrc.py` to avoid polluting the module's global
namespace, and adds a corresponding test to ensure this behavior. The
main change is wrapping the script's setup code in a private function
and then deleting it after execution.

Refactoring and namespace cleanliness:

* Moved all initialization code in `pythonrc.py` into a private
`_initialize()` function, and called and deleted it at the end of the
file to prevent leftover names in the module's global namespace.
[[1]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaR1)
[[2]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaL95-R101)
* Removed unnecessary blank lines and improved code organization for
readability.
[[1]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaL11)
[[2]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaL25)
[[3]](diffhunk://#diff-8734bb7310870e747bbb82c387dc848241b398db31918a75ed6bee20bcc491eaL45-L53)

Testing:

* Added `test_does_not_pollute_namespace` in `test_shell_integration.py`
to verify that `pythonrc.py` does not leave any non-dunder (non-`__`)
names in its global namespace after import.
## Summary

- declare `pyreflyversion` for the user-facing type-server child
lifecycle event
- declare `pyreflyversion` for the four Pyrefly shadow telemetry events
- keep the Python extension GDPR allow-list aligned with the Pylance
telemetry producers

## Validation

- `git diff --check`

This is a GDPR declaration-only change; runtime behavior is unchanged.

Copilot-Session: 18854bb1-a4b0-4127-be25-ee17cb78943b
…dowed under PYTHONSTARTUP (microsoft#26045)

Fixes microsoft#26039

`PYTHONSTARTUP` executes `pythonrc.py`'s code directly inside the user's
`__main__` namespace rather than importing it as a module. That means
`PS1.__str__.__globals__` *is* the user's namespace — so shadowing any
name it relies on at prompt-render time (`int`, `sys`, `str`, `bool`,
`original_ps1`, `get_last_command`) breaks `str(sys.ps1)` and silently
kills the prompt.

This captures the real objects into private `_`-prefixed aliases right
after they're defined, before any user code runs, so later reassignment
of those names in `__main__` can't affect the prompt anymore.

**How I tested:**
- Reproduced by `exec`-ing `pythonrc.py`'s source into a synthetic
`__main__` dict (mirroring the real `PYTHONSTARTUP` path) and shadowing
`int`/`sys`/`str`/`bool`/`original_ps1`/`get_last_command` — confirmed
it broke on the original file and is fixed on the patched one.
- Added `test_prompt_survives_shadowed_builtins_under_pythonstartup`,
which encodes that reproduction as a regression test. The existing tests
`import pythonrc` as a normal module, which gives `PS1` its own module
namespace instead of `__main__` — that's why they never caught this bug.
- `npm run check-python` (ruff check, ruff format --check, pyright) —
clean, 0 errors.
- `python -m pytest python_files/tests/test_shell_integration.py -v` —
5/5 passed.

**Notes for reviewers:** the fix is intentionally minimal (capture at
definition time) rather than moving the class into a separate module,
since `pythonStartup.ts` only ever copies the single `pythonrc.py` file
to the PYTHONSTARTUP location — splitting into two files would require
extension-side deployment changes.

---------

Co-authored-by: Eduardo Villalpando Mello <eduardo.villalpando.mello@gmail.com>
…ft#26153)

Fixes microsoft#26092

"Copy test ID" copied the raw `TestItem.id`, which since project scoping
is `{projectId}@@vsc@@{testId}`, so users pasted
`file:///path/to/workspace@@vsc@@/path/to/workspace/tests/unit/test_foo.py::test_bar`
instead of the test ID.

### Changes

- **`src/client/testing/utils.ts`**: `writeTestIdToClipboard` now
normalizes the ID with the existing `parseVsId` helper before unittest
detection/conversion, the pytest clipboard write, and logging.
- `TestItem.id` is not mutated and discovery/execution scoping is
untouched — only the clipboard-facing value is normalized.
- `parseVsId` returns `[undefined, vsId]` for unscoped IDs, so legacy
behavior and the `module.class.method` unittest formatting are
preserved.

```diff
-        if (testItem.id.includes('\\') && testItem.id.indexOf('::') === -1) {
+        const [, testId] = parseVsId(testItem.id);
+        if (testId.includes('\\') && testId.indexOf('::') === -1) {
```

- **`src/test/testing/utils.unit.test.ts`**: this file was a top-level
IIFE with `try/catch`-swallowed assertions that mocha never registered
as tests (and its `idToModuleClassMethod` inputs had lost their
backslash separators). Converted to a `suite`/`test` file asserting the
real clipboard contents via the `MockClipboard` from
`src/test/vscode-mock.ts`, with cases for project-scoped pytest IDs,
parameterized IDs (`test_pipe_single[False]` preserved verbatim),
Windows-style paths, legacy unscoped IDs, and project-scoped unittest
IDs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: edvilme <5952839+edvilme@users.noreply.github.com>
Co-authored-by: Eduardo Villalpando Mello <eduardo.villalpando.mello@gmail.com>
…rms (microsoft#26157)

# PR: Enable REPL launch print test for all non-Darwin platforms

## Related Issue
Fixes microsoft#26156 

## Changes Proposed
* **[Test Suite - Shell Integration]**: In
`python_files/tests/test_shell_integration.py`, changed the conditional
guard for `test_print_statement_non_darwin` from `if sys.platform ==
"win32":` to `if sys.platform != "darwin":` so that the REPL launch
print banner is verified on Linux and other non-Darwin Unix environments
in addition to Windows.
* **[Platform Parity]**: Eliminates the test gap where non-Darwin Unix
systems were missing test coverage for the Native REPL launch message.

## How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
* [x] Test A: Pytest run on
`python_files/tests/test_shell_integration.py` passed (7/7 tests
passed).
* [x] Test B: Pyright static analysis on
`python_files/tests/test_shell_integration.py` completed with 0 errors
and 0 warnings.
* [x] Test C: Simulated platform check evaluation verifying
`sys.platform != "darwin"` evaluates to `True` on both Linux and
Windows.

## Checklist
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] My changes generate no new warnings
Keep the release version at 2026.6.0 after incorporating the changes shipped in 2026.7 Insiders. Leave the stable PET artifact pinned to 2026.4 pending a separate upgrade decision.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@eleanorjboyd
Eleanor Boyd (eleanorjboyd) merged commit 7a06e93 into microsoft:release/2026.6 Sep 24, 2026
89 of 93 checks passed
Eleanor Boyd (eleanorjboyd) added a commit that referenced this pull request Sep 25, 2026
## Why
The [virtualenv 21.12.0
update](https://github.com/pypa/virtualenv/releases/tag/21.12.0)
introduced a [PEP 832 `.venv`
redirect](pypa/virtualenv#3204): when a project
has a `pyproject.toml`, creating `.virtualenv` can also write a `.venv`
file pointing to it. Our CI workflow copies in a `pyproject.toml`,
creates `.virtualenv` for virtualenv tests, then runs `python -m venv
.venv` for separate stdlib venv tests. Once virtualenv started writing
that file, the latter command could no longer create its `.venv`
directory. The passing run installed virtualenv 21.11.1; the failing
release-branch runs installed 21.12.1.

## Change
Pass `--no-venv-redirect` when creating `.virtualenv`. This opts out of
the newly added side effect while keeping the two existing test
environments at their original paths: `.virtualenv` for virtualenv and
`.venv` for stdlib venv. Stop immediately if stdlib venv creation fails
rather than reporting the subsequent missing executable as the primary
error.

Related to #26164. The release branch still needs this fix and a passing
Build workflow before release.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog No news entry required skip-issue-check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants