)]}'
{
  "log": [
    {
      "commit": "e6dba2a503560c1561258770ade4d15529c4db3d",
      "tree": "166cc6eb0b75cfc38df0c56d3d8b9e9f1a3e4eb7",
      "parents": [
        "e7517c0e56c159946374c2fed8fb874fd3bde94f"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Wed May 13 17:59:43 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Wed May 13 17:59:43 2026"
      },
      "message": "release 21.3.3"
    },
    {
      "commit": "e7517c0e56c159946374c2fed8fb874fd3bde94f",
      "tree": "61a37890edf2c55d1b81af68e8c6cc89607eaf2e",
      "parents": [
        "8531d47ff3e78492d0c1eb7d1159750e91176b67"
      ],
      "author": {
        "name": "Tim Felgentreff",
        "email": "tim.felgentreff@oracle.com",
        "time": "Wed May 13 17:58:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 17:58:42 2026"
      },
      "message": "Accept GraalPy implementation name. (#3144)\n\nWith the latest python-discover release, GraalPy names are normalized to\nGraalPy, instead of GraalVM, so virtualenv needs to be adapted.\n\n### Thanks for contributing, make sure you address all the checklists\n(for details on how see [development\ndocumentation](https://virtualenv.pypa.io/en/latest/development.html#development))\n\n- [x] ran the linter to address style issues (`tox -e fix`)\n- [x] wrote descriptive pull request text\n- [x] ensured there are test(s) validating the fix\n- [x] added news fragment in `docs/changelog` folder \n- [x] updated/extended the documentation (not needed)"
    },
    {
      "commit": "8531d47ff3e78492d0c1eb7d1159750e91176b67",
      "tree": "103ae4be01756be945d0fc18fffba23ba2c82a61",
      "parents": [
        "afefada9505d4fe67805244c31c5761e4c6c2622"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue May 12 14:42:32 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue May 12 14:42:32 2026"
      },
      "message": "release 21.3.2"
    },
    {
      "commit": "afefada9505d4fe67805244c31c5761e4c6c2622",
      "tree": "d6677ad4d0a8c996d0db4890429912aba91e15d9",
      "parents": [
        "7e270411ebf5739dfc63998a9084dc2bfd2d467b"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue May 12 14:41:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 14:41:18 2026"
      },
      "message": "🐛 fix(upgrade): regen embedded init with correct MAX and 3.16 (#3143)\n\nThe daily `Upgrade embedded dependencies` workflow keeps regenerating\n`src/virtualenv/seed/wheels/embed/__init__.py` with `MAX \u003d \"3.8\"` and\ndropping the `3.16` entry — both of which had to be hand-patched in\n#3140 on top of the auto-PR. The script is the source of the regression,\nso patching the generated file alone leaves the next cron run free to\nundo the fix again. 🔁\n\nThe `MAX` substitution in `render_init` was reading the first key of the\nordered support table, which is always the lowest Python version, so it\nbaked `MAX \u003d \u00273.8\u0027` into the rendered module on every regen. Emit the\nruntime expression `next(reversed(BUNDLE_SUPPORT))` as literal text in\nthe template instead, so the rendered module evaluates it at import time\nand always points at the highest supported version regardless of what\nthe table contains.\n\nThe `SUPPORT` range stopped at `3.15`, which is why each regen also\ndropped the `3.16` entry. Extend the range through `3.16` so the\ngenerated table covers the versions we already ship wheels for.\n\nNo runtime behavior changes for users — this only affects what the regen\ntask writes, so no changelog fragment is needed."
    },
    {
      "commit": "7e270411ebf5739dfc63998a9084dc2bfd2d467b",
      "tree": "90ea2194f2b346604c4e012b99a5ccaa81eeb8f4",
      "parents": [
        "214934c9606ef792e42580109cbdff940a62f034"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon May 11 19:56:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 19:56:46 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3141)\n\n\u003c!--pre-commit.ci start--\u003e\nupdates:\n- [github.com/tox-dev/tox-toml-fmt: v1.9.2 →\nv1.9.3](https://github.com/tox-dev/tox-toml-fmt/compare/v1.9.2...v1.9.3)\n- [github.com/tox-dev/pyproject-fmt: v2.21.1 →\nv2.21.2](https://github.com/tox-dev/pyproject-fmt/compare/v2.21.1...v2.21.2)\n\u003c!--pre-commit.ci end--\u003e\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "214934c9606ef792e42580109cbdff940a62f034",
      "tree": "0daac1de329dcb967fc82e583234772ea22b4d0d",
      "parents": [
        "12ab4957289c1963849bf04a5f35982c928c0a35"
      ],
      "author": {
        "name": "anthony sottile",
        "email": "asottile@umich.edu",
        "time": "Mon May 11 18:19:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 18:19:11 2026"
      },
      "message": "add 3.16 to embedded wheel versions (#3140)"
    },
    {
      "commit": "12ab4957289c1963849bf04a5f35982c928c0a35",
      "tree": "7fab6ed4e32137e64eeaf2d4f7fca64c8c4efc3f",
      "parents": [
        "22eadc4d2738af7e96d744369a7f40df34935c94"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue May 05 01:32:57 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue May 05 01:32:57 2026"
      },
      "message": "release 21.3.1"
    },
    {
      "commit": "22eadc4d2738af7e96d744369a7f40df34935c94",
      "tree": "fa564bebf9757d9c180e7b0b19271fabb58d7cff",
      "parents": [
        "6651dafd919c745adca1e29e31e1d96a1c9e9e52"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue May 05 01:32:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 01:32:02 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3137)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cgaborjbernat@gmail.com\u003e"
    },
    {
      "commit": "6651dafd919c745adca1e29e31e1d96a1c9e9e52",
      "tree": "74c37a8d7c355727cbfd71dac4bb18c2bb7dde9c",
      "parents": [
        "936a36ae63eb8c68123cf9e23824f68aa9ac51b1"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue May 05 01:31:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 01:31:48 2026"
      },
      "message": "🐛 fix(seed): bump embedded pip to 26.1.1 (#3138)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "936a36ae63eb8c68123cf9e23824f68aa9ac51b1",
      "tree": "de3fe3290ceca4214e006b936d6fdf55c558d2d0",
      "parents": [
        "cb5a7d1820871cf26e370c6a954e48326ddd6c57"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue May 05 01:31:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 01:31:37 2026"
      },
      "message": "👷 ci: retry transient apt failures on Linux (#3139)"
    },
    {
      "commit": "cb5a7d1820871cf26e370c6a954e48326ddd6c57",
      "tree": "a62de4aad959c732e09490a3046eac2cf1caab4a",
      "parents": [
        "e917cc244e659160607c890de2cbad3a7bc2a28c"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 08:03:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 08:03:58 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3133)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e917cc244e659160607c890de2cbad3a7bc2a28c",
      "tree": "54e8707542afb1a822c6b65768ba286d665059f7",
      "parents": [
        "21152f1b88c49cdefda2743cddc2cf36d50e2e57"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Apr 27 17:04:32 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Apr 27 17:04:32 2026"
      },
      "message": "release 21.3.0"
    },
    {
      "commit": "21152f1b88c49cdefda2743cddc2cf36d50e2e57",
      "tree": "ab551e9d790f88919071f0c8ae8890a54886c92b",
      "parents": [
        "096bdcd72d7a6c92dcb9dee97fd429fe3e0231a5"
      ],
      "author": {
        "name": "github-actions[bot]",
        "email": "41898282+github-actions[bot]@users.noreply.github.com",
        "time": "Mon Apr 27 17:03:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 17:03:20 2026"
      },
      "message": "Upgrade embedded pip/setuptools/wheel (#3132)\n\nAutomated upgrade of embedded pip, setuptools, and wheel dependencies.\n\nThis PR was created automatically by the [upgrade\nworkflow](https://github.com/pypa/virtualenv/actions/workflows/upgrade.yaml).\n\n---------\n\nCo-authored-by: gaborbernat \u003c690238+gaborbernat@users.noreply.github.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cgaborjbernat@gmail.com\u003e"
    },
    {
      "commit": "096bdcd72d7a6c92dcb9dee97fd429fe3e0231a5",
      "tree": "64c5e0fb78939546583b3874c501a2112f3b94ee",
      "parents": [
        "01610dc7a8ef08158c815f43dc22ceadb98b85c0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 23 13:47:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 13:47:08 2026"
      },
      "message": "chore(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (#3131)\n\nBumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from\n8.0.0 to 8.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/releases\"\u003eastral-sh/setup-uv\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.1.0 🌈 New input \u003ccode\u003eno-project\u003c/code\u003e\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cp\u003eThis add the a new boolean input \u003ccode\u003eno-project\u003c/code\u003e.\nIt only makes sense to use in combination with\n\u003ccode\u003eactivate-environment: true\u003c/code\u003e and will append \u003ccode\u003e--no\nproject\u003c/code\u003e to the \u003ccode\u003euv venv\u003c/code\u003e call. This is for example\nuseful \u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/854\"\u003eif you\nhave a pyproject.toml file with parts unparseable by uv\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e🚀 Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd input no-project in combination with activate-environment \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: grant contents:write to validate-release job \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/860\"\u003e#860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a release-gate step to the release workflow \u003ca\nhref\u003d\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDraft commitish releases \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd action-types.yml to instructions \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/857\"\u003e#857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.7 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactor version resolving \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/852\"\u003e#852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.6 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.5 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/845\"\u003e#845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.4 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/843\"\u003e#843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a release workflow \u003ca\nhref\u003d\"https://github.com/zanieb\"\u003e\u003ccode\u003e@​zanieb\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/839\"\u003e#839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.3 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/836\"\u003e#836\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📚 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate ignore-nothing-to-cache documentation \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/833\"\u003e#833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePin setup-uv docs to v8 \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/829\"\u003e#829\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⬆️ Dependency updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump release-drafter/release-drafter from 7.1.1 to\n7.2.0 @\u003ca href\u003d\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/855\"\u003e#855\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/08807647e7069bb48b6ef5acd8ec9567f424441b\"\u003e\u003ccode\u003e0880764\u003c/code\u003e\u003c/a\u003e\nfix: grant contents:write to validate-release job (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/860\"\u003e#860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/717d6aba0f15312f509f5c4999e34d71ecbab8a9\"\u003e\u003ccode\u003e717d6ab\u003c/code\u003e\u003c/a\u003e\nAdd a release-gate step to the release workflow (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/859\"\u003e#859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/5a911eb3a3983b5e650f2dad95c1ce698ca94378\"\u003e\u003ccode\u003e5a911eb\u003c/code\u003e\u003c/a\u003e\nDraft commitish releases (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/858\"\u003e#858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/080c31e04cd7155b0ca676d08c7bc260a4476a23\"\u003e\u003ccode\u003e080c31e\u003c/code\u003e\u003c/a\u003e\nAdd action-types.yml to instructions (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/857\"\u003e#857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/b3e97d2ba1a1eed7e9d1f8456dd06c3b725bc3a6\"\u003e\u003ccode\u003eb3e97d2\u003c/code\u003e\u003c/a\u003e\nAdd input no-project in combination with activate-environment (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/856\"\u003e#856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/7dd591db9557f680290587fcc578372813b9ff64\"\u003e\u003ccode\u003e7dd591d\u003c/code\u003e\u003c/a\u003e\nchore(deps): bump release-drafter/release-drafter from 7.1.1 to 7.2.0\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/855\"\u003e#855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/1541b7762698877904805605192ecd63d0e4787a\"\u003e\u003ccode\u003e1541b77\u003c/code\u003e\u003c/a\u003e\nchore: update known checksums for 0.11.7 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/853\"\u003e#853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/cdfb2ee6dde255817c739680168ad81e184c4bfb\"\u003e\u003ccode\u003ecdfb2ee\u003c/code\u003e\u003c/a\u003e\nRefactor version resolving (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/852\"\u003e#852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/cb84d12dc6a0d495b82fcae14fa4559b90698660\"\u003e\u003ccode\u003ecb84d12\u003c/code\u003e\u003c/a\u003e\nchore: update known checksums for 0.11.6 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/850\"\u003e#850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/1912cc65f2e839707d7a16f2372f30b57d35fd80\"\u003e\u003ccode\u003e1912cc6\u003c/code\u003e\u003c/a\u003e\nchore: update known checksums for 0.11.5 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/845\"\u003e#845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/compare/cec208311dfd045dd5311c1add060b2062131d57...08807647e7069bb48b6ef5acd8ec9567f424441b\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dastral-sh/setup-uv\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d8.0.0\u0026new-version\u003d8.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "01610dc7a8ef08158c815f43dc22ceadb98b85c0",
      "tree": "b3ded373f90170954ac5b1dd954168c113f92a8e",
      "parents": [
        "fb6ec7c461db2b0ccfabe7ec6255368e86cfaed3"
      ],
      "author": {
        "name": "Andy Kipp",
        "email": "anki-code@users.noreply.github.com",
        "time": "Tue Apr 21 17:23:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 17:23:44 2026"
      },
      "message": "docs: Add usage instruction for Xonsh activation (#3130)\n\nContinue https://github.com/pypa/virtualenv/pull/3125\nSorry I missed this in original PR.\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cgaborjbernat@gmail.com\u003e"
    },
    {
      "commit": "fb6ec7c461db2b0ccfabe7ec6255368e86cfaed3",
      "tree": "a3ff86f47a42cd7dba4e5ef0d245181782d7ffa6",
      "parents": [
        "60956799efa82adac0c3d5e70d9ca1fdd63125f8"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Apr 21 17:23:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 17:23:18 2026"
      },
      "message": "🐛 fix(test): prevent PowerShell activation test from crashing xdist workers on Windows (#3128)"
    },
    {
      "commit": "60956799efa82adac0c3d5e70d9ca1fdd63125f8",
      "tree": "a3a1909f999e9de00c6229c38bb4c3ae62bfe4c1",
      "parents": [
        "8d3179cf42332501240e9ee3ddca7e376a790752"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Apr 21 15:17:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 15:17:38 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3129)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8d3179cf42332501240e9ee3ddca7e376a790752",
      "tree": "59e681e6c1adb3591d87d3bb4a7bfabadcdec75d",
      "parents": [
        "a159c50a400d4e18aca3bfde5224f09e71d2eb17"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Apr 19 02:22:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 02:22:40 2026"
      },
      "message": "chore(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (#3127)\n\nBumps\n[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)\nfrom 8.1.0 to 8.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/releases\"\u003epeter-evans/create-pull-request\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCreate Pull Request v8.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ebuild(deps-dev): bump the npm group with 2 updates by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4305\"\u003epeter-evans/create-pull-request#4305\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump minimatch by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4311\"\u003epeter-evans/create-pull-request#4311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump the github-actions group with 2 updates by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4316\"\u003epeter-evans/create-pull-request#4316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump \u003ccode\u003e@​tootallnate/once\u003c/code\u003e and\njest-environment-jsdom by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4323\"\u003epeter-evans/create-pull-request#4323\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps-dev): bump undici from 6.23.0 to 6.24.0 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4328\"\u003epeter-evans/create-pull-request#4328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps-dev): bump flatted from 3.3.1 to 3.4.2 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4334\"\u003epeter-evans/create-pull-request#4334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump picomatch by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4339\"\u003epeter-evans/create-pull-request#4339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps-dev): bump handlebars from 4.7.8 to 4.7.9 by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4344\"\u003epeter-evans/create-pull-request#4344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps-dev): bump the npm group with 3 updates by \u003ca\nhref\u003d\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot]\nin \u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4349\"\u003epeter-evans/create-pull-request#4349\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry post-creation API calls on 422 eventual consistency\nerrors by \u003ca\nhref\u003d\"https://github.com/peter-evans\"\u003e\u003ccode\u003e@​peter-evans\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/pull/4356\"\u003epeter-evans/create-pull-request#4356\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1\"\u003ehttps://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/5f6978faf089d4d20b00c7766989d076bb2fc7f1\"\u003e\u003ccode\u003e5f6978f\u003c/code\u003e\u003c/a\u003e\nfix: retry post-creation API calls on 422 eventual consistency errors\n(\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4356\"\u003e#4356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/d32e88dac789dcc7906e7d26f69f24116fa9c97d\"\u003e\u003ccode\u003ed32e88d\u003c/code\u003e\u003c/a\u003e\nbuild(deps-dev): bump the npm group with 3 updates (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4349\"\u003e#4349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/8170bccad11c0df62542c04dcaefe36d342dfd39\"\u003e\u003ccode\u003e8170bcc\u003c/code\u003e\u003c/a\u003e\nbuild(deps-dev): bump handlebars from 4.7.8 to 4.7.9 (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4344\"\u003e#4344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/00418193b417f888dbf1d993c5c0d31d27fdc7de\"\u003e\u003ccode\u003e0041819\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump picomatch (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4339\"\u003e#4339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/b993918c8536b6d44706130734d5456879762b27\"\u003e\u003ccode\u003eb993918\u003c/code\u003e\u003c/a\u003e\nbuild(deps-dev): bump flatted from 3.3.1 to 3.4.2 (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4334\"\u003e#4334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/36d7c8468b48f9c2f8f29e260e82f10d4b90d2bd\"\u003e\u003ccode\u003e36d7c84\u003c/code\u003e\u003c/a\u003e\nbuild(deps-dev): bump undici from 6.23.0 to 6.24.0 (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4328\"\u003e#4328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/a45d1fb447fcaf601166e405fd4f335cde1a8aa8\"\u003e\u003ccode\u003ea45d1fb\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump \u003ccode\u003e@​tootallnate/once\u003c/code\u003e and\njest-environment-jsdom (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4323\"\u003e#4323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/3499eb61835cc0015c0b786e203d74b1e8f55e43\"\u003e\u003ccode\u003e3499eb6\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump the github-actions group with 2 updates (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4316\"\u003e#4316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/3f3b473b8c148f5a7520efb4d1f9a70eea3d9d1f\"\u003e\u003ccode\u003e3f3b473\u003c/code\u003e\u003c/a\u003e\nbuild(deps): bump minimatch (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4311\"\u003e#4311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/commit/6699836a213cf8b28c4f0408a404a6ac79d4458a\"\u003e\u003ccode\u003e6699836\u003c/code\u003e\u003c/a\u003e\nbuild(deps-dev): bump the npm group with 2 updates (\u003ca\nhref\u003d\"https://redirect.github.com/peter-evans/create-pull-request/issues/4305\"\u003e#4305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/peter-evans/create-pull-request/compare/c0f553fe549906ede9cf27b5156039d195d2ece0...5f6978faf089d4d20b00c7766989d076bb2fc7f1\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpeter-evans/create-pull-request\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d8.1.0\u0026new-version\u003d8.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a159c50a400d4e18aca3bfde5224f09e71d2eb17",
      "tree": "094576347dbb108c55b8a2e7f34fd2955500c132",
      "parents": [
        "9ba729bbbbec89c121c3ce4ef205fdd403e33e26"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Apr 19 02:22:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 02:22:36 2026"
      },
      "message": "chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (#3126)\n\nBumps\n[actions/upload-artifact](https://github.com/actions/upload-artifact)\nfrom 7.0.0 to 7.0.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/releases\"\u003eactions/upload-artifact\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the readme with direct upload details by \u003ca\nhref\u003d\"https://github.com/danwkennedy\"\u003e\u003ccode\u003e@​danwkennedy\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/actions/upload-artifact/pull/795\"\u003eactions/upload-artifact#795\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReadme: bump all the example versions to v7 by \u003ca\nhref\u003d\"https://github.com/danwkennedy\"\u003e\u003ccode\u003e@​danwkennedy\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/actions/upload-artifact/pull/796\"\u003eactions/upload-artifact#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude changes in typespec/ts-http-runtime 0.3.5 by \u003ca\nhref\u003d\"https://github.com/yacaovsnc\"\u003e\u003ccode\u003e@​yacaovsnc\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/actions/upload-artifact/pull/797\"\u003eactions/upload-artifact#797\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/compare/v7...v7.0.1\"\u003ehttps://github.com/actions/upload-artifact/compare/v7...v7.0.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/commit/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a\"\u003e\u003ccode\u003e043fb46\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/actions/upload-artifact/issues/797\"\u003e#797\u003c/a\u003e\nfrom actions/yacaovsnc/update-dependency\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/commit/634250c1388765ea7ed0f053e636f1f399000b94\"\u003e\u003ccode\u003e634250c\u003c/code\u003e\u003c/a\u003e\nInclude changes in typespec/ts-http-runtime 0.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/commit/e454baaac2be505c9450e11b8f3215c6fc023ce8\"\u003e\u003ccode\u003ee454baa\u003c/code\u003e\u003c/a\u003e\nReadme: bump all the example versions to v7 (\u003ca\nhref\u003d\"https://redirect.github.com/actions/upload-artifact/issues/796\"\u003e#796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/commit/74fad66b98a6d799dc004d3353ccd0e6f6b2530e\"\u003e\u003ccode\u003e74fad66\u003c/code\u003e\u003c/a\u003e\nUpdate the readme with direct upload details (\u003ca\nhref\u003d\"https://redirect.github.com/actions/upload-artifact/issues/795\"\u003e#795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dactions/upload-artifact\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d7.0.0\u0026new-version\u003d7.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9ba729bbbbec89c121c3ce4ef205fdd403e33e26",
      "tree": "12623001bdc9d5fc416ea15716db59173c3974fa",
      "parents": [
        "d42ea5cd19a116dbdbb9852becace188d5b3a225"
      ],
      "author": {
        "name": "Andy Kipp",
        "email": "anki-code@users.noreply.github.com",
        "time": "Sun Apr 19 02:22:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 02:22:31 2026"
      },
      "message": "feat: Reintroduce xonsh shell support (#3125)\n\nHello @gaborbernat! In the Xonsh shell project, we’ve done a significant\namount of groundwork ([*](https://github.com/xonsh/xonsh/pull/6152)) and\nare now on the verge of releasing version 0.23.0, which is expected to\nbe the most stable release in the project’s history. While working on\nthis version, we took your previous\n[feedback](https://github.com/xonsh/xonsh/issues/3689#issuecomment-748621587)\ninto account and implemented additional improvements.\n\nIn light of this, and given the recurring requests for virtualenv\nsupport, I’d like to introduce an updated version of Xonsh support for\nvirtualenv.\n\nPlease take a look. Thanks!\n\n------\n\n- [x] ran the linter to address style issues (`tox -e fix`)\n- [x] wrote descriptive pull request text\n- [x] ensured there are test(s) validating the fix\n- [x] added news fragment in `docs/changelog` folder\n- [x] updated/extended the documentation\n\n------\n\n* cc https://github.com/xonsh/xonsh/issues/6025\n* сс https://github.com/xonsh/xonsh/pull/4466\n* cc https://github.com/pypa/virtualenv/pull/2160\n* cc https://github.com/pypa/virtualenv/pull/1206\n\n---------\n\nCo-authored-by: 1 \u003c1@1.1\u003e\nCo-authored-by: anki-code \u003c1@1.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cgaborjbernat@gmail.com\u003e"
    },
    {
      "commit": "d42ea5cd19a116dbdbb9852becace188d5b3a225",
      "tree": "d06b53dae3fa5fd9b60cbc0bb5eb0f55d3442fcd",
      "parents": [
        "15063c10b3afae1d3fa3234e99f956434051f7b5"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Wed Apr 15 22:12:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 22:12:56 2026"
      },
      "message": "🐛 fix(type): stop ty flagging default_source on Action (#3124)"
    },
    {
      "commit": "15063c10b3afae1d3fa3234e99f956434051f7b5",
      "tree": "509fa5c5ec91542c5e66714b8c56291a53c5efa0",
      "parents": [
        "754602d6f07d262f4f352cc590bd3f9ef3b157fe"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue Apr 14 22:14:15 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue Apr 14 22:14:15 2026"
      },
      "message": "release 21.2.4"
    },
    {
      "commit": "754602d6f07d262f4f352cc590bd3f9ef3b157fe",
      "tree": "22b24817604866bc72b312656b78e1f1a70f62b8",
      "parents": [
        "43deabf249c10896d09a282aa254a837fdcef9b5"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Apr 14 20:26:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 20:26:56 2026"
      },
      "message": "🐛 fix(seed): validate wheel zip entries before extraction (#3118)\n\nSecurity hardening. The app-data seeder extracts seed wheels with\n`zipfile.ZipFile.extractall` without validating entry names first.\nWheels are not a strongly trusted input — they live on disk, they can be\nreplaced by anyone with write access to the app-data cache, and in the\n``--download`` path they come from pip\u0027s cache — so a tampered wheel\nwith an entry named `../evil.py` or an absolute path would land outside\nthe image directory. 🔒\n\nThe fix wraps extraction in a helper that refuses any entry whose name\nis absolute or resolves outside the target image directory, then\ndelegates to `extractall` for the happy path. Absolute-path checks cover\nboth POSIX and Windows forms so the same guard is effective on any\nplatform.\n\nNothing changes for well-formed wheels; only malformed archives are\nrejected, with a clear `RuntimeError` that names the offending entry."
    },
    {
      "commit": "43deabf249c10896d09a282aa254a837fdcef9b5",
      "tree": "def5e9f29019eeab9fce84865050f85d8e3e84a5",
      "parents": [
        "4e412b0ba38284487267f481026ea218689fa9bd"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Apr 14 20:26:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 20:26:26 2026"
      },
      "message": "🐛 fix(seed): verify sha256 of bundled wheels on load (#3119)\n\nSecurity hardening. Bundled seed wheels were loaded straight off disk\nand handed to pip without any integrity check. A corrupted or tampered\nwheel sitting next to `embed/__init__.py` — whether from a botched\nupgrade, a filesystem error, or a supply-chain compromise — would have\nbeen silently installed into every new environment. 🔒\n\nThe fix records the SHA-256 of every bundled wheel alongside\n`BUNDLE_SUPPORT` in the generated `embed/__init__.py`, and verifies each\nwheel the first time it is requested. Hashes are cached per wheel name\nso the happy path keeps a single file read per interpreter run, and a\nmismatch aborts with a clear `RuntimeError`. When virtualenv runs from a\nzipapp the bytes are read straight from the archive entry, so the check\napplies to both on-disk and zipapp layouts.\n\nThe hash table is produced by `tasks/upgrade_wheels.py` so future wheel\nbumps stay in sync without manual bookkeeping. A new `--regen` mode lets\nthe generator rewrite the module from the wheels currently on disk\nwithout re-downloading anything, which is how this PR produced the\ninitial table."
    },
    {
      "commit": "4e412b0ba38284487267f481026ea218689fa9bd",
      "tree": "f8092edd1e3282a9b2bd9eefc17319d60f2073e7",
      "parents": [
        "130981834946a828174e37ecdd250f530f09832f"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Apr 14 20:23:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 20:23:12 2026"
      },
      "message": "🐛 fix(seed): validate distribution and version before pip download (#3120)\n\nSecurity hardening. The distribution name and version specifier handed\nto `pip download` in `download_wheel` were interpolated straight into\nthe subprocess argument list with an f-string. Internal callers always\npass sensible values today, but the function is a small function call\naway from turning a distribution string like `pip\n--index-url\u003dhttp://evil` or `pip[extra]` into extra pip flags or a\ndifferent package entirely. 🔒 Defense in depth is cheap here and the\ncheck runs before the subprocess is ever spawned.\n\nThe fix rejects any distribution name that does not match the PEP 503\nnormalised form, and any non-empty version spec that does not match what\n`Version.as_version_spec` can emit. The regexes are written in verbose\nmode with named groups so the allow-list is readable at a glance.\nAnything outside those shapes raises a `ValueError` with the offending\nstring quoted for debugging. Happy-path callers see no behavioural\nchange.\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "130981834946a828174e37ecdd250f530f09832f",
      "tree": "e5a0068fd7530732d1fd04c3e615cc267fd38cb2",
      "parents": [
        "48f6fdcc14b8654236f9081adbff10a32f536940"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Apr 14 20:21:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 20:21:23 2026"
      },
      "message": "🐛 fix(zipapp): enforce ROOT containment with Path.relative_to (#3121)\n\nSecurity hardening. When running from a zipapp,\n`virtualenv.util.zipapp._get_path_within_zip` guards against paths that\nresolve outside the archive. The previous implementation called\n`os.path.realpath`, then decided containment by building a\nseparator-prefixed string and comparing with `startswith`. That is\nfragile on Windows path separators, brittle around the trailing\nseparator, and hard to reason about when symlinks are involved. 🔒\n\nThe fix resolves both the candidate path and `ROOT` through `pathlib`\nand uses `Path.relative_to` to decide containment — anything that does\nnot resolve inside `ROOT` is rejected with a `RuntimeError` before any\nzipfile work happens. The returned entry name is always forward-slashed\nvia `as_posix`, so the Windows-specific replacement is no longer needed.\n\nBehaviour is unchanged for well-formed paths; only previously-accepted\nescape attempts become errors."
    },
    {
      "commit": "48f6fdcc14b8654236f9081adbff10a32f536940",
      "tree": "c2efe464abf396b21614a896820405dd1955958a",
      "parents": [
        "a5fb4a290d60776e2b3f81696bd7291913aa25d4"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Apr 14 20:20:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 20:20:04 2026"
      },
      "message": "🐛 fix(periodic-update): refuse unverified HTTPS to PyPI by default (#3122)\n\nSecurity hardening. When the verified HTTPS request to\n`https://pypi.org/pypi/\u003cdist\u003e/json` failed, the periodic update retried\nthe request with an unverified SSL context and used whatever came back.\nThe original comment justified this with \u0027the information we request is\nnot sensitive\u0027, but the metadata drives the decision about which wheel\nversion virtualenv considers \u0027up to date\u0027. 🔒 A network-level attacker\nthat can break the handshake can then pin virtualenv to an older seed\nwheel and silently suppress security updates.\n\nThe fallback is now skipped by default. A failed verified request logs\nthe error and returns `None`, which the periodic update path already\nhandles gracefully — no wheel bump happens and the run continues. Hosts\nwith genuinely broken trust stores can opt back in by setting\n`VIRTUALENV_PERIODIC_UPDATE_INSECURE\u003d1`, which is logged at WARNING so\nit shows up in CI output. The env var is documented in\n`docs/how-to/usage.rst` next to the existing override knobs."
    },
    {
      "commit": "a5fb4a290d60776e2b3f81696bd7291913aa25d4",
      "tree": "0cd3b3da9e44bee485a7688ea2d53553a0ed0f0e",
      "parents": [
        "7f91a9a0bfbc549fc10274164135cf02c8ca8167"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue Apr 14 01:09:23 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Tue Apr 14 01:09:23 2026"
      },
      "message": "release 21.2.3"
    },
    {
      "commit": "7f91a9a0bfbc549fc10274164135cf02c8ca8167",
      "tree": "be06416af1d6a77b964c539ee80accebfe00b316",
      "parents": [
        "33348d69426ef49ea26dcab7f12b474706968813"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Apr 13 23:32:56 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Apr 13 23:32:56 2026"
      },
      "message": "release 21.2.2"
    },
    {
      "commit": "33348d69426ef49ea26dcab7f12b474706968813",
      "tree": "5b7408c20dc5d874dc0c80821283e10eee1f94d6",
      "parents": [
        "d73ff7c2dccd6a60223b5c4ed673d7f3e7df9a43"
      ],
      "author": {
        "name": "Rahul Devikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Mon Apr 13 23:32:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 23:32:05 2026"
      },
      "message": "bump python-discovery minimum to 1.2.2 (#3117)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d73ff7c2dccd6a60223b5c4ed673d7f3e7df9a43",
      "tree": "073016604ec7dd2ca50ea0bdb5d5df5a58b7f894",
      "parents": [
        "d1fc6e68678da49932707bb09a10464aff2f30cc"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Apr 13 21:57:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 21:57:32 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3116)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d1fc6e68678da49932707bb09a10464aff2f30cc",
      "tree": "8dff92a1f7c06a8557084ac6a8669872c37c2108",
      "parents": [
        "4136b51af53ba50354c6727cae3b79c6be2b2a3b"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Apr 09 19:29:32 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Apr 09 19:29:32 2026"
      },
      "message": "Release 21.2.1\n"
    },
    {
      "commit": "4136b51af53ba50354c6727cae3b79c6be2b2a3b",
      "tree": "6b92053cf9bb7bc94ed967c8ef28bdcff1920147",
      "parents": [
        "d1deceacb19edde2c91a40e20894b7863d2a02ab"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Apr 09 19:22:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 19:22:52 2026"
      },
      "message": "fix(ci): check out repo in publish job for gh release notes (#3115)\n\n`gh release create --generate-notes` runs git to locate the previous tag\nwhen building auto-generated release notes. The publish job had no\ncheckout, so it failed with `fatal: not a git repository`. This broke\nthe 21.2.1 release after PyPI publish had already succeeded.\n\nA minimal `fetch-depth: 0` checkout is added before the artifact\ndownloads. `persist-credentials: false` is set since the publish job\nonly reads the repo — it does not push."
    },
    {
      "commit": "d1deceacb19edde2c91a40e20894b7863d2a02ab",
      "tree": "075d6d56427bcfc81b45bc45c1b75a651f32b365",
      "parents": [
        "48e21104c939b6fb582dc4c56349860264d00062"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Apr 09 18:44:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 18:44:54 2026"
      },
      "message": "fix(ci): persist git credentials in pre-release workflow (#3114)\n\n`pre-release.yaml` had `persist-credentials: false` on the checkout step\nthat uses `GH_RELEASE_TOKEN`. The release script (via gitpython) pushes\nthe changelog commit and tag to main after building — but by then the\ntoken credentials had been discarded, causing git to fail with `fatal:\ncould not read Username for \u0027https://github.com\u0027: No such device or\naddress`.\n\nCommit 235b124e removed `persist-credentials: false` from jobs that need\npush access but missed `pre-release.yaml`. This aligns it with\n`release.yaml`\u0027s rollback job, which already omits the flag and carries\nthe `zizmor: ignore[artipacked]` annotation."
    },
    {
      "commit": "48e21104c939b6fb582dc4c56349860264d00062",
      "tree": "109c031b6a7b4fd281b7ca3480df0153112f565f",
      "parents": [
        "d00c465448230b7d964b2fbf646fa9602c7aa816"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Apr 09 18:05:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 18:05:35 2026"
      },
      "message": "👷 ci: fix setup-uv warnings and drop brew@3.9 (#3113)\n\nEvery CI job emitted \"Empty workdir detected\" and \"No file matched to\n[...]. The cache will never get invalidated.\" because\n`astral-sh/setup-uv` ran before `actions/checkout`. With 50+ parallel\njobs sharing the same cache key, jobs also raced to save the cache\nsimultaneously, producing \"Unable to reserve cache\" warnings on every\nrun.\n\nCheckout now runs first in both jobs so `setup-uv` can find\n`pyproject.toml` for cache keying. A `cache-suffix` derived from the\nmatrix variable (`matrix.py` / `matrix.tox_env`) gives each job its own\ncache slot, eliminating the write race entirely. 🔧\n`PIP_DISABLE_PIP_VERSION_CHECK\u003d1` suppresses the pip upgrade notice that\nappeared for Python 3.8, which ships with a stale pip. `brew@3.9` is\ndropped because Python 3.9 reached EOL in October 2024 and Homebrew\nemits a deprecation warning when installing it."
    },
    {
      "commit": "d00c465448230b7d964b2fbf646fa9602c7aa816",
      "tree": "2bb3b797b5936d4091a85ea13b5e141331fee761",
      "parents": [
        "0a8c46a5436d1d31487b88d0e72be1b48cf9b02e"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Apr 09 13:15:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 13:15:20 2026"
      },
      "message": "🐛 fix(nushell): surface actionable hint in deactivate error output (#3112)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0a8c46a5436d1d31487b88d0e72be1b48cf9b02e",
      "tree": "21d1d84f2d13cde9655a4173511481bd50833edc",
      "parents": [
        "f0bbe174e2c241f9a7fbeaac7446cf200c14a851"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 08 15:56:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 15:56:33 2026"
      },
      "message": "chore(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (#3111)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f0bbe174e2c241f9a7fbeaac7446cf200c14a851",
      "tree": "872f67af3d8f019c6e17cb0a8059073a6f382de7",
      "parents": [
        "dfaa73826dad5e9c2cdc2b5873a14eb80c37480b"
      ],
      "author": {
        "name": "bahtyar",
        "email": "34988899+Bahtya@users.noreply.github.com",
        "time": "Tue Apr 07 15:05:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 15:05:22 2026"
      },
      "message": "fix: use terminal width for help formatting instead of hardcoded 240 (#3110)\n\nFixes #3105\n\n## Problem\n\n`virtualenv --help` ignores terminal width and always formats output for\n240 characters, making it hard to read on standard terminal widths.\n\nRoot cause: `HelpFormatter.__init__` hardcodes `width\u003d240` instead of\nusing the actual terminal size.\n\n## Fix\n\nReplace hardcoded `width\u003d240` with `shutil.get_terminal_size().columns`\nto respect the user\u0027s terminal width.\n\n## Before\n\n```bash\n# Terminal is 80 columns wide, but help text runs to 240:\nvirtualenv --help  # text overflows, hard to read\n```\n\n## After\n\n```bash\n# Help text wraps at terminal width:\nvirtualenv --help  # clean, readable formatting\n```\n\n## Testing\n\n- Verified `HelpFormatter._width` now matches\n`shutil.get_terminal_size().columns`\n- All existing unit tests pass (43 passed)\n\n## Changes\n\n- `src/virtualenv/config/cli/parser.py`: 4 lines added, 1 removed"
    },
    {
      "commit": "dfaa73826dad5e9c2cdc2b5873a14eb80c37480b",
      "tree": "8630066f746a5cedf3004effab776514cd7ba360",
      "parents": [
        "cc658da7f137776813f3304cdd772eb52f8ed36e"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Apr 06 20:59:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 20:59:03 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3109)\n\n\u003c!--pre-commit.ci start--\u003e\nupdates:\n- [github.com/tox-dev/pyproject-fmt: v2.20.0 →\nv2.21.0](https://github.com/tox-dev/pyproject-fmt/compare/v2.20.0...v2.21.0)\n- [github.com/astral-sh/ruff-pre-commit: v0.15.8 →\nv0.15.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.8...v0.15.9)\n\u003c!--pre-commit.ci end--\u003e\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cc658da7f137776813f3304cdd772eb52f8ed36e",
      "tree": "99ce1fb7b5c86274757d5c3eb8a893147a1f49dd",
      "parents": [
        "f235373eee6e3e98e556408fa71e67adb4d4685b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Apr 06 14:40:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 14:40:32 2026"
      },
      "message": "chore(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 (#3107)\n\nBumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from\n7.6.0 to 8.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/releases\"\u003eastral-sh/setup-uv\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.0.0 🌈 Immutable releases and secure tags\u003c/h2\u003e\n\u003ch1\u003eThis is the first immutable release of \u003ccode\u003esetup-uv\u003c/code\u003e 🥳\u003c/h1\u003e\n\u003cp\u003eAll future releases are also immutable, if you want to know more\nabout what this means checkout \u003ca\nhref\u003d\"https://docs.github.com/en/code-security/concepts/supply-chain-security/immutable-releases\"\u003ethe\ndocs\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release also has two breaking changes\u003c/p\u003e\n\u003ch2\u003eNew format for \u003ccode\u003emanifest-file\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003eThe previously deprecated way of defining a custom version manifest\nto control which \u003ccode\u003euv\u003c/code\u003e versions are available and where to\ndownload them from got removed. The functionality is still there but you\nhave to use the \u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/blob/main/docs/customization.md#format\"\u003enew\nformat\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eNo more major and minor tags\u003c/h2\u003e\n\u003cp\u003eTo increase \u003cstrong\u003esecurity\u003c/strong\u003e even more we will \u003cstrong\u003estop\npublishing minor tags\u003c/strong\u003e. You won\u0027t be able to use\n\u003ccode\u003e@v8\u003c/code\u003e or \u003ccode\u003e@v8.0\u003c/code\u003e any longer. We do this because\npinning to major releases opens up users to supply chain attacks like\nwhat happened to \u003ca\nhref\u003d\"https://unit42.paloaltonetworks.com/github-actions-supply-chain-attack/\"\u003etj-actions\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!TIP]\nUse the immutable tag as a version\n\u003ccode\u003eastral-sh/setup-uv@v8.0.0\u003c/code\u003e\nOr even better the githash\n\u003ccode\u003eastral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003e🚨 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove update-major-minor-tags workflow \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/826\"\u003e#826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecrated custom manifest \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/813\"\u003e#813\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShortcircuit latest version from manifest \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/828\"\u003e#828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify inputs.ts \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/827\"\u003e#827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump release-drafter to v7.1.1 \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/825\"\u003e#825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefactor inputs \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/823\"\u003e#823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace inline compile args with tsconfig \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/824\"\u003e#824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.2 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/821\"\u003e#821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.1 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/817\"\u003e#817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.11.0 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/815\"\u003e#815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix latest-version workflow check \u003ca\nhref\u003d\"https://github.com/eifinger\"\u003e\u003ccode\u003e@​eifinger\u003c/code\u003e\u003c/a\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/812\"\u003e#812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update known checksums for 0.10.11/0.10.12 @\u003ca\nhref\u003d\"https://github.com/apps/github-actions\"\u003egithub-actions[bot]\u003c/a\u003e\n(\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/811\"\u003e#811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/cec208311dfd045dd5311c1add060b2062131d57\"\u003e\u003ccode\u003ecec2083\u003c/code\u003e\u003c/a\u003e\nShortcircuit latest version from manifest (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/828\"\u003e#828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/4dd8ab45206a76f8c1dfe399fa88df10a7264f27\"\u003e\u003ccode\u003e4dd8ab4\u003c/code\u003e\u003c/a\u003e\nSimplify inputs.ts (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/827\"\u003e#827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/7fdbe7cf0c8ef50cfd0878eed7b5180abc6b53c7\"\u003e\u003ccode\u003e7fdbe7c\u003c/code\u003e\u003c/a\u003e\nRemove update-major-minor-tags workflow (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/826\"\u003e#826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/485abd05e5c74a247f0a309e333d2433ab9a353a\"\u003e\u003ccode\u003e485abd0\u003c/code\u003e\u003c/a\u003e\nBump release-drafter to v7.1.1 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/825\"\u003e#825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/f82eb19c06057c455674b2602e0139fd906f1428\"\u003e\u003ccode\u003ef82eb19\u003c/code\u003e\u003c/a\u003e\nRefactor inputs (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/823\"\u003e#823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/868d1f74d9d862d7b40219546bfe35299c6dd452\"\u003e\u003ccode\u003e868d1f7\u003c/code\u003e\u003c/a\u003e\nReplace inline compile args with tsconfig (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/824\"\u003e#824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/447e6d02b15d65b3247cce2d6019f11957285d11\"\u003e\u003ccode\u003e447e6d0\u003c/code\u003e\u003c/a\u003e\nchore: update known checksums for 0.11.2 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/821\"\u003e#821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/5c62c5926145985eec91f09e2e0a75f40daed929\"\u003e\u003ccode\u003e5c62c59\u003c/code\u003e\u003c/a\u003e\nchore: update known checksums for 0.11.1 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/817\"\u003e#817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/e1a7373adb857afd2a70b971e8ebdacc64ed27d0\"\u003e\u003ccode\u003ee1a7373\u003c/code\u003e\u003c/a\u003e\nchore: update known checksums for 0.11.0 (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/815\"\u003e#815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/commit/89709315bb3bd4bf0f4b1db4b710e99009087ab5\"\u003e\u003ccode\u003e8970931\u003c/code\u003e\u003c/a\u003e\nRemove deprecrated custom manifest (\u003ca\nhref\u003d\"https://redirect.github.com/astral-sh/setup-uv/issues/813\"\u003e#813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/astral-sh/setup-uv/compare/37802adc94f370d6bfd71619e3f0bf239e1f3b78...cec208311dfd045dd5311c1add060b2062131d57\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dastral-sh/setup-uv\u0026package-manager\u003dgithub_actions\u0026previous-version\u003d7.6.0\u0026new-version\u003d8.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cgaborjbernat@gmail.com\u003e\nCo-authored-by: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "f235373eee6e3e98e556408fa71e67adb4d4685b",
      "tree": "1394b524c98396761926775692bf8258ad6a956a",
      "parents": [
        "235b124e4400d4784dbb37f19f9a2e5afbe97378"
      ],
      "author": {
        "name": "bahtyar",
        "email": "34988899+Bahtya@users.noreply.github.com",
        "time": "Sat Apr 04 18:31:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 18:31:13 2026"
      },
      "message": "Fix broken Installation link in README (#3106)"
    },
    {
      "commit": "235b124e4400d4784dbb37f19f9a2e5afbe97378",
      "tree": "3f56f435be0c8d3059c7d5b2d9beb689db90e36b",
      "parents": [
        "0f63b3d07f5e319c4d672b7d6f38747b660f2937"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Mar 31 21:10:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 21:10:07 2026"
      },
      "message": "Remove persist-credentials: false from jobs needing push access (#3102)"
    },
    {
      "commit": "0f63b3d07f5e319c4d672b7d6f38747b660f2937",
      "tree": "81b69baa118db1ce0661523787398266d7bbf7dd",
      "parents": [
        "5b9b17048ad0e6ead4ed9bc5e2ae60d77cd24894"
      ],
      "author": {
        "name": "Rahul Devikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Mon Mar 30 21:13:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 21:13:52 2026"
      },
      "message": "Add current and previous maintainers (#3101)"
    },
    {
      "commit": "5b9b17048ad0e6ead4ed9bc5e2ae60d77cd24894",
      "tree": "1a39028508db2350d98ef147fe6108bc31f76c36",
      "parents": [
        "1bbeb9045b7075ba55684f9f601f64d8844fbf12"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 30 18:57:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 18:57:04 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3100)\n\n\u003c!--pre-commit.ci start--\u003e\nupdates:\n- [github.com/python-jsonschema/check-jsonschema: 0.37.0 →\n0.37.1](https://github.com/python-jsonschema/check-jsonschema/compare/0.37.0...0.37.1)\n- [github.com/astral-sh/ruff-pre-commit: v0.15.7 →\nv0.15.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.7...v0.15.8)\n\u003c!--pre-commit.ci end--\u003e\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1bbeb9045b7075ba55684f9f601f64d8844fbf12",
      "tree": "85deb27034d7eb1966254a914c8a4d6c4f230be0",
      "parents": [
        "3925ac83b3ea8659581c291e42e939fd5da05834"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Mar 26 05:55:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 05:55:19 2026"
      },
      "message": "🔒 ci(workflows): add zizmor security auditing (#3099)\n\nGitHub Actions workflows were vulnerable to several security issues\nincluding template injection, credential exposure, and permission\nover-scoping. These vulnerabilities could allow attackers to execute\narbitrary code or access sensitive tokens.\n\nThis change adds `zizmor` as a pre-commit hook to continuously audit\nworkflow security and fixes all existing vulnerabilities. The fixes\ninclude pinning actions to commit hashes, moving secrets to dedicated\nenvironments, isolating GitHub context from shell execution, and\nrestricting permissions to the minimum required scope.\n\nAll workflows now pass security audit with zero findings. Future\nworkflow changes will be automatically checked before commit.\n\n---------\n\nSigned-off-by: Bernát Gábor \u003cbgabor8@bloomberg.net\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3925ac83b3ea8659581c291e42e939fd5da05834",
      "tree": "84528ec4a73f3178e8a38b3c2e6e66e1d792d658",
      "parents": [
        "5b5e2813dc6afcb9cea007c2ddb917ec79a3d451"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 22:31:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 22:31:12 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3098)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5b5e2813dc6afcb9cea007c2ddb917ec79a3d451",
      "tree": "7430e0bb087387287037d541a30a53b4d582b71b",
      "parents": [
        "dc10a343c91d9b3306a553342e90d6bbe919cc03"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Tue Mar 17 00:32:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 00:32:57 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3096)\n\n\u003c!--pre-commit.ci start--\u003e\nupdates:\n- [github.com/tox-dev/pyproject-fmt: v2.16.2 →\nv2.19.0](https://github.com/tox-dev/pyproject-fmt/compare/v2.16.2...v2.19.0)\n- [github.com/astral-sh/ruff-pre-commit: v0.15.5 →\nv0.15.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.15.5...v0.15.6)\n\u003c!--pre-commit.ci end--\u003e\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cbgabor8@bloomberg.net\u003e"
    },
    {
      "commit": "dc10a343c91d9b3306a553342e90d6bbe919cc03",
      "tree": "86562060ea51a31dcf461c64808dac1bc9746982",
      "parents": [
        "080a1bd20eb9c4b55363506f16964164cd46941d"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Tue Mar 17 00:12:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 00:12:00 2026"
      },
      "message": "🐛 fix(create): use commonpath for correct path validation (#3097)"
    },
    {
      "commit": "080a1bd20eb9c4b55363506f16964164cd46941d",
      "tree": "2c52cb4400aa6eec5868eaceff9ccf17d552e38e",
      "parents": [
        "1a838b278263aeab2a379b5c938c8fcd95150ef6"
      ],
      "author": {
        "name": "Rahul Devikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Thu Mar 12 21:20:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 21:20:34 2026"
      },
      "message": "Enhance upgrade workflow: age check, dedup, issue tracking (#3094)"
    },
    {
      "commit": "1a838b278263aeab2a379b5c938c8fcd95150ef6",
      "tree": "1f051a0224cca783e7c746902c8316189fd8d691",
      "parents": [
        "98c18911a3e3080fea01b1f0efea44e7f5be65ef"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 09 19:23:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 19:23:04 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3095)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "98c18911a3e3080fea01b1f0efea44e7f5be65ef",
      "tree": "52008c63f4a8e5995230595c73a7c5c6fa4206a3",
      "parents": [
        "2aeb9182e247b81fc33a2fba010453d4ca1702b5"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Mar 09 18:20:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 18:20:08 2026"
      },
      "message": "Rename u.bugfix.rst to 3093.bugfix.rst"
    },
    {
      "commit": "2aeb9182e247b81fc33a2fba010453d4ca1702b5",
      "tree": "59c11cc9dd572240c97831b2a84949cf5fca9369",
      "parents": [
        "0b6f4445da2560cb11c4808ead464d94ffdf1b05"
      ],
      "author": {
        "name": "github-actions[bot]",
        "email": "41898282+github-actions[bot]@users.noreply.github.com",
        "time": "Mon Mar 09 17:51:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 17:51:34 2026"
      },
      "message": "Upgrade embedded pip/setuptools/wheel (#3093)\n\nAutomated upgrade of embedded pip, setuptools, and wheel dependencies.\n\nThis PR was created automatically by the [upgrade\nworkflow](https://github.com/pypa/virtualenv/actions/workflows/upgrade.yaml).\n\n---------\n\nCo-authored-by: gaborbernat \u003c690238+gaborbernat@users.noreply.github.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0b6f4445da2560cb11c4808ead464d94ffdf1b05",
      "tree": "8c854f90d3a6822f9d80d7cd189a79fcbde306f8",
      "parents": [
        "e1af35dc7808e75410c55490c35421f461af2920"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Mar 09 17:22:54 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Mar 09 17:22:54 2026"
      },
      "message": "release 21.2.0"
    },
    {
      "commit": "e1af35dc7808e75410c55490c35421f461af2920",
      "tree": "aa0e1a9f87480eb24cf06c39f7c9cee0a2f438ea",
      "parents": [
        "f05bf08f6e2b6fe313aa7378475a30d6151180e2"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Mar 09 17:20:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 17:20:00 2026"
      },
      "message": "🐛 fix(create): prevent venv from racing virtualenv on gitignore creation (#3092)"
    },
    {
      "commit": "f05bf08f6e2b6fe313aa7378475a30d6151180e2",
      "tree": "3da3490bf05aa8bb2a12ea962902515419404569",
      "parents": [
        "0cd0e09526863f46f91a4afc057f179fdacf3878"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Mar 09 16:12:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 16:12:24 2026"
      },
      "message": "🐛 fix(bash): use BASH_SOURCE in activate relocation (#3091)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0cd0e09526863f46f91a4afc057f179fdacf3878",
      "tree": "2485bdb27d77fca3c63d562635c09dc674702d09",
      "parents": [
        "b7ab17e4739322cf2793ff348e8b2c15c6ebcffe"
      ],
      "author": {
        "name": "Rahul Devikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Tue Mar 03 17:55:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 03 17:55:24 2026"
      },
      "message": "fix broken README heading introduced in docs restructure (#3088)\n\n"
    },
    {
      "commit": "b7ab17e4739322cf2793ff348e8b2c15c6ebcffe",
      "tree": "2a6036ee4a00c9f4649b76653fc2e85b5e503e06",
      "parents": [
        "f2062bc8ece1d142523209af4785d302f83e6807"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Mar 02 22:50:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 22:50:02 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3087)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "f2062bc8ece1d142523209af4785d302f83e6807",
      "tree": "45ac6a711271f20178004cdd764120031485c382",
      "parents": [
        "eb27e55d716d8836b24296efa3a73b98ff1b29e8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 02 03:37:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 03:37:00 2026"
      },
      "message": "chore(deps): bump astral-sh/setup-uv from 4 to 7 (#3086)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "eb27e55d716d8836b24296efa3a73b98ff1b29e8",
      "tree": "e6e184484b31e808eeab4991e86b38df53b4d254",
      "parents": [
        "fbb3bd183f2f98bfa68211e014db8995dae64b79"
      ],
      "author": {
        "name": "Rahul Devikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Fri Feb 27 18:51:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 18:51:02 2026"
      },
      "message": "Add type annotations to embed wheel generator output (#3085)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "fbb3bd183f2f98bfa68211e014db8995dae64b79",
      "tree": "59cb59946cb2c1649785a8481d1a2e5c7aad90c1",
      "parents": [
        "a1d3963f1c078a2a7b56af14cf824e254531de65"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Feb 27 16:10:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 16:10:23 2026"
      },
      "message": "chore(deps): bump peter-evans/create-pull-request from 7 to 8 (#3081)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "a1d3963f1c078a2a7b56af14cf824e254531de65",
      "tree": "3402dc30ccf19ebc869ceefc87b150b2a82ac446",
      "parents": [
        "e768d5632065d45a06c4d2e99610e1c92a267166"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Feb 27 16:10:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 16:10:10 2026"
      },
      "message": "chore(deps): bump actions/setup-python from 5 to 6 (#3080)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "e768d5632065d45a06c4d2e99610e1c92a267166",
      "tree": "98fbf6435764a20faf538d4f512473851b260ce6",
      "parents": [
        "9601a70ff8a6974da9670ef2e23ccc965716ae51"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Feb 27 16:10:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 16:10:05 2026"
      },
      "message": "chore(deps): bump actions/upload-artifact from 4 to 7 (#3082)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "9601a70ff8a6974da9670ef2e23ccc965716ae51",
      "tree": "0ff73d83d2227fb3d6ab3c01059693a51ac556ce",
      "parents": [
        "e1118ba6c6734640904891ebc1fb671cc4555593"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Feb 27 16:09:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 16:09:53 2026"
      },
      "message": "chore(deps): bump actions/checkout from 4 to 6 (#3083)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "e1118ba6c6734640904891ebc1fb671cc4555593",
      "tree": "6bae600a51df61bac988f9956f37226cf0dbe5ae",
      "parents": [
        "7f2e162621e2cac954c69c55ab89c7b34daac816"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Feb 27 16:09:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 16:09:31 2026"
      },
      "message": "chore(deps): bump actions/download-artifact from 4 to 8 (#3084)\n\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "7f2e162621e2cac954c69c55ab89c7b34daac816",
      "tree": "5a8a1fedbbb5a001f1e3f2c641aafd1d25ebc1bb",
      "parents": [
        "ada469c9ef03d6f7dd9777ba716479ac0e016d03"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Fri Feb 27 15:44:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 15:44:17 2026"
      },
      "message": "Standardize .github files to .yaml suffix\n\nRemove .yml duplicates and rename to .yaml where needed: rename\ndependabot.yml-\u003e.yaml rename release.yml-\u003e.yaml rename\nFUNDING.yml-\u003e.yaml"
    },
    {
      "commit": "ada469c9ef03d6f7dd9777ba716479ac0e016d03",
      "tree": "5ad20d3d9ae85bcad92aefaee0b8a87cf2025574",
      "parents": [
        "404a3e53ae224f2facef8ab3bdbf8acf13ede0c3"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Fri Feb 27 10:35:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 10:35:54 2026"
      },
      "message": "Move SECURITY.md to .github/SECURITY.md\n\nGitHub recognizes SECURITY.md in .github/ directory. Remove the\nduplicate from repo root."
    },
    {
      "commit": "404a3e53ae224f2facef8ab3bdbf8acf13ede0c3",
      "tree": "95542b79e587251a3893cf77b548a33ea1aa5182",
      "parents": [
        "981d87c29c67fd0f17f1071c7ed443176611c5d6"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Fri Feb 27 08:48:13 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Fri Feb 27 08:48:13 2026"
      },
      "message": "release 21.1.0"
    },
    {
      "commit": "981d87c29c67fd0f17f1071c7ed443176611c5d6",
      "tree": "ddee3f338ec53bdbd49a2d4c8bc9532374828dc4",
      "parents": [
        "17d98ba9c0c13cbdd4c902ac93b1304a2dec092b"
      ],
      "author": {
        "name": "rahuldevikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Thu Feb 26 22:14:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 22:14:28 2026"
      },
      "message": "add comprehensive type annotations across the entire codebase (#3076)\n\nThis change adds full return-type and parameter-type annotations to all\n~625 functions and methods across the entire virtualenv source tree. It\nbrings the codebase from ~26% type coverage to near-complete coverage,\nmatching the standard already established in the sibling tox project.\n\nKey changes include:\n\n- PEP 561 marker: Added `py.typed` so downstream consumers get inline\ntype information.\n- Ruff ANN rules enabled: Replaced the blanket \"ANN\" ignore in\n`pyproject.toml` with only the two specific exceptions (ANN003, ANN401),\nand added FBT001 to the global ignore since the existing\nboolean-positional-argument function signatures are public API.\n- ty type checker hardened: Added --error-on-warning to both `type` and\n`type-3.8` tox environments in `tox.toml`.\n- All modules annotated: config, run, create (including\nCPython/PyPy/GraalPy/RustPython builders), activation (all 7 shells),\nseed (pip install, wheels, periodic update), app_data, util (lock, path,\nsubprocess, zipapp), and discovery — every function now has explicit\nparameter types and return types.\n- Both linters pass clean: ruff check and ty check --python-version 3.14\n--error-on-warning report zero errors. All pre-existing tests continue\nto pass.\n\nFixes: #3075 \n\n### Thanks for contributing, make sure you address all the checklists\n(for details on how see [development\ndocumentation](https://virtualenv.pypa.io/en/latest/development.html#development))\n\n- [x] ran the linter to address style issues (`tox -e fix`)\n- [x] wrote descriptive pull request text\n- [x] ensured there are test(s) validating the fix\n- [x] added news fragment in `docs/changelog` folder\n- [x] updated/extended the documentation\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "17d98ba9c0c13cbdd4c902ac93b1304a2dec092b",
      "tree": "bae9518c3cfe84e84291f9569f0222c39d91b073",
      "parents": [
        "76874203f8f89bf7a0d50b4d241c24687c359cc9"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Feb 26 11:57:49 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Feb 26 11:57:49 2026"
      },
      "message": "Add security policy"
    },
    {
      "commit": "76874203f8f89bf7a0d50b4d241c24687c359cc9",
      "tree": "d11fcbafeada27e7b2f87f90e560f179f544ca98",
      "parents": [
        "8ec3142abedba95a33644171c8872561a943f3c7"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Wed Feb 25 20:19:55 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Wed Feb 25 20:19:55 2026"
      },
      "message": "release 21.0.0"
    },
    {
      "commit": "8ec3142abedba95a33644171c8872561a943f3c7",
      "tree": "f5860434164d4a9a93d4777bd1baa545de46b615",
      "parents": [
        "f89d46c0883334ca9f2f7eb3e2339457e7a44673"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Wed Feb 25 20:18:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 20:18:46 2026"
      },
      "message": "📝 docs(changelog): add removal entry for python-discovery extraction (#3074)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f89d46c0883334ca9f2f7eb3e2339457e7a44673",
      "tree": "836cd3b5ccfc35cbbc1014b120bf25b339d66d1d",
      "parents": [
        "0272c7221bfdc618904eae1ee6ddc15d658ac7a4"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Wed Feb 25 19:50:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 19:50:01 2026"
      },
      "message": "♻️ refactor(discovery): extract py_discovery as self-contained package (#3070)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "0272c7221bfdc618904eae1ee6ddc15d658ac7a4",
      "tree": "35c308175d98dc38e8123b4b0cd3106c7e7f1e0c",
      "parents": [
        "b1ca37fbd7d4f37f79f32f429ba148659c13e471"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Wed Feb 25 19:25:34 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Wed Feb 25 19:25:34 2026"
      },
      "message": "release 20.39.1"
    },
    {
      "commit": "b1ca37fbd7d4f37f79f32f429ba148659c13e471",
      "tree": "13590eec18718f43a09ecd4078cd59488ffc607d",
      "parents": [
        "1d4a33811f99c43e5b78a872997c75baec19a176"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Wed Feb 25 18:18:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 18:18:53 2026"
      },
      "message": "🐛 fix(create): add pythonw3.exe to Windows venvs (#3073)\n\n"
    },
    {
      "commit": "1d4a33811f99c43e5b78a872997c75baec19a176",
      "tree": "c6eb4d389b76bee562e3116fd6189fa8fd66c628",
      "parents": [
        "a10c5d4bd8836641377ec74a4cad6a9f012f7324"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 20:29:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 20:29:24 2026"
      },
      "message": "✨ feat(create): add RustPython support (#3071)\n\nCo-authored-by: elmjag \u003celmjag@users.noreply.github.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a10c5d4bd8836641377ec74a4cad6a9f012f7324",
      "tree": "d57aab9f9b6ea55d3f84796c9219faaeacc0d3b5",
      "parents": [
        "22a886096cbe0ad1211605532cb43045c8da09dd"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 20:02:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 20:02:37 2026"
      },
      "message": "Align dependency versions across projects (#3069)\n\n"
    },
    {
      "commit": "22a886096cbe0ad1211605532cb43045c8da09dd",
      "tree": "dd98c345a1398cdcfaf04b3d765ef1ec1c6b3768",
      "parents": [
        "ad56e781957e47e2b74983bb0bcef2c19dd4e05c"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Feb 23 19:04:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 19:04:05 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3068)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ad56e781957e47e2b74983bb0bcef2c19dd4e05c",
      "tree": "35c28b843310c0fa43865e50ba2e145606c73a58",
      "parents": [
        "ae90556d9da58eb0d3ae9e47af27478862f77099"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Feb 23 18:08:06 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Mon Feb 23 18:08:06 2026"
      },
      "message": "release 20.39.0"
    },
    {
      "commit": "ae90556d9da58eb0d3ae9e47af27478862f77099",
      "tree": "c2a33ea742224122c2a735310a6b85fdda576ff9",
      "parents": [
        "4582e419f061339245138d541221f490243f5203"
      ],
      "author": {
        "name": "rahuldevikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Mon Feb 23 17:40:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 17:40:06 2026"
      },
      "message": "Add auto-upgrade workflow for embedded dependencies (#3057)\n\n"
    },
    {
      "commit": "4582e419f061339245138d541221f490243f5203",
      "tree": "48605142b574c87a8e94ae9bb6e9dc499776f493",
      "parents": [
        "e32d82d40b1a04b32ace376c5bc03a31af3b2967"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 16:55:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 16:55:43 2026"
      },
      "message": "🐛 fix(discovery): resolve version-manager shims to real binaries (#3067)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e32d82d40b1a04b32ace376c5bc03a31af3b2967",
      "tree": "87b2867c6b66b2a039f71a8477b172a6b1abfbe1",
      "parents": [
        "f8f7f482f8e698a5f40622b322b9fe4fec6f549a"
      ],
      "author": {
        "name": "rahuldevikar",
        "email": "rahuldevikar5512@gmail.com",
        "time": "Mon Feb 23 16:15:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 16:15:17 2026"
      },
      "message": "Add architecture (ISA) awareness to Python discovery (#3058)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Bernát Gábor \u003cbgabor8@bloomberg.net\u003e\nCo-authored-by: Bernát Gábor \u003cgaborjbernat@gmail.com\u003e"
    },
    {
      "commit": "f8f7f482f8e698a5f40622b322b9fe4fec6f549a",
      "tree": "0b941462c4eaa1248d7f9dbad5cfa782af38bdc7",
      "parents": [
        "c22b5482372216b131587d25af5dd49503d868cc"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 16:13:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 16:13:08 2026"
      },
      "message": "🧪 test(discovery): fix test_py_info_cache_clear outside venv (#3065)\n\n"
    },
    {
      "commit": "c22b5482372216b131587d25af5dd49503d868cc",
      "tree": "6d5b36631bb29cbff6a9ea89250d19cbf6878768",
      "parents": [
        "a852cbba1386994a99eae1b34e2cc0eacc158167"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 15:42:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 15:42:25 2026"
      },
      "message": "👷 ci(brew): add missing Homebrew Python versions and fix discovery (#3066)\n\n"
    },
    {
      "commit": "a852cbba1386994a99eae1b34e2cc0eacc158167",
      "tree": "9d3960aa2988486c380995a3761cd0b872dc7580",
      "parents": [
        "6d22c9e3175af1a7a4a19a382fdc3da12eb2e6d6"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 13:49:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 13:49:38 2026"
      },
      "message": "🐛 fix(seed): add --ignore-installed to pip invoke seeder (#3064)\n\n"
    },
    {
      "commit": "6d22c9e3175af1a7a4a19a382fdc3da12eb2e6d6",
      "tree": "72250a2f01ddf28d9d88d9470f09fa2526e0093f",
      "parents": [
        "01e8f519fbde08c73fa1f518be28bd5cd69fe85a"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 23 12:29:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 12:29:37 2026"
      },
      "message": "🐛 fix(sdist): include tox.toml in sdist (#3063)\n\n"
    },
    {
      "commit": "01e8f519fbde08c73fa1f518be28bd5cd69fe85a",
      "tree": "83234e1167747f4e19b3de7b81adbcef015b8dde",
      "parents": [
        "fbbb97d01b44fa2e1ec0a4fd9ef31bcea76660d5"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Feb 19 15:42:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 15:42:27 2026"
      },
      "message": "Move from extras to dependency-groups (#3056)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fbbb97d01b44fa2e1ec0a4fd9ef31bcea76660d5",
      "tree": "3b1ff60d8a3a5f43546c9c2ff47ad582c3df6e2e",
      "parents": [
        "c5240c7d1f75dc189115c3828e85d77b5bbf1636"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Thu Feb 19 07:47:01 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "690238+gaborbernat@users.noreply.github.com",
        "time": "Thu Feb 19 07:47:01 2026"
      },
      "message": "release 20.38.0"
    },
    {
      "commit": "c5240c7d1f75dc189115c3828e85d77b5bbf1636",
      "tree": "5f52b870d83cfee71ce8bdd6ae152645546e98f8",
      "parents": [
        "6ff2e3efd639d8abea37b1fbf58942a23b569cc2"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Thu Feb 19 00:21:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 00:21:03 2026"
      },
      "message": "🔧 chore(tox): migrate tox.ini to tox.toml (#3050)\n\n"
    },
    {
      "commit": "6ff2e3efd639d8abea37b1fbf58942a23b569cc2",
      "tree": "8a13a5298583ed3ebd9a72579e95183f0103757e",
      "parents": [
        "d7919e5985a66299db8c2d6a166944faafc73393"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Wed Feb 18 21:31:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 21:31:46 2026"
      },
      "message": "🐛 fix(discovery): harden subprocess interrogation and test reliability (#3054)\n\n"
    },
    {
      "commit": "d7919e5985a66299db8c2d6a166944faafc73393",
      "tree": "f741f2b330344d1e9411cc688f469cb977897f0a",
      "parents": [
        "39568b06970e291ed1ddc07d8966c14a86859dca"
      ],
      "author": {
        "name": "Fridayai700",
        "email": "aifriday700@gmail.com",
        "time": "Tue Feb 17 14:26:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 17 14:26:57 2026"
      },
      "message": "Fix bash activate PKG_CONFIG_PATH unbound variable under bash -u (#3047)\n\n"
    },
    {
      "commit": "39568b06970e291ed1ddc07d8966c14a86859dca",
      "tree": "7a040adb9736ee0f81a128ccaacf15535bb2d5e6",
      "parents": [
        "f745000336a6d574a0458535905121972a10f8ed"
      ],
      "author": {
        "name": "pre-commit-ci[bot]",
        "email": "66853113+pre-commit-ci[bot]@users.noreply.github.com",
        "time": "Mon Feb 16 19:16:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 19:16:07 2026"
      },
      "message": "[pre-commit.ci] pre-commit autoupdate (#3043)\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f745000336a6d574a0458535905121972a10f8ed",
      "tree": "6abc19c0fbe08d0c4755b60d697ee1f2eb6134ff",
      "parents": [
        "fda5bbc886ba7b8430b610209d34592ade96ff04"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "bgabor8@bloomberg.net",
        "time": "Mon Feb 16 16:24:14 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "bgabor8@bloomberg.net",
        "time": "Mon Feb 16 16:26:53 2026"
      },
      "message": "🔒 security(workflows): add explicit permissions to all jobs\n\nCodeQL flagged workflows missing explicit permissions declarations.\nFollowing security best practices, each job now declares minimal\nrequired permissions:\n\n- pre-release: contents:write (push commits/tags)\n- build: contents:read (checkout only)\n- publish: contents:write + id-token:write (already had these)\n- rollback: contents:write (delete releases/tags, force push)\n- test: contents:read (checkout only)\n- check: contents:read (checkout only)\n"
    },
    {
      "commit": "fda5bbc886ba7b8430b610209d34592ade96ff04",
      "tree": "7bbdbb13ec3b4eeea834fc0480a259351d37f6ab",
      "parents": [
        "1ecf0ed9bf08f22314d5bc39f70865eb78320012"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "bgabor8@bloomberg.net",
        "time": "Mon Feb 16 15:40:19 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "bgabor8@bloomberg.net",
        "time": "Mon Feb 16 15:40:19 2026"
      },
      "message": "🐛 fix(release): clear coverage env vars in release env\n\nRelease env was inheriting COVERAGE_PROCESS_START from base testenv,\ncausing coverage to start in pre-commit subprocesses which fail with\nModuleNotFoundError for covdefaults plugin that isn\u0027t installed in\npre-commit venvs.\n"
    },
    {
      "commit": "1ecf0ed9bf08f22314d5bc39f70865eb78320012",
      "tree": "39e138d7300eae6a24278525938464304bd0980f",
      "parents": [
        "4fb0401353b23b88e23867e9ae13effc66903426"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 16 15:26:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 15:26:42 2026"
      },
      "message": "👷 ci(release): split into release and tag-triggered publish (#3042)\n\nSigned-off-by: Bernát Gábor \u003cbgabor8@bloomberg.net\u003e"
    },
    {
      "commit": "4fb0401353b23b88e23867e9ae13effc66903426",
      "tree": "a083c38e5f75c6671c184801219755cbc80ef0c9",
      "parents": [
        "834c7ff4a73de37e6d758ac6dd0ac0388df5666b"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 16 09:13:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 09:13:35 2026"
      },
      "message": "📝 docs: restructure to follow Diataxis framework (#3041)\n\nSigned-off-by: Bernát Gábor \u003cbgabor8@bloomberg.net\u003e"
    },
    {
      "commit": "834c7ff4a73de37e6d758ac6dd0ac0388df5666b",
      "tree": "bf7eab77ee8db7cdacd9230034773cff8aff7716",
      "parents": [
        "a238b9a34acf9aed2e7934382d545324980a8eb7"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "bgabor8@bloomberg.net",
        "time": "Mon Feb 16 04:32:56 2026"
      },
      "committer": {
        "name": "Bernát Gábor",
        "email": "bgabor8@bloomberg.net",
        "time": "Mon Feb 16 04:52:09 2026"
      },
      "message": "👷 ci(release): scope GH_RELEASE_TOKEN to release environment\n\nMove the token out of repo-level secrets by adding `environment: release`\nto the build and rollback jobs, and drop the now-unnecessary token from\nthe build checkout step since it never pushes.\n"
    },
    {
      "commit": "a238b9a34acf9aed2e7934382d545324980a8eb7",
      "tree": "2d5023aec146e0d743697f7828d828a462e28fdc",
      "parents": [
        "44bce57d8eb9b3fc3de4b9649c8b0e724d47e56a"
      ],
      "author": {
        "name": "Bernát Gábor",
        "email": "gaborjbernat@gmail.com",
        "time": "Mon Feb 16 04:28:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 04:28:31 2026"
      },
      "message": "👷 ci(release): add workflow_dispatch release with zipapp and get-virtualenv (#3040)\n\nSigned-off-by: Bernát Gábor \u003cbgabor8@bloomberg.net\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "44bce57d8eb9b3fc3de4b9649c8b0e724d47e56a",
      "tree": "088d5d30dc3c363bb943a19578516e3dbcd33e00",
      "parents": [
        "77ac2276428bd94f72d502eaa1e1cb137309ae4f"
      ],
      "author": {
        "name": "Varun Chawla",
        "email": "34209028+veeceey@users.noreply.github.com",
        "time": "Mon Feb 16 04:07:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 04:07:15 2026"
      },
      "message": "Improve error message when discovery plugin is not available (#3032)\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "77ac2276428bd94f72d502eaa1e1cb137309ae4f",
      "tree": "d54bd39af5fdc59368202bd7a14e8eaee355a69c",
      "parents": [
        "bc1aec74952c74e63079a1c38c35b01ff318a0f8"
      ],
      "author": {
        "name": "Mr. Walls",
        "email": "reactive-firewall@users.noreply.github.com",
        "time": "Mon Feb 16 04:06:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 04:06:50 2026"
      },
      "message": "Version bump filelock to latest (#3039)\n\nCo-authored-by: Mr. Walls \u003ckendrick-walls-work@users.noreply.github.com\u003e\nCo-authored-by: rahuldevikar \u003crahuldevikar5512@gmail.com\u003e\nCo-authored-by: \"Bernát Gábor\" \u003cgaborjbernat@gmail.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bc1aec74952c74e63079a1c38c35b01ff318a0f8",
      "tree": "250eda6fcc4ea237fee17700bd38b906baabc924",
      "parents": [
        "44b7bd6d103bdc19860b0ca05c238171c6283008"
      ],
      "author": {
        "name": "Mr. Walls",
        "email": "reactive-firewall@users.noreply.github.com",
        "time": "Mon Feb 16 04:05:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 04:05:14 2026"
      },
      "message": "Python3.9 dependency range correction (#3038)\n\nCo-authored-by: Mr. Walls \u003ckendrick-walls-work@users.noreply.github.com\u003e"
    }
  ],
  "next": "44b7bd6d103bdc19860b0ca05c238171c6283008"
}
