all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fec6:7c0c
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 44666941-b5d0-4140-9a42-fcc85e904280
        host_id: 7f2607eceb24f4583c6f9496c53c64b51afe50de5eacda4379b21c42
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fec6:7c0c
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.174
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.19
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fec6:7c0c
        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 check-shell-syntax explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#17>'
      - '<Job check-shell-syntax explicit: None implied: None source: osism/generics/.zuul.yaml@main#117>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: ba21eacbb12549af97ad9c9429c45219
      build_refs:
      - branch: main
        change: '581'
        change_message: "chore(deps): update dependency ansible-pylibssh to v1.4.0\n\nThis
          PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [ansible-pylibssh](https://redirect.github.com/ansible/pylibssh) | `==1.3.0`
          \u2192 `==1.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ansible-pylibssh/1.4.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ansible-pylibssh/1.3.0/1.4.0?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>ansible/pylibssh (ansible-pylibssh)</summary>\n\n###
          [`v1.4.0`](https://redirect.github.com/ansible/pylibssh/blob/HEAD/CHANGELOG.rst#v140)\n\n[Compare
          Source](https://redirect.github.com/ansible/pylibssh/compare/v1.3.0...v1.4.0)\n\n\\======\n\n*(2026-03-15)*\n\n##
          Bug fixes\n\n- Fixed the log level mapping to cover the entire `libssh`
          range\n  \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously it
          was not possible to set the most verbose `libssh` log level\n  `SSH_LOG_TRACE`
          to get the most verbose log messages useful for debugging\n  connection
          issues.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
          Features\n\n- Made `libssh` use the Python :external+python:mod:`logging`
          system\n  \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously the
          underlying `libssh` library was writing its logs directly\n  from the C-level
          into `stderr`, which caused inconsistent behavior.\n\n  The default log
          level is now set to :data:`ANSIBLE_PYLIBSSH_TRACE`\n  and the downstream
          loggers are able to trim the verbosity down.\n  If you need performance,
          it is possible to disable logging on the `libssh`\n  side at the source
          by setting a lower logging value, for example:\n\n  .. code-block:: python\n\n
          \ ssh\\_session.set\\_log\\_level(ANSIBLE\\_PYLIBSSH\\_NOLOG)\n\n  Additionally,
          the log level can be now be set also through the session initializer:\n\n
          \ .. code-block:: python\n\n  ssh = Session(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
          \ or the `connect()` method arguments:\n\n  .. code-block:: python\n\n  ssh.connect(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
          \ Setting any levels imported from :external+python:mod:`!logging` is also
          supported.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
          Packaging updates and notes for downstreams\n\n- Started shipping binary
          `armv7l` wheels -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`648`.\n\n- Upgrading :pypi:`cibuildwheel` to v2.22.0
          also picked up Python 3.13\n  and enabled respective wheels to be built
          -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`648`.\n\n- The CI/CD/packaging infrastructure has been updated
          to produce\n  :external+packaging:term:`source distribution <Source Distribution
          (or \"sdist\")>`\n  file names consistent with the requirement of uploading
          artifacts\n  compliant with the core packaging metadata 2.2 or newer to
          PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that, the infrastructure
          has been adjusted to expect\n  :pep:`625`-conforming names in its guard
          rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
          Upgrading :pypi:`cibuildwheel` to v3.1.0 also picked up Python 3.14\n  and
          enabled respective wheels to be built -- by :user:`webknjaz`.\n\n  Building
          the free-threaded wheels remains disabled, though.\n\n  *Related issues
          and pull requests on GitHub:*\n  :issue:`809`, :issue:`823`.\n\n- While
          upgrading :pypi:`cibuildwheel` to v3.1.4, its defaults changed to\n  attempt
          building wheels for the RISC-V architecture. This target is now\n  disabled
          explicitly due to the lack of infrastructure\n  \\-- by :user:`webknjaz`.\n\n
          \ We may enable it at a later time as a separate dedicated effort.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n-
          Due to :pypi:`cibuildwheel` to v3 bundling :pypi:`delocate` 0.13.0 that\n
          \ enforces deployment-target consistency with the brew-installed copy of\n
          \ the `libssh` in the build jobs, the macOS wheels we build now require\n
          \ macOS version 15.0 or newer.\n\n  \\-- by :user:`cidrblock` and :user:`webknjaz`\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n-
          The core packaging metadata now reflects that we test the project under\n
          \ Python 3.13 and 3.14 (with GIL enabled)\n  \\-- by :user:`cidrblock` and
          :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`809`,
          :issue:`825`.\n\n- The pre-cached `armv7l` images we build for the packaging\n
          \ infrastructure are now correctly tagged with the `linux/arm/v7`\n  OCI
          platform tag -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`810`.\n\n- The build backend configuration no longer
          sets the deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
          \ This does not influence the packaging artifacts in any way.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The build backend
          has been configured to exclude\n  :file:`.git_archival.txt` from source
          distributions built from Git\n  \\-- by :user:`webknjaz`.\n\n  This reduces
          the number of false positive warning the backend outputs.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n## Contributor-facing
          changes\n\n- The repository is now set up to auto-format Python files with
          Ruff.\n  Cython keeps being formatted by `cython-lint`.\n\n  \\-- by :user:`webknjaz`\n\n
          \ *Related commits on GitHub:*\n  :commit:`234a2d34`, :commit:`a63b6028`,
          :commit:`0e385696`.\n\n- The linting configuration now uses Ruff to run
          additional checks on\n  pure Python modules -- by :user:`webknjaz`.\n\n
          \ *Related commits on GitHub:*\n  :commit:`817095443f6afa4b3822780110712db148693075`.\n\n-
          `cibuildwheel` started making use of the `armv7l` container image\n  following
          its upgrade to v2.22.0 -- by :user:`webknjaz`.\n\n  *Related issues and
          pull requests on GitHub:*\n  :issue:`648`.\n\n- Increased the amount of
          retries in test to avoid possible timeouts\n  on slower systems -- by :user:`Jakuje`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`777`.\n\n- The
          SSHD start probe client command is now shielded from external\n  environmnent
          and will no longer attempt using an SSH agent on the\n  machine where the
          tests are involved, nor will it use alternative\n  authentication methods
          -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`782`.\n\n- Now that the `macos-13` runner VM image has been decommissioned,
          the CI and CD jobs have been migrated to use `macos-15-intel` -- by :user:`komaldesai13`.\n\n
          \ This includes giving the macOS build job more time to complete as the
          new version is a little slower.\n\n  *Related issues and pull requests on
          GitHub:*\n  :issue:`791`.\n\n- Updated the version of `libssh` to the latest
          release v0.12.0\n  in the cached `manylinux` build environment container
          images\n  \\-- by :user:`Jakuje`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`797`.\n\n- Updated the bundled version of libssh
          to 0.12.0 in platform-specific\n  wheels published on PyPI -- by :user:`Jakuje`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`798`.\n\n- Added
          Fedora and ubi9 images to CI/CD pipeline that are relevant in 2026\n  and
          removed EOL Fedora versions -- by :user:`Jakuje`.\n\n  *Related issues and
          pull requests on GitHub:*\n  :issue:`801`.\n\n- The `pre-commit` framework
          configuration has been updated to be in\n  sync with `awx-plugins` and other
          projects. It now has a few\n  additional linters and a workaround for the
          outdated ones.\n\n  \\-- by :user:`webknjaz`\n\n  *Related issues and pull
          requests on GitHub:*\n  :issue:`803`.\n\n- The standalone mentions of `pylibssh`
          have been replaced with\n  `ansible-pylibssh` in file license headers --
          by :user:`Jakuje`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`804`.\n\n- The CI/CD/packaging infrastructure has been updated
          to produce\n  :external+packaging:term:`source distribution <Source Distribution
          (or \"sdist\")>`\n  file names consistent with the requirement of uploading
          artifacts\n  compliant with the core packaging metadata 2.2 or newer to
          PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that, the infrastructure
          has been adjusted to expect\n  :pep:`625`-conforming names in its guard
          rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
          :pypi:`cibuildwheel` has been upgraded to v3.1.4 -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`820`,
          :issue:`821`, :issue:`823`, :issue:`824`.\n\n- The coverage measurement
          infrastructure now uses the `ctrace`\n  :external+coveragepy:std:ref:`measurement
          core <config_run_core>`\n  across all the Python versions consistently --
          by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`809`, :issue:`825`.\n\n- The CI now tests wheels built for Python
          3.13 and 3.14\n  \\-- by :user:`cidrblock` and :user:`webknjaz`.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`825`.\n\n-
          The pre-cached `armv7l` images we build for the packaging\n  infrastructure
          are now correctly tagged with the `linux/arm/v7`\n  OCI platform tag --
          by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`810`.\n\n- The build backend configuration no longer sets the
          deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
          \ This does not influence the packaging artifacts in any way.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The CI/CD infrastructure
          has been set up to avoid parts of the template\n  injection problem in GitHub
          Actions workflow definitions. The shell\n  entry point has been set to bash
          for any scripts with extra strictness\n  enabled.\n\n  \\-- by :user:`webknjaz`\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`816`.\n\n- The
          CI/CD and packaging infrastructure now sources the PyPI project name\n  from
          :file:`setup.cfg` rather than hardcoding it -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`817`.\n\n- The
          documentation building infrastructure now integrates GitHub-related\n  RST
          roles using the :pypi:`sphinx-issues` extension -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`818`.\n\n***\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/generics).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/generics/pull/581
        commit_id: cedaeb474cf8234395ee0dd822e2700179e00727
        patchset: cedaeb474cf8234395ee0dd822e2700179e00727
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
        src_dir: src/github.com/osism/generics
        topic: null
      buildset: b254893339f042d1b36f3e2321590762
      buildset_refs:
      - branch: main
        change: '581'
        change_message: "chore(deps): update dependency ansible-pylibssh to v1.4.0\n\nThis
          PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [ansible-pylibssh](https://redirect.github.com/ansible/pylibssh) | `==1.3.0`
          \u2192 `==1.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ansible-pylibssh/1.4.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ansible-pylibssh/1.3.0/1.4.0?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>ansible/pylibssh (ansible-pylibssh)</summary>\n\n###
          [`v1.4.0`](https://redirect.github.com/ansible/pylibssh/blob/HEAD/CHANGELOG.rst#v140)\n\n[Compare
          Source](https://redirect.github.com/ansible/pylibssh/compare/v1.3.0...v1.4.0)\n\n\\======\n\n*(2026-03-15)*\n\n##
          Bug fixes\n\n- Fixed the log level mapping to cover the entire `libssh`
          range\n  \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously it
          was not possible to set the most verbose `libssh` log level\n  `SSH_LOG_TRACE`
          to get the most verbose log messages useful for debugging\n  connection
          issues.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
          Features\n\n- Made `libssh` use the Python :external+python:mod:`logging`
          system\n  \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously the
          underlying `libssh` library was writing its logs directly\n  from the C-level
          into `stderr`, which caused inconsistent behavior.\n\n  The default log
          level is now set to :data:`ANSIBLE_PYLIBSSH_TRACE`\n  and the downstream
          loggers are able to trim the verbosity down.\n  If you need performance,
          it is possible to disable logging on the `libssh`\n  side at the source
          by setting a lower logging value, for example:\n\n  .. code-block:: python\n\n
          \ ssh\\_session.set\\_log\\_level(ANSIBLE\\_PYLIBSSH\\_NOLOG)\n\n  Additionally,
          the log level can be now be set also through the session initializer:\n\n
          \ .. code-block:: python\n\n  ssh = Session(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
          \ or the `connect()` method arguments:\n\n  .. code-block:: python\n\n  ssh.connect(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
          \ Setting any levels imported from :external+python:mod:`!logging` is also
          supported.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
          Packaging updates and notes for downstreams\n\n- Started shipping binary
          `armv7l` wheels -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`648`.\n\n- Upgrading :pypi:`cibuildwheel` to v2.22.0
          also picked up Python 3.13\n  and enabled respective wheels to be built
          -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`648`.\n\n- The CI/CD/packaging infrastructure has been updated
          to produce\n  :external+packaging:term:`source distribution <Source Distribution
          (or \"sdist\")>`\n  file names consistent with the requirement of uploading
          artifacts\n  compliant with the core packaging metadata 2.2 or newer to
          PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that, the infrastructure
          has been adjusted to expect\n  :pep:`625`-conforming names in its guard
          rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
          Upgrading :pypi:`cibuildwheel` to v3.1.0 also picked up Python 3.14\n  and
          enabled respective wheels to be built -- by :user:`webknjaz`.\n\n  Building
          the free-threaded wheels remains disabled, though.\n\n  *Related issues
          and pull requests on GitHub:*\n  :issue:`809`, :issue:`823`.\n\n- While
          upgrading :pypi:`cibuildwheel` to v3.1.4, its defaults changed to\n  attempt
          building wheels for the RISC-V architecture. This target is now\n  disabled
          explicitly due to the lack of infrastructure\n  \\-- by :user:`webknjaz`.\n\n
          \ We may enable it at a later time as a separate dedicated effort.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n-
          Due to :pypi:`cibuildwheel` to v3 bundling :pypi:`delocate` 0.13.0 that\n
          \ enforces deployment-target consistency with the brew-installed copy of\n
          \ the `libssh` in the build jobs, the macOS wheels we build now require\n
          \ macOS version 15.0 or newer.\n\n  \\-- by :user:`cidrblock` and :user:`webknjaz`\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n-
          The core packaging metadata now reflects that we test the project under\n
          \ Python 3.13 and 3.14 (with GIL enabled)\n  \\-- by :user:`cidrblock` and
          :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`809`,
          :issue:`825`.\n\n- The pre-cached `armv7l` images we build for the packaging\n
          \ infrastructure are now correctly tagged with the `linux/arm/v7`\n  OCI
          platform tag -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`810`.\n\n- The build backend configuration no longer
          sets the deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
          \ This does not influence the packaging artifacts in any way.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The build backend
          has been configured to exclude\n  :file:`.git_archival.txt` from source
          distributions built from Git\n  \\-- by :user:`webknjaz`.\n\n  This reduces
          the number of false positive warning the backend outputs.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n## Contributor-facing
          changes\n\n- The repository is now set up to auto-format Python files with
          Ruff.\n  Cython keeps being formatted by `cython-lint`.\n\n  \\-- by :user:`webknjaz`\n\n
          \ *Related commits on GitHub:*\n  :commit:`234a2d34`, :commit:`a63b6028`,
          :commit:`0e385696`.\n\n- The linting configuration now uses Ruff to run
          additional checks on\n  pure Python modules -- by :user:`webknjaz`.\n\n
          \ *Related commits on GitHub:*\n  :commit:`817095443f6afa4b3822780110712db148693075`.\n\n-
          `cibuildwheel` started making use of the `armv7l` container image\n  following
          its upgrade to v2.22.0 -- by :user:`webknjaz`.\n\n  *Related issues and
          pull requests on GitHub:*\n  :issue:`648`.\n\n- Increased the amount of
          retries in test to avoid possible timeouts\n  on slower systems -- by :user:`Jakuje`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`777`.\n\n- The
          SSHD start probe client command is now shielded from external\n  environmnent
          and will no longer attempt using an SSH agent on the\n  machine where the
          tests are involved, nor will it use alternative\n  authentication methods
          -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`782`.\n\n- Now that the `macos-13` runner VM image has been decommissioned,
          the CI and CD jobs have been migrated to use `macos-15-intel` -- by :user:`komaldesai13`.\n\n
          \ This includes giving the macOS build job more time to complete as the
          new version is a little slower.\n\n  *Related issues and pull requests on
          GitHub:*\n  :issue:`791`.\n\n- Updated the version of `libssh` to the latest
          release v0.12.0\n  in the cached `manylinux` build environment container
          images\n  \\-- by :user:`Jakuje`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`797`.\n\n- Updated the bundled version of libssh
          to 0.12.0 in platform-specific\n  wheels published on PyPI -- by :user:`Jakuje`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`798`.\n\n- Added
          Fedora and ubi9 images to CI/CD pipeline that are relevant in 2026\n  and
          removed EOL Fedora versions -- by :user:`Jakuje`.\n\n  *Related issues and
          pull requests on GitHub:*\n  :issue:`801`.\n\n- The `pre-commit` framework
          configuration has been updated to be in\n  sync with `awx-plugins` and other
          projects. It now has a few\n  additional linters and a workaround for the
          outdated ones.\n\n  \\-- by :user:`webknjaz`\n\n  *Related issues and pull
          requests on GitHub:*\n  :issue:`803`.\n\n- The standalone mentions of `pylibssh`
          have been replaced with\n  `ansible-pylibssh` in file license headers --
          by :user:`Jakuje`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`804`.\n\n- The CI/CD/packaging infrastructure has been updated
          to produce\n  :external+packaging:term:`source distribution <Source Distribution
          (or \"sdist\")>`\n  file names consistent with the requirement of uploading
          artifacts\n  compliant with the core packaging metadata 2.2 or newer to
          PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that, the infrastructure
          has been adjusted to expect\n  :pep:`625`-conforming names in its guard
          rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
          :pypi:`cibuildwheel` has been upgraded to v3.1.4 -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`820`,
          :issue:`821`, :issue:`823`, :issue:`824`.\n\n- The coverage measurement
          infrastructure now uses the `ctrace`\n  :external+coveragepy:std:ref:`measurement
          core <config_run_core>`\n  across all the Python versions consistently --
          by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`809`, :issue:`825`.\n\n- The CI now tests wheels built for Python
          3.13 and 3.14\n  \\-- by :user:`cidrblock` and :user:`webknjaz`.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`825`.\n\n-
          The pre-cached `armv7l` images we build for the packaging\n  infrastructure
          are now correctly tagged with the `linux/arm/v7`\n  OCI platform tag --
          by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`810`.\n\n- The build backend configuration no longer sets the
          deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
          \ This does not influence the packaging artifacts in any way.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The CI/CD infrastructure
          has been set up to avoid parts of the template\n  injection problem in GitHub
          Actions workflow definitions. The shell\n  entry point has been set to bash
          for any scripts with extra strictness\n  enabled.\n\n  \\-- by :user:`webknjaz`\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`816`.\n\n- The
          CI/CD and packaging infrastructure now sources the PyPI project name\n  from
          :file:`setup.cfg` rather than hardcoding it -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`817`.\n\n- The
          documentation building infrastructure now integrates GitHub-related\n  RST
          roles using the :pypi:`sphinx-issues` extension -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`818`.\n\n***\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/generics).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/generics/pull/581
        commit_id: cedaeb474cf8234395ee0dd822e2700179e00727
        patchset: cedaeb474cf8234395ee0dd822e2700179e00727
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
        src_dir: src/github.com/osism/generics
        topic: null
      change: '581'
      change_message: "chore(deps): update dependency ansible-pylibssh to v1.4.0\n\nThis
        PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
        | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
        [ansible-pylibssh](https://redirect.github.com/ansible/pylibssh) | `==1.3.0`
        \u2192 `==1.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ansible-pylibssh/1.4.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ansible-pylibssh/1.3.0/1.4.0?slim=true)
        |\n\n---\n\n### Release Notes\n\n<details>\n<summary>ansible/pylibssh (ansible-pylibssh)</summary>\n\n###
        [`v1.4.0`](https://redirect.github.com/ansible/pylibssh/blob/HEAD/CHANGELOG.rst#v140)\n\n[Compare
        Source](https://redirect.github.com/ansible/pylibssh/compare/v1.3.0...v1.4.0)\n\n\\======\n\n*(2026-03-15)*\n\n##
        Bug fixes\n\n- Fixed the log level mapping to cover the entire `libssh` range\n
        \ \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously it was not
        possible to set the most verbose `libssh` log level\n  `SSH_LOG_TRACE` to
        get the most verbose log messages useful for debugging\n  connection issues.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n## Features\n\n-
        Made `libssh` use the Python :external+python:mod:`logging` system\n  \\--
        by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously the underlying `libssh`
        library was writing its logs directly\n  from the C-level into `stderr`, which
        caused inconsistent behavior.\n\n  The default log level is now set to :data:`ANSIBLE_PYLIBSSH_TRACE`\n
        \ and the downstream loggers are able to trim the verbosity down.\n  If you
        need performance, it is possible to disable logging on the `libssh`\n  side
        at the source by setting a lower logging value, for example:\n\n  .. code-block::
        python\n\n  ssh\\_session.set\\_log\\_level(ANSIBLE\\_PYLIBSSH\\_NOLOG)\n\n
        \ Additionally, the log level can be now be set also through the session initializer:\n\n
        \ .. code-block:: python\n\n  ssh = Session(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
        \ or the `connect()` method arguments:\n\n  .. code-block:: python\n\n  ssh.connect(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
        \ Setting any levels imported from :external+python:mod:`!logging` is also
        supported.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
        Packaging updates and notes for downstreams\n\n- Started shipping binary `armv7l`
        wheels -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`648`.\n\n- Upgrading :pypi:`cibuildwheel` to v2.22.0 also picked
        up Python 3.13\n  and enabled respective wheels to be built -- by :user:`webknjaz`.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`648`.\n\n- The
        CI/CD/packaging infrastructure has been updated to produce\n  :external+packaging:term:`source
        distribution <Source Distribution (or \"sdist\")>`\n  file names consistent
        with the requirement of uploading artifacts\n  compliant with the core packaging
        metadata 2.2 or newer to PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n
        \ Along with that, the infrastructure has been adjusted to expect\n  :pep:`625`-conforming
        names in its guard rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
        Upgrading :pypi:`cibuildwheel` to v3.1.0 also picked up Python 3.14\n  and
        enabled respective wheels to be built -- by :user:`webknjaz`.\n\n  Building
        the free-threaded wheels remains disabled, though.\n\n  *Related issues and
        pull requests on GitHub:*\n  :issue:`809`, :issue:`823`.\n\n- While upgrading
        :pypi:`cibuildwheel` to v3.1.4, its defaults changed to\n  attempt building
        wheels for the RISC-V architecture. This target is now\n  disabled explicitly
        due to the lack of infrastructure\n  \\-- by :user:`webknjaz`.\n\n  We may
        enable it at a later time as a separate dedicated effort.\n\n  *Related issues
        and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n- Due to :pypi:`cibuildwheel`
        to v3 bundling :pypi:`delocate` 0.13.0 that\n  enforces deployment-target
        consistency with the brew-installed copy of\n  the `libssh` in the build jobs,
        the macOS wheels we build now require\n  macOS version 15.0 or newer.\n\n
        \ \\-- by :user:`cidrblock` and :user:`webknjaz`\n\n  *Related issues and
        pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n- The core packaging
        metadata now reflects that we test the project under\n  Python 3.13 and 3.14
        (with GIL enabled)\n  \\-- by :user:`cidrblock` and :user:`webknjaz`.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`825`.\n\n-
        The pre-cached `armv7l` images we build for the packaging\n  infrastructure
        are now correctly tagged with the `linux/arm/v7`\n  OCI platform tag -- by
        :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`810`.\n\n-
        The build backend configuration no longer sets the deprecated\n  `bdist_wheel.universal`
        setting -- by :user:`webknjaz`.\n\n  This does not influence the packaging
        artifacts in any way.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`811`.\n\n- The build backend has been configured to exclude\n  :file:`.git_archival.txt`
        from source distributions built from Git\n  \\-- by :user:`webknjaz`.\n\n
        \ This reduces the number of false positive warning the backend outputs.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`811`.\n\n## Contributor-facing
        changes\n\n- The repository is now set up to auto-format Python files with
        Ruff.\n  Cython keeps being formatted by `cython-lint`.\n\n  \\-- by :user:`webknjaz`\n\n
        \ *Related commits on GitHub:*\n  :commit:`234a2d34`, :commit:`a63b6028`,
        :commit:`0e385696`.\n\n- The linting configuration now uses Ruff to run additional
        checks on\n  pure Python modules -- by :user:`webknjaz`.\n\n  *Related commits
        on GitHub:*\n  :commit:`817095443f6afa4b3822780110712db148693075`.\n\n- `cibuildwheel`
        started making use of the `armv7l` container image\n  following its upgrade
        to v2.22.0 -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
        on GitHub:*\n  :issue:`648`.\n\n- Increased the amount of retries in test
        to avoid possible timeouts\n  on slower systems -- by :user:`Jakuje`.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`777`.\n\n- The
        SSHD start probe client command is now shielded from external\n  environmnent
        and will no longer attempt using an SSH agent on the\n  machine where the
        tests are involved, nor will it use alternative\n  authentication methods
        -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`782`.\n\n- Now that the `macos-13` runner VM image has been decommissioned,
        the CI and CD jobs have been migrated to use `macos-15-intel` -- by :user:`komaldesai13`.\n\n
        \ This includes giving the macOS build job more time to complete as the new
        version is a little slower.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`791`.\n\n- Updated the version of `libssh` to the latest release
        v0.12.0\n  in the cached `manylinux` build environment container images\n
        \ \\-- by :user:`Jakuje`.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`797`.\n\n- Updated the bundled version of libssh to 0.12.0 in platform-specific\n
        \ wheels published on PyPI -- by :user:`Jakuje`.\n\n  *Related issues and
        pull requests on GitHub:*\n  :issue:`798`.\n\n- Added Fedora and ubi9 images
        to CI/CD pipeline that are relevant in 2026\n  and removed EOL Fedora versions
        -- by :user:`Jakuje`.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`801`.\n\n- The `pre-commit` framework configuration has been updated
        to be in\n  sync with `awx-plugins` and other projects. It now has a few\n
        \ additional linters and a workaround for the outdated ones.\n\n  \\-- by
        :user:`webknjaz`\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`803`.\n\n-
        The standalone mentions of `pylibssh` have been replaced with\n  `ansible-pylibssh`
        in file license headers -- by :user:`Jakuje`.\n\n  *Related issues and pull
        requests on GitHub:*\n  :issue:`804`.\n\n- The CI/CD/packaging infrastructure
        has been updated to produce\n  :external+packaging:term:`source distribution
        <Source Distribution (or \"sdist\")>`\n  file names consistent with the requirement
        of uploading artifacts\n  compliant with the core packaging metadata 2.2 or
        newer to PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that,
        the infrastructure has been adjusted to expect\n  :pep:`625`-conforming names
        in its guard rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
        :pypi:`cibuildwheel` has been upgraded to v3.1.4 -- by :user:`webknjaz`.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`820`,
        :issue:`821`, :issue:`823`, :issue:`824`.\n\n- The coverage measurement infrastructure
        now uses the `ctrace`\n  :external+coveragepy:std:ref:`measurement core <config_run_core>`\n
        \ across all the Python versions consistently -- by :user:`webknjaz`.\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`825`.\n\n-
        The CI now tests wheels built for Python 3.13 and 3.14\n  \\-- by :user:`cidrblock`
        and :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
        \ :issue:`809`, :issue:`825`.\n\n- The pre-cached `armv7l` images we build
        for the packaging\n  infrastructure are now correctly tagged with the `linux/arm/v7`\n
        \ OCI platform tag -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
        on GitHub:*\n  :issue:`810`.\n\n- The build backend configuration no longer
        sets the deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
        \ This does not influence the packaging artifacts in any way.\n\n  *Related
        issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The CI/CD infrastructure
        has been set up to avoid parts of the template\n  injection problem in GitHub
        Actions workflow definitions. The shell\n  entry point has been set to bash
        for any scripts with extra strictness\n  enabled.\n\n  \\-- by :user:`webknjaz`\n\n
        \ *Related issues and pull requests on GitHub:*\n  :issue:`816`.\n\n- The
        CI/CD and packaging infrastructure now sources the PyPI project name\n  from
        :file:`setup.cfg` rather than hardcoding it -- by :user:`webknjaz`.\n\n  *Related
        issues and pull requests on GitHub:*\n  :issue:`817`.\n\n- The documentation
        building infrastructure now integrates GitHub-related\n  RST roles using the
        :pypi:`sphinx-issues` extension -- by :user:`webknjaz`.\n\n  *Related issues
        and pull requests on GitHub:*\n  :issue:`818`.\n\n***\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/generics).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
      change_url: https://github.com/osism/generics/pull/581
      child_jobs: []
      commit_id: cedaeb474cf8234395ee0dd822e2700179e00727
      event_id: 39598590-2940-11f1-9a54-a2d222e8a9b9
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/ba21eacbb12549af97ad9c9429c45219/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/ba21eacbb12549af97ad9c9429c45219/work/logs
        result_data_file: /var/lib/zuul/builds/ba21eacbb12549af97ad9c9429c45219/work/results.json
        src_root: /var/lib/zuul/builds/ba21eacbb12549af97ad9c9429c45219/work/src
        work_root: /var/lib/zuul/builds/ba21eacbb12549af97ad9c9429c45219/work
      include_vars: []
      items:
      - branch: main
        change: '581'
        change_message: "chore(deps): update dependency ansible-pylibssh to v1.4.0\n\nThis
          PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [ansible-pylibssh](https://redirect.github.com/ansible/pylibssh) | `==1.3.0`
          \u2192 `==1.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ansible-pylibssh/1.4.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ansible-pylibssh/1.3.0/1.4.0?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>ansible/pylibssh (ansible-pylibssh)</summary>\n\n###
          [`v1.4.0`](https://redirect.github.com/ansible/pylibssh/blob/HEAD/CHANGELOG.rst#v140)\n\n[Compare
          Source](https://redirect.github.com/ansible/pylibssh/compare/v1.3.0...v1.4.0)\n\n\\======\n\n*(2026-03-15)*\n\n##
          Bug fixes\n\n- Fixed the log level mapping to cover the entire `libssh`
          range\n  \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously it
          was not possible to set the most verbose `libssh` log level\n  `SSH_LOG_TRACE`
          to get the most verbose log messages useful for debugging\n  connection
          issues.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
          Features\n\n- Made `libssh` use the Python :external+python:mod:`logging`
          system\n  \\-- by :user:`Jakuje` and :user:`webknjaz`.\n\n  Previously the
          underlying `libssh` library was writing its logs directly\n  from the C-level
          into `stderr`, which caused inconsistent behavior.\n\n  The default log
          level is now set to :data:`ANSIBLE_PYLIBSSH_TRACE`\n  and the downstream
          loggers are able to trim the verbosity down.\n  If you need performance,
          it is possible to disable logging on the `libssh`\n  side at the source
          by setting a lower logging value, for example:\n\n  .. code-block:: python\n\n
          \ ssh\\_session.set\\_log\\_level(ANSIBLE\\_PYLIBSSH\\_NOLOG)\n\n  Additionally,
          the log level can be now be set also through the session initializer:\n\n
          \ .. code-block:: python\n\n  ssh = Session(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
          \ or the `connect()` method arguments:\n\n  .. code-block:: python\n\n  ssh.connect(log\\_verbosity=ANSIBLE\\_PYLIBSSH\\_TRACE)\n\n
          \ Setting any levels imported from :external+python:mod:`!logging` is also
          supported.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`597`.\n\n##
          Packaging updates and notes for downstreams\n\n- Started shipping binary
          `armv7l` wheels -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`648`.\n\n- Upgrading :pypi:`cibuildwheel` to v2.22.0
          also picked up Python 3.13\n  and enabled respective wheels to be built
          -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`648`.\n\n- The CI/CD/packaging infrastructure has been updated
          to produce\n  :external+packaging:term:`source distribution <Source Distribution
          (or \"sdist\")>`\n  file names consistent with the requirement of uploading
          artifacts\n  compliant with the core packaging metadata 2.2 or newer to
          PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that, the infrastructure
          has been adjusted to expect\n  :pep:`625`-conforming names in its guard
          rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
          Upgrading :pypi:`cibuildwheel` to v3.1.0 also picked up Python 3.14\n  and
          enabled respective wheels to be built -- by :user:`webknjaz`.\n\n  Building
          the free-threaded wheels remains disabled, though.\n\n  *Related issues
          and pull requests on GitHub:*\n  :issue:`809`, :issue:`823`.\n\n- While
          upgrading :pypi:`cibuildwheel` to v3.1.4, its defaults changed to\n  attempt
          building wheels for the RISC-V architecture. This target is now\n  disabled
          explicitly due to the lack of infrastructure\n  \\-- by :user:`webknjaz`.\n\n
          \ We may enable it at a later time as a separate dedicated effort.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n-
          Due to :pypi:`cibuildwheel` to v3 bundling :pypi:`delocate` 0.13.0 that\n
          \ enforces deployment-target consistency with the brew-installed copy of\n
          \ the `libssh` in the build jobs, the macOS wheels we build now require\n
          \ macOS version 15.0 or newer.\n\n  \\-- by :user:`cidrblock` and :user:`webknjaz`\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`824`.\n\n-
          The core packaging metadata now reflects that we test the project under\n
          \ Python 3.13 and 3.14 (with GIL enabled)\n  \\-- by :user:`cidrblock` and
          :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n  :issue:`809`,
          :issue:`825`.\n\n- The pre-cached `armv7l` images we build for the packaging\n
          \ infrastructure are now correctly tagged with the `linux/arm/v7`\n  OCI
          platform tag -- by :user:`webknjaz`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`810`.\n\n- The build backend configuration no longer
          sets the deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
          \ This does not influence the packaging artifacts in any way.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The build backend
          has been configured to exclude\n  :file:`.git_archival.txt` from source
          distributions built from Git\n  \\-- by :user:`webknjaz`.\n\n  This reduces
          the number of false positive warning the backend outputs.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n## Contributor-facing
          changes\n\n- The repository is now set up to auto-format Python files with
          Ruff.\n  Cython keeps being formatted by `cython-lint`.\n\n  \\-- by :user:`webknjaz`\n\n
          \ *Related commits on GitHub:*\n  :commit:`234a2d34`, :commit:`a63b6028`,
          :commit:`0e385696`.\n\n- The linting configuration now uses Ruff to run
          additional checks on\n  pure Python modules -- by :user:`webknjaz`.\n\n
          \ *Related commits on GitHub:*\n  :commit:`817095443f6afa4b3822780110712db148693075`.\n\n-
          `cibuildwheel` started making use of the `armv7l` container image\n  following
          its upgrade to v2.22.0 -- by :user:`webknjaz`.\n\n  *Related issues and
          pull requests on GitHub:*\n  :issue:`648`.\n\n- Increased the amount of
          retries in test to avoid possible timeouts\n  on slower systems -- by :user:`Jakuje`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`777`.\n\n- The
          SSHD start probe client command is now shielded from external\n  environmnent
          and will no longer attempt using an SSH agent on the\n  machine where the
          tests are involved, nor will it use alternative\n  authentication methods
          -- by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`782`.\n\n- Now that the `macos-13` runner VM image has been decommissioned,
          the CI and CD jobs have been migrated to use `macos-15-intel` -- by :user:`komaldesai13`.\n\n
          \ This includes giving the macOS build job more time to complete as the
          new version is a little slower.\n\n  *Related issues and pull requests on
          GitHub:*\n  :issue:`791`.\n\n- Updated the version of `libssh` to the latest
          release v0.12.0\n  in the cached `manylinux` build environment container
          images\n  \\-- by :user:`Jakuje`.\n\n  *Related issues and pull requests
          on GitHub:*\n  :issue:`797`.\n\n- Updated the bundled version of libssh
          to 0.12.0 in platform-specific\n  wheels published on PyPI -- by :user:`Jakuje`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`798`.\n\n- Added
          Fedora and ubi9 images to CI/CD pipeline that are relevant in 2026\n  and
          removed EOL Fedora versions -- by :user:`Jakuje`.\n\n  *Related issues and
          pull requests on GitHub:*\n  :issue:`801`.\n\n- The `pre-commit` framework
          configuration has been updated to be in\n  sync with `awx-plugins` and other
          projects. It now has a few\n  additional linters and a workaround for the
          outdated ones.\n\n  \\-- by :user:`webknjaz`\n\n  *Related issues and pull
          requests on GitHub:*\n  :issue:`803`.\n\n- The standalone mentions of `pylibssh`
          have been replaced with\n  `ansible-pylibssh` in file license headers --
          by :user:`Jakuje`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`804`.\n\n- The CI/CD/packaging infrastructure has been updated
          to produce\n  :external+packaging:term:`source distribution <Source Distribution
          (or \"sdist\")>`\n  file names consistent with the requirement of uploading
          artifacts\n  compliant with the core packaging metadata 2.2 or newer to
          PyPI and\n  TestPyPI -- by :user:`webknjaz`.\n\n  Along with that, the infrastructure
          has been adjusted to expect\n  :pep:`625`-conforming names in its guard
          rails checks\n  \\-- with some :user:`cidrblock`\\ s help.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`808`, :issue:`809`.\n\n-
          :pypi:`cibuildwheel` has been upgraded to v3.1.4 -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`820`,
          :issue:`821`, :issue:`823`, :issue:`824`.\n\n- The coverage measurement
          infrastructure now uses the `ctrace`\n  :external+coveragepy:std:ref:`measurement
          core <config_run_core>`\n  across all the Python versions consistently --
          by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`809`, :issue:`825`.\n\n- The CI now tests wheels built for Python
          3.13 and 3.14\n  \\-- by :user:`cidrblock` and :user:`webknjaz`.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`809`, :issue:`825`.\n\n-
          The pre-cached `armv7l` images we build for the packaging\n  infrastructure
          are now correctly tagged with the `linux/arm/v7`\n  OCI platform tag --
          by :user:`webknjaz`.\n\n  *Related issues and pull requests on GitHub:*\n
          \ :issue:`810`.\n\n- The build backend configuration no longer sets the
          deprecated\n  `bdist_wheel.universal` setting -- by :user:`webknjaz`.\n\n
          \ This does not influence the packaging artifacts in any way.\n\n  *Related
          issues and pull requests on GitHub:*\n  :issue:`811`.\n\n- The CI/CD infrastructure
          has been set up to avoid parts of the template\n  injection problem in GitHub
          Actions workflow definitions. The shell\n  entry point has been set to bash
          for any scripts with extra strictness\n  enabled.\n\n  \\-- by :user:`webknjaz`\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`816`.\n\n- The
          CI/CD and packaging infrastructure now sources the PyPI project name\n  from
          :file:`setup.cfg` rather than hardcoding it -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`817`.\n\n- The
          documentation building infrastructure now integrates GitHub-related\n  RST
          roles using the :pypi:`sphinx-issues` extension -- by :user:`webknjaz`.\n\n
          \ *Related issues and pull requests on GitHub:*\n  :issue:`818`.\n\n***\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/generics).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUiXX0=-->\n"
        change_url: https://github.com/osism/generics/pull/581
        commit_id: cedaeb474cf8234395ee0dd822e2700179e00727
        patchset: cedaeb474cf8234395ee0dd822e2700179e00727
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
          src_dir: src/github.com/osism/generics
        topic: null
      job: check-shell-syntax
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IGFuc2libGUtcHlsaWJzc2ggdG8gdjEuNC4wCgpUaGlzIFBSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdXBkYXRlczoKCnwgUGFja2FnZSB8IENoYW5nZSB8IFtBZ2VdKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgW0NvbmZpZGVuY2VdKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKfC0tLXwtLS18LS0tfC0tLXwKfCBbYW5zaWJsZS1weWxpYnNzaF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2Fuc2libGUvcHlsaWJzc2gpIHwgYD09MS4zLjBgIOKGkiBgPT0xLjQuMGAgfCAhW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9weXBpL2Fuc2libGUtcHlsaWJzc2gvMS40LjA/c2xpbT10cnVlKSB8ICFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvcHlwaS9hbnNpYmxlLXB5bGlic3NoLzEuMy4wLzEuNC4wP3NsaW09dHJ1ZSkgfAoKLS0tCgojIyMgUmVsZWFzZSBOb3RlcwoKPGRldGFpbHM+CjxzdW1tYXJ5PmFuc2libGUvcHlsaWJzc2ggKGFuc2libGUtcHlsaWJzc2gpPC9zdW1tYXJ5PgoKIyMjIFtgdjEuNC4wYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2Fuc2libGUvcHlsaWJzc2gvYmxvYi9IRUFEL0NIQU5HRUxPRy5yc3QjdjE0MCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2Fuc2libGUvcHlsaWJzc2gvY29tcGFyZS92MS4zLjAuLi52MS40LjApCgpcPT09PT09CgoqKDIwMjYtMDMtMTUpKgoKIyMgQnVnIGZpeGVzCgotIEZpeGVkIHRoZSBsb2cgbGV2ZWwgbWFwcGluZyB0byBjb3ZlciB0aGUgZW50aXJlIGBsaWJzc2hgIHJhbmdlCiAgXC0tIGJ5IDp1c2VyOmBKYWt1amVgIGFuZCA6dXNlcjpgd2Via25qYXpgLgoKICBQcmV2aW91c2x5IGl0IHdhcyBub3QgcG9zc2libGUgdG8gc2V0IHRoZSBtb3N0IHZlcmJvc2UgYGxpYnNzaGAgbG9nIGxldmVsCiAgYFNTSF9MT0dfVFJBQ0VgIHRvIGdldCB0aGUgbW9zdCB2ZXJib3NlIGxvZyBtZXNzYWdlcyB1c2VmdWwgZm9yIGRlYnVnZ2luZwogIGNvbm5lY3Rpb24gaXNzdWVzLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDU5N2AuCgojIyBGZWF0dXJlcwoKLSBNYWRlIGBsaWJzc2hgIHVzZSB0aGUgUHl0aG9uIDpleHRlcm5hbCtweXRob246bW9kOmBsb2dnaW5nYCBzeXN0ZW0KICBcLS0gYnkgOnVzZXI6YEpha3VqZWAgYW5kIDp1c2VyOmB3ZWJrbmphemAuCgogIFByZXZpb3VzbHkgdGhlIHVuZGVybHlpbmcgYGxpYnNzaGAgbGlicmFyeSB3YXMgd3JpdGluZyBpdHMgbG9ncyBkaXJlY3RseQogIGZyb20gdGhlIEMtbGV2ZWwgaW50byBgc3RkZXJyYCwgd2hpY2ggY2F1c2VkIGluY29uc2lzdGVudCBiZWhhdmlvci4KCiAgVGhlIGRlZmF1bHQgbG9nIGxldmVsIGlzIG5vdyBzZXQgdG8gOmRhdGE6YEFOU0lCTEVfUFlMSUJTU0hfVFJBQ0VgCiAgYW5kIHRoZSBkb3duc3RyZWFtIGxvZ2dlcnMgYXJlIGFibGUgdG8gdHJpbSB0aGUgdmVyYm9zaXR5IGRvd24uCiAgSWYgeW91IG5lZWQgcGVyZm9ybWFuY2UsIGl0IGlzIHBvc3NpYmxlIHRvIGRpc2FibGUgbG9nZ2luZyBvbiB0aGUgYGxpYnNzaGAKICBzaWRlIGF0IHRoZSBzb3VyY2UgYnkgc2V0dGluZyBhIGxvd2VyIGxvZ2dpbmcgdmFsdWUsIGZvciBleGFtcGxlOgoKICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogIHNzaFxfc2Vzc2lvbi5zZXRcX2xvZ1xfbGV2ZWwoQU5TSUJMRVxfUFlMSUJTU0hcX05PTE9HKQoKICBBZGRpdGlvbmFsbHksIHRoZSBsb2cgbGV2ZWwgY2FuIGJlIG5vdyBiZSBzZXQgYWxzbyB0aHJvdWdoIHRoZSBzZXNzaW9uIGluaXRpYWxpemVyOgoKICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogIHNzaCA9IFNlc3Npb24obG9nXF92ZXJib3NpdHk9QU5TSUJMRVxfUFlMSUJTU0hcX1RSQUNFKQoKICBvciB0aGUgYGNvbm5lY3QoKWAgbWV0aG9kIGFyZ3VtZW50czoKCiAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICBzc2guY29ubmVjdChsb2dcX3ZlcmJvc2l0eT1BTlNJQkxFXF9QWUxJQlNTSFxfVFJBQ0UpCgogIFNldHRpbmcgYW55IGxldmVscyBpbXBvcnRlZCBmcm9tIDpleHRlcm5hbCtweXRob246bW9kOmAhbG9nZ2luZ2AgaXMgYWxzbyBzdXBwb3J0ZWQuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgNTk3YC4KCiMjIFBhY2thZ2luZyB1cGRhdGVzIGFuZCBub3RlcyBmb3IgZG93bnN0cmVhbXMKCi0gU3RhcnRlZCBzaGlwcGluZyBiaW5hcnkgYGFybXY3bGAgd2hlZWxzIC0tIGJ5IDp1c2VyOmB3ZWJrbmphemAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgNjQ4YC4KCi0gVXBncmFkaW5nIDpweXBpOmBjaWJ1aWxkd2hlZWxgIHRvIHYyLjIyLjAgYWxzbyBwaWNrZWQgdXAgUHl0aG9uIDMuMTMKICBhbmQgZW5hYmxlZCByZXNwZWN0aXZlIHdoZWVscyB0byBiZSBidWlsdCAtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDY0OGAuCgotIFRoZSBDSS9DRC9wYWNrYWdpbmcgaW5mcmFzdHJ1Y3R1cmUgaGFzIGJlZW4gdXBkYXRlZCB0byBwcm9kdWNlCiAgOmV4dGVybmFsK3BhY2thZ2luZzp0ZXJtOmBzb3VyY2UgZGlzdHJpYnV0aW9uIDxTb3VyY2UgRGlzdHJpYnV0aW9uIChvciAic2Rpc3QiKT5gCiAgZmlsZSBuYW1lcyBjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVpcmVtZW50IG9mIHVwbG9hZGluZyBhcnRpZmFjdHMKICBjb21wbGlhbnQgd2l0aCB0aGUgY29yZSBwYWNrYWdpbmcgbWV0YWRhdGEgMi4yIG9yIG5ld2VyIHRvIFB5UEkgYW5kCiAgVGVzdFB5UEkgLS0gYnkgOnVzZXI6YHdlYmtuamF6YC4KCiAgQWxvbmcgd2l0aCB0aGF0LCB0aGUgaW5mcmFzdHJ1Y3R1cmUgaGFzIGJlZW4gYWRqdXN0ZWQgdG8gZXhwZWN0CiAgOnBlcDpgNjI1YC1jb25mb3JtaW5nIG5hbWVzIGluIGl0cyBndWFyZCByYWlscyBjaGVja3MKICBcLS0gd2l0aCBzb21lIDp1c2VyOmBjaWRyYmxvY2tgXCBzIGhlbHAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODA4YCwgOmlzc3VlOmA4MDlgLgoKLSBVcGdyYWRpbmcgOnB5cGk6YGNpYnVpbGR3aGVlbGAgdG8gdjMuMS4wIGFsc28gcGlja2VkIHVwIFB5dGhvbiAzLjE0CiAgYW5kIGVuYWJsZWQgcmVzcGVjdGl2ZSB3aGVlbHMgdG8gYmUgYnVpbHQgLS0gYnkgOnVzZXI6YHdlYmtuamF6YC4KCiAgQnVpbGRpbmcgdGhlIGZyZWUtdGhyZWFkZWQgd2hlZWxzIHJlbWFpbnMgZGlzYWJsZWQsIHRob3VnaC4KCiAgKlJlbGF0ZWQgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIG9uIEdpdEh1YjoqCiAgOmlzc3VlOmA4MDlgLCA6aXNzdWU6YDgyM2AuCgotIFdoaWxlIHVwZ3JhZGluZyA6cHlwaTpgY2lidWlsZHdoZWVsYCB0byB2My4xLjQsIGl0cyBkZWZhdWx0cyBjaGFuZ2VkIHRvCiAgYXR0ZW1wdCBidWlsZGluZyB3aGVlbHMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBUaGlzIHRhcmdldCBpcyBub3cKICBkaXNhYmxlZCBleHBsaWNpdGx5IGR1ZSB0byB0aGUgbGFjayBvZiBpbmZyYXN0cnVjdHVyZQogIFwtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICBXZSBtYXkgZW5hYmxlIGl0IGF0IGEgbGF0ZXIgdGltZSBhcyBhIHNlcGFyYXRlIGRlZGljYXRlZCBlZmZvcnQuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODA5YCwgOmlzc3VlOmA4MjRgLgoKLSBEdWUgdG8gOnB5cGk6YGNpYnVpbGR3aGVlbGAgdG8gdjMgYnVuZGxpbmcgOnB5cGk6YGRlbG9jYXRlYCAwLjEzLjAgdGhhdAogIGVuZm9yY2VzIGRlcGxveW1lbnQtdGFyZ2V0IGNvbnNpc3RlbmN5IHdpdGggdGhlIGJyZXctaW5zdGFsbGVkIGNvcHkgb2YKICB0aGUgYGxpYnNzaGAgaW4gdGhlIGJ1aWxkIGpvYnMsIHRoZSBtYWNPUyB3aGVlbHMgd2UgYnVpbGQgbm93IHJlcXVpcmUKICBtYWNPUyB2ZXJzaW9uIDE1LjAgb3IgbmV3ZXIuCgogIFwtLSBieSA6dXNlcjpgY2lkcmJsb2NrYCBhbmQgOnVzZXI6YHdlYmtuamF6YAoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgwOWAsIDppc3N1ZTpgODI0YC4KCi0gVGhlIGNvcmUgcGFja2FnaW5nIG1ldGFkYXRhIG5vdyByZWZsZWN0cyB0aGF0IHdlIHRlc3QgdGhlIHByb2plY3QgdW5kZXIKICBQeXRob24gMy4xMyBhbmQgMy4xNCAod2l0aCBHSUwgZW5hYmxlZCkKICBcLS0gYnkgOnVzZXI6YGNpZHJibG9ja2AgYW5kIDp1c2VyOmB3ZWJrbmphemAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODA5YCwgOmlzc3VlOmA4MjVgLgoKLSBUaGUgcHJlLWNhY2hlZCBgYXJtdjdsYCBpbWFnZXMgd2UgYnVpbGQgZm9yIHRoZSBwYWNrYWdpbmcKICBpbmZyYXN0cnVjdHVyZSBhcmUgbm93IGNvcnJlY3RseSB0YWdnZWQgd2l0aCB0aGUgYGxpbnV4L2FybS92N2AKICBPQ0kgcGxhdGZvcm0gdGFnIC0tIGJ5IDp1c2VyOmB3ZWJrbmphemAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODEwYC4KCi0gVGhlIGJ1aWxkIGJhY2tlbmQgY29uZmlndXJhdGlvbiBubyBsb25nZXIgc2V0cyB0aGUgZGVwcmVjYXRlZAogIGBiZGlzdF93aGVlbC51bml2ZXJzYWxgIHNldHRpbmcgLS0gYnkgOnVzZXI6YHdlYmtuamF6YC4KCiAgVGhpcyBkb2VzIG5vdCBpbmZsdWVuY2UgdGhlIHBhY2thZ2luZyBhcnRpZmFjdHMgaW4gYW55IHdheS4KCiAgKlJlbGF0ZWQgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIG9uIEdpdEh1YjoqCiAgOmlzc3VlOmA4MTFgLgoKLSBUaGUgYnVpbGQgYmFja2VuZCBoYXMgYmVlbiBjb25maWd1cmVkIHRvIGV4Y2x1ZGUKICA6ZmlsZTpgLmdpdF9hcmNoaXZhbC50eHRgIGZyb20gc291cmNlIGRpc3RyaWJ1dGlvbnMgYnVpbHQgZnJvbSBHaXQKICBcLS0gYnkgOnVzZXI6YHdlYmtuamF6YC4KCiAgVGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2YgZmFsc2UgcG9zaXRpdmUgd2FybmluZyB0aGUgYmFja2VuZCBvdXRwdXRzLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgxMWAuCgojIyBDb250cmlidXRvci1mYWNpbmcgY2hhbmdlcwoKLSBUaGUgcmVwb3NpdG9yeSBpcyBub3cgc2V0IHVwIHRvIGF1dG8tZm9ybWF0IFB5dGhvbiBmaWxlcyB3aXRoIFJ1ZmYuCiAgQ3l0aG9uIGtlZXBzIGJlaW5nIGZvcm1hdHRlZCBieSBgY3l0aG9uLWxpbnRgLgoKICBcLS0gYnkgOnVzZXI6YHdlYmtuamF6YAoKICAqUmVsYXRlZCBjb21taXRzIG9uIEdpdEh1YjoqCiAgOmNvbW1pdDpgMjM0YTJkMzRgLCA6Y29tbWl0OmBhNjNiNjAyOGAsIDpjb21taXQ6YDBlMzg1Njk2YC4KCi0gVGhlIGxpbnRpbmcgY29uZmlndXJhdGlvbiBub3cgdXNlcyBSdWZmIHRvIHJ1biBhZGRpdGlvbmFsIGNoZWNrcyBvbgogIHB1cmUgUHl0aG9uIG1vZHVsZXMgLS0gYnkgOnVzZXI6YHdlYmtuamF6YC4KCiAgKlJlbGF0ZWQgY29tbWl0cyBvbiBHaXRIdWI6KgogIDpjb21taXQ6YDgxNzA5NTQ0M2Y2YWZhNGIzODIyNzgwMTEwNzEyZGIxNDg2OTMwNzVgLgoKLSBgY2lidWlsZHdoZWVsYCBzdGFydGVkIG1ha2luZyB1c2Ugb2YgdGhlIGBhcm12N2xgIGNvbnRhaW5lciBpbWFnZQogIGZvbGxvd2luZyBpdHMgdXBncmFkZSB0byB2Mi4yMi4wIC0tIGJ5IDp1c2VyOmB3ZWJrbmphemAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgNjQ4YC4KCi0gSW5jcmVhc2VkIHRoZSBhbW91bnQgb2YgcmV0cmllcyBpbiB0ZXN0IHRvIGF2b2lkIHBvc3NpYmxlIHRpbWVvdXRzCiAgb24gc2xvd2VyIHN5c3RlbXMgLS0gYnkgOnVzZXI6YEpha3VqZWAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgNzc3YC4KCi0gVGhlIFNTSEQgc3RhcnQgcHJvYmUgY2xpZW50IGNvbW1hbmQgaXMgbm93IHNoaWVsZGVkIGZyb20gZXh0ZXJuYWwKICBlbnZpcm9ubW5lbnQgYW5kIHdpbGwgbm8gbG9uZ2VyIGF0dGVtcHQgdXNpbmcgYW4gU1NIIGFnZW50IG9uIHRoZQogIG1hY2hpbmUgd2hlcmUgdGhlIHRlc3RzIGFyZSBpbnZvbHZlZCwgbm9yIHdpbGwgaXQgdXNlIGFsdGVybmF0aXZlCiAgYXV0aGVudGljYXRpb24gbWV0aG9kcyAtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDc4MmAuCgotIE5vdyB0aGF0IHRoZSBgbWFjb3MtMTNgIHJ1bm5lciBWTSBpbWFnZSBoYXMgYmVlbiBkZWNvbW1pc3Npb25lZCwgdGhlIENJIGFuZCBDRCBqb2JzIGhhdmUgYmVlbiBtaWdyYXRlZCB0byB1c2UgYG1hY29zLTE1LWludGVsYCAtLSBieSA6dXNlcjpga29tYWxkZXNhaTEzYC4KCiAgVGhpcyBpbmNsdWRlcyBnaXZpbmcgdGhlIG1hY09TIGJ1aWxkIGpvYiBtb3JlIHRpbWUgdG8gY29tcGxldGUgYXMgdGhlIG5ldyB2ZXJzaW9uIGlzIGEgbGl0dGxlIHNsb3dlci4KCiAgKlJlbGF0ZWQgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIG9uIEdpdEh1YjoqCiAgOmlzc3VlOmA3OTFgLgoKLSBVcGRhdGVkIHRoZSB2ZXJzaW9uIG9mIGBsaWJzc2hgIHRvIHRoZSBsYXRlc3QgcmVsZWFzZSB2MC4xMi4wCiAgaW4gdGhlIGNhY2hlZCBgbWFueWxpbnV4YCBidWlsZCBlbnZpcm9ubWVudCBjb250YWluZXIgaW1hZ2VzCiAgXC0tIGJ5IDp1c2VyOmBKYWt1amVgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDc5N2AuCgotIFVwZGF0ZWQgdGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBsaWJzc2ggdG8gMC4xMi4wIGluIHBsYXRmb3JtLXNwZWNpZmljCiAgd2hlZWxzIHB1Ymxpc2hlZCBvbiBQeVBJIC0tIGJ5IDp1c2VyOmBKYWt1amVgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDc5OGAuCgotIEFkZGVkIEZlZG9yYSBhbmQgdWJpOSBpbWFnZXMgdG8gQ0kvQ0QgcGlwZWxpbmUgdGhhdCBhcmUgcmVsZXZhbnQgaW4gMjAyNgogIGFuZCByZW1vdmVkIEVPTCBGZWRvcmEgdmVyc2lvbnMgLS0gYnkgOnVzZXI6YEpha3VqZWAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODAxYC4KCi0gVGhlIGBwcmUtY29tbWl0YCBmcmFtZXdvcmsgY29uZmlndXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIGJlIGluCiAgc3luYyB3aXRoIGBhd3gtcGx1Z2luc2AgYW5kIG90aGVyIHByb2plY3RzLiBJdCBub3cgaGFzIGEgZmV3CiAgYWRkaXRpb25hbCBsaW50ZXJzIGFuZCBhIHdvcmthcm91bmQgZm9yIHRoZSBvdXRkYXRlZCBvbmVzLgoKICBcLS0gYnkgOnVzZXI6YHdlYmtuamF6YAoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgwM2AuCgotIFRoZSBzdGFuZGFsb25lIG1lbnRpb25zIG9mIGBweWxpYnNzaGAgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGgKICBgYW5zaWJsZS1weWxpYnNzaGAgaW4gZmlsZSBsaWNlbnNlIGhlYWRlcnMgLS0gYnkgOnVzZXI6YEpha3VqZWAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODA0YC4KCi0gVGhlIENJL0NEL3BhY2thZ2luZyBpbmZyYXN0cnVjdHVyZSBoYXMgYmVlbiB1cGRhdGVkIHRvIHByb2R1Y2UKICA6ZXh0ZXJuYWwrcGFja2FnaW5nOnRlcm06YHNvdXJjZSBkaXN0cmlidXRpb24gPFNvdXJjZSBEaXN0cmlidXRpb24gKG9yICJzZGlzdCIpPmAKICBmaWxlIG5hbWVzIGNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnQgb2YgdXBsb2FkaW5nIGFydGlmYWN0cwogIGNvbXBsaWFudCB3aXRoIHRoZSBjb3JlIHBhY2thZ2luZyBtZXRhZGF0YSAyLjIgb3IgbmV3ZXIgdG8gUHlQSSBhbmQKICBUZXN0UHlQSSAtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICBBbG9uZyB3aXRoIHRoYXQsIHRoZSBpbmZyYXN0cnVjdHVyZSBoYXMgYmVlbiBhZGp1c3RlZCB0byBleHBlY3QKICA6cGVwOmA2MjVgLWNvbmZvcm1pbmcgbmFtZXMgaW4gaXRzIGd1YXJkIHJhaWxzIGNoZWNrcwogIFwtLSB3aXRoIHNvbWUgOnVzZXI6YGNpZHJibG9ja2BcIHMgaGVscC4KCiAgKlJlbGF0ZWQgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIG9uIEdpdEh1YjoqCiAgOmlzc3VlOmA4MDhgLCA6aXNzdWU6YDgwOWAuCgotIDpweXBpOmBjaWJ1aWxkd2hlZWxgIGhhcyBiZWVuIHVwZ3JhZGVkIHRvIHYzLjEuNCAtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgwOWAsIDppc3N1ZTpgODIwYCwgOmlzc3VlOmA4MjFgLCA6aXNzdWU6YDgyM2AsIDppc3N1ZTpgODI0YC4KCi0gVGhlIGNvdmVyYWdlIG1lYXN1cmVtZW50IGluZnJhc3RydWN0dXJlIG5vdyB1c2VzIHRoZSBgY3RyYWNlYAogIDpleHRlcm5hbCtjb3ZlcmFnZXB5OnN0ZDpyZWY6YG1lYXN1cmVtZW50IGNvcmUgPGNvbmZpZ19ydW5fY29yZT5gCiAgYWNyb3NzIGFsbCB0aGUgUHl0aG9uIHZlcnNpb25zIGNvbnNpc3RlbnRseSAtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgwOWAsIDppc3N1ZTpgODI1YC4KCi0gVGhlIENJIG5vdyB0ZXN0cyB3aGVlbHMgYnVpbHQgZm9yIFB5dGhvbiAzLjEzIGFuZCAzLjE0CiAgXC0tIGJ5IDp1c2VyOmBjaWRyYmxvY2tgIGFuZCA6dXNlcjpgd2Via25qYXpgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgwOWAsIDppc3N1ZTpgODI1YC4KCi0gVGhlIHByZS1jYWNoZWQgYGFybXY3bGAgaW1hZ2VzIHdlIGJ1aWxkIGZvciB0aGUgcGFja2FnaW5nCiAgaW5mcmFzdHJ1Y3R1cmUgYXJlIG5vdyBjb3JyZWN0bHkgdGFnZ2VkIHdpdGggdGhlIGBsaW51eC9hcm0vdjdgCiAgT0NJIHBsYXRmb3JtIHRhZyAtLSBieSA6dXNlcjpgd2Via25qYXpgLgoKICAqUmVsYXRlZCBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdHMgb24gR2l0SHViOioKICA6aXNzdWU6YDgxMGAuCgotIFRoZSBidWlsZCBiYWNrZW5kIGNvbmZpZ3VyYXRpb24gbm8gbG9uZ2VyIHNldHMgdGhlIGRlcHJlY2F0ZWQKICBgYmRpc3Rfd2hlZWwudW5pdmVyc2FsYCBzZXR0aW5nIC0tIGJ5IDp1c2VyOmB3ZWJrbmphemAuCgogIFRoaXMgZG9lcyBub3QgaW5mbHVlbmNlIHRoZSBwYWNrYWdpbmcgYXJ0aWZhY3RzIGluIGFueSB3YXkuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODExYC4KCi0gVGhlIENJL0NEIGluZnJhc3RydWN0dXJlIGhhcyBiZWVuIHNldCB1cCB0byBhdm9pZCBwYXJ0cyBvZiB0aGUgdGVtcGxhdGUKICBpbmplY3Rpb24gcHJvYmxlbSBpbiBHaXRIdWIgQWN0aW9ucyB3b3JrZmxvdyBkZWZpbml0aW9ucy4gVGhlIHNoZWxsCiAgZW50cnkgcG9pbnQgaGFzIGJlZW4gc2V0IHRvIGJhc2ggZm9yIGFueSBzY3JpcHRzIHdpdGggZXh0cmEgc3RyaWN0bmVzcwogIGVuYWJsZWQuCgogIFwtLSBieSA6dXNlcjpgd2Via25qYXpgCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODE2YC4KCi0gVGhlIENJL0NEIGFuZCBwYWNrYWdpbmcgaW5mcmFzdHJ1Y3R1cmUgbm93IHNvdXJjZXMgdGhlIFB5UEkgcHJvamVjdCBuYW1lCiAgZnJvbSA6ZmlsZTpgc2V0dXAuY2ZnYCByYXRoZXIgdGhhbiBoYXJkY29kaW5nIGl0IC0tIGJ5IDp1c2VyOmB3ZWJrbmphemAuCgogICpSZWxhdGVkIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cyBvbiBHaXRIdWI6KgogIDppc3N1ZTpgODE3YC4KCi0gVGhlIGRvY3VtZW50YXRpb24gYnVpbGRpbmcgaW5mcmFzdHJ1Y3R1cmUgbm93IGludGVncmF0ZXMgR2l0SHViLXJlbGF0ZWQKICBSU1Qgcm9sZXMgdXNpbmcgdGhlIDpweXBpOmBzcGhpbngtaXNzdWVzYCBleHRlbnNpb24gLS0gYnkgOnVzZXI6YHdlYmtuamF6YC4KCiAgKlJlbGF0ZWQgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzIG9uIEdpdEh1YjoqCiAgOmlzc3VlOmA4MThgLgoKKioqCgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogQnJhbmNoIGNyZWF0aW9uIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLCBBdXRvbWVyZ2UgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkuCgrwn5qmICoqQXV0b21lcmdlKio6IERpc2FibGVkIGJ5IGNvbmZpZy4gUGxlYXNlIG1lcmdlIHRoaXMgbWFudWFsbHkgb25jZSB5b3UgYXJlIHNhdGlzZmllZC4KCuKZuyAqKlJlYmFzaW5nKio6IFdoZW5ldmVyIFBSIGJlY29tZXMgY29uZmxpY3RlZCwgb3IgeW91IHRpY2sgdGhlIHJlYmFzZS9yZXRyeSBjaGVja2JveC4KCvCflJUgKipJZ25vcmUqKjogQ2xvc2UgdGhpcyBQUiBhbmQgeW91IHdvbid0IGJlIHJlbWluZGVkIGFib3V0IHRoaXMgdXBkYXRlIGFnYWluLgoKLS0tCgogLSBbIF0gPCEtLSByZWJhc2UtY2hlY2sgLS0+SWYgeW91IHdhbnQgdG8gcmViYXNlL3JldHJ5IHRoaXMgUFIsIGNoZWNrIHRoaXMgYm94CgotLS0KClRoaXMgUFIgd2FzIGdlbmVyYXRlZCBieSBbTWVuZCBSZW5vdmF0ZV0oaHR0cHM6Ly9tZW5kLmlvL3Jlbm92YXRlLykuIFZpZXcgdGhlIFtyZXBvc2l0b3J5IGpvYiBsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vZ2l0aHViL29zaXNtL2dlbmVyaWNzKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJME15NDJOaTQwSWl3aWRYQmtZWFJsWkVsdVZtVnlJam9pTkRNdU5qWXVOQ0lzSW5SaGNtZGxkRUp5WVc1amFDSTZJbTFoYVc0aUxDSnNZV0psYkhNaU9sc2ljbVZ1YjNaaGRHVWlYWDA9LS0+Cg==
      patchset: cedaeb474cf8234395ee0dd822e2700179e00727
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 4f450aa36c28b035ce97359a888edbd7599eaf31
          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: a01eed06dffe368c1d01819193bfadccb137414d
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 4f450aa36c28b035ce97359a888edbd7599eaf31
          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/check-shell-syntax/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/generics
        name: osism/generics
        short_name: generics
        src_dir: src/github.com/osism/generics
      projects:
        github.com/osism/generics:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          checkout: main
          checkout_description: zuul branch
          commit: 0aec7102c632ef520f1e52bd3af273eeee6cd193
          name: osism/generics
          required: false
          short_name: generics
          src_dir: src/github.com/osism/generics
      ref: refs/pull/581/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
