all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fea3:1211
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 9616b020-ee64-43f0-bd40-32bb68df3246
        host_id: df70f2a3f3d0c26428f22685cfc722ebc48099d99e7332c39e017195
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fea3:1211
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.101
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.102
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fea3:1211
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job ansible-lint explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#7>'
      - '<Job ansible-lint explicit: None implied: None source: osism/cfg-cookiecutter/.zuul.yaml@main#82>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: a560ebed0c0d418aa67b0997c29edc19
      build_refs:
      - branch: main
        change: '770'
        change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)
          | final | patch | `0.8.5` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
          (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
          Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
          the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
          for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc`
          target for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
          Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
          Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
          Bug fixes\n\n- Reject already-installed wheels built with outdated settings
          ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
          Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
          Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
          Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
          Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
          Fix reference documentation recommendation to use `uv cache clean` instead
          of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
          [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
          Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
          Enhancements\n\n- Allow Python requests with missing segments, e.g., just
          `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
          Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
          [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
          Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
          Bug fixes\n\n- Include build settings in cache key for registry source distribution
          lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
          Avoid creating bin links on `uv python upgrade` if they don't already exist
          ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
          Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
          Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
          [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
          Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
          [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
          Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
          shared objects, which fixes matplotlib's `tkagg` backend (the default on
          Linux), Pillow's `PIL.ImageTk` library, and other extension modules that
          need to use libtcl/libtk directly.\n- Tix is no longer provided on Linux.
          This is a deprecated Tk extension that appears to have been previously broken.\n\nSee
          the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
          for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
          `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
          Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
          Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
          Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
          Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
          Preview features\n\n- Add support for `package`-level conflicts in workspaces
          ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
          Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
          `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
          Bug fixes\n\n- Fix regression where `--require-hashes` applied to build
          dependencies in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
          Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
          Include all site packages directories in ephemeral environment overlays
          ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
          Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
          Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
          docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
          [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
          release contains hardening measures to address differentials in behavior
          between uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
          to this release, attackers could construct ZIP files that would be extracted
          differently by pip, uv, and other tools. As a result, ZIPs could be constructed
          that would be considered harmless by (e.g.) scanners, but contain a malicious
          payload when extracted by uv. As of v0.8.6, uv now applies additional checks
          to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
          Response Team](https://devguide.python.org/developer-workflow/psrt/) and
          PyPI maintainers, we were able to determine that these differentials **were
          not exploited** via PyPI during the time they were present. The PyPI team
          has also implemented similar checks and now guards against these parsing
          differentials on upload.\n\nAlthough the practical risk of exploitation
          is low, we take the *hypothetical* risk of parser differentials very seriously.
          Out of an abundance of caution, we have assigned this advisory a CVE identifier
          and have given it a \"moderate\" severity suggestion.\n\nThese changes have
          been validated against the top 15,000 PyPI packages; however, it's plausible
          that a non-malicious ZIP could be falsely rejected with this additional
          hardening. As an escape hatch, users who do encounter breaking changes can
          enable `UV_INSECURE_NO_ZIP_VALIDATION` to restore the previous behavior.
          If you encounter such a rejection, please file an issue in uv and to the
          upstream package.\n\nFor additional information, please refer to the following
          blog posts:\n\n- [Astral: uv security advisory: ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
          [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
          Security\n\n- Harden ZIP streaming to reject repeated entries and other
          malformed ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
          Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
          per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
          Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
          Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
          Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
          Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
          Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
          Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
          Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: Branch creation - At any time
          (no schedule defined), Automerge - At any time (no schedule defined).\n\n\U0001F6A6
          **Automerge**: Disabled by config. Please merge this manually once you are
          satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes conflicted, or you
          tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**: Close this PR
          and you won't be reminded about this update again.\n\n---\n\n - [ ] <!--
          rebase-check -->If you want to rebase/retry this PR, check this box\n\n---\n\nThis
          PR was generated by [Mend Renovate](https://mend.io/renovate/). View the
          [repository job log](https://developer.mend.io/github/osism/cfg-cookiecutter).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/cfg-cookiecutter/pull/770
        commit_id: d034f32ad55356e1a5862e5c519025988c9a15ec
        patchset: d034f32ad55356e1a5862e5c519025988c9a15ec
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cfg-cookiecutter
          name: osism/cfg-cookiecutter
          short_name: cfg-cookiecutter
        src_dir: src/github.com/osism/cfg-cookiecutter
        topic: null
      buildset: bba6a95fcf6943b1a88872d0f6626986
      buildset_refs:
      - branch: main
        change: '770'
        change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)
          | final | patch | `0.8.5` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
          (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
          Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
          the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
          for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc`
          target for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
          Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
          Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
          Bug fixes\n\n- Reject already-installed wheels built with outdated settings
          ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
          Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
          Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
          Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
          Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
          Fix reference documentation recommendation to use `uv cache clean` instead
          of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
          [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
          Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
          Enhancements\n\n- Allow Python requests with missing segments, e.g., just
          `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
          Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
          [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
          Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
          Bug fixes\n\n- Include build settings in cache key for registry source distribution
          lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
          Avoid creating bin links on `uv python upgrade` if they don't already exist
          ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
          Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
          Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
          [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
          Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
          [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
          Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
          shared objects, which fixes matplotlib's `tkagg` backend (the default on
          Linux), Pillow's `PIL.ImageTk` library, and other extension modules that
          need to use libtcl/libtk directly.\n- Tix is no longer provided on Linux.
          This is a deprecated Tk extension that appears to have been previously broken.\n\nSee
          the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
          for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
          `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
          Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
          Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
          Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
          Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
          Preview features\n\n- Add support for `package`-level conflicts in workspaces
          ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
          Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
          `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
          Bug fixes\n\n- Fix regression where `--require-hashes` applied to build
          dependencies in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
          Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
          Include all site packages directories in ephemeral environment overlays
          ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
          Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
          Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
          docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
          [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
          release contains hardening measures to address differentials in behavior
          between uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
          to this release, attackers could construct ZIP files that would be extracted
          differently by pip, uv, and other tools. As a result, ZIPs could be constructed
          that would be considered harmless by (e.g.) scanners, but contain a malicious
          payload when extracted by uv. As of v0.8.6, uv now applies additional checks
          to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
          Response Team](https://devguide.python.org/developer-workflow/psrt/) and
          PyPI maintainers, we were able to determine that these differentials **were
          not exploited** via PyPI during the time they were present. The PyPI team
          has also implemented similar checks and now guards against these parsing
          differentials on upload.\n\nAlthough the practical risk of exploitation
          is low, we take the *hypothetical* risk of parser differentials very seriously.
          Out of an abundance of caution, we have assigned this advisory a CVE identifier
          and have given it a \"moderate\" severity suggestion.\n\nThese changes have
          been validated against the top 15,000 PyPI packages; however, it's plausible
          that a non-malicious ZIP could be falsely rejected with this additional
          hardening. As an escape hatch, users who do encounter breaking changes can
          enable `UV_INSECURE_NO_ZIP_VALIDATION` to restore the previous behavior.
          If you encounter such a rejection, please file an issue in uv and to the
          upstream package.\n\nFor additional information, please refer to the following
          blog posts:\n\n- [Astral: uv security advisory: ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
          [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
          Security\n\n- Harden ZIP streaming to reject repeated entries and other
          malformed ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
          Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
          per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
          Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
          Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
          Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
          Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
          Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
          Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
          Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: Branch creation - At any time
          (no schedule defined), Automerge - At any time (no schedule defined).\n\n\U0001F6A6
          **Automerge**: Disabled by config. Please merge this manually once you are
          satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes conflicted, or you
          tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**: Close this PR
          and you won't be reminded about this update again.\n\n---\n\n - [ ] <!--
          rebase-check -->If you want to rebase/retry this PR, check this box\n\n---\n\nThis
          PR was generated by [Mend Renovate](https://mend.io/renovate/). View the
          [repository job log](https://developer.mend.io/github/osism/cfg-cookiecutter).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/cfg-cookiecutter/pull/770
        commit_id: d034f32ad55356e1a5862e5c519025988c9a15ec
        patchset: d034f32ad55356e1a5862e5c519025988c9a15ec
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cfg-cookiecutter
          name: osism/cfg-cookiecutter
          short_name: cfg-cookiecutter
        src_dir: src/github.com/osism/cfg-cookiecutter
        topic: null
      change: '770'
      change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
        PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n|
        [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv) | final |
        patch | `0.8.5` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
        (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
        Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
        the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
        for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc` target
        for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
        Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
        Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
        Bug fixes\n\n- Reject already-installed wheels built with outdated settings
        ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
        Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
        Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
        Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
        Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
        Fix reference documentation recommendation to use `uv cache clean` instead
        of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
        [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
        Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
        Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
        Add `extra-build-dependencies` hint for any missing module on build failure
        ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
        Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
        Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
        Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
        Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient` ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
        [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
        Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
        Enhancements\n\n- Allow Python requests with missing segments, e.g., just
        `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
        Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
        [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
        Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
        Bug fixes\n\n- Include build settings in cache key for registry source distribution
        lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
        Avoid creating bin links on `uv python upgrade` if they don't already exist
        ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
        Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
        Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
        [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
        Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
        [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
        Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
        shared objects, which fixes matplotlib's `tkagg` backend (the default on Linux),
        Pillow's `PIL.ImageTk` library, and other extension modules that need to use
        libtcl/libtk directly.\n- Tix is no longer provided on Linux. This is a deprecated
        Tk extension that appears to have been previously broken.\n\nSee the [`python-build-standalone`
        release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
        for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
        `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
        Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
        Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
        Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
        Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
        Preview features\n\n- Add support for `package`-level conflicts in workspaces
        ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
        Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
        `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
        Bug fixes\n\n- Fix regression where `--require-hashes` applied to build dependencies
        in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
        Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
        Include all site packages directories in ephemeral environment overlays ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
        Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
        Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
        docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
        [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
        Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
        release contains hardening measures to address differentials in behavior between
        uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
        to this release, attackers could construct ZIP files that would be extracted
        differently by pip, uv, and other tools. As a result, ZIPs could be constructed
        that would be considered harmless by (e.g.) scanners, but contain a malicious
        payload when extracted by uv. As of v0.8.6, uv now applies additional checks
        to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
        Response Team](https://devguide.python.org/developer-workflow/psrt/) and PyPI
        maintainers, we were able to determine that these differentials **were not
        exploited** via PyPI during the time they were present. The PyPI team has
        also implemented similar checks and now guards against these parsing differentials
        on upload.\n\nAlthough the practical risk of exploitation is low, we take
        the *hypothetical* risk of parser differentials very seriously. Out of an
        abundance of caution, we have assigned this advisory a CVE identifier and
        have given it a \"moderate\" severity suggestion.\n\nThese changes have been
        validated against the top 15,000 PyPI packages; however, it's plausible that
        a non-malicious ZIP could be falsely rejected with this additional hardening.
        As an escape hatch, users who do encounter breaking changes can enable `UV_INSECURE_NO_ZIP_VALIDATION`
        to restore the previous behavior. If you encounter such a rejection, please
        file an issue in uv and to the upstream package.\n\nFor additional information,
        please refer to the following blog posts:\n\n- [Astral: uv security advisory:
        ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
        [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
        Security\n\n- Harden ZIP streaming to reject repeated entries and other malformed
        ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
        Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
        per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
        Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
        Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
        Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
        Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
        Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
        Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
        Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n</details>\n\n---\n\n###
        Configuration\n\n\U0001F4C5 **Schedule**: Branch creation - At any time (no
        schedule defined), Automerge - At any time (no schedule defined).\n\n\U0001F6A6
        **Automerge**: Disabled by config. Please merge this manually once you are
        satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes conflicted, or you
        tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**: Close this PR and
        you won't be reminded about this update again.\n\n---\n\n - [ ] <!-- rebase-check
        -->If you want to rebase/retry this PR, check this box\n\n---\n\nThis PR was
        generated by [Mend Renovate](https://mend.io/renovate/). View the [repository
        job log](https://developer.mend.io/github/osism/cfg-cookiecutter).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
      change_url: https://github.com/osism/cfg-cookiecutter/pull/770
      child_jobs: []
      commit_id: d034f32ad55356e1a5862e5c519025988c9a15ec
      event_id: 5a6ac8b0-7c9e-11f0-8903-39bc51a416ad
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/a560ebed0c0d418aa67b0997c29edc19/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/a560ebed0c0d418aa67b0997c29edc19/work/logs
        result_data_file: /var/lib/zuul/builds/a560ebed0c0d418aa67b0997c29edc19/work/results.json
        src_root: /var/lib/zuul/builds/a560ebed0c0d418aa67b0997c29edc19/work/src
        work_root: /var/lib/zuul/builds/a560ebed0c0d418aa67b0997c29edc19/work
      include_vars: []
      items:
      - branch: main
        change: '770'
        change_message: "chore(deps): update ghcr.io/astral-sh/uv docker tag to v0.8.12\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)
          | final | patch | `0.8.5` -> `0.8.12` |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv
          (ghcr.io/astral-sh/uv)</summary>\n\n### [`v0.8.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0812)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.11...0.8.12)\n\n#####
          Python\n\n- Add 3.13.7\n- Improve performance of zstd in Python 3.14\n\nSee
          the [python-build-standalone release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250818)
          for details.\n\n##### Enhancements\n\n- Add an `aarch64-pc-windows-msvc`
          target for `python-platform` ([#&#8203;15347](https://redirect.github.com/astral-sh/uv/pull/15347))\n-
          Add fallback parent process detection to `uv tool update-shell` ([#&#8203;15356](https://redirect.github.com/astral-sh/uv/pull/15356))\n-
          Install non-build-isolation packages in a second phase ([#&#8203;15306](https://redirect.github.com/astral-sh/uv/pull/15306))\n\n#####
          Bug fixes\n\n- Reject already-installed wheels built with outdated settings
          ([#&#8203;15289](https://redirect.github.com/astral-sh/uv/pull/15289))\n-
          Skip interpreters that are not found on query ([#&#8203;15315](https://redirect.github.com/astral-sh/uv/pull/15315))\n-
          Handle dotted package names in script path resolution ([#&#8203;15300](https://redirect.github.com/astral-sh/uv/pull/15300))\n-
          Reject `match-runtime = true` for dynamic packages ([#&#8203;15292](https://redirect.github.com/astral-sh/uv/pull/15292))\n\n#####
          Documentation\n\n- Document improvements to build-isolation setups ([#&#8203;15326](https://redirect.github.com/astral-sh/uv/pull/15326))\n-
          Fix reference documentation recommendation to use `uv cache clean` instead
          of `clear` ([#&#8203;15313](https://redirect.github.com/astral-sh/uv/pull/15313))\n\n###
          [`v0.8.11`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0811)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.10...0.8.11)\n\n#####
          Python\n\n- Add Python 3.14.0rc2\n- Update Pyodide to 0.28.1\n\n##### Enhancements\n\n-
          Add Debian 13 trixie to published Docker images ([#&#8203;15269](https://redirect.github.com/astral-sh/uv/pull/15269))\n-
          Add `extra-build-dependencies` hint for any missing module on build failure
          ([#&#8203;15252](https://redirect.github.com/astral-sh/uv/pull/15252))\n-
          Make 'v' prefix cyan in overlap warnings ([#&#8203;15259](https://redirect.github.com/astral-sh/uv/pull/15259))\n\n#####
          Bug fixes\n\n- Fix missing uv version in extended Docker image tags ([#&#8203;15263](https://redirect.github.com/astral-sh/uv/pull/15263))\n-
          Persist cache info when re-installing cached wheels ([#&#8203;15274](https://redirect.github.com/astral-sh/uv/pull/15274))\n\n#####
          Rust API\n\n- Allow passing custom `reqwest` clients to `RegistryClient`
          ([#&#8203;15281](https://redirect.github.com/astral-sh/uv/pull/15281))\n\n###
          [`v0.8.10`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0810)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.9...0.8.10)\n\n#####
          Python\n\n- Add support for installing Pyodide versions ([#&#8203;14518](https://redirect.github.com/astral-sh/uv/pull/14518))\n\n#####
          Enhancements\n\n- Allow Python requests with missing segments, e.g., just
          `aarch64` ([#&#8203;14399](https://redirect.github.com/astral-sh/uv/pull/14399))\n\n#####
          Preview\n\n- Move warnings for conflicting modules into preview ([#&#8203;15253](https://redirect.github.com/astral-sh/uv/pull/15253))\n\n###
          [`v0.8.9`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#089)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.8...0.8.9)\n\n#####
          Enhancements\n\n- Add `--reinstall` flag to `uv python upgrade` ([#&#8203;15194](https://redirect.github.com/astral-sh/uv/pull/15194))\n\n#####
          Bug fixes\n\n- Include build settings in cache key for registry source distribution
          lookups ([#&#8203;15225](https://redirect.github.com/astral-sh/uv/pull/15225))\n-
          Avoid creating bin links on `uv python upgrade` if they don't already exist
          ([#&#8203;15192](https://redirect.github.com/astral-sh/uv/pull/15192))\n-
          Respect system proxies on macOS and Windows ([#&#8203;15221](https://redirect.github.com/astral-sh/uv/pull/15221))\n\n#####
          Documentation\n\n- Add the 3.14 classifier ([#&#8203;15187](https://redirect.github.com/astral-sh/uv/pull/15187))\n\n###
          [`v0.8.8`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#088)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.7...0.8.8)\n\n#####
          Bug fixes\n\n- Fix `find_uv_bin` compatibility with Python <3.10 ([#&#8203;15177](https://redirect.github.com/astral-sh/uv/pull/15177))\n\n###
          [`v0.8.7`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#087)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.6...0.8.7)\n\n#####
          Python\n\n- On Mac/Linux, libtcl, libtk, and \\_tkinter are built as separate
          shared objects, which fixes matplotlib's `tkagg` backend (the default on
          Linux), Pillow's `PIL.ImageTk` library, and other extension modules that
          need to use libtcl/libtk directly.\n- Tix is no longer provided on Linux.
          This is a deprecated Tk extension that appears to have been previously broken.\n\nSee
          the [`python-build-standalone` release notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250808)
          for details.\n\n##### Enhancements\n\n- Do not update `uv.lock` when using
          `--isolated` ([#&#8203;15154](https://redirect.github.com/astral-sh/uv/pull/15154))\n-
          Add support for `--prefix` and `--with` installations in `find_uv_bin` ([#&#8203;14184](https://redirect.github.com/astral-sh/uv/pull/14184))\n-
          Add support for discovering base prefix installations in `find_uv_bin` ([#&#8203;14181](https://redirect.github.com/astral-sh/uv/pull/14181))\n-
          Improve error messages in `find_uv_bin` ([#&#8203;14182](https://redirect.github.com/astral-sh/uv/pull/14182))\n-
          Warn when two packages write to the same module ([#&#8203;13437](https://redirect.github.com/astral-sh/uv/pull/13437))\n\n#####
          Preview features\n\n- Add support for `package`-level conflicts in workspaces
          ([#&#8203;14906](https://redirect.github.com/astral-sh/uv/pull/14906))\n\n#####
          Configuration\n\n- Add `UV_DEV` and `UV_NO_DEV` environment variables (for
          `--dev` and `--no-dev`) ([#&#8203;15010](https://redirect.github.com/astral-sh/uv/pull/15010))\n\n#####
          Bug fixes\n\n- Fix regression where `--require-hashes` applied to build
          dependencies in `uv pip install` ([#&#8203;15153](https://redirect.github.com/astral-sh/uv/pull/15153))\n-
          Ignore GraalPy devtags ([#&#8203;15013](https://redirect.github.com/astral-sh/uv/pull/15013))\n-
          Include all site packages directories in ephemeral environment overlays
          ([#&#8203;15121](https://redirect.github.com/astral-sh/uv/pull/15121))\n-
          Search in the user scheme scripts directory last in `find_uv_bin` ([#&#8203;14191](https://redirect.github.com/astral-sh/uv/pull/14191))\n\n#####
          Documentation\n\n- Add missing periods (`.`) to list elements in `Features`
          docs page ([#&#8203;15138](https://redirect.github.com/astral-sh/uv/pull/15138))\n\n###
          [`v0.8.6`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#086)\n\n[Compare
          Source](https://redirect.github.com/astral-sh/uv/compare/0.8.5...0.8.6)\n\nThis
          release contains hardening measures to address differentials in behavior
          between uv and Python's built-in ZIP parser ([CVE-2025-54368](https://redirect.github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8)).\n\nPrior
          to this release, attackers could construct ZIP files that would be extracted
          differently by pip, uv, and other tools. As a result, ZIPs could be constructed
          that would be considered harmless by (e.g.) scanners, but contain a malicious
          payload when extracted by uv. As of v0.8.6, uv now applies additional checks
          to reject such ZIPs.\n\nThanks to a triage effort with the [Python Security
          Response Team](https://devguide.python.org/developer-workflow/psrt/) and
          PyPI maintainers, we were able to determine that these differentials **were
          not exploited** via PyPI during the time they were present. The PyPI team
          has also implemented similar checks and now guards against these parsing
          differentials on upload.\n\nAlthough the practical risk of exploitation
          is low, we take the *hypothetical* risk of parser differentials very seriously.
          Out of an abundance of caution, we have assigned this advisory a CVE identifier
          and have given it a \"moderate\" severity suggestion.\n\nThese changes have
          been validated against the top 15,000 PyPI packages; however, it's plausible
          that a non-malicious ZIP could be falsely rejected with this additional
          hardening. As an escape hatch, users who do encounter breaking changes can
          enable `UV_INSECURE_NO_ZIP_VALIDATION` to restore the previous behavior.
          If you encounter such a rejection, please file an issue in uv and to the
          upstream package.\n\nFor additional information, please refer to the following
          blog posts:\n\n- [Astral: uv security advisory: ZIP payload obfuscation](https://astral.sh/blog/uv-security-advisory-cve-2025-54368)\n-
          [PyPI: Preventing ZIP parser confusion attacks on Python package installers](https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks/)\n\n#####
          Security\n\n- Harden ZIP streaming to reject repeated entries and other
          malformed ZIP files ([#&#8203;15136](https://redirect.github.com/astral-sh/uv/pull/15136))\n\n#####
          Python\n\n- Add CPython 3.13.6\n\n##### Configuration\n\n- Add support for
          per-project build-time environment variables ([#&#8203;15095](https://redirect.github.com/astral-sh/uv/pull/15095))\n\n#####
          Bug fixes\n\n- Avoid invalid simplification with conflict markers  ([#&#8203;15041](https://redirect.github.com/astral-sh/uv/pull/15041))\n-
          Respect `UV_HTTP_RETRIES` in `uv publish` ([#&#8203;15106](https://redirect.github.com/astral-sh/uv/pull/15106))\n-
          Support `UV_NO_EDITABLE` where `--no-editable` is supported ([#&#8203;15107](https://redirect.github.com/astral-sh/uv/pull/15107))\n-
          Upgrade `cargo-dist` to add `UV_INSTALLER_URL` to PowerShell installer ([#&#8203;15114](https://redirect.github.com/astral-sh/uv/pull/15114))\n-
          Upgrade `h2` again to avoid `too_many_internal_resets` errors ([#&#8203;15111](https://redirect.github.com/astral-sh/uv/pull/15111))\n-
          Consider `pythonw` when copying entry points in uv run ([#&#8203;15134](https://redirect.github.com/astral-sh/uv/pull/15134))\n\n#####
          Documentation\n\n- Ensure symlink warning is shown ([#&#8203;15126](https://redirect.github.com/astral-sh/uv/pull/15126))\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: Branch creation - At any time
          (no schedule defined), Automerge - At any time (no schedule defined).\n\n\U0001F6A6
          **Automerge**: Disabled by config. Please merge this manually once you are
          satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes conflicted, or you
          tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**: Close this PR
          and you won't be reminded about this update again.\n\n---\n\n - [ ] <!--
          rebase-check -->If you want to rebase/retry this PR, check this box\n\n---\n\nThis
          PR was generated by [Mend Renovate](https://mend.io/renovate/). View the
          [repository job log](https://developer.mend.io/github/osism/cfg-cookiecutter).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/cfg-cookiecutter/pull/770
        commit_id: d034f32ad55356e1a5862e5c519025988c9a15ec
        patchset: d034f32ad55356e1a5862e5c519025988c9a15ec
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cfg-cookiecutter
          name: osism/cfg-cookiecutter
          short_name: cfg-cookiecutter
          src_dir: src/github.com/osism/cfg-cookiecutter
        topic: null
      job: ansible-lint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBnaGNyLmlvL2FzdHJhbC1zaC91diBkb2NrZXIgdGFnIHRvIHYwLjguMTIKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVHlwZSB8IFVwZGF0ZSB8IENoYW5nZSB8CnwtLS18LS0tfC0tLXwtLS18CnwgW2doY3IuaW8vYXN0cmFsLXNoL3V2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2KSB8IGZpbmFsIHwgcGF0Y2ggfCBgMC44LjVgIC0+IGAwLjguMTJgIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5hc3RyYWwtc2gvdXYgKGdoY3IuaW8vYXN0cmFsLXNoL3V2KTwvc3VtbWFyeT4KCiMjIyBbYHYwLjguMTJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDgxMikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuOC4xMS4uLjAuOC4xMikKCiMjIyMjIFB5dGhvbgoKLSBBZGQgMy4xMy43Ci0gSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiB6c3RkIGluIFB5dGhvbiAzLjE0CgpTZWUgdGhlIFtweXRob24tYnVpbGQtc3RhbmRhbG9uZSByZWxlYXNlIG5vdGVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3B5dGhvbi1idWlsZC1zdGFuZGFsb25lL3JlbGVhc2VzL3RhZy8yMDI1MDgxOCkgZm9yIGRldGFpbHMuCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gQWRkIGFuIGBhYXJjaDY0LXBjLXdpbmRvd3MtbXN2Y2AgdGFyZ2V0IGZvciBgcHl0aG9uLXBsYXRmb3JtYCAoWyMmIzgyMDM7MTUzNDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTM0NykpCi0gQWRkIGZhbGxiYWNrIHBhcmVudCBwcm9jZXNzIGRldGVjdGlvbiB0byBgdXYgdG9vbCB1cGRhdGUtc2hlbGxgIChbIyYjODIwMzsxNTM1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MzU2KSkKLSBJbnN0YWxsIG5vbi1idWlsZC1pc29sYXRpb24gcGFja2FnZXMgaW4gYSBzZWNvbmQgcGhhc2UgKFsjJiM4MjAzOzE1MzA2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUzMDYpKQoKIyMjIyMgQnVnIGZpeGVzCgotIFJlamVjdCBhbHJlYWR5LWluc3RhbGxlZCB3aGVlbHMgYnVpbHQgd2l0aCBvdXRkYXRlZCBzZXR0aW5ncyAoWyMmIzgyMDM7MTUyODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI4OSkpCi0gU2tpcCBpbnRlcnByZXRlcnMgdGhhdCBhcmUgbm90IGZvdW5kIG9uIHF1ZXJ5IChbIyYjODIwMzsxNTMxNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MzE1KSkKLSBIYW5kbGUgZG90dGVkIHBhY2thZ2UgbmFtZXMgaW4gc2NyaXB0IHBhdGggcmVzb2x1dGlvbiAoWyMmIzgyMDM7MTUzMDBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTMwMCkpCi0gUmVqZWN0IGBtYXRjaC1ydW50aW1lID0gdHJ1ZWAgZm9yIGR5bmFtaWMgcGFja2FnZXMgKFsjJiM4MjAzOzE1MjkyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyOTIpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSBEb2N1bWVudCBpbXByb3ZlbWVudHMgdG8gYnVpbGQtaXNvbGF0aW9uIHNldHVwcyAoWyMmIzgyMDM7MTUzMjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTMyNikpCi0gRml4IHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIHJlY29tbWVuZGF0aW9uIHRvIHVzZSBgdXYgY2FjaGUgY2xlYW5gIGluc3RlYWQgb2YgYGNsZWFyYCAoWyMmIzgyMDM7MTUzMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTMxMykpCgojIyMgW2B2MC44LjExYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4MTEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguMTAuLi4wLjguMTEpCgojIyMjIyBQeXRob24KCi0gQWRkIFB5dGhvbiAzLjE0LjByYzIKLSBVcGRhdGUgUHlvZGlkZSB0byAwLjI4LjEKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSBBZGQgRGViaWFuIDEzIHRyaXhpZSB0byBwdWJsaXNoZWQgRG9ja2VyIGltYWdlcyAoWyMmIzgyMDM7MTUyNjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI2OSkpCi0gQWRkIGBleHRyYS1idWlsZC1kZXBlbmRlbmNpZXNgIGhpbnQgZm9yIGFueSBtaXNzaW5nIG1vZHVsZSBvbiBidWlsZCBmYWlsdXJlIChbIyYjODIwMzsxNTI1Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MjUyKSkKLSBNYWtlICd2JyBwcmVmaXggY3lhbiBpbiBvdmVybGFwIHdhcm5pbmdzIChbIyYjODIwMzsxNTI1OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MjU5KSkKCiMjIyMjIEJ1ZyBmaXhlcwoKLSBGaXggbWlzc2luZyB1diB2ZXJzaW9uIGluIGV4dGVuZGVkIERvY2tlciBpbWFnZSB0YWdzIChbIyYjODIwMzsxNTI2M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MjYzKSkKLSBQZXJzaXN0IGNhY2hlIGluZm8gd2hlbiByZS1pbnN0YWxsaW5nIGNhY2hlZCB3aGVlbHMgKFsjJiM4MjAzOzE1Mjc0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUyNzQpKQoKIyMjIyMgUnVzdCBBUEkKCi0gQWxsb3cgcGFzc2luZyBjdXN0b20gYHJlcXdlc3RgIGNsaWVudHMgdG8gYFJlZ2lzdHJ5Q2xpZW50YCAoWyMmIzgyMDM7MTUyODFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTI4MSkpCgojIyMgW2B2MC44LjEwYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4MTApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguOS4uLjAuOC4xMCkKCiMjIyMjIFB5dGhvbgoKLSBBZGQgc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBQeW9kaWRlIHZlcnNpb25zIChbIyYjODIwMzsxNDUxOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0NTE4KSkKCiMjIyMjIEVuaGFuY2VtZW50cwoKLSBBbGxvdyBQeXRob24gcmVxdWVzdHMgd2l0aCBtaXNzaW5nIHNlZ21lbnRzLCBlLmcuLCBqdXN0IGBhYXJjaDY0YCAoWyMmIzgyMDM7MTQzOTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDM5OSkpCgojIyMjIyBQcmV2aWV3CgotIE1vdmUgd2FybmluZ3MgZm9yIGNvbmZsaWN0aW5nIG1vZHVsZXMgaW50byBwcmV2aWV3IChbIyYjODIwMzsxNTI1M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MjUzKSkKCiMjIyBbYHYwLjguOWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwODkpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjguOC4uLjAuOC45KQoKIyMjIyMgRW5oYW5jZW1lbnRzCgotIEFkZCBgLS1yZWluc3RhbGxgIGZsYWcgdG8gYHV2IHB5dGhvbiB1cGdyYWRlYCAoWyMmIzgyMDM7MTUxOTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTE5NCkpCgojIyMjIyBCdWcgZml4ZXMKCi0gSW5jbHVkZSBidWlsZCBzZXR0aW5ncyBpbiBjYWNoZSBrZXkgZm9yIHJlZ2lzdHJ5IHNvdXJjZSBkaXN0cmlidXRpb24gbG9va3VwcyAoWyMmIzgyMDM7MTUyMjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTIyNSkpCi0gQXZvaWQgY3JlYXRpbmcgYmluIGxpbmtzIG9uIGB1diBweXRob24gdXBncmFkZWAgaWYgdGhleSBkb24ndCBhbHJlYWR5IGV4aXN0IChbIyYjODIwMzsxNTE5Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTkyKSkKLSBSZXNwZWN0IHN5c3RlbSBwcm94aWVzIG9uIG1hY09TIGFuZCBXaW5kb3dzIChbIyYjODIwMzsxNTIyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MjIxKSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gQWRkIHRoZSAzLjE0IGNsYXNzaWZpZXIgKFsjJiM4MjAzOzE1MTg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxODcpKQoKIyMjIFtgdjAuOC44YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA4OCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuOC43Li4uMC44LjgpCgojIyMjIyBCdWcgZml4ZXMKCi0gRml4IGBmaW5kX3V2X2JpbmAgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiA8My4xMCAoWyMmIzgyMDM7MTUxNzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTE3NykpCgojIyMgW2B2MC44LjdgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDg3KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC44LjYuLi4wLjguNykKCiMjIyMjIFB5dGhvbgoKLSBPbiBNYWMvTGludXgsIGxpYnRjbCwgbGlidGssIGFuZCBcX3RraW50ZXIgYXJlIGJ1aWx0IGFzIHNlcGFyYXRlIHNoYXJlZCBvYmplY3RzLCB3aGljaCBmaXhlcyBtYXRwbG90bGliJ3MgYHRrYWdnYCBiYWNrZW5kICh0aGUgZGVmYXVsdCBvbiBMaW51eCksIFBpbGxvdydzIGBQSUwuSW1hZ2VUa2AgbGlicmFyeSwgYW5kIG90aGVyIGV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgbmVlZCB0byB1c2UgbGlidGNsL2xpYnRrIGRpcmVjdGx5LgotIFRpeCBpcyBubyBsb25nZXIgcHJvdmlkZWQgb24gTGludXguIFRoaXMgaXMgYSBkZXByZWNhdGVkIFRrIGV4dGVuc2lvbiB0aGF0IGFwcGVhcnMgdG8gaGF2ZSBiZWVuIHByZXZpb3VzbHkgYnJva2VuLgoKU2VlIHRoZSBbYHB5dGhvbi1idWlsZC1zdGFuZGFsb25lYCByZWxlYXNlIG5vdGVzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3B5dGhvbi1idWlsZC1zdGFuZGFsb25lL3JlbGVhc2VzL3RhZy8yMDI1MDgwOCkgZm9yIGRldGFpbHMuCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gRG8gbm90IHVwZGF0ZSBgdXYubG9ja2Agd2hlbiB1c2luZyBgLS1pc29sYXRlZGAgKFsjJiM4MjAzOzE1MTU0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxNTQpKQotIEFkZCBzdXBwb3J0IGZvciBgLS1wcmVmaXhgIGFuZCBgLS13aXRoYCBpbnN0YWxsYXRpb25zIGluIGBmaW5kX3V2X2JpbmAgKFsjJiM4MjAzOzE0MTg0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQxODQpKQotIEFkZCBzdXBwb3J0IGZvciBkaXNjb3ZlcmluZyBiYXNlIHByZWZpeCBpbnN0YWxsYXRpb25zIGluIGBmaW5kX3V2X2JpbmAgKFsjJiM4MjAzOzE0MTgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTQxODEpKQotIEltcHJvdmUgZXJyb3IgbWVzc2FnZXMgaW4gYGZpbmRfdXZfYmluYCAoWyMmIzgyMDM7MTQxODJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDE4MikpCi0gV2FybiB3aGVuIHR3byBwYWNrYWdlcyB3cml0ZSB0byB0aGUgc2FtZSBtb2R1bGUgKFsjJiM4MjAzOzEzNDM3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTM0MzcpKQoKIyMjIyMgUHJldmlldyBmZWF0dXJlcwoKLSBBZGQgc3VwcG9ydCBmb3IgYHBhY2thZ2VgLWxldmVsIGNvbmZsaWN0cyBpbiB3b3Jrc3BhY2VzIChbIyYjODIwMzsxNDkwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE0OTA2KSkKCiMjIyMjIENvbmZpZ3VyYXRpb24KCi0gQWRkIGBVVl9ERVZgIGFuZCBgVVZfTk9fREVWYCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBgLS1kZXZgIGFuZCBgLS1uby1kZXZgKSAoWyMmIzgyMDM7MTUwMTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTAxMCkpCgojIyMjIyBCdWcgZml4ZXMKCi0gRml4IHJlZ3Jlc3Npb24gd2hlcmUgYC0tcmVxdWlyZS1oYXNoZXNgIGFwcGxpZWQgdG8gYnVpbGQgZGVwZW5kZW5jaWVzIGluIGB1diBwaXAgaW5zdGFsbGAgKFsjJiM4MjAzOzE1MTUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxNTMpKQotIElnbm9yZSBHcmFhbFB5IGRldnRhZ3MgKFsjJiM4MjAzOzE1MDEzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwMTMpKQotIEluY2x1ZGUgYWxsIHNpdGUgcGFja2FnZXMgZGlyZWN0b3JpZXMgaW4gZXBoZW1lcmFsIGVudmlyb25tZW50IG92ZXJsYXlzIChbIyYjODIwMzsxNTEyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTIxKSkKLSBTZWFyY2ggaW4gdGhlIHVzZXIgc2NoZW1lIHNjcmlwdHMgZGlyZWN0b3J5IGxhc3QgaW4gYGZpbmRfdXZfYmluYCAoWyMmIzgyMDM7MTQxOTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNDE5MSkpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotIEFkZCBtaXNzaW5nIHBlcmlvZHMgKGAuYCkgdG8gbGlzdCBlbGVtZW50cyBpbiBgRmVhdHVyZXNgIGRvY3MgcGFnZSAoWyMmIzgyMDM7MTUxMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTEzOCkpCgojIyMgW2B2MC44LjZgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDg2KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC44LjUuLi4wLjguNikKClRoaXMgcmVsZWFzZSBjb250YWlucyBoYXJkZW5pbmcgbWVhc3VyZXMgdG8gYWRkcmVzcyBkaWZmZXJlbnRpYWxzIGluIGJlaGF2aW9yIGJldHdlZW4gdXYgYW5kIFB5dGhvbidzIGJ1aWx0LWluIFpJUCBwYXJzZXIgKFtDVkUtMjAyNS01NDM2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtOHFmMy14OHY1LTJwajgpKS4KClByaW9yIHRvIHRoaXMgcmVsZWFzZSwgYXR0YWNrZXJzIGNvdWxkIGNvbnN0cnVjdCBaSVAgZmlsZXMgdGhhdCB3b3VsZCBiZSBleHRyYWN0ZWQgZGlmZmVyZW50bHkgYnkgcGlwLCB1diwgYW5kIG90aGVyIHRvb2xzLiBBcyBhIHJlc3VsdCwgWklQcyBjb3VsZCBiZSBjb25zdHJ1Y3RlZCB0aGF0IHdvdWxkIGJlIGNvbnNpZGVyZWQgaGFybWxlc3MgYnkgKGUuZy4pIHNjYW5uZXJzLCBidXQgY29udGFpbiBhIG1hbGljaW91cyBwYXlsb2FkIHdoZW4gZXh0cmFjdGVkIGJ5IHV2LiBBcyBvZiB2MC44LjYsIHV2IG5vdyBhcHBsaWVzIGFkZGl0aW9uYWwgY2hlY2tzIHRvIHJlamVjdCBzdWNoIFpJUHMuCgpUaGFua3MgdG8gYSB0cmlhZ2UgZWZmb3J0IHdpdGggdGhlIFtQeXRob24gU2VjdXJpdHkgUmVzcG9uc2UgVGVhbV0oaHR0cHM6Ly9kZXZndWlkZS5weXRob24ub3JnL2RldmVsb3Blci13b3JrZmxvdy9wc3J0LykgYW5kIFB5UEkgbWFpbnRhaW5lcnMsIHdlIHdlcmUgYWJsZSB0byBkZXRlcm1pbmUgdGhhdCB0aGVzZSBkaWZmZXJlbnRpYWxzICoqd2VyZSBub3QgZXhwbG9pdGVkKiogdmlhIFB5UEkgZHVyaW5nIHRoZSB0aW1lIHRoZXkgd2VyZSBwcmVzZW50LiBUaGUgUHlQSSB0ZWFtIGhhcyBhbHNvIGltcGxlbWVudGVkIHNpbWlsYXIgY2hlY2tzIGFuZCBub3cgZ3VhcmRzIGFnYWluc3QgdGhlc2UgcGFyc2luZyBkaWZmZXJlbnRpYWxzIG9uIHVwbG9hZC4KCkFsdGhvdWdoIHRoZSBwcmFjdGljYWwgcmlzayBvZiBleHBsb2l0YXRpb24gaXMgbG93LCB3ZSB0YWtlIHRoZSAqaHlwb3RoZXRpY2FsKiByaXNrIG9mIHBhcnNlciBkaWZmZXJlbnRpYWxzIHZlcnkgc2VyaW91c2x5LiBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIHdlIGhhdmUgYXNzaWduZWQgdGhpcyBhZHZpc29yeSBhIENWRSBpZGVudGlmaWVyIGFuZCBoYXZlIGdpdmVuIGl0IGEgIm1vZGVyYXRlIiBzZXZlcml0eSBzdWdnZXN0aW9uLgoKVGhlc2UgY2hhbmdlcyBoYXZlIGJlZW4gdmFsaWRhdGVkIGFnYWluc3QgdGhlIHRvcCAxNSwwMDAgUHlQSSBwYWNrYWdlczsgaG93ZXZlciwgaXQncyBwbGF1c2libGUgdGhhdCBhIG5vbi1tYWxpY2lvdXMgWklQIGNvdWxkIGJlIGZhbHNlbHkgcmVqZWN0ZWQgd2l0aCB0aGlzIGFkZGl0aW9uYWwgaGFyZGVuaW5nLiBBcyBhbiBlc2NhcGUgaGF0Y2gsIHVzZXJzIHdobyBkbyBlbmNvdW50ZXIgYnJlYWtpbmcgY2hhbmdlcyBjYW4gZW5hYmxlIGBVVl9JTlNFQ1VSRV9OT19aSVBfVkFMSURBVElPTmAgdG8gcmVzdG9yZSB0aGUgcHJldmlvdXMgYmVoYXZpb3IuIElmIHlvdSBlbmNvdW50ZXIgc3VjaCBhIHJlamVjdGlvbiwgcGxlYXNlIGZpbGUgYW4gaXNzdWUgaW4gdXYgYW5kIHRvIHRoZSB1cHN0cmVhbSBwYWNrYWdlLgoKRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgZm9sbG93aW5nIGJsb2cgcG9zdHM6CgotIFtBc3RyYWw6IHV2IHNlY3VyaXR5IGFkdmlzb3J5OiBaSVAgcGF5bG9hZCBvYmZ1c2NhdGlvbl0oaHR0cHM6Ly9hc3RyYWwuc2gvYmxvZy91di1zZWN1cml0eS1hZHZpc29yeS1jdmUtMjAyNS01NDM2OCkKLSBbUHlQSTogUHJldmVudGluZyBaSVAgcGFyc2VyIGNvbmZ1c2lvbiBhdHRhY2tzIG9uIFB5dGhvbiBwYWNrYWdlIGluc3RhbGxlcnNdKGh0dHBzOi8vYmxvZy5weXBpLm9yZy9wb3N0cy8yMDI1LTA4LTA3LXdoZWVsLWFyY2hpdmUtY29uZnVzaW9uLWF0dGFja3MvKQoKIyMjIyMgU2VjdXJpdHkKCi0gSGFyZGVuIFpJUCBzdHJlYW1pbmcgdG8gcmVqZWN0IHJlcGVhdGVkIGVudHJpZXMgYW5kIG90aGVyIG1hbGZvcm1lZCBaSVAgZmlsZXMgKFsjJiM4MjAzOzE1MTM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxMzYpKQoKIyMjIyMgUHl0aG9uCgotIEFkZCBDUHl0aG9uIDMuMTMuNgoKIyMjIyMgQ29uZmlndXJhdGlvbgoKLSBBZGQgc3VwcG9ydCBmb3IgcGVyLXByb2plY3QgYnVpbGQtdGltZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKFsjJiM4MjAzOzE1MDk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUwOTUpKQoKIyMjIyMgQnVnIGZpeGVzCgotIEF2b2lkIGludmFsaWQgc2ltcGxpZmljYXRpb24gd2l0aCBjb25mbGljdCBtYXJrZXJzICAoWyMmIzgyMDM7MTUwNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xNTA0MSkpCi0gUmVzcGVjdCBgVVZfSFRUUF9SRVRSSUVTYCBpbiBgdXYgcHVibGlzaGAgKFsjJiM4MjAzOzE1MTA2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxMDYpKQotIFN1cHBvcnQgYFVWX05PX0VESVRBQkxFYCB3aGVyZSBgLS1uby1lZGl0YWJsZWAgaXMgc3VwcG9ydGVkIChbIyYjODIwMzsxNTEwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTA3KSkKLSBVcGdyYWRlIGBjYXJnby1kaXN0YCB0byBhZGQgYFVWX0lOU1RBTExFUl9VUkxgIHRvIFBvd2VyU2hlbGwgaW5zdGFsbGVyIChbIyYjODIwMzsxNTExNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTE0KSkKLSBVcGdyYWRlIGBoMmAgYWdhaW4gdG8gYXZvaWQgYHRvb19tYW55X2ludGVybmFsX3Jlc2V0c2AgZXJyb3JzIChbIyYjODIwMzsxNTExMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTExKSkKLSBDb25zaWRlciBgcHl0aG9ud2Agd2hlbiBjb3B5aW5nIGVudHJ5IHBvaW50cyBpbiB1diBydW4gKFsjJiM4MjAzOzE1MTM0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTUxMzQpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSBFbnN1cmUgc3ltbGluayB3YXJuaW5nIGlzIHNob3duIChbIyYjODIwMzsxNTEyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzE1MTI2KSkKCjwvZGV0YWlscz4KCi0tLQoKIyMjIENvbmZpZ3VyYXRpb24KCvCfk4UgKipTY2hlZHVsZSoqOiBCcmFuY2ggY3JlYXRpb24gLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCksIEF1dG9tZXJnZSAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKS4KCvCfmqYgKipBdXRvbWVyZ2UqKjogRGlzYWJsZWQgYnkgY29uZmlnLiBQbGVhc2UgbWVyZ2UgdGhpcyBtYW51YWxseSBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkLgoK4pm7ICoqUmViYXNpbmcqKjogV2hlbmV2ZXIgUFIgYmVjb21lcyBjb25mbGljdGVkLCBvciB5b3UgdGljayB0aGUgcmViYXNlL3JldHJ5IGNoZWNrYm94LgoK8J+UlSAqKklnbm9yZSoqOiBDbG9zZSB0aGlzIFBSIGFuZCB5b3Ugd29uJ3QgYmUgcmVtaW5kZWQgYWJvdXQgdGhpcyB1cGRhdGUgYWdhaW4uCgotLS0KCiAtIFsgXSA8IS0tIHJlYmFzZS1jaGVjayAtLT5JZiB5b3Ugd2FudCB0byByZWJhc2UvcmV0cnkgdGhpcyBQUiwgY2hlY2sgdGhpcyBib3gKCi0tLQoKVGhpcyBQUiB3YXMgZ2VuZXJhdGVkIGJ5IFtNZW5kIFJlbm92YXRlXShodHRwczovL21lbmQuaW8vcmVub3ZhdGUvKS4gVmlldyB0aGUgW3JlcG9zaXRvcnkgam9iIGxvZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9naXRodWIvb3Npc20vY2ZnLWNvb2tpZWN1dHRlcikuCjwhLS1yZW5vdmF0ZS1kZWJ1ZzpleUpqY21WaGRHVmtTVzVXWlhJaU9pSTBNUzQxTVM0eElpd2lkWEJrWVhSbFpFbHVWbVZ5SWpvaU5ERXVOekV1TVNJc0luUmhjbWRsZEVKeVlXNWphQ0k2SW0xaGFXNGlMQ0pzWVdKbGJITWlPbHNpY21WdWIzWmhkR1VpWFgwPS0tPgo=
      patchset: d034f32ad55356e1a5862e5c519025988c9a15ec
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: caa0df55ed55158f32903d317317ac95db4da6ce
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 9b966b7c4a2bfb253652691d791f76f825145a9c
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: caa0df55ed55158f32903d317317ac95db4da6ce
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/ansible-lint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_2/openinfra-zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/cfg-cookiecutter
        name: osism/cfg-cookiecutter
        short_name: cfg-cookiecutter
        src_dir: src/github.com/osism/cfg-cookiecutter
      projects:
        github.com/osism/cfg-cookiecutter:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cfg-cookiecutter
          checkout: main
          checkout_description: zuul branch
          commit: 45d319c84be04de9761e3f4d7fbe2804740943c2
          name: osism/cfg-cookiecutter
          required: false
          short_name: cfg-cookiecutter
          src_dir: src/github.com/osism/cfg-cookiecutter
      ref: refs/pull/770/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
