public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Maxwell G <maxwell@gtmx.me>
To: git-commits@fedoraproject.org
Subject: [rpms/ansible-core] rawhide: Update to 2.22.0~b1.
Date: Wed, 23 Sep 2026 14:23:28 GMT	[thread overview]
Message-ID: <179017340882.1.657590430623863833.rpms-ansible-core-7f3183c741fa@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/ansible-core
            Branch : rawhide
            Commit : 7f3183c741fa45b2f97b032ac96ab3a925daff83
            Author : Maxwell G <maxwell@gtmx.me>
            Date   : 2026-09-23T09:20:11-05:00
            Stats  : +8/-270 in 6 file(s)
            URL    : https://src.fedoraproject.org/rpms/ansible-core/c/7f3183c741fa45b2f97b032ac96ab3a925daff83?branch=rawhide

            Log:
            Update to 2.22.0~b1.

- Needed for full Python 3.15 compatibility

---
diff --git a/.gitignore b/.gitignore
index c72d52b..13b0087 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,3 +107,5 @@
 /ansible-documentation-2.21.3.tar.gz
 /ansible-core-2.21.4.tar.gz
 /ansible-documentation-2.21.4.tar.gz
+/ansible-core-2.22.0b1.tar.gz
+/ansible-documentation-2.22.0b1.tar.gz

diff --git a/87165.patch b/87165.patch
deleted file mode 100644
index 7a1340c..0000000
--- a/87165.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From dbe7531eff8868aba9ba02dd88b92e561865306c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= <tomas.hrnciar@me.com>
-Date: Wed, 24 Jun 2026 10:54:20 +0200
-Subject: [PATCH] Fix test compatibility with pytest >= 9.1
-
-Pytest 9.1 fixed parametrize to correctly unpack single-element tuple values when using a string argnames with a trailing comma (e.g. "arg,"), treating it like the tuple form ("arg",) (pytest-dev/pytest#719).
-This causes test_missing_lchmod_is_link_in_sticky_dir to fail because the trailing comma in @pytest.mark.parametrize('stdin,', ...) now makes pytest try to unpack {} as a sequence, finding 0 elements for 1 name.
-
-Remove the spurious trailing comma from 'stdin,'.
-
-Assisted-by: Claude Opus 4.6
----
- test/units/module_utils/basic/test_set_mode_if_different.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/test/units/module_utils/basic/test_set_mode_if_different.py b/test/units/module_utils/basic/test_set_mode_if_different.py
-index 45666608e48204..e15812aefe7ffc 100644
---- a/test/units/module_utils/basic/test_set_mode_if_different.py
-+++ b/test/units/module_utils/basic/test_set_mode_if_different.py
-@@ -151,7 +151,7 @@ def test_missing_lchmod_is_link(am, mock_stats, mocker, monkeypatch, check_mode)
-     mocker.stopall()
- 
- 
--@pytest.mark.parametrize('stdin,',
-+@pytest.mark.parametrize('stdin',
-                          ({},),
-                          indirect=['stdin'])
- def test_missing_lchmod_is_link_in_sticky_dir(am, mock_stats, mocker):

diff --git a/allow-python3.15-build.patch b/allow-python3.15-build.patch
deleted file mode 100644
index 2fb0760..0000000
--- a/allow-python3.15-build.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 2b3053a64f50858a09cb02e3c847026714624432 Mon Sep 17 00:00:00 2001
-From: Karolina Surma <ksurma@redhat.com>
-Date: Mon, 4 May 2026 13:03:07 +0200
-Subject: [PATCH] Allow building with Python 3.15
-
----
- test/lib/ansible_test/_internal/coverage_util.py       | 2 +-
- test/lib/ansible_test/_util/target/common/constants.py | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/test/lib/ansible_test/_internal/coverage_util.py b/test/lib/ansible_test/_internal/coverage_util.py
-index 6f2bd0a..3d5d026 100644
---- a/test/lib/ansible_test/_internal/coverage_util.py
-+++ b/test/lib/ansible_test/_internal/coverage_util.py
-@@ -69,7 +69,7 @@ class CoverageVersion:
- 
- COVERAGE_VERSIONS = (
-     # IMPORTANT: Keep this in sync with the ansible-test.txt requirements file.
--    CoverageVersion('7.10.7', 7, (3, 9), (3, 14)),
-+    CoverageVersion('7.10.7', 7, (3, 9), (3, 15)),
- )
- """
- This tuple specifies the coverage version to use for Python version ranges.
-diff --git a/test/lib/ansible_test/_util/target/common/constants.py b/test/lib/ansible_test/_util/target/common/constants.py
-index 4d55c82..c19dc7c 100644
---- a/test/lib/ansible_test/_util/target/common/constants.py
-+++ b/test/lib/ansible_test/_util/target/common/constants.py
-@@ -14,4 +14,5 @@ CONTROLLER_PYTHON_VERSIONS = (
-     '3.12',
-     '3.13',
-     '3.14',
-+    '3.15',
- )
--- 
-2.54.0
-

diff --git a/ansible-core.spec b/ansible-core.spec
index afba404..d94d8a5 100644
--- a/ansible-core.spec
+++ b/ansible-core.spec
@@ -13,7 +13,7 @@
 %undefine _py3_shebang_s
 
 Name:           ansible-core
-Version:        2.21.4
+Version:        2.22.0~b1
 %global uversion %{version_no_tilde %{quote:%nil}}
 Release:        1%{?dist}
 Summary:        A radically simple IT automation system
@@ -28,20 +28,6 @@ URL:            https://ansible.com
 Source0:        https://github.com/ansible/ansible/archive/v%{uversion}/%{name}-%{uversion}.tar.gz
 Source1:        https://github.com/ansible/ansible-documentation/archive/v%{uversion}/ansible-documentation-%{uversion}.tar.gz
 
-# ansible-core 2.20 does not support Python 3.15 and upstream does not plan to do so until 2.22
-# This is a downstream-only patch to make it possible to build 2.20 with Python 3.15
-Patch:          allow-python3.15-build.patch
-
-# Fix general compatibility with Python 3.15
-# The test fix bit comes from https://github.com/ansible/ansible/commit/d60f11409
-# (rebased to apply on the sources of this version)
-# Changes to the _dataclass_annotation_patch come from merged:
-# https://github.com/ansible/ansible/pull/86976
-Patch:          fix-compatibility-with-python-315.patch
-
-# Fix test compatibility with pytest 9.1
-Patch:          https://github.com/ansible/ansible/pull/87165.patch
-
 BuildArch:      noarch
 
 # Virtual provides for bundled libraries
@@ -258,6 +244,9 @@ install -Dpm 0644 licenses/* -t %{buildroot}%{_pkglicensedir}
 
 
 %changelog
+* Wed Sep 23 2026 Maxwell G <maxwell@gtmx.me> - 2.22.0~b1-1
+- Update to 2.22.0~b1.
+
 * Sat Sep 12 2026 Maxwell G <maxwell@gtmx.me> - 2.21.4-1
 - Update to 2.21.4. Fixes rhbz#2529942.
 

diff --git a/fix-compatibility-with-python-315.patch b/fix-compatibility-with-python-315.patch
deleted file mode 100644
index bc61213..0000000
--- a/fix-compatibility-with-python-315.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-From 6018c366dfdbfe5bc673019f307944b4d4f0b421 Mon Sep 17 00:00:00 2001
-From: Matt Clay <matt@mystile.com>
-Date: Fri, 15 May 2026 18:17:43 -0700
-Subject: [PATCH 1/2] ansible-test - Update base/default containers (#86958)
-
----
- .../_internal/_patches/_dataclass_annotation_patch.py     | 4 +++-
- .../targets/ansible-test-sanity-pylint/aliases            | 1 +
- test/lib/ansible_test/_internal/commands/sanity/pylint.py | 8 ++++++++
- .../units/module_utils/_internal/_patches/test_patches.py | 3 ++-
- 4 files changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/lib/ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py b/lib/ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py
-index 43da39a..85bf4e4 100644
---- a/lib/ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py
-+++ b/lib/ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py
-@@ -6,6 +6,8 @@ import dataclasses
- import sys
- import typing as t
- 
-+# deprecated: description='remove this patch once Python 3.14 is no longer supported on targets' python_version='3.14'
-+
- from . import CallablePatch
- 
- # trigger the bug by exposing typing.ClassVar via a module reference that is not `typing`
-@@ -24,7 +26,7 @@ class DataclassesIsTypePatch(CallablePatch):
-         @dataclasses.dataclass
-         class CheckClassVar:
-             # this is the broken case requiring patching: ClassVar dot-referenced from a module that is not `typing` is treated as an instance field
--            # DTFIX-FUTURE: file/link CPython bug report, deprecate this patch if/when it's fixed in CPython
-+            # fixed in CPython 3.15.0b1, see: https://github.com/python/cpython/pull/140541
-             a_classvar: _ts.ClassVar[int]  # type: ignore[name-defined]
-             a_field: int
- 
-diff --git a/test/integration/targets/ansible-test-sanity-pylint/aliases b/test/integration/targets/ansible-test-sanity-pylint/aliases
-index 7741d44..d83e46d 100644
---- a/test/integration/targets/ansible-test-sanity-pylint/aliases
-+++ b/test/integration/targets/ansible-test-sanity-pylint/aliases
-@@ -2,3 +2,4 @@ shippable/posix/group3  # runs in the distro test containers
- shippable/generic/group1  # runs in the default test container
- context/controller
- needs/target/collection
-+skip/python3.15  # see: https://github.com/uqfoundation/dill/issues/753
-diff --git a/test/lib/ansible_test/_internal/commands/sanity/pylint.py b/test/lib/ansible_test/_internal/commands/sanity/pylint.py
-index 301ff47..71275ec 100644
---- a/test/lib/ansible_test/_internal/commands/sanity/pylint.py
-+++ b/test/lib/ansible_test/_internal/commands/sanity/pylint.py
-@@ -13,6 +13,7 @@ from . import (
-     SanitySingleVersion,
-     SanityMessage,
-     SanityFailure,
-+    SanitySkipped,
-     SanitySuccess,
-     SanityTargets,
-     SANITY_ROOT,
-@@ -39,6 +40,7 @@ from ...util import (
-     SubprocessError,
-     display,
-     is_subdir,
-+    str_to_version,
- )
- 
- from ...util_common import (
-@@ -86,6 +88,12 @@ class PylintTest(SanitySingleVersion):
-         return [target for target in targets if os.path.splitext(target.path)[1] == '.py' or is_subdir(target.path, 'bin')]
- 
-     def test(self, args: SanityConfig, targets: SanityTargets, python: PythonConfig) -> TestResult:
-+        if str_to_version(python.version) >= (3, 15):
-+            # see: https://github.com/uqfoundation/dill/issues/753
-+            result = SanitySkipped(self.name, python.version)
-+            result.reason = f'Skipping sanity test "{self.name}" due to lack of support for Python version {python.version} in the "dill" package.'
-+            return result
-+
-         target_paths = set(target.path for target in self.filter_remote_targets(list(targets.targets)))
- 
-         plugin_dir = os.path.join(SANITY_ROOT, 'pylint', 'plugins')
-diff --git a/test/units/module_utils/_internal/_patches/test_patches.py b/test/units/module_utils/_internal/_patches/test_patches.py
-index 08c8497..c5b8d66 100644
---- a/test/units/module_utils/_internal/_patches/test_patches.py
-+++ b/test/units/module_utils/_internal/_patches/test_patches.py
-@@ -10,7 +10,7 @@ import typing as t
- import pytest
- 
- from ansible.module_utils._internal import _patches
--from ansible.module_utils._internal._patches import _socket_patch
-+from ansible.module_utils._internal._patches import _socket_patch, _dataclass_annotation_patch
- from ansible.module_utils.common._utils import get_all_subclasses
- 
- module_to_patch = sys.modules[__name__]
-@@ -38,6 +38,7 @@ def get_patch_required_test_cases() -> list:
-         # Example:
-         # _patches._some_patch_module.SomePatchClass: sys.version_info >= (3, 13),
-         _socket_patch.GetAddrInfoPatch: sys.version_info >= (3, 14),
-+        _dataclass_annotation_patch.DataclassesIsTypePatch: sys.version_info >= (3, 15, 0, 'beta', 1),
-     }
- 
-     patches = sorted(get_all_subclasses(_patches.CallablePatch), key=lambda item: item.__name__)
--- 
-2.54.0
-
-
-From 7fd0f2b8cba8d120bcdac75d77fa95ea74730250 Mon Sep 17 00:00:00 2001
-From: Matt Davis <nitzmahone@redhat.com>
-Date: Mon, 11 May 2026 15:49:20 -0700
-Subject: [PATCH 2/2] Defer patch target attribute failure until verified
- needed
-
-* Fixes startup failure under Python 3.15.0b1 on dataclass ClassVar annotation patch (which appears to have been fixed).
-* Adds explicit failure if the target attribute does not exist but `is_patch_needed` is True.
-* Added surrogate test coverage for the new defensive error case.
----
- changelogs/fragments/patch_resilience.yml     |  2 ++
- .../_internal/_patches/__init__.py            |  8 ++++++-
- test/units/_internal/_patches/__init__.py     |  0
- test/units/_internal/_patches/test_patch.py   | 23 +++++++++++++++++++
- 4 files changed, 32 insertions(+), 1 deletion(-)
- create mode 100644 changelogs/fragments/patch_resilience.yml
- create mode 100644 test/units/_internal/_patches/__init__.py
- create mode 100644 test/units/_internal/_patches/test_patch.py
-
-diff --git a/changelogs/fragments/patch_resilience.yml b/changelogs/fragments/patch_resilience.yml
-new file mode 100644
-index 0000000..67b3991
---- /dev/null
-+++ b/changelogs/fragments/patch_resilience.yml
-@@ -0,0 +1,2 @@
-+bugfixes:
-+  - Internal patch framework - Defer failure on missing target patch attribute until `is_patch_needed` validator has confirmed that the behavior to be patched is present.
-diff --git a/lib/ansible/module_utils/_internal/_patches/__init__.py b/lib/ansible/module_utils/_internal/_patches/__init__.py
-index 7e08b04..4365ea9 100644
---- a/lib/ansible/module_utils/_internal/_patches/__init__.py
-+++ b/lib/ansible/module_utils/_internal/_patches/__init__.py
-@@ -42,7 +42,7 @@ class CallablePatch(abc.ABC):
-     @classmethod
-     def get_current_implementation(cls) -> t.Any:
-         """Get the current (possibly patched) implementation from the patch target container."""
--        return getattr(cls.target_container, cls.target_attribute)
-+        return getattr(cls.target_container, cls.target_attribute, ...)
- 
-     @classmethod
-     def patch(cls) -> None:
-@@ -55,6 +55,12 @@ class CallablePatch(abc.ABC):
-         if not cls.is_patch_needed():
-             return
- 
-+        if cls.unpatched_implementation is ...:
-+            raise RuntimeError(
-+                f"Patch {cls.__name__!r} appears to be needed, but implementation to be patched "
-+                f"('{cls.target_container.__name__}.{cls.target_attribute}') is not present."
-+            )
-+
-         # __call__ requires an instance (otherwise it'll be __new__)
-         setattr(cls.target_container, cls.target_attribute, cls())
- 
-diff --git a/test/units/_internal/_patches/__init__.py b/test/units/_internal/_patches/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/test/units/_internal/_patches/test_patch.py b/test/units/_internal/_patches/test_patch.py
-new file mode 100644
-index 0000000..fe942c1
---- /dev/null
-+++ b/test/units/_internal/_patches/test_patch.py
-@@ -0,0 +1,23 @@
-+import pytest
-+import typing as t
-+
-+from ansible.module_utils._internal._patches import CallablePatch
-+
-+
-+class BogusPatch(CallablePatch):
-+    """Coverage-oriented simulated patch where the patch is required but the original implementation to be patched does not exist."""
-+
-+    target_container: t.ClassVar = dict
-+    target_attribute = '_bogus_dict_attr'
-+
-+    @classmethod
-+    def is_patch_needed(cls) -> bool:
-+        return True
-+
-+    def __call__(self, annotation, cls, a_module, a_type, is_type_predicate) -> bool:
-+        raise NotImplementedError("should not be called")
-+
-+
-+def test_bogus_patch():
-+    with pytest.raises(RuntimeError, match="implementation to be patched .* is not present"):
-+        BogusPatch.patch()
--- 
-2.54.0
-

diff --git a/sources b/sources
index b8eea63..12c2ef7 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (ansible-core-2.21.4.tar.gz) = d4cab79a7b54d8fc0620a8ac9161c982b54d04289670f8e096cef86bc2cc89619acaad83a088e0a4acca32cf5f398e070be9faa48c063fb8fa02b8227cb86e17
-SHA512 (ansible-documentation-2.21.4.tar.gz) = e6d1e3ed9d8ec0a894a74515d3eb489788f30d7ee039f93512dcb9a6454cc881e85aa070f3a9e4b36ec1038e176cbffbcb5d1a4b4bf6cc39006c8cc12e285d39
+SHA512 (ansible-core-2.22.0b1.tar.gz) = 1bf7cce7762e5542ddeebdb2cbe5abb267a93a2a9f13d95148ea904adc2f7beb47ca9f7879272f05a611b178cc9c98f665757e38b0bcc0a1da63c81fe7f99eb3
+SHA512 (ansible-documentation-2.22.0b1.tar.gz) = a3406019efa1c3abb1ac1dbd0bd534de78336cda790eb63b25d14fd1255e7f030cdcd2477184c1fdd6c8b7e372c6be47443f3c42664b5ae8405cc4e8429d2f10

                 reply	other threads:[~2026-09-23 14:23 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=179017340882.1.657590430623863833.rpms-ansible-core-7f3183c741fa@fedoraproject.org \
    --to=maxwell@gtmx.me \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox