Comparing v2026.2.0...v2026.4.0 · microsoft/vscode-python

Commits on Mar 2, 2026

  1. Configuration menu

    Browse the repository at this point in the history

  2. Configuration menu

    Browse the repository at this point in the history

  3. Configuration menu

    Browse the repository at this point in the history

  4. Bump webpack from 5.94.0 to 5.105.0 (#25766)

    Bumps [webpack](https://github.com/webpack/webpack) from 5.94.0 to
    5.105.0.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/webpack/webpack/releases">webpack's
    releases</a>.</em></p>
    <blockquote>
    <h2>v5.105.0</h2>
    <h3>Minor Changes</h3>
    <ul>
    <li>
    <p>Allow resolving worker module by export condition name when using
    <code>new Worker()</code> (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20353">#20353</a>)</p>
    </li>
    <li>
    <p>Detect conditional imports to avoid compile-time linking errors for
    non-existent exports. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20320">#20320</a>)</p>
    </li>
    <li>
    <p>Added the <code>tsconfig</code> option for the <code>resolver</code>
    options (replacement for <code>tsconfig-paths-webpack-plugin</code>).
    Can be <code>false</code> (disabled), <code>true</code> (use the default
    <code>tsconfig.json</code> file to search for it), a string path to
    <code>tsconfig.json</code>, or an object with <code>configFile</code>
    and <code>references</code> options. (by <a
    href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20400">#20400</a>)</p>
    </li>
    <li>
    <p>Support <code>import.defer()</code> for context modules. (by <a
    href="https://github.com/ahabhgk"><code>@​ahabhgk</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20399">#20399</a>)</p>
    </li>
    <li>
    <p>Added support for array values ​​to the <code>devtool</code> option.
    (by <a href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20191">#20191</a>)</p>
    </li>
    <li>
    <p>Improve rendering node built-in modules for ECMA module output. (by
    <a href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20255">#20255</a>)</p>
    </li>
    <li>
    <p>Unknown import.meta properties are now determined at runtime instead
    of being statically analyzed at compile time. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20312">#20312</a>)</p>
    </li>
    </ul>
    <h3>Patch Changes</h3>
    <ul>
    <li>
    <p>Fixed ESM default export handling for <code>.mjs</code> files in
    Module Federation (by <a
    href="https://github.com/y-okt"><code>@​y-okt</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20189">#20189</a>)</p>
    </li>
    <li>
    <p>Optimized <code>import.meta.env</code> handling in destructuring
    assignments by using cached stringified environment definitions. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20313">#20313</a>)</p>
    </li>
    <li>
    <p>Respect the <code>stats.errorStack</code> option in stats output. (by
    <a
    href="https://github.com/samarthsinh2660"><code>@​samarthsinh2660</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20258">#20258</a>)</p>
    </li>
    <li>
    <p>Fixed a bug where declaring a <code>module</code> variable in module
    scope would conflict with the default <code>moduleArgument</code>. (by
    <a href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in
    <a
    href="https://redirect.github.com/webpack/webpack/pull/20265">#20265</a>)</p>
    </li>
    <li>
    <p>Fix VirtualUrlPlugin to set resourceData.context for proper module
    resolution. Previously, when context was not set, it would fallback to
    the virtual scheme path (e.g., <code>virtual:routes</code>), which is
    not a valid filesystem path, causing subsequent resolve operations to
    fail. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20390">#20390</a>)</p>
    </li>
    <li>
    <p>Fixed Worker self-import handling to support various URL patterns
    (e.g., <code>import.meta.url</code>, <code>new
    URL(import.meta.url)</code>, <code>new URL(import.meta.url,
    import.meta.url)</code>, <code>new URL(&quot;./index.js&quot;,
    import.meta.url)</code>). Workers that resolve to the same module are
    now properly deduplicated, regardless of the URL syntax used. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20381">#20381</a>)</p>
    </li>
    <li>
    <p>Reuse the same async entrypoint for the same Worker URL within a
    module to avoid circular dependency warnings when multiple Workers
    reference the same resource. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20345">#20345</a>)</p>
    </li>
    <li>
    <p>Fixed a bug where a self-referencing dependency would have an unused
    export name when imported inside a web worker. (by <a
    href="https://github.com/samarthsinh2660"><code>@​samarthsinh2660</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20251">#20251</a>)</p>
    </li>
    <li>
    <p>Fix missing export generation when concatenated modules in different
    chunks share the same runtime in module library bundles. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20346">#20346</a>)</p>
    </li>
    <li>
    <p>Fixed <code>import.meta.env.xxx</code> behavior: when accessing a
    non-existent property, it now returns empty object instead of full
    object at runtime. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20289">#20289</a>)</p>
    </li>
    <li>
    <p>Improved parsing error reporting by adding a link to the loader
    documentation. (by <a
    href="https://github.com/gaurav10gg"><code>@​gaurav10gg</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20244">#20244</a>)</p>
    </li>
    <li>
    <p>Fix typescript types. (by <a
    href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20305">#20305</a>)</p>
    </li>
    <li>
    <p>Add declaration for unused harmony import specifier. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20286">#20286</a>)</p>
    </li>
    <li>
    <p>Fix compressibility of modules while retaining portability. (by <a
    href="https://github.com/dmichon-msft"><code>@​dmichon-msft</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20287">#20287</a>)</p>
    </li>
    <li>
    <p>Optimize source map generation: only include <code>ignoreList</code>
    property when it has content, avoiding empty arrays in source maps. (by
    <a href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in
    <a
    href="https://redirect.github.com/webpack/webpack/pull/20319">#20319</a>)</p>
    </li>
    <li>
    <p>Preserve star exports for dependencies in ECMA module output. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20293">#20293</a>)</p>
    </li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/webpack/webpack/blob/main/CHANGELOG.md">webpack's
    changelog</a>.</em></p>
    <blockquote>
    <h2>5.105.0</h2>
    <h3>Minor Changes</h3>
    <ul>
    <li>
    <p>Allow resolving worker module by export condition name when using
    <code>new Worker()</code> (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20353">#20353</a>)</p>
    </li>
    <li>
    <p>Detect conditional imports to avoid compile-time linking errors for
    non-existent exports. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20320">#20320</a>)</p>
    </li>
    <li>
    <p>Added the <code>tsconfig</code> option for the <code>resolver</code>
    options (replacement for <code>tsconfig-paths-webpack-plugin</code>).
    Can be <code>false</code> (disabled), <code>true</code> (use the default
    <code>tsconfig.json</code> file to search for it), a string path to
    <code>tsconfig.json</code>, or an object with <code>configFile</code>
    and <code>references</code> options. (by <a
    href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20400">#20400</a>)</p>
    </li>
    <li>
    <p>Support <code>import.defer()</code> for context modules. (by <a
    href="https://github.com/ahabhgk"><code>@​ahabhgk</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20399">#20399</a>)</p>
    </li>
    <li>
    <p>Added support for array values ​​to the <code>devtool</code> option.
    (by <a href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20191">#20191</a>)</p>
    </li>
    <li>
    <p>Improve rendering node built-in modules for ECMA module output. (by
    <a href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20255">#20255</a>)</p>
    </li>
    <li>
    <p>Unknown import.meta properties are now determined at runtime instead
    of being statically analyzed at compile time. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20312">#20312</a>)</p>
    </li>
    </ul>
    <h3>Patch Changes</h3>
    <ul>
    <li>
    <p>Fixed ESM default export handling for <code>.mjs</code> files in
    Module Federation (by <a
    href="https://github.com/y-okt"><code>@​y-okt</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20189">#20189</a>)</p>
    </li>
    <li>
    <p>Optimized <code>import.meta.env</code> handling in destructuring
    assignments by using cached stringified environment definitions. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20313">#20313</a>)</p>
    </li>
    <li>
    <p>Respect the <code>stats.errorStack</code> option in stats output. (by
    <a
    href="https://github.com/samarthsinh2660"><code>@​samarthsinh2660</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20258">#20258</a>)</p>
    </li>
    <li>
    <p>Fixed a bug where declaring a <code>module</code> variable in module
    scope would conflict with the default <code>moduleArgument</code>. (by
    <a href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in
    <a
    href="https://redirect.github.com/webpack/webpack/pull/20265">#20265</a>)</p>
    </li>
    <li>
    <p>Fix VirtualUrlPlugin to set resourceData.context for proper module
    resolution. Previously, when context was not set, it would fallback to
    the virtual scheme path (e.g., <code>virtual:routes</code>), which is
    not a valid filesystem path, causing subsequent resolve operations to
    fail. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20390">#20390</a>)</p>
    </li>
    <li>
    <p>Fixed Worker self-import handling to support various URL patterns
    (e.g., <code>import.meta.url</code>, <code>new
    URL(import.meta.url)</code>, <code>new URL(import.meta.url,
    import.meta.url)</code>, <code>new URL(&quot;./index.js&quot;,
    import.meta.url)</code>). Workers that resolve to the same module are
    now properly deduplicated, regardless of the URL syntax used. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20381">#20381</a>)</p>
    </li>
    <li>
    <p>Reuse the same async entrypoint for the same Worker URL within a
    module to avoid circular dependency warnings when multiple Workers
    reference the same resource. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20345">#20345</a>)</p>
    </li>
    <li>
    <p>Fixed a bug where a self-referencing dependency would have an unused
    export name when imported inside a web worker. (by <a
    href="https://github.com/samarthsinh2660"><code>@​samarthsinh2660</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20251">#20251</a>)</p>
    </li>
    <li>
    <p>Fix missing export generation when concatenated modules in different
    chunks share the same runtime in module library bundles. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20346">#20346</a>)</p>
    </li>
    <li>
    <p>Fixed <code>import.meta.env.xxx</code> behavior: when accessing a
    non-existent property, it now returns empty object instead of full
    object at runtime. (by <a
    href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20289">#20289</a>)</p>
    </li>
    <li>
    <p>Improved parsing error reporting by adding a link to the loader
    documentation. (by <a
    href="https://github.com/gaurav10gg"><code>@​gaurav10gg</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20244">#20244</a>)</p>
    </li>
    <li>
    <p>Fix typescript types. (by <a
    href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20305">#20305</a>)</p>
    </li>
    <li>
    <p>Add declaration for unused harmony import specifier. (by <a
    href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
    href="https://redirect.github.com/webpack/webpack/pull/20286">#20286</a>)</p>
    </li>
    <li>
    <p>Fix compressibility of modules while retaining portability. (by <a
    href="https://github.com/dmichon-msft"><code>@​dmichon-msft</code></a>
    in <a
    href="https://redirect.github.com/webpack/webpack/pull/20287">#20287</a>)</p>
    </li>
    <li>
    <p>Optimize source map generation: only include <code>ignoreList</code>
    property when it has content, avoiding empty arrays in source maps. (by
    <a href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in
    <a
    href="https://redirect.github.com/webpack/webpack/pull/20319">#20319</a>)</p>
    </li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/webpack/webpack/commit/1486f9aacca11d79dbb7ddbceed29b7e6df7a7ab"><code>1486f9a</code></a>
    chore(release): new release</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/1a517f665aae7b4d3d29c8b408d09488a21fbf94"><code>1a517f6</code></a>
    feat: added the <code>tsconfig</code> option for the
    <code>resolver</code> options (<a
    href="https://redirect.github.com/webpack/webpack/issues/20400">#20400</a>)</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/7b3b0f795df377a9d0073822a2d60c1390d03109"><code>7b3b0f7</code></a>
    feat: support <code>import.defer()</code> for context modules</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/c4a6a922de4af37a92d05c0ddc975b5348cfa9a1"><code>c4a6a92</code></a>
    refactor: more types and increase types coverage</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/5ecc58d722da7715ede7de59b97108dd715d1bfa"><code>5ecc58d</code></a>
    feat: consider asset module as side-effect-free (<a
    href="https://redirect.github.com/webpack/webpack/issues/20352">#20352</a>)</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/cce0f6989888771ec279777ab8f8dce8e39198a0"><code>cce0f69</code></a>
    test: avoid comma operator in BinaryMiddleware test (<a
    href="https://redirect.github.com/webpack/webpack/issues/20398">#20398</a>)</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/cd4793d50e8e1e519ecd07b76d9e5dc06357341e"><code>cd4793d</code></a>
    feat: support import specifier guard (<a
    href="https://redirect.github.com/webpack/webpack/issues/20320">#20320</a>)</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/fe486552d060f6d2815a39a6bd0fb351d348658c"><code>fe48655</code></a>
    docs: update examples (<a
    href="https://redirect.github.com/webpack/webpack/issues/20397">#20397</a>)</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/de107f8767a2a11759f8261ed1ac49bcddec34b6"><code>de107f8</code></a>
    fix(VirtualUrlPlugin): set resourceData.context to avoid invalid
    fallback (<a
    href="https://redirect.github.com/webpack/webpack/issues/2">#2</a>...</li>
    <li><a
    href="https://github.com/webpack/webpack/commit/a656ab1fd1064ef8dd3eef1a2f3071fc176b948f"><code>a656ab1</code></a>
    test: add self-import test case for dynamic import (<a
    href="https://redirect.github.com/webpack/webpack/issues/20389">#20389</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/webpack/webpack/compare/v5.94.0...v5.105.0">compare
    view</a></li>
    </ul>
    </details>
    <details>
    <summary>Maintainer changes</summary>
    <p>This version was pushed to npm by [GitHub Actions](<a
    href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a>
    Actions), a new releaser for webpack since your current version.</p>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=webpack&package-manager=npm_and_yarn&previous-version=5.94.0&new-version=5.105.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 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>
    Configuration menu

    Browse the repository at this point in the history

  5. Configuration menu

    Browse the repository at this point in the history

  6. Configuration menu

    Browse the repository at this point in the history

  7. Bump packaging from 25.0 to 26.0 (#25747)

    Bumps [packaging](https://github.com/pypa/packaging) from 25.0 to 26.0.
    <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.0</h2>
    <p>Read about the performance improvements here: <a
    href="https://iscinumpy.dev/post/packaging-faster">https://iscinumpy.dev/post/packaging-faster</a>.</p>
    <h2>What's Changed</h2>
    <p>Features:</p>
    <ul>
    <li>PEP 751: support pylock by <a
    href="https://github.com/sbidoul"><code>@​sbidoul</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/900">pypa/packaging#900</a></li>
    <li>PEP 794: import name metadata by <a
    href="https://github.com/brettcannon"><code>@​brettcannon</code></a> in
    <a
    href="https://redirect.github.com/pypa/packaging/pull/948">pypa/packaging#948</a></li>
    <li>Support writing metadata by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/846">pypa/packaging#846</a></li>
    <li>Support <code>__replace__</code> for <code>Version</code> by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/1003">pypa/packaging#1003</a></li>
    <li>Support positional pattern matching for <code>Version</code> and
    <code>Specifier</code> by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/1004">pypa/packaging#1004</a></li>
    </ul>
    <p>Behavior adaptations:</p>
    <ul>
    <li>PEP 440 handling of prereleases for <code>Specifier.contains</code>,
    <code>SpecifierSet.contains</code>, and <code>SpecifierSet.filter</code>
    by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/897">pypa/packaging#897</a></li>
    <li>Handle PEP 440 edge case in <code>SpecifierSet.filter</code> by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/942">pypa/packaging#942</a></li>
    <li>Adjust arbitrary equality intersection preservation in
    <code>SpecifierSet</code> by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/951">pypa/packaging#951</a></li>
    <li>Return <code>False</code> instead of raising for
    <code>.contains</code> with invalid version by <a
    href="https://github.com/Liam-DeVoe"><code>@​Liam-DeVoe</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/932">pypa/packaging#932</a></li>
    <li>Support arbitrary equality on arbitrary strings for
    <code>Specifier</code> and <code>SpecifierSet</code>'s
    <code>filter</code> and <code>contains</code> method. by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/954">pypa/packaging#954</a></li>
    <li>Only try to parse as <code>Version</code> on certain marker keys,
    return <code>False</code> on unequal ordered comparsions by <a
    href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/939">pypa/packaging#939</a></li>
    </ul>
    <p>Fixes:</p>
    <ul>
    <li>Update <code>_hash</code> when unpickling <code>Tag()</code> by <a
    href="https://github.com/dholth"><code>@​dholth</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/860">pypa/packaging#860</a></li>
    <li>Correct comment and simplify implicit prerelease handling in
    <code>Specifier.prereleases</code> by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/896">pypa/packaging#896</a></li>
    <li>Use explicit <code>_GLibCVersion</code> <code>NamedTuple</code> in
    <code>_manylinux</code> by <a
    href="https://github.com/cthoyt"><code>@​cthoyt</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/868">pypa/packaging#868</a></li>
    <li>Detect invalid license expressions containing <code>()</code> by <a
    href="https://github.com/bwoodsend"><code>@​bwoodsend</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/879">pypa/packaging#879</a></li>
    <li>Correct regex for metadata <code>'name'</code> format by <a
    href="https://github.com/di"><code>@​di</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/925">pypa/packaging#925</a></li>
    <li>Improve the message around expecting a semicolon by <a
    href="https://github.com/pradyunsg"><code>@​pradyunsg</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/833">pypa/packaging#833</a></li>
    <li>Support nested parens in license expressions by <a
    href="https://github.com/Liam-DeVoe"><code>@​Liam-DeVoe</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/931">pypa/packaging#931</a></li>
    <li>Add space before at symbol in <code>Requirements</code> string by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/953">pypa/packaging#953</a></li>
    <li>A root logger use found by ruff LOG, use <code>packaging</code>
    logger instead by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/965">pypa/packaging#965</a></li>
    <li>Better support for subclassing <code>Marker</code> and
    <code>Requirement</code> by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/1022">pypa/packaging#1022</a></li>
    <li>Normalize all extras, not just if it comes first by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/1024">pypa/packaging#1024</a></li>
    <li>Don't produce a broken repr if <code>Marker</code> fails to
    construct by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/1033">pypa/packaging#1033</a></li>
    </ul>
    <p>Performance:</p>
    <ul>
    <li>Avoid recompiling regexes in the tokenizer for a 3x speedup by <a
    href="https://github.com/hauntsaninja"><code>@​hauntsaninja</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/1019">pypa/packaging#1019</a></li>
    <li>Improve performance in <code>_manylinux.py</code> by <a
    href="https://github.com/cthoyt"><code>@​cthoyt</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/869">pypa/packaging#869</a></li>
    <li>Minor cleanups to <code>Version</code> by <a
    href="https://github.com/bearomorphism"><code>@​bearomorphism</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/913">pypa/packaging#913</a></li>
    <li>Skip redundant creation of <code>Version</code>s in specifier
    comparison by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/986">pypa/packaging#986</a></li>
    <li>Cache <code>Specifier</code>'s Version by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/985">pypa/packaging#985</a></li>
    <li>Make <code>Version</code> a little faster by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/987">pypa/packaging#987</a></li>
    <li>Minor <code>Version</code> regex cleanup by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/990">pypa/packaging#990</a></li>
    <li>Faster regex on Python 3.11.5+ by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/988">pypa/packaging#988</a>
    and <a
    href="https://redirect.github.com/pypa/packaging/pull/1055">pypa/packaging#1055</a></li>
    <li>Lazily calculate <code>_key</code> in <code>Version</code> by <a
    href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
    in <a
    href="https://redirect.github.com/pypa/packaging/pull/989">pypa/packaging#989</a>
    and regression for <code>packaging_legacy</code> fixed by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/1048">pypa/packaging#1048</a></li>
    <li>Faster <code>canonicalize_version</code> by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/993">pypa/packaging#993</a></li>
    <li>Use <code>fullmatch</code> in a couple more places by <a
    href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
    href="https://redirect.github.com/pypa/packaging/pull/992">pypa/packaging#992</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.0 - 2026-01-20</p>
    <pre><code>
    Features:
    <ul>
    <li>PEP 751: support pylock (:pull:<code>900</code>)</li>
    <li>PEP 794: import name metadata (:pull:<code>948</code>)</li>
    <li>Support for writing metadata to a file (:pull:<code>846</code>)</li>
    <li>Support <code>__replace__</code> on Version
    (:pull:<code>1003</code>)</li>
    <li>Support positional pattern matching for <code>Version</code> and
    <code>SpecifierSet</code> (:pull:<code>1004</code>)</li>
    </ul>
    <p>Behavior adaptations:</p>
    <ul>
    <li>PEP 440 handling of prereleases for <code>Specifier.contains</code>,
    <code>SpecifierSet.contains</code>, and <code>SpecifierSet.filter</code>
    (:pull:<code>897</code>)</li>
    <li>Handle PEP 440 edge case in <code>SpecifierSet.filter</code>
    (:pull:<code>942</code>)</li>
    <li>Adjust arbitrary equality intersection preservation in
    <code>SpecifierSet</code> (:pull:<code>951</code>)</li>
    <li>Return <code>False</code> instead of raising for
    <code>.contains</code> with invalid version
    (:pull:<code>932</code>)</li>
    <li>Support arbitrary equality on arbitrary strings for
    <code>Specifier</code> and <code>SpecifierSet</code>'s
    <code>filter</code> and <code>contains</code> method.
    (:pull:<code>954</code>)</li>
    <li>Only try to parse as <code>Version</code> on certain marker keys,
    return <code>False</code> on unequal ordered comparisons
    (:pull:<code>939</code>)</li>
    </ul>
    <p>Fixes:</p>
    <ul>
    <li>Update <code>_hash</code> when unpickling <code>Tag()</code>
    (:pull:<code>860</code>)</li>
    <li>Correct comment and simplify implicit prerelease handling in
    <code>Specifier.prereleases</code> (:pull:<code>896</code>)</li>
    <li>Use explicit <code>_GLibCVersion</code> <code>NamedTuple</code> in
    <code>_manylinux</code> (:pull:<code>868</code>)</li>
    <li>Detect invalid license expressions containing <code>()</code>
    (:pull:<code>879</code>)</li>
    <li>Correct regex for metadata <code>'name'</code> format
    (:pull:<code>925</code>)</li>
    <li>Improve the message around expecting a semicolon
    (:pull:<code>833</code>)</li>
    <li>Support nested parens in license expressions
    (:pull:<code>931</code>)</li>
    <li>Add space before at symbol in <code>Requirements</code> string
    (:pull:<code>953</code>)</li>
    <li>A root logger use found, use a <code>packaging</code> logger instead
    (:pull:<code>965</code>)</li>
    <li>Better support for subclassing <code>Marker</code> and
    <code>Requirement</code> (:pull:<code>1022</code>)</li>
    <li>Normalize all extras, not just if it comes first
    (:pull:<code>1024</code>)</li>
    <li>Don't produce a broken repr if <code>Marker</code> fails to
    construct (:pull:<code>1033</code>)</li>
    </ul>
    <p>Performance:</p>
    <ul>
    <li>Avoid recompiling regexes in the tokenizer for a 3x speedup
    (:pull:<code>1019</code>)</li>
    <li>Improve performance in <code>_manylinux.py</code>
    (:pull:<code>869</code>)</li>
    <li>Minor cleanups to <code>Version</code> (:pull:<code>913</code>)</li>
    <li>Skip redundant creation of <code>Version</code>'s in specifier
    comparison (:pull:<code>986</code>)</li>
    <li>Cache the <code>Specifier</code>'s <code>Version</code>
    (:pull:<code>985</code>)</li>
    <li>Make <code>Version</code> a little faster
    (:pull:<code>987</code>)</li>
    <li>Minor <code>Version</code> regex cleanup
    (:pull:<code>990</code>)</li>
    <li>Faster regex on Python 3.11.5+ for <code>Version</code>
    (:pull:<code>988</code>, :pull:<code>1055</code>)</li>
    <li>Lazily calculate <code>_key</code> in <code>Version</code>
    (:pull:<code>989</code>, :pull:<code>1048</code>)</li>
    <li>Faster <code>canonicalize_version</code>
    (:pull:<code>993</code>)</li>
    <li>Use <code>re.fullmatch</code> in a couple more places
    (:pull:<code>992</code>, :pull:<code>1029</code>)</li>
    <li>Use <code>map</code> instead of generator
    (:pull:<code>996</code>)</li>
    <li>Deprecate <code>._version</code> (<code>_Version</code>, a
    <code>NamedTuple</code>) (:pull:<code>995</code>,
    :pull:<code>1062</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/3b77a26f5a27473ad3b08194d773f325d018a2d0"><code>3b77a26</code></a>
    Bump for release</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/31371cce593d2bde0dd8c436ecfb7d53cb91cfb6"><code>31371cc</code></a>
    docs: prepare for 26.0 final (<a
    href="https://redirect.github.com/pypa/packaging/issues/1063">#1063</a>)</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/9627a8821f09e4c55cd6e9daadb617b67c4741c2"><code>9627a88</code></a>
    perf: dual replace (<a
    href="https://redirect.github.com/pypa/packaging/issues/1064">#1064</a>)</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/d5398b8bc19f3fad7b035ceb83023caf06d6e2da"><code>d5398b8</code></a>
    fix: restore ._version as a compat shim (<a
    href="https://redirect.github.com/pypa/packaging/issues/1062">#1062</a>)</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/3a7b600a126d237b2ad3cd7e25d2cb5c176276af"><code>3a7b600</code></a>
    Bump for development</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/d4eefdccf992e963c48011875301d93df6a7f2cc"><code>d4eefdc</code></a>
    Bump for release</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/46189124fb43d8989d370902c80ab156eb83a45d"><code>4618912</code></a>
    docs: prepare for 26.0rc3 (<a
    href="https://redirect.github.com/pypa/packaging/issues/1060">#1060</a>)</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/0cf1b41b4b321ae08cad7d3e49cfaff5578fe813"><code>0cf1b41</code></a>
    ci: test on first public release of CPythons (<a
    href="https://redirect.github.com/pypa/packaging/issues/1056">#1056</a>)</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/716beb1c0a5d7a398bf57fbd80bc2501811e616b"><code>716beb1</code></a>
    perf: 10% faster stripping zeros (<a
    href="https://redirect.github.com/pypa/packaging/issues/1058">#1058</a>)</li>
    <li><a
    href="https://github.com/pypa/packaging/commit/350a2306700b738f487f251efa278f532b263dee"><code>350a230</code></a>
    fix: support CPython 3.11.0-3.11.4 and older PyPy3.11 (<a
    href="https://redirect.github.com/pypa/packaging/issues/1055">#1055</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/pypa/packaging/compare/25.0...26.0">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=25.0&new-version=26.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    You can trigger a rebase of this PR by commenting `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    
    
    </details>
    
    > **Note**
    > Automatic rebases have been disabled on this pull request as it has
    been open for over 30 days.
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Configuration menu

    Browse the repository at this point in the history

  8. Configuration menu

    Browse the repository at this point in the history

Commits on Mar 3, 2026

  1. Configuration menu

    Browse the repository at this point in the history

  2. Run npm audit fix (non-breaking) (#25832)

    Applies `npm audit fix` (no `--force`) to resolve 5 of 26 reported
    vulnerabilities. Only `package-lock.json` is modified — semver ranges in
    `package.json` are unchanged.
    
    ## Packages updated
    
    | Package | Before | After | CVE/Advisory |
    |---|---|---|---|
    | `cipher-base` | 1.0.4 | 1.0.7 |
    [GHSA-cpq7-6gpm-g9rc](GHSA-cpq7-6gpm-g9rc)
    — **critical**, missing type checks |
    | `ajv` | 6.12.6 / 8.17.1 | 6.14.0 / 8.18.0 |
    [GHSA-2g4f-4pwh-qvx6](GHSA-2g4f-4pwh-qvx6)
    — ReDoS via `$data` |
    | `bn.js` | 4.11.8 / 5.2.1 | 4.12.3 / 5.2.3 |
    [GHSA-378v-28hj-76wf](GHSA-378v-28hj-76wf)
    — infinite loop |
    | `glob` | 10.4.5 | 10.5.0 |
    [GHSA-5j98-mcp5-4vw2](GHSA-5j98-mcp5-4vw2)
    — CLI command injection |
    | `minimatch` (3.x / 9.x) | 3.1.2 / 9.0.x | 3.1.5 / 9.0.9 |
    [GHSA-3ppc-4f35-3m26](GHSA-3ppc-4f35-3m26)
    — ReDoS |
    
    ## Remaining vulnerabilities (21)
    
    All require `--force` and involve breaking changes (e.g. mocha
    downgrade, `copy-webpack-plugin` major bump,
    `node-polyfill-webpack-plugin` major bump). Not addressed here per the
    constraint of no forced updates.
    
    <!-- START COPILOT ORIGINAL PROMPT -->
    
    
    
    <details>
    
    <summary>Original prompt</summary>
    
    > Run npm audit fix. Do not use force flag.
    
    
    </details>
    
    
    
    <!-- START COPILOT CODING AGENT SUFFIX -->
    
    Created from [VS
    Code](https://code.visualstudio.com/docs/copilot/copilot-coding-agent).
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    💬 We'd love your input! Share your thoughts on Copilot coding agent in
    our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com>
    Configuration menu

    Browse the repository at this point in the history

Commits on Mar 11, 2026

  1. Prevent double/triple activation from two extensions (#25849)

    Resolves:
    microsoft/vscode-python-environments#1325
    
    Cause: The Python extension only backed off if the user explicitly opted
    into the envs extension (useEnvironmentsExtension: true). But the envs
    extension activates by default whenever it's installed — it only backs
    off if the setting is explicitly false. So in this case, (extension
    installed, setting not touched), both fired.
    
    Added shouldEnvExtHandleActivation() — a function that mirrors the envs
    extension's own logic: "am I installed and not explicitly disabled?"
    Used it in all 3 places the Python extension triggers terminal
    activation to bail out when the envs extension will handle it. This
    covers global, workspace, and folder-level settings.
    
    We want exactly one extension activates the terminal, never both, never
    neither.
    Configuration menu

    Browse the repository at this point in the history

  2. Bump PET version to 2026.4 in stable release pipeline (#25847)

    Updates the Python Environment Tools (PET) artifact source branch in the
    stable release pipeline.
    
    - Changed `branchName` from `refs/heads/release/2026.0` to
    `refs/heads/release/2026.4` in `build/azure-pipeline.stable.yml`
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    💬 We'd love your input! Share your thoughts on Copilot coding agent in
    our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com>
    Configuration menu

    Browse the repository at this point in the history

  3. Configuration menu

    Browse the repository at this point in the history