Skip to content

Native REPL should use interpreter from env extension#1878

Closed
anthonykim1 wants to merge 476 commits intoDonJayamanne:mainfrom
microsoft:anthonykim1/nativeReplEnvExtension
Closed

Native REPL should use interpreter from env extension#1878
anthonykim1 wants to merge 476 commits intoDonJayamanne:mainfrom
microsoft:anthonykim1/nativeReplEnvExtension

Conversation

@anthonykim1
Copy link
Contributor

eleanorjboyd and others added 30 commits January 7, 2025 16:15
The script isn't working and seems to not be worth the effort
mistakenly committed and needs to be removed
Closes #24627

---------

Co-authored-by: Eleanor Boyd <eleanorboyd@microsoft.com>
update 2025 release schedule
Add telemetry for the computable pth experiment
…24765)

Resolves:
#24674 (comment)
Use sendText to send Python code to Terminal REPL for Python >= 3.13 to
prevent keyboard interrupt.

Relevant file context from VS Code:
https://github.com/microsoft/vscode/blob/f9c927cf7a29a59b896b6cdac2d8b5d2d43afea5/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts#L906

It seems like we are on this edge scenario where generic terminal shell
integration is enabled (so executeCommand can be used), but we have
temporarily disabled Python shell integration for Python >= 3.13 (and of
course sending the relevant escape sequences such as the commandLine
itself to VS Code). Why?
* python/cpython#126131 placing user's mouse
cursor position at odd place.

Why and where I think the keyboard interrupt is happening:
Python extension tries to executeCommand when sending commands to
terminal REPL >= Python3.13, where we are not sending shell integration
escape sequences from the Python side.
* I think this is why it is attaching the keyboard interrupt all the
sudden, because VS Code see that Python extension is requesting
executeCommand but is not sending the commandLine escape sequence to
them. For every other versions < 3.13 (where we send all the shell
integration escape sequences including the commandLine), this does not
happen.
See microsoft/vscode-jupyter#15987

Should also fix microsoft/vscode-jupyter#16112
Should also avoid Pylance having to monitor notebook changes and then
trying to figure out the Environment for a Notebook.

previous discussion here
#24358
Resolves: #22469
Need one more extra line to "execute" on behalf of user when returning
dictionary.
Aligning more with command palette option we have: `Python: Start Native
Python REPL` and taking feedback from
#24443 (reply in thread)
…24807)

Attempt at fixing
#24585

There are many edge scenarious where refering to the name of the
environment rather than the path can cause breaks in the extension. Some
examples

1 -**If we have two anonymous environments with the same name in
different folders**

/path1/my-env
/path2/my-env (where my active vscode python interpreter is)
by using conda -n my-env it'll always use the first env.

2 - **Some times people avoid actually activating their conda envs when
using conda-pack** https://github.com/conda/conda-pack

This is because the activation scripts are known to be flaky and not
very reliable

3 - **The environment may have been created by a conda-compliant
replacement**

Therefore conda itself is not aware of it by name but can work with it
properly using the path. This is the case of
[hawk](https://community.palantir.com/t/introducing-hawk-for-python-package-management-in-code-repositories/500)
or frankly anyone building their own conda package manager on top of
[rattler](https://github.com/conda/rattler).


Some of these points are also hinted at
#24627 (comment)
, and supported by a conda maintainer in
#24585 (comment)

This PR has a minimal attempt at changing that by always forcing -p
usage
Closes #24817

## What this change does

Introduce `autoTestDiscoverOnSavePattern` configuration option to
control `autoTestDiscoverOnSaveEnabled` behavior to only attempt test
discovery refresh when files matching the specified glob pattern are
saved.

## Why this change

In a Python project we have with over 40K tests, developers definitely
notice issues when pytest discovery is running whenever any file in the
workspace is saved, despite all tests matching a very consistent pattern
(`./tests/**/test_*.py`).

## Other alternatives I considered

I did consider trying to match only the specific patterns used by
unittest/pytest here. Given that would require parsing underlying
configuration files / raw args in the test configuration for the
workspace for both unittest and pytest (plus any other test runners
supported in future) - I don't think that's going to be easy to
maintain. Plus the addition / deletion of `__init__.py` files play a
significant part in test discovery despite not being covered by the test
configuration pattern - so this solution would be incomplete.

Another alternative would be to accept a parent directory and only
include python files from that directory + subdirectories (using
workspace directory as default value). This avoids introducing a glob
configuration value, but feels very limiting.

---------

Co-authored-by: Eleanor Boyd <26030610+eleanorjboyd@users.noreply.github.com>
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.6.0 to
6.6.1.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/indutny/elliptic/commit/9b77436a59cc35eccf4ffb848259c8762a492ee7"><code>9b77436</code></a>
6.6.1</li>
<li><a
href="https://github.com/indutny/elliptic/commit/04cb6f54ce552b3ebde6be06d6050419e1c7333e"><code>04cb6f5</code></a>
Merge commit from fork</li>
<li>See full diff in <a
href="https://github.com/indutny/elliptic/compare/v6.6.0...v6.6.1">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/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>
Bumps
[serialize-javascript](https://github.com/yahoo/serialize-javascript) to
6.0.2 and updates ancestor dependency
[mocha](https://github.com/mochajs/mocha). These dependencies need to be
updated together.

Updates `serialize-javascript` from 6.0.0 to 6.0.2
<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>v6.0.2</h2>
<ul>
<li>fix: serialize URL string contents to prevent XSS (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/173">#173</a>)
f27d65d</li>
<li>Bump <code>@​babel/traverse</code> from 7.10.1 to 7.23.7 (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/171">#171</a>)
02499c0</li>
<li>docs: update readme with URL support (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/146">#146</a>)
0d88527</li>
<li>chore: update node version and lock file  e2a3a91</li>
<li>fix typo (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/164">#164</a>)
5a1fa64</li>
</ul>
<p><a
href="https://github.com/yahoo/serialize-javascript/compare/v6.0.1...v6.0.2">https://github.com/yahoo/serialize-javascript/compare/v6.0.1...v6.0.2</a></p>
<h2>v6.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump mocha from 9.0.1 to 9.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/126">yahoo/serialize-javascript#126</a></li>
<li>Bump mocha from 9.0.2 to 9.0.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/127">yahoo/serialize-javascript#127</a></li>
<li>Bump path-parse from 1.0.6 to 1.0.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/129">yahoo/serialize-javascript#129</a></li>
<li>Bump mocha from 9.0.3 to 9.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/130">yahoo/serialize-javascript#130</a></li>
<li>Bump mocha from 9.1.0 to 9.1.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/131">yahoo/serialize-javascript#131</a></li>
<li>Bump mocha from 9.1.1 to 9.1.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/132">yahoo/serialize-javascript#132</a></li>
<li>Bump mocha from 9.1.2 to 9.1.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/133">yahoo/serialize-javascript#133</a></li>
<li>Bump mocha from 9.1.3 to 9.1.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/137">yahoo/serialize-javascript#137</a></li>
<li>Bump mocha from 9.1.4 to 9.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/138">yahoo/serialize-javascript#138</a></li>
<li>Bump chai from 4.3.4 to 4.3.6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/140">yahoo/serialize-javascript#140</a></li>
<li>Bump ansi-regex from 5.0.0 to 5.0.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/141">yahoo/serialize-javascript#141</a></li>
<li>Bump mocha from 9.2.0 to 9.2.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/143">yahoo/serialize-javascript#143</a></li>
<li>Bump minimist from 1.2.5 to 1.2.6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/144">yahoo/serialize-javascript#144</a></li>
<li>Bump mocha from 9.2.2 to 10.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/145">yahoo/serialize-javascript#145</a></li>
<li>Bump mocha from 10.0.0 to 10.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/149">yahoo/serialize-javascript#149</a></li>
<li>Bump chai from 4.3.6 to 4.3.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/150">yahoo/serialize-javascript#150</a></li>
<li>ci: test.yml - actions bump by <a
href="https://github.com/piwysocki"><code>@​piwysocki</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/151">yahoo/serialize-javascript#151</a></li>
<li>Bump minimatch from 3.0.4 to 3.1.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/152">yahoo/serialize-javascript#152</a></li>
<li>Bump mocha from 10.1.0 to 10.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/153">yahoo/serialize-javascript#153</a></li>
<li>Bump json5 from 2.1.3 to 2.2.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/155">yahoo/serialize-javascript#155</a></li>
<li>Fix serialization issue for 0n. by <a
href="https://github.com/momocow"><code>@​momocow</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/156">yahoo/serialize-javascript#156</a></li>
<li>Release v6.0.1 by <a
href="https://github.com/okuryu"><code>@​okuryu</code></a> in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/157">yahoo/serialize-javascript#157</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/piwysocki"><code>@​piwysocki</code></a>
made their first contribution in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/151">yahoo/serialize-javascript#151</a></li>
<li><a href="https://github.com/momocow"><code>@​momocow</code></a> made
their first contribution in <a
href="https://redirect.github.com/yahoo/serialize-javascript/pull/156">yahoo/serialize-javascript#156</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/yahoo/serialize-javascript/compare/v6.0.0...v6.0.1">https://github.com/yahoo/serialize-javascript/compare/v6.0.0...v6.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/b71ec23841d7cf30847d3071d9da38ee0b397fc8"><code>b71ec23</code></a>
6.0.2</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/f27d65d3de42affe2aac14607066c293891cec4e"><code>f27d65d</code></a>
fix: serialize URL string contents to prevent XSS (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/173">#173</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/02499c0adfb40f48e1ebdcbe6fffc83b162b95e9"><code>02499c0</code></a>
Bump <code>@​babel/traverse</code> from 7.10.1 to 7.23.7 (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/171">#171</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/0d885272f45069b1207189ae18a6f2726b4abaa9"><code>0d88527</code></a>
docs: update readme with URL support (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/146">#146</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/e2a3a9173e6770ee92e02d95d6a8e7958dfb419d"><code>e2a3a91</code></a>
chore: update node version and lock file</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/5a1fa646d9cbbe0b4f13c07f01c249fb2493e20f"><code>5a1fa64</code></a>
fix typo (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/164">#164</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/7139f9251b4cad52136513cf3360869e1e645d6c"><code>7139f92</code></a>
Release v6.0.1 (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/157">#157</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/7e23ae89e4b65ebf8836fcbaab637d49fb32ecb2"><code>7e23ae8</code></a>
Fix serialization issue for 0n. (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/156">#156</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/343abd98ff0a3f88f61fca35100762fdd6cb1963"><code>343abd9</code></a>
Bump json5 from 2.1.3 to 2.2.3 (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/155">#155</a>)</li>
<li><a
href="https://github.com/yahoo/serialize-javascript/commit/38d0e70e2d82662b2ec4fa2f7f3e1289db745db1"><code>38d0e70</code></a>
Bump mocha from 10.1.0 to 10.2.0 (<a
href="https://redirect.github.com/yahoo/serialize-javascript/issues/153">#153</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/yahoo/serialize-javascript/compare/v6.0.0...v6.0.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `mocha` from 9.2.2 to 11.1.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>v11.1.0</h2>
<h2><a
href="https://github.com/mochajs/mocha/compare/v11.0.2...v11.1.0">11.1.0</a>
(2025-01-02)</h2>
<h3>🌟 Features</h3>
<ul>
<li>bump yargs to 17 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5165">#5165</a>)
(<a
href="https://github.com/mochajs/mocha/commit/8f1c8d888b0104afcd95ca55a517320399755749">8f1c8d8</a>)</li>
</ul>
<h2>v11.0.2</h2>
<h2><a
href="https://github.com/mochajs/mocha/compare/v11.0.1...v11.0.2">11.0.2</a>
(2024-12-09)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li>catch exceptions setting Error.stackTraceLimit (<a
href="https://redirect.github.com/mochajs/mocha/issues/5254">#5254</a>)
(<a
href="https://github.com/mochajs/mocha/commit/259f8f8ba5709b5d84fa66e17cd10560a11f45c9">259f8f8</a>)</li>
<li>error handling for unexpected numeric arguments passed to cli (<a
href="https://redirect.github.com/mochajs/mocha/issues/5263">#5263</a>)
(<a
href="https://github.com/mochajs/mocha/commit/210d658678a2ec3b6f85c59d4b300b4722671099">210d658</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>correct outdated <code>status: accepting prs</code> link (<a
href="https://redirect.github.com/mochajs/mocha/issues/5268">#5268</a>)
(<a
href="https://github.com/mochajs/mocha/commit/f729cd09b61bb598409f19b3c76b9e9536812237">f729cd0</a>)</li>
<li>replace &quot;New in&quot; with &quot;Since&quot; in version
annotations (<a
href="https://redirect.github.com/mochajs/mocha/issues/5262">#5262</a>)
(<a
href="https://github.com/mochajs/mocha/commit/6f10d12c6c6dfa4df7d5221a3ce688f687aaf320">6f10d12</a>)</li>
</ul>
<h2>v11.0.1</h2>
<h2><a
href="https://github.com/mochajs/mocha/compare/v11.0.0...v11.0.1">11.0.1</a>
(2024-12-02)</h2>
<h3>🌟 Features</h3>
<ul>
<li>bumped glob dependency from 8 to 10 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5250">#5250</a>)
(<a
href="https://github.com/mochajs/mocha/commit/43c3157c6ef4f2d4bfecf3ad3a42479fd64187b8">43c3157</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>fix examples for <code>linkPartialObjects</code> methods (<a
href="https://redirect.github.com/mochajs/mocha/issues/5255">#5255</a>)
(<a
href="https://github.com/mochajs/mocha/commit/34e0e52e047a9119aeae9cb5b660a8438656a1e0">34e0e52</a>)</li>
</ul>
<h2>v11.0.0 Prerelease</h2>
<h2><a
href="https://github.com/mochajs/mocha/compare/v10.8.2...v11.0.0">11.0.0</a>
(2024-11-11)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>adapt new engine range for Mocha 11 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5216">#5216</a>)</li>
</ul>
<h3>🌟 Features</h3>
<ul>
<li>allow calling hook methods (<a
href="https://redirect.github.com/mochajs/mocha/issues/5231">#5231</a>)
(<a
href="https://github.com/mochajs/mocha/commit/e3da641b08bed20f12df524fc64cb9579f980c1e">e3da641</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<!-- 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/v11.0.2...v11.1.0">11.1.0</a>
(2025-01-02)</h2>
<h3>🌟 Features</h3>
<ul>
<li>bump yargs to 17 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5165">#5165</a>)
(<a
href="https://github.com/mochajs/mocha/commit/8f1c8d888b0104afcd95ca55a517320399755749">8f1c8d8</a>)</li>
<li>replace <code>strip-ansi</code> with
<code>util.stripVTControlCharacters</code> (<a
href="https://redirect.github.com/mochajs/mocha/issues/5267">#5267</a>)
(<a
href="https://github.com/mochajs/mocha/commit/3c191c05d9db1e99aec9b600edac2ce10a6b6d71">3c191c0</a>),
closes <a
href="https://redirect.github.com/mochajs/mocha/issues/5265">#5265</a></li>
</ul>
<h2><a
href="https://github.com/mochajs/mocha/compare/v11.0.1...v11.0.2">11.0.2</a>
(2024-12-09)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li>catch exceptions setting Error.stackTraceLimit (<a
href="https://redirect.github.com/mochajs/mocha/issues/5254">#5254</a>)
(<a
href="https://github.com/mochajs/mocha/commit/259f8f8ba5709b5d84fa66e17cd10560a11f45c9">259f8f8</a>)</li>
<li>error handling for unexpected numeric arguments passed to cli (<a
href="https://redirect.github.com/mochajs/mocha/issues/5263">#5263</a>)
(<a
href="https://github.com/mochajs/mocha/commit/210d658678a2ec3b6f85c59d4b300b4722671099">210d658</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>correct outdated <code>status: accepting prs</code> link (<a
href="https://redirect.github.com/mochajs/mocha/issues/5268">#5268</a>)
(<a
href="https://github.com/mochajs/mocha/commit/f729cd09b61bb598409f19b3c76b9e9536812237">f729cd0</a>)</li>
<li>replace &quot;New in&quot; with &quot;Since&quot; in version
annotations (<a
href="https://redirect.github.com/mochajs/mocha/issues/5262">#5262</a>)
(<a
href="https://github.com/mochajs/mocha/commit/6f10d12c6c6dfa4df7d5221a3ce688f687aaf320">6f10d12</a>)</li>
</ul>
<h2><a
href="https://github.com/mochajs/mocha/compare/v11.0.0...v11.0.1">11.0.1</a>
(2024-12-02)</h2>
<h3>🌟 Features</h3>
<ul>
<li>bumped glob dependency from 8 to 10 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5250">#5250</a>)
(<a
href="https://github.com/mochajs/mocha/commit/43c3157c6ef4f2d4bfecf3ad3a42479fd64187b8">43c3157</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>fix examples for <code>linkPartialObjects</code> methods (<a
href="https://redirect.github.com/mochajs/mocha/issues/5255">#5255</a>)
(<a
href="https://github.com/mochajs/mocha/commit/34e0e52e047a9119aeae9cb5b660a8438656a1e0">34e0e52</a>)</li>
</ul>
<h2><a
href="https://github.com/mochajs/mocha/compare/v10.8.2...v11.0.0">11.0.0</a>
(2024-11-11)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>adapt new engine range for Mocha 11 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5216">#5216</a>)</li>
</ul>
<h3>🌟 Features</h3>
<ul>
<li>allow calling hook methods (<a
href="https://redirect.github.com/mochajs/mocha/issues/5231">#5231</a>)
(<a
href="https://github.com/mochajs/mocha/commit/e3da641b08bed20f12df524fc64cb9579f980c1e">e3da641</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li>adapt new engine range for Mocha 11 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5216">#5216</a>)
(<a
href="https://github.com/mochajs/mocha/commit/80da25a4132ca50d3ad35087cb62c9b0f8fc946a">80da25a</a>)</li>
</ul>
<h3>📚 Documentation</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mochajs/mocha/commit/a87fb1130a877649e564e144a73b1716b6296cbd"><code>a87fb11</code></a>
chore(main): release 11.1.0 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5277">#5277</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/3c191c05d9db1e99aec9b600edac2ce10a6b6d71"><code>3c191c0</code></a>
feat: replace <code>strip-ansi</code> with
<code>util.stripVTControlCharacters</code> (<a
href="https://redirect.github.com/mochajs/mocha/issues/5267">#5267</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/8f1c8d888b0104afcd95ca55a517320399755749"><code>8f1c8d8</code></a>
feat: bump yargs to 17 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5165">#5165</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/6caa9026eb120b136dc8210614b31310f8bff83b"><code>6caa902</code></a>
chore(main): release 11.0.2 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5269">#5269</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/259f8f8ba5709b5d84fa66e17cd10560a11f45c9"><code>259f8f8</code></a>
fix: catch exceptions setting Error.stackTraceLimit (<a
href="https://redirect.github.com/mochajs/mocha/issues/5254">#5254</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/210d658678a2ec3b6f85c59d4b300b4722671099"><code>210d658</code></a>
fix: error handling for unexpected numeric arguments passed to cli (<a
href="https://redirect.github.com/mochajs/mocha/issues/5263">#5263</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/6f10d12c6c6dfa4df7d5221a3ce688f687aaf320"><code>6f10d12</code></a>
docs: replace &quot;New in&quot; with &quot;Since&quot; in version
annotations (<a
href="https://redirect.github.com/mochajs/mocha/issues/5262">#5262</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/f729cd09b61bb598409f19b3c76b9e9536812237"><code>f729cd0</code></a>
docs: correct outdated <code>status: accepting prs</code> link (<a
href="https://redirect.github.com/mochajs/mocha/issues/5268">#5268</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/4c558fb83ca5d7e260961b1ebfddcd377017a608"><code>4c558fb</code></a>
chore(main): release 11.0.1 (<a
href="https://redirect.github.com/mochajs/mocha/issues/5257">#5257</a>)</li>
<li><a
href="https://github.com/mochajs/mocha/commit/a5bd707301006a318f8fea205545d8779a1c94c5"><code>a5bd707</code></a>
Release v11.0.1</li>
<li>Additional commits viewable in <a
href="https://github.com/mochajs/mocha/compare/v9.2.2...v11.1.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/~voxpelli">voxpelli</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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/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>
dependabot bot and others added 29 commits December 5, 2025 11:21
Bumps and [jws](https://github.com/brianloveswords/node-jws). These
dependencies needed to be updated together.
Updates `jws` from 3.2.2 to 3.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/brianloveswords/node-jws/releases">jws's
releases</a>.</em></p>
<blockquote>
<h2>v3.2.3</h2>
<h3>Changed</h3>
<ul>
<li>Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now
require
that a non empty secret is provided (via opts.secret, opts.privateKey or
opts.key)
when using HMAC algorithms.</li>
<li>Upgrading JWA version to 1.4.2, addressing a compatibility issue for
Node &gt;= 25.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/auth0/node-jws/blob/master/CHANGELOG.md">jws's
changelog</a>.</em></p>
<blockquote>
<h2>[3.2.3]</h2>
<h3>Changed</h3>
<ul>
<li>Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now
require
that a non empty secret is provided (via opts.secret, opts.privateKey or
opts.key)
when using HMAC algorithms.</li>
<li>Upgrading JWA version to 1.4.2, adressing a compatibility issue for
Node &gt;= 25.</li>
</ul>
<h2>[3.0.0]</h2>
<h3>Changed</h3>
<ul>
<li><strong>BREAKING</strong>: <code>jwt.verify</code> now requires an
<code>algorithm</code> parameter, and
<code>jws.createVerify</code> requires an <code>algorithm</code> option.
The <code>&quot;alg&quot;</code> field
signature headers is ignored. This mitigates a critical security flaw
in the library which would allow an attacker to generate signatures with
arbitrary contents that would be accepted by <code>jwt.verify</code>.
See
<a
href="https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/">https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/</a>
for details.</li>
</ul>
<h2><a
href="https://github.com/brianloveswords/node-jws/compare/v1.0.1...v2.0.0">2.0.0</a>
- 2015-01-30</h2>
<h3>Changed</h3>
<ul>
<li>
<p><strong>BREAKING</strong>: Default payload encoding changed from
<code>binary</code> to
<code>utf8</code>. <code>utf8</code> is a is a more sensible default
than <code>binary</code> because
many payloads, as far as I can tell, will contain user-facing
strings that could be in any language. (<!-- raw HTML omitted --><a
href="https://github.com/brianloveswords/node-jws/commit/6b6de48">6b6de48</a><!--
raw HTML omitted -->)</p>
</li>
<li>
<p>Code reorganization, thanks <a
href="https://github.com/fearphage"><code>@​fearphage</code></a>! (<!--
raw HTML omitted --><a
href="https://github.com/brianloveswords/node-jws/commit/7880050">7880050</a><!--
raw HTML omitted -->)</p>
</li>
</ul>
<h3>Added</h3>
<ul>
<li>Option in all relevant methods for <code>encoding</code>. For those
few users
that might be depending on a <code>binary</code> encoding of the
messages, this
is for them. (<!-- raw HTML omitted --><a
href="https://github.com/brianloveswords/node-jws/commit/6b6de48">6b6de48</a><!--
raw HTML omitted -->)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/auth0/node-jws/commit/4f6e73f24df42f07d632dec6431ade8eda8d11a6"><code>4f6e73f</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/auth0/node-jws/commit/bd0fea57f35a97b6749a632b19ae5100d6d35729"><code>bd0fea5</code></a>
version 3.2.3</li>
<li><a
href="https://github.com/auth0/node-jws/commit/7c3b4b411004c206af8901fa3f8e644127bbf8d9"><code>7c3b4b4</code></a>
Enhance tests for HMAC streaming sign and verify</li>
<li><a
href="https://github.com/auth0/node-jws/commit/a9b8ed999de8f8fff486ac9167514577a0fae323"><code>a9b8ed9</code></a>
Improve secretOrKey initialization in VerifyStream</li>
<li><a
href="https://github.com/auth0/node-jws/commit/6707fde62cbae465a7f11e52760fb994dbc0e0dc"><code>6707fde</code></a>
Improve secret handling in SignStream</li>
<li>See full diff in <a
href="https://github.com/brianloveswords/node-jws/compare/v3.2.2...v3.2.3">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/~julien.wollscheid">julien.wollscheid</a>, a
new releaser for jws since your current version.</p>
</details>
<br />

Updates `jws` from 4.0.0 to 4.0.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/brianloveswords/node-jws/releases">jws's
releases</a>.</em></p>
<blockquote>
<h2>v3.2.3</h2>
<h3>Changed</h3>
<ul>
<li>Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now
require
that a non empty secret is provided (via opts.secret, opts.privateKey or
opts.key)
when using HMAC algorithms.</li>
<li>Upgrading JWA version to 1.4.2, addressing a compatibility issue for
Node &gt;= 25.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/auth0/node-jws/blob/master/CHANGELOG.md">jws's
changelog</a>.</em></p>
<blockquote>
<h2>[3.2.3]</h2>
<h3>Changed</h3>
<ul>
<li>Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now
require
that a non empty secret is provided (via opts.secret, opts.privateKey or
opts.key)
when using HMAC algorithms.</li>
<li>Upgrading JWA version to 1.4.2, adressing a compatibility issue for
Node &gt;= 25.</li>
</ul>
<h2>[3.0.0]</h2>
<h3>Changed</h3>
<ul>
<li><strong>BREAKING</strong>: <code>jwt.verify</code> now requires an
<code>algorithm</code> parameter, and
<code>jws.createVerify</code> requires an <code>algorithm</code> option.
The <code>&quot;alg&quot;</code> field
signature headers is ignored. This mitigates a critical security flaw
in the library which would allow an attacker to generate signatures with
arbitrary contents that would be accepted by <code>jwt.verify</code>.
See
<a
href="https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/">https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/</a>
for details.</li>
</ul>
<h2><a
href="https://github.com/brianloveswords/node-jws/compare/v1.0.1...v2.0.0">2.0.0</a>
- 2015-01-30</h2>
<h3>Changed</h3>
<ul>
<li>
<p><strong>BREAKING</strong>: Default payload encoding changed from
<code>binary</code> to
<code>utf8</code>. <code>utf8</code> is a is a more sensible default
than <code>binary</code> because
many payloads, as far as I can tell, will contain user-facing
strings that could be in any language. (<!-- raw HTML omitted --><a
href="https://github.com/brianloveswords/node-jws/commit/6b6de48">6b6de48</a><!--
raw HTML omitted -->)</p>
</li>
<li>
<p>Code reorganization, thanks <a
href="https://github.com/fearphage"><code>@​fearphage</code></a>! (<!--
raw HTML omitted --><a
href="https://github.com/brianloveswords/node-jws/commit/7880050">7880050</a><!--
raw HTML omitted -->)</p>
</li>
</ul>
<h3>Added</h3>
<ul>
<li>Option in all relevant methods for <code>encoding</code>. For those
few users
that might be depending on a <code>binary</code> encoding of the
messages, this
is for them. (<!-- raw HTML omitted --><a
href="https://github.com/brianloveswords/node-jws/commit/6b6de48">6b6de48</a><!--
raw HTML omitted -->)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/auth0/node-jws/commit/4f6e73f24df42f07d632dec6431ade8eda8d11a6"><code>4f6e73f</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/auth0/node-jws/commit/bd0fea57f35a97b6749a632b19ae5100d6d35729"><code>bd0fea5</code></a>
version 3.2.3</li>
<li><a
href="https://github.com/auth0/node-jws/commit/7c3b4b411004c206af8901fa3f8e644127bbf8d9"><code>7c3b4b4</code></a>
Enhance tests for HMAC streaming sign and verify</li>
<li><a
href="https://github.com/auth0/node-jws/commit/a9b8ed999de8f8fff486ac9167514577a0fae323"><code>a9b8ed9</code></a>
Improve secretOrKey initialization in VerifyStream</li>
<li><a
href="https://github.com/auth0/node-jws/commit/6707fde62cbae465a7f11e52760fb994dbc0e0dc"><code>6707fde</code></a>
Improve secret handling in SignStream</li>
<li>See full diff in <a
href="https://github.com/brianloveswords/node-jws/compare/v3.2.2...v3.2.3">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/~julien.wollscheid">julien.wollscheid</a>, a
new releaser for jws 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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/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>
…e test suites (#25655)

fixes: #25348

Test discovery for large suites (~150k tests) shows 10x slowdown vs
native pytest due to redundant path operations in `pytest_sessionfinish`
hook. Profiling indicates repeated `pathlib.Path.cwd()` calls,
`os.fspath()` conversions, and exception-based dictionary lookups
dominate execution time.

## Changes

**Caching infrastructure**
- Module-level caches: `_path_cache` (node paths by id),
`_path_to_str_cache` (string conversions), `_CACHED_CWD` (working
directory)
- `cached_fsdecode()`: memoized `os.fspath()` wrapper used for
dictionary keys throughout tree building

**Modified `get_node_path()`**
- Object id-based cache lookup before path resolution
- Lazy initialization of cached cwd, eliminates 150k+ redundant syscalls
- Store result before return

**Control flow optimization**
- Replace `try/except KeyError` with `dict.get()` in 5 hotpath
locations: `process_parameterized_test()`, `build_test_tree()`,
`build_nested_folders()`
- 3-5x faster for cache-hit case

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
switched from list to set for better preformance

was first done by copilot but ported over

related to #25348 but
about execution instead of discovery

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Better logs when we use environment extension when available for
creating terminal.
Resolves:
microsoft/vscode-python-environments#958

Challenge is that sendText would get called when terminal is not ready.
And doing `undefined.show()` is the problem.
Switching to queue based execution for running REPL commands, which
would prevent from us losing the first command as well.
added new pylance specific telemetry
Bumps
[actions/upload-artifact](https://github.com/actions/upload-artifact)
from 5 to 6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>v6 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/upload-artifact@v6 now runs on Node.js 24 (<code>runs.using:
node24</code>) and requires a minimum Actions Runner version of 2.327.1.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>Node.js 24</h3>
<p>This release updates the runtime to Node.js 24. v5 had preliminary
support for Node.js 24, however this action was by default still running
on Node.js 20. Now this action by default will run on Node.js 24.</p>
<h2>What's Changed</h2>
<ul>
<li>Upload Artifact Node 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/719">actions/upload-artifact#719</a></li>
<li>fix: update <code>@​actions/artifact</code> for Node.js 24 punycode
deprecation by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/744">actions/upload-artifact#744</a></li>
<li>prepare release v6.0.0 for Node.js 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/745">actions/upload-artifact#745</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0">https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-artifact/commit/b7c566a772e6b6bfb58ed0dc250532a479d7789f"><code>b7c566a</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/745">#745</a>
from actions/upload-artifact-v6-release</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/e516bc8500aaf3d07d591fcd4ae6ab5f9c391d5b"><code>e516bc8</code></a>
docs: correct description of Node.js 24 support in README</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/ddc45ed9bca9b38dbd643978d88e3981cdc91415"><code>ddc45ed</code></a>
docs: update README to correct action name for Node.js 24 support</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/615b319bd27bb32c3d64dca6b6ed6974d5fbe653"><code>615b319</code></a>
chore: release v6.0.0 for Node.js 24 support</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/017748b48f8610ca8e6af1222f4a618e84a9c703"><code>017748b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/744">#744</a>
from actions/fix-storage-blob</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/38d4c7997f5510fcc41fc4aae2a6b97becdbe7fc"><code>38d4c79</code></a>
chore: rebuild dist</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/7d27270e0cfd253e666c44abac0711308d2d042f"><code>7d27270</code></a>
chore: add missing license cache files for <code>@​actions/core</code>,
<code>@​actions/io</code>, and mi...</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/5f643d3c9475505ccaf26d686ffbfb71a8387261"><code>5f643d3</code></a>
chore: update license files for <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1 dependencies</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/1df1684032c88614064493e1a0478fcb3583e1d0"><code>1df1684</code></a>
chore: update package-lock.json with <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/b5b1a918401ee270935b6b1d857ae66c85f3be6f"><code>b5b1a91</code></a>
fix: update <code>@​actions/artifact</code> to ^5.0.0 for Node.js 24
punycode fix</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/upload-artifact/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads)
from 5.0.1 to 6.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dessant/lock-threads/releases">dessant/lock-threads's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<p>Learn more about this release from the <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md#changelog">changelog</a>.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md">dessant/lock-threads's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this file.
See <a
href="https://github.com/absolute-version/commit-and-tag-version">commit-and-tag-version</a>
for commit guidelines.</p>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v5.0.1...v6.0.0">6.0.0</a>
(2025-12-12)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>the action now requires Node.js 24</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update dependencies (<a
href="https://github.com/dessant/lock-threads/commit/6548363a2d763e3a4a3a0dc04ca4a10481d8e536">6548363</a>)</li>
</ul>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v5.0.0...v5.0.1">5.0.1</a>
(2023-11-22)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>support filtering threads by labels with spaces (<a
href="https://github.com/dessant/lock-threads/commit/0a6367823273242f373440ac6d682e4f368a347f">0a63678</a>),
closes <a
href="https://redirect.github.com/dessant/lock-threads/issues/40">#40</a></li>
</ul>
<h2><a
href="https://github.com/dessant/lock-threads/compare/v4.0.1...v5.0.0">5.0.0</a>
(2023-11-14)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Discussions are also processed by default,
set the <code>process-only</code> input parameter to preserve the old
behavior</li>
</ul>
<pre lang="yaml"><code>    steps:
      - uses: dessant/lock-threads@v5
        with:
          process-only: 'issues, prs'
</code></pre>
<ul>
<li>the action now requires Node.js 20</li>
</ul>
<h3>Features</h3>
<ul>
<li>lock discussions (<a
href="https://github.com/dessant/lock-threads/commit/0a0976f3ded51c88c6128dd96dd115c9f14fa764">0a0976f</a>),
closes <a
href="https://redirect.github.com/dessant/lock-threads/issues/25">#25</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>update dependencies (<a
href="https://github.com/dessant/lock-threads/commit/5a25b54eae3e7a5580d09ef0f7cbc5b18376db67">5a25b54</a>)</li>
</ul>
<h3><a
href="https://github.com/dessant/lock-threads/compare/v4.0.0...v4.0.1">4.0.1</a>
(2023-06-12)</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dessant/lock-threads/commit/7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7"><code>7266a7c</code></a>
chore(release): 6.0.0</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/1b10b746bb9aa359bb8eb0f1666515a389929aa8"><code>1b10b74</code></a>
chore: update package</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/7d53f570b1a4ca8908c0fbcc1e5b124ac3903134"><code>7d53f57</code></a>
chore: update workflows</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/e15e78d779715a438a45a106efe0531932c02a71"><code>e15e78d</code></a>
chore: update docs</li>
<li><a
href="https://github.com/dessant/lock-threads/commit/6548363a2d763e3a4a3a0dc04ca4a10481d8e536"><code>6548363</code></a>
fix: update dependencies</li>
<li>See full diff in <a
href="https://github.com/dessant/lock-threads/compare/1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771...7266a7ce5c1df01b1c6db85bf8cd86c737dadbe7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dessant/lock-threads&package-manager=github_actions&previous-version=5.0.1&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

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


</details>

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

Bumps
[actions/upload-artifact](https://github.com/actions/upload-artifact)
from 5 to 6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>v6 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/upload-artifact@v6 now runs on Node.js 24 (<code>runs.using:
node24</code>) and requires a minimum Actions Runner version of 2.327.1.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>Node.js 24</h3>
<p>This release updates the runtime to Node.js 24. v5 had preliminary
support for Node.js 24, however this action was by default still running
on Node.js 20. Now this action by default will run on Node.js 24.</p>
<h2>What's Changed</h2>
<ul>
<li>Upload Artifact Node 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/719">actions/upload-artifact#719</a></li>
<li>fix: update <code>@​actions/artifact</code> for Node.js 24 punycode
deprecation by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/744">actions/upload-artifact#744</a></li>
<li>prepare release v6.0.0 for Node.js 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/745">actions/upload-artifact#745</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0">https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-artifact/commit/b7c566a772e6b6bfb58ed0dc250532a479d7789f"><code>b7c566a</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/745">#745</a>
from actions/upload-artifact-v6-release</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/e516bc8500aaf3d07d591fcd4ae6ab5f9c391d5b"><code>e516bc8</code></a>
docs: correct description of Node.js 24 support in README</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/ddc45ed9bca9b38dbd643978d88e3981cdc91415"><code>ddc45ed</code></a>
docs: update README to correct action name for Node.js 24 support</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/615b319bd27bb32c3d64dca6b6ed6974d5fbe653"><code>615b319</code></a>
chore: release v6.0.0 for Node.js 24 support</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/017748b48f8610ca8e6af1222f4a618e84a9c703"><code>017748b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/744">#744</a>
from actions/fix-storage-blob</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/38d4c7997f5510fcc41fc4aae2a6b97becdbe7fc"><code>38d4c79</code></a>
chore: rebuild dist</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/7d27270e0cfd253e666c44abac0711308d2d042f"><code>7d27270</code></a>
chore: add missing license cache files for <code>@​actions/core</code>,
<code>@​actions/io</code>, and mi...</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/5f643d3c9475505ccaf26d686ffbfb71a8387261"><code>5f643d3</code></a>
chore: update license files for <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1 dependencies</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/1df1684032c88614064493e1a0478fcb3583e1d0"><code>1df1684</code></a>
chore: update package-lock.json with <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/b5b1a918401ee270935b6b1d857ae66c85f3be6f"><code>b5b1a91</code></a>
fix: update <code>@​actions/artifact</code> to ^5.0.0 for Node.js 24
punycode fix</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/upload-artifact/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The general `except` around the pytest run was causing tests to run
twice if the exception handling of pytest is disabled. From the comment
in the code it seems the exception handling is only there for when
reading the test IDs break, so it shouldn't be required around the
pytest main call.

Disabling the exception handling can be practical for debugging tests,
as this starts up the python debugger within vscode. Currently however,
this requires manually patching the run_pytest_script.py, which needs to
be re-done every vscode update.

fixes: #25656

Co-authored-by: Eleanor Boyd <26030610+eleanorjboyd@users.noreply.github.com>
…condition (#25654)

fixes #22783 and
#21865

The `python.configureTests` command was registered after multiple async
operations during extension activation, creating a race condition where
users could invoke the command before it was registered.

## Changes

- **Extract command registration**: Created standalone
`registerTestCommands()` function in `testing/main.ts` containing all
test command handlers (`Tests_Configure`, `Tests_CopilotSetup`,
`CopyTestId`)

- **Register synchronously before first await**: Moved
`unitTestsRegisterTypes()` and `registerTestCommands()` to
`extension.ts` immediately after `initializeStandard()`, before
`experimentService.activate()`

- **Remove duplicate registrations**: Cleaned up original registration
in `UnitTestManagementService.activate()` and `activateLegacy()`

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com>
During my debugging and implementation of #25521, I find a descriptive
`__repr__()` for the custom PS1 object very helpful, so this PR comes as
an addition for #25521.

---------

Co-authored-by: Anthony Kim <62267334+anthonykim1@users.noreply.github.com>
Bumps [qs](https://github.com/ljharb/qs) from 6.12.1 to 6.14.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ljharb/qs/blob/main/CHANGELOG.md">qs's
changelog</a>.</em></p>
<blockquote>
<h2><strong>6.14.1</strong></h2>
<ul>
<li>[Fix] ensure arrayLength applies to <code>[]</code> notation as
well</li>
<li>[Fix] <code>parse</code>: when a custom decoder returns
<code>null</code> for a key, ignore that key</li>
<li>[Refactor] <code>parse</code>: extract key segment splitting
helper</li>
<li>[meta] add threat model</li>
<li>[actions] add workflow permissions</li>
<li>[Tests] <code>stringify</code>: increase coverage</li>
<li>[Dev Deps] update <code>eslint</code>,
<code>@ljharb/eslint-config</code>, <code>npmignore</code>,
<code>es-value-fixtures</code>, <code>for-each</code>,
<code>object-inspect</code></li>
</ul>
<h2><strong>6.14.0</strong></h2>
<ul>
<li>[New] <code>parse</code>: add
<code>throwOnParameterLimitExceeded</code> option (<a
href="https://redirect.github.com/ljharb/qs/issues/517">#517</a>)</li>
<li>[Refactor] <code>parse</code>: use <code>utils.combine</code>
more</li>
<li>[patch] <code>parse</code>: add explicit
<code>throwOnLimitExceeded</code> default</li>
<li>[actions] use shared action; re-add finishers</li>
<li>[meta] Fix changelog formatting bug</li>
<li>[Deps] update <code>side-channel</code></li>
<li>[Dev Deps] update <code>es-value-fixtures</code>,
<code>has-bigints</code>, <code>has-proto</code>,
<code>has-symbols</code></li>
<li>[Tests] increase coverage</li>
</ul>
<h2><strong>6.13.1</strong></h2>
<ul>
<li>[Fix] <code>stringify</code>: avoid a crash when a
<code>filter</code> key is <code>null</code></li>
<li>[Fix] <code>utils.merge</code>: functions should not be stringified
into keys</li>
<li>[Fix] <code>parse</code>: avoid a crash with
interpretNumericEntities: true, comma: true, and iso charset</li>
<li>[Fix] <code>stringify</code>: ensure a non-string
<code>filter</code> does not crash</li>
<li>[Refactor] use <code>__proto__</code> syntax instead of
<code>Object.create</code> for null objects</li>
<li>[Refactor] misc cleanup</li>
<li>[Tests] <code>utils.merge</code>: add some coverage</li>
<li>[Tests] fix a test case</li>
<li>[actions] split out node 10-20, and 20+</li>
<li>[Dev Deps] update <code>es-value-fixtures</code>,
<code>mock-property</code>, <code>object-inspect</code>,
<code>tape</code></li>
</ul>
<h2><strong>6.13.0</strong></h2>
<ul>
<li>[New] <code>parse</code>: add <code>strictDepth</code> option (<a
href="https://redirect.github.com/ljharb/qs/issues/511">#511</a>)</li>
<li>[Tests] use <code>npm audit</code> instead of <code>aud</code></li>
</ul>
<h2><strong>6.12.3</strong></h2>
<ul>
<li>[Fix] <code>parse</code>: properly account for
<code>strictNullHandling</code> when <code>allowEmptyArrays</code></li>
<li>[meta] fix changelog indentation</li>
</ul>
<h2><strong>6.12.2</strong></h2>
<ul>
<li>[Fix] <code>parse</code>: parse encoded square brackets (<a
href="https://redirect.github.com/ljharb/qs/issues/506">#506</a>)</li>
<li>[readme] add CII best practices badge</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ljharb/qs/commit/3fa11a5f643c76896387bd2d86904a2d0141fdf7"><code>3fa11a5</code></a>
v6.14.1</li>
<li><a
href="https://github.com/ljharb/qs/commit/a62670423c1ccab0dd83c621bfb98c7c024e314d"><code>a626704</code></a>
[Dev Deps] update <code>npmignore</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/3086902ecf7f088d0d1803887643ac6c03d415b9"><code>3086902</code></a>
[Fix] ensure arrayLength applies to <code>[]</code> notation as
well</li>
<li><a
href="https://github.com/ljharb/qs/commit/fc7930e86c2264c1568c9f5606830e19b0bc2af2"><code>fc7930e</code></a>
[Dev Deps] update <code>eslint</code>,
<code>@ljharb/eslint-config</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/0b06aac566abee45ef0327667a7cc89e7aed8b58"><code>0b06aac</code></a>
[Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/64951f6200a1fb72cc003c6e8226dde3d2ef591f"><code>64951f6</code></a>
[Refactor] <code>parse</code>: extract key segment splitting helper</li>
<li><a
href="https://github.com/ljharb/qs/commit/e1bd2599cdff4c936ea52fb1f16f921cbe7aa88c"><code>e1bd259</code></a>
[Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/f4b3d39709fef6ddbd85128d1ba4c6b566c4902e"><code>f4b3d39</code></a>
[eslint] add eslint 9 optional peer dep</li>
<li><a
href="https://github.com/ljharb/qs/commit/6e94d9596ca50dffafcef40a5f64eca89962cf34"><code>6e94d95</code></a>
[Dev Deps] update <code>eslint</code>,
<code>@ljharb/eslint-config</code>, <code>npmignore</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/973dc3c51c86da9f4e30edeb4b1725158d439102"><code>973dc3c</code></a>
[actions] add workflow permissions</li>
<li>Additional commits viewable in <a
href="https://github.com/ljharb/qs/compare/v6.12.1...v6.14.1">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/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>
Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 8.7.0 to 8.7.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v8.7.1</h1>
<h2>Bugfixes</h2>
<ul>
<li>Fixed errors in FastPath under fork-multiprocessing. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/520">#520</a>)</li>
<li>Removed cruft from Python 3.8. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/524">#524</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/84e9028d39062af975d0659c0e987c28bcc808a5"><code>84e9028</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/36ed6f69888bba8cbabd3963714630ead6bdb762"><code>36ed6f6</code></a>
Merge pull request <a
href="https://redirect.github.com/python/importlib_metadata/issues/521">#521</a>
from 2xB/fix520</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/f6eee5671a3e9e1cb56a6d3a6219145c19518713"><code>f6eee56</code></a>
Rely on passthrough to designate a wrapper for its side effect.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/3c9510bf848fd4031e76028da0c9f60129047546"><code>3c9510b</code></a>
Prefer noop for degenerate behavior.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/a36bab926643dcd67513851d5bebc285ef9ac681"><code>a36bab9</code></a>
Avoid if block.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/8dd2937cf852eb0d9ad96d4e45ed3470e80c1463"><code>8dd2937</code></a>
Decouple clear_after_fork from lru_cache and then compose.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1da3f456ab53832fd6e1236f2338388d9ea0b0c6"><code>1da3f45</code></a>
Add news fragment.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/a1c25d8f2dc50abec65e4cf6d733b15d73c2f3b1"><code>a1c25d8</code></a>
🧎‍♀️ Genuflect to the types.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/4e962a8498990ba82120e7a58ce71abedefa0003"><code>4e962a8</code></a>
👹 Feed the hobgoblins (delint).</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/6a30ab96290b18c0b9805268a201ca5011c1feae"><code>6a30ab9</code></a>
Allow initial currsize to be greater than one (as happens when running
the te...</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v8.7.0...v8.7.1">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

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


</details>

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

fixes #24121

since extension developers are frequently changing their shell
activation settings, this provides a way to activate the venv then run
the task to allow for consistent checks by developers that mirror CI
…25612)

Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com>
## Summary

Fixes #25620 - Leftover process `python_server.py` with 100% CPU after
closing VS Code.

## The Problem

When VS Code closes, the STDIN stream to `python_server.py` is closed.
The `readline()` method returns empty bytes (`b''`) to signal EOF.
However, the previous code incorrectly treated this as an empty line
separator, causing:

1. `get_headers()` to return an empty headers dict
2. `content_length` to be 0
3. The main loop to continue immediately back to `get_headers()`
4. An infinite loop consuming 100% CPU

## The Fix

This PR properly detects EOF by checking for `b''` (empty bytes) vs
`b'\r\n'` or `b'\n'` (actual empty line with newline characters):

**In `get_headers()`:**
```python
raw = STDIN.buffer.readline()
# Detect EOF: readline() returns empty bytes when input stream is closed
if raw == b"":
    raise EOFError("EOF reached while reading headers")
```

**In all callers (main loop, `handle_response()`, `custom_input()`):**
- Catch `EOFError` and exit gracefully with `sys.exit(0)`

## Key Insight

```python
# EOF: readline() returns empty bytes
io.BytesIO(b"").readline()  # Returns b''

# Empty line: readline() returns newline bytes
io.BytesIO(b"\r\n").readline()  # Returns b'\r\n'
```

## Testing

Added comprehensive unit tests in
`python_files/tests/test_python_server.py`:
- `test_get_headers_normal` - verifies normal header parsing still works
- `test_get_headers_eof_raises_error` - verifies EOF detection
- `test_get_headers_eof_mid_headers_raises_error` - EOF during header
reading
- `test_get_headers_empty_line_terminates` - empty line still terminates
headers
- `test_custom_input_exits_on_eof` - graceful exit from `custom_input()`
- `test_handle_response_exits_on_eof` - graceful exit from
`handle_response()`
- `test_main_loop_exits_on_eof` - simulates the main loop behavior
- `test_readline_eof_vs_empty_line` - documents the EOF vs empty line
distinction

All 8 tests pass.

## How to Verify

1. Open a Python file in VS Code
2. Use Shift+Enter to start a Native REPL session and run some commands
3. Close VS Code
4. Check for leftover processes: `ps aux | grep python_server`
5. With this fix, no leftover processes should remain
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to
4.17.23.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lodash/lodash/commit/dec55b7a3b382da075e2eac90089b4cd00a26cbb"><code>dec55b7</code></a>
Bump main to v4.17.23 (<a
href="https://redirect.github.com/lodash/lodash/issues/6088">#6088</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/19c9251b3631d7cf220b43bc757eb33f1084f117"><code>19c9251</code></a>
fix: setCacheHas JSDoc return type should be boolean (<a
href="https://redirect.github.com/lodash/lodash/issues/6071">#6071</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/b5e672995ae26929d111a6e94589f8d03fb8e578"><code>b5e6729</code></a>
jsdoc: Add -0 and BigInt zeros to _.compact falsey values list (<a
href="https://redirect.github.com/lodash/lodash/issues/6062">#6062</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/edadd452146f7e4bad4ea684e955708931d84d81"><code>edadd45</code></a>
Prevent prototype pollution on baseUnset function</li>
<li><a
href="https://github.com/lodash/lodash/commit/4879a7a7d0a4494b0e83c7fa21bcc9fc6e7f1a6d"><code>4879a7a</code></a>
doc: fix autoLink function, conversion of source links (<a
href="https://redirect.github.com/lodash/lodash/issues/6056">#6056</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/9648f692b0fc7c2f6a7a763d754377200126c2e8"><code>9648f69</code></a>
chore: remove <code>yarn.lock</code> file (<a
href="https://redirect.github.com/lodash/lodash/issues/6053">#6053</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/dfa407db0bf5b200f2c7a9e4f06830ceaf074be9"><code>dfa407d</code></a>
ci: remove legacy configuration files (<a
href="https://redirect.github.com/lodash/lodash/issues/6052">#6052</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/156e1965ae78b121a88f81178ab81632304e8d64"><code>156e196</code></a>
feat: add renovate setup (<a
href="https://redirect.github.com/lodash/lodash/issues/6039">#6039</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/933e1061b8c344d3fc742cdc400175d5ffc99bce"><code>933e106</code></a>
ci: add pipeline for Bun (<a
href="https://redirect.github.com/lodash/lodash/issues/6023">#6023</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/072a807ff7ad8ffc7c1d2c3097266e815d138e20"><code>072a807</code></a>
docs: update links related to Open JS Foundation (<a
href="https://redirect.github.com/lodash/lodash/issues/5968">#5968</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lodash/lodash/compare/4.17.21...4.17.23">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/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>
@anthonykim1 anthonykim1 closed this Feb 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Python native REPL ignoring workspace interpreter