summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoumya Sambu <soumya.sambu@windriver.com>2024-11-14 10:32:11 +0000
committerBruce Ashfield <bruce.ashfield@gmail.com>2024-12-10 03:43:04 +0000
commit82d6a52a38056518423afe1d2ce4bc0d4ff78d5c (patch)
tree334ece3f6d992f48fcfa5e8e652f47ede92ab551
parent755a6af15bf0d01a107414ddcc05543227bab0a7 (diff)
downloadmeta-cloud-services-82d6a52a38056518423afe1d2ce4bc0d4ff78d5c.tar.gz
python3-ansible: Upgrade 2.16.5 -> 2.17.6
Includes security fixes for - CVE-2024-9902, CVE-2024-8775, CVE-2023-5115. Changelog: ========== https://github.com/ansible/ansible/blob/v2.17.6/changelogs/CHANGELOG-v2.17.rst Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-rw-r--r--recipes-devtools/python/python-ansible.inc4
-rw-r--r--recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch174
-rw-r--r--recipes-devtools/python/python3-ansible_2.17.6.bb (renamed from recipes-devtools/python/python3-ansible_2.16.5.bb)0
3 files changed, 90 insertions, 88 deletions
diff --git a/recipes-devtools/python/python-ansible.inc b/recipes-devtools/python/python-ansible.inc
index 7c9d0f5..a528f24 100644
--- a/recipes-devtools/python/python-ansible.inc
+++ b/recipes-devtools/python/python-ansible.inc
@@ -6,9 +6,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
6 6
7SRCNAME = "ansible" 7SRCNAME = "ansible"
8 8
9SRC_URI = "git://github.com/ansible/ansible.git;protocol=https;branch=stable-2.16" 9SRC_URI = "git://github.com/ansible/ansible.git;protocol=https;branch=stable-2.17"
10 10
11SRCREV = "ee04df4796af1a438bc80aff33cdd5ca4d5304aa" 11SRCREV = "05e01efa8534d19956133e19e9e84aad720abb0d"
12 12
13S = "${WORKDIR}/git" 13S = "${WORKDIR}/git"
14 14
diff --git a/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch b/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
index 420324b..a7565d5 100644
--- a/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
+++ b/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
@@ -1,4 +1,4 @@
1From f14f3a89262e9348348f6aeced9c20067a613062 Mon Sep 17 00:00:00 2001 1From 9a90119da3fd670aa625cf947abc3ed66d7aaaf3 Mon Sep 17 00:00:00 2001
2From: Mark Asselstine <mark.asselstine@windriver.com> 2From: Mark Asselstine <mark.asselstine@windriver.com>
3Date: Thu, 11 May 2023 17:05:54 +0800 3Date: Thu, 11 May 2023 17:05:54 +0800
4Subject: [PATCH] python3: ensure py scripts use py3 for shebang 4Subject: [PATCH] python3: ensure py scripts use py3 for shebang
@@ -10,11 +10,13 @@ Rebase to 2.14.5
10Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 10Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
11Rebase to 2.16.5 11Rebase to 2.16.5
12Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 12Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
13Rebase to 2.17.6
14Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
13--- 15---
14 .azure-pipelines/scripts/combine-coverage.py | 2 +- 16 .azure-pipelines/scripts/combine-coverage.py | 2 +-
15 .azure-pipelines/scripts/publish-codecov.py | 2 +- 17 .azure-pipelines/scripts/publish-codecov.py | 2 +-
16 .azure-pipelines/scripts/time-command.py | 2 +- 18 .azure-pipelines/scripts/time-command.py | 2 +-
17 hacking/ansible-profile | 2 +- 19 hacking/ansible-profile.py | 2 +-
18 hacking/azp/download.py | 2 +- 20 hacking/azp/download.py | 2 +-
19 hacking/azp/get_recent_coverage_runs.py | 2 +- 21 hacking/azp/get_recent_coverage_runs.py | 2 +-
20 hacking/azp/incidental.py | 2 +- 22 hacking/azp/incidental.py | 2 +-
@@ -77,7 +79,7 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
77 63 files changed, 65 insertions(+), 65 deletions(-) 79 63 files changed, 65 insertions(+), 65 deletions(-)
78 80
79diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py 81diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py
80index 506ade6460..15bee40234 100755 82index 10d83580c5..9b5f7ee9b2 100755
81--- a/.azure-pipelines/scripts/combine-coverage.py 83--- a/.azure-pipelines/scripts/combine-coverage.py
82+++ b/.azure-pipelines/scripts/combine-coverage.py 84+++ b/.azure-pipelines/scripts/combine-coverage.py
83@@ -1,4 +1,4 @@ 85@@ -1,4 +1,4 @@
@@ -87,7 +89,7 @@ index 506ade6460..15bee40234 100755
87 Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job. 89 Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
88 Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}" 90 Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
89diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py 91diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py
90index f2bc4b84b3..01ad32f494 100755 92index 41f30af76d..6df3106380 100755
91--- a/.azure-pipelines/scripts/publish-codecov.py 93--- a/.azure-pipelines/scripts/publish-codecov.py
92+++ b/.azure-pipelines/scripts/publish-codecov.py 94+++ b/.azure-pipelines/scripts/publish-codecov.py
93@@ -1,4 +1,4 @@ 95@@ -1,4 +1,4 @@
@@ -97,7 +99,7 @@ index f2bc4b84b3..01ad32f494 100755
97 Upload code coverage reports to codecov.io. 99 Upload code coverage reports to codecov.io.
98 Multiple coverage files from multiple languages are accepted and aggregated after upload. 100 Multiple coverage files from multiple languages are accepted and aggregated after upload.
99diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py 101diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py
100index 5e8eb8d4c8..5450c48900 100755 102index c6b505006e..f3f44bb2e8 100755
101--- a/.azure-pipelines/scripts/time-command.py 103--- a/.azure-pipelines/scripts/time-command.py
102+++ b/.azure-pipelines/scripts/time-command.py 104+++ b/.azure-pipelines/scripts/time-command.py
103@@ -1,4 +1,4 @@ 105@@ -1,4 +1,4 @@
@@ -105,19 +107,19 @@ index 5e8eb8d4c8..5450c48900 100755
105+#!/usr/bin/env python3 107+#!/usr/bin/env python3
106 """Prepends a relative timestamp to each input line from stdin and writes it to stdout.""" 108 """Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
107 109
108 from __future__ import (absolute_import, division, print_function) 110 from __future__ import annotations
109diff --git a/hacking/ansible-profile b/hacking/ansible-profile 111diff --git a/hacking/ansible-profile.py b/hacking/ansible-profile.py
110index 9856e7ab5c..0988bb2037 100755 112index 7016ebe098..a33c053cf5 100755
111--- a/hacking/ansible-profile 113--- a/hacking/ansible-profile.py
112+++ b/hacking/ansible-profile 114+++ b/hacking/ansible-profile.py
113@@ -1,4 +1,4 @@ 115@@ -1,4 +1,4 @@
114-#!/usr/bin/env python 116-#!/usr/bin/env python
115+#!/usr/bin/env python3 117+#!/usr/bin/env python3
116 from __future__ import (absolute_import, division, print_function) 118 from __future__ import annotations
117 __metaclass__ = type
118 119
120 import cProfile
119diff --git a/hacking/azp/download.py b/hacking/azp/download.py 121diff --git a/hacking/azp/download.py b/hacking/azp/download.py
120index e0de99a27a..6ccd51b2aa 100755 122index 47ebf39b11..355db8382c 100755
121--- a/hacking/azp/download.py 123--- a/hacking/azp/download.py
122+++ b/hacking/azp/download.py 124+++ b/hacking/azp/download.py
123@@ -1,4 +1,4 @@ 125@@ -1,4 +1,4 @@
@@ -127,7 +129,7 @@ index e0de99a27a..6ccd51b2aa 100755
127 129
128 # (c) 2016 Red Hat, Inc. 130 # (c) 2016 Red Hat, Inc.
129diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py 131diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py
130index 1be867da1e..2fb1cc4582 100755 132index b479179e71..11205769e5 100755
131--- a/hacking/azp/get_recent_coverage_runs.py 133--- a/hacking/azp/get_recent_coverage_runs.py
132+++ b/hacking/azp/get_recent_coverage_runs.py 134+++ b/hacking/azp/get_recent_coverage_runs.py
133@@ -1,4 +1,4 @@ 135@@ -1,4 +1,4 @@
@@ -137,7 +139,7 @@ index 1be867da1e..2fb1cc4582 100755
137 # (c) 2020 Red Hat, Inc. 139 # (c) 2020 Red Hat, Inc.
138 # 140 #
139diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py 141diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py
140index 87d4d213c9..7660e2ed22 100755 142index 5fc83e3d1a..f9c3ff75ac 100755
141--- a/hacking/azp/incidental.py 143--- a/hacking/azp/incidental.py
142+++ b/hacking/azp/incidental.py 144+++ b/hacking/azp/incidental.py
143@@ -1,4 +1,4 @@ 145@@ -1,4 +1,4 @@
@@ -147,7 +149,7 @@ index 87d4d213c9..7660e2ed22 100755
147 149
148 # (c) 2020 Red Hat, Inc. 150 # (c) 2020 Red Hat, Inc.
149diff --git a/hacking/azp/run.py b/hacking/azp/run.py 151diff --git a/hacking/azp/run.py b/hacking/azp/run.py
150index 00a177944f..591e6bcc4f 100755 152index c5e248beb3..eac459a969 100755
151--- a/hacking/azp/run.py 153--- a/hacking/azp/run.py
152+++ b/hacking/azp/run.py 154+++ b/hacking/azp/run.py
153@@ -1,4 +1,4 @@ 155@@ -1,4 +1,4 @@
@@ -157,7 +159,7 @@ index 00a177944f..591e6bcc4f 100755
157 159
158 # (c) 2016 Red Hat, Inc. 160 # (c) 2016 Red Hat, Inc.
159diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py 161diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py
160index ef77ddcf40..bbec15de6a 100755 162index 9856b9f0e0..65474b4aca 100755
161--- a/hacking/backport/backport_of_line_adder.py 163--- a/hacking/backport/backport_of_line_adder.py
162+++ b/hacking/backport/backport_of_line_adder.py 164+++ b/hacking/backport/backport_of_line_adder.py
163@@ -1,4 +1,4 @@ 165@@ -1,4 +1,4 @@
@@ -177,7 +179,7 @@ index d2651415df..2235daa5ec 100755
177 """Create GitHub issues for deprecated features.""" 179 """Create GitHub issues for deprecated features."""
178 180
179diff --git a/hacking/report.py b/hacking/report.py 181diff --git a/hacking/report.py b/hacking/report.py
180index 58b3a6b915..78eed516dc 100755 182index f968c41aa1..aaef565d6e 100755
181--- a/hacking/report.py 183--- a/hacking/report.py
182+++ b/hacking/report.py 184+++ b/hacking/report.py
183@@ -1,4 +1,4 @@ 185@@ -1,4 +1,4 @@
@@ -187,7 +189,7 @@ index 58b3a6b915..78eed516dc 100755
187 """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting.""" 189 """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting."""
188 190
189diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py 191diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py
190index 7002b7899d..cff03c38e6 100755 192index 875b5f0650..4109b55aac 100755
191--- a/hacking/return_skeleton_generator.py 193--- a/hacking/return_skeleton_generator.py
192+++ b/hacking/return_skeleton_generator.py 194+++ b/hacking/return_skeleton_generator.py
193@@ -1,4 +1,4 @@ 195@@ -1,4 +1,4 @@
@@ -197,7 +199,7 @@ index 7002b7899d..cff03c38e6 100755
197 # (c) 2017, Will Thames <will@thames.id.au> 199 # (c) 2017, Will Thames <will@thames.id.au>
198 # 200 #
199diff --git a/hacking/test-module.py b/hacking/test-module.py 201diff --git a/hacking/test-module.py b/hacking/test-module.py
200index 7a329b4b2d..a1118ba144 100755 202index 7b39798de5..08de9c678f 100755
201--- a/hacking/test-module.py 203--- a/hacking/test-module.py
202+++ b/hacking/test-module.py 204+++ b/hacking/test-module.py
203@@ -1,4 +1,4 @@ 205@@ -1,4 +1,4 @@
@@ -207,7 +209,7 @@ index 7a329b4b2d..a1118ba144 100755
207 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 209 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
208 # 210 #
209diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py 211diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py
210index e75c78ad91..1613b02ed5 100755 212index 57903180c1..7f644a7abb 100755
211--- a/hacking/tests/gen_distribution_version_testcase.py 213--- a/hacking/tests/gen_distribution_version_testcase.py
212+++ b/hacking/tests/gen_distribution_version_testcase.py 214+++ b/hacking/tests/gen_distribution_version_testcase.py
213@@ -1,4 +1,4 @@ 215@@ -1,4 +1,4 @@
@@ -227,7 +229,7 @@ index 997d6dbf87..16a47f0f3c 100755
227 """Generate frozen sanity test requirements from source requirements files.""" 229 """Generate frozen sanity test requirements from source requirements files."""
228 230
229diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py 231diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
230index a54dacb70c..dc14986420 100755 232index efe99b9910..91c73c5a9d 100755
231--- a/lib/ansible/cli/adhoc.py 233--- a/lib/ansible/cli/adhoc.py
232+++ b/lib/ansible/cli/adhoc.py 234+++ b/lib/ansible/cli/adhoc.py
233@@ -1,4 +1,4 @@ 235@@ -1,4 +1,4 @@
@@ -237,7 +239,7 @@ index a54dacb70c..dc14986420 100755
237 # Copyright: (c) 2018, Ansible Project 239 # Copyright: (c) 2018, Ansible Project
238 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 240 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
239diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py 241diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py
240index f394ef7c1e..e37c9fd619 100755 242index e7f240c80d..6702b5a01b 100755
241--- a/lib/ansible/cli/config.py 243--- a/lib/ansible/cli/config.py
242+++ b/lib/ansible/cli/config.py 244+++ b/lib/ansible/cli/config.py
243@@ -1,4 +1,4 @@ 245@@ -1,4 +1,4 @@
@@ -247,7 +249,7 @@ index f394ef7c1e..e37c9fd619 100755
247 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 249 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
248 # PYTHON_ARGCOMPLETE_OK 250 # PYTHON_ARGCOMPLETE_OK
249diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py 251diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
250index 2325bf05d6..475f03eb00 100755 252index 5805b97fce..7a246ba8b4 100755
251--- a/lib/ansible/cli/console.py 253--- a/lib/ansible/cli/console.py
252+++ b/lib/ansible/cli/console.py 254+++ b/lib/ansible/cli/console.py
253@@ -1,4 +1,4 @@ 255@@ -1,4 +1,4 @@
@@ -257,7 +259,7 @@ index 2325bf05d6..475f03eb00 100755
257 # Copyright: (c) 2016, Redhat Inc 259 # Copyright: (c) 2016, Redhat Inc
258 # Copyright: (c) 2018, Ansible Project 260 # Copyright: (c) 2018, Ansible Project
259diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py 261diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py
260index 4a5c892816..c99d25d9cb 100755 262index 4f7e733154..f5fe9efda3 100755
261--- a/lib/ansible/cli/doc.py 263--- a/lib/ansible/cli/doc.py
262+++ b/lib/ansible/cli/doc.py 264+++ b/lib/ansible/cli/doc.py
263@@ -1,4 +1,4 @@ 265@@ -1,4 +1,4 @@
@@ -267,7 +269,7 @@ index 4a5c892816..c99d25d9cb 100755
267 # Copyright: (c) 2018, Ansible Project 269 # Copyright: (c) 2018, Ansible Project
268 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 270 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
269diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py 271diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py
270index 334e4bf4f0..9918f338c1 100755 272index 5c506b0c4e..47afea6e84 100755
271--- a/lib/ansible/cli/galaxy.py 273--- a/lib/ansible/cli/galaxy.py
272+++ b/lib/ansible/cli/galaxy.py 274+++ b/lib/ansible/cli/galaxy.py
273@@ -1,4 +1,4 @@ 275@@ -1,4 +1,4 @@
@@ -277,7 +279,7 @@ index 334e4bf4f0..9918f338c1 100755
277 # Copyright: (c) 2018-2021, Ansible Project 279 # Copyright: (c) 2018-2021, Ansible Project
278 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 280 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
279diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py 281diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py
280index 3550079bf8..f1da0d0531 100755 282index 8c7c7e51d7..55b237ef1c 100755
281--- a/lib/ansible/cli/inventory.py 283--- a/lib/ansible/cli/inventory.py
282+++ b/lib/ansible/cli/inventory.py 284+++ b/lib/ansible/cli/inventory.py
283@@ -1,4 +1,4 @@ 285@@ -1,4 +1,4 @@
@@ -287,7 +289,7 @@ index 3550079bf8..f1da0d0531 100755
287 # Copyright: (c) 2018, Ansible Project 289 # Copyright: (c) 2018, Ansible Project
288 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 290 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
289diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py 291diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py
290index e63785b058..bc5fbc2f6f 100755 292index 1a3542de1c..64565ccb59 100755
291--- a/lib/ansible/cli/playbook.py 293--- a/lib/ansible/cli/playbook.py
292+++ b/lib/ansible/cli/playbook.py 294+++ b/lib/ansible/cli/playbook.py
293@@ -1,4 +1,4 @@ 295@@ -1,4 +1,4 @@
@@ -297,7 +299,7 @@ index e63785b058..bc5fbc2f6f 100755
297 # Copyright: (c) 2018, Ansible Project 299 # Copyright: (c) 2018, Ansible Project
298 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 300 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
299diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py 301diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py
300index f369c390ec..f0ca673b36 100755 302index fb3321efa9..e781a79806 100755
301--- a/lib/ansible/cli/pull.py 303--- a/lib/ansible/cli/pull.py
302+++ b/lib/ansible/cli/pull.py 304+++ b/lib/ansible/cli/pull.py
303@@ -1,4 +1,4 @@ 305@@ -1,4 +1,4 @@
@@ -307,7 +309,7 @@ index f369c390ec..f0ca673b36 100755
307 # Copyright: (c) 2018, Ansible Project 309 # Copyright: (c) 2018, Ansible Project
308 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 310 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
309diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 311diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
310index b1ed18c9c6..03c26d52cb 100755 312index 9455b9851a..146602337a 100755
311--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 313--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
312+++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 314+++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
313@@ -1,4 +1,4 @@ 315@@ -1,4 +1,4 @@
@@ -315,9 +317,9 @@ index b1ed18c9c6..03c26d52cb 100755
315+#!/usr/bin/env python3 317+#!/usr/bin/env python3
316 # Copyright: (c) 2017, Ansible Project 318 # Copyright: (c) 2017, Ansible Project
317 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 319 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
318 from __future__ import (absolute_import, division, print_function) 320 from __future__ import annotations
319diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py 321diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
320index cf2c9dd901..3545624a09 100755 322index 86902a695f..7f6ee739c5 100755
321--- a/lib/ansible/cli/vault.py 323--- a/lib/ansible/cli/vault.py
322+++ b/lib/ansible/cli/vault.py 324+++ b/lib/ansible/cli/vault.py
323@@ -1,4 +1,4 @@ 325@@ -1,4 +1,4 @@
@@ -337,7 +339,7 @@ index 878ba8eabf..64a614f3f7 100755
337 """Build documentation for ansible-core CLI programs.""" 339 """Build documentation for ansible-core CLI programs."""
338 340
339diff --git a/packaging/release.py b/packaging/release.py 341diff --git a/packaging/release.py b/packaging/release.py
340index 97c58a7424..fa5a27f794 100755 342index d8b5e19b26..2575f3f98d 100755
341--- a/packaging/release.py 343--- a/packaging/release.py
342+++ b/packaging/release.py 344+++ b/packaging/release.py
343@@ -1,4 +1,4 @@ 345@@ -1,4 +1,4 @@
@@ -357,7 +359,7 @@ index ed42e6acb8..e61252100e 100755
357 359
358 from __future__ import annotations 360 from __future__ import annotations
359diff --git a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py 361diff --git a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
360index 6182e865db..5829df52b5 100644 362index 25fb5dd532..dc718cc3f4 100644
361--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py 363--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
362+++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py 364+++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
363@@ -1,4 +1,4 @@ 365@@ -1,4 +1,4 @@
@@ -367,17 +369,17 @@ index 6182e865db..5829df52b5 100644
367 # Copyright: (c) 2020, Ansible Project 369 # Copyright: (c) 2020, Ansible Project
368 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 370 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
369diff --git a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py 371diff --git a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
370index 487666381f..86a3ea66d7 100755 372index 3e8424b006..2bfd907937 100755
371--- a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py 373--- a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
372+++ b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py 374+++ b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
373@@ -1,4 +1,4 @@ 375@@ -1,4 +1,4 @@
374-#!/usr/bin/env python 376-#!/usr/bin/env python
375+#!/usr/bin/env python3 377+#!/usr/bin/env python3
376 """Create a role archive which overwrites an arbitrary file.""" 378 """Create a role archive which overwrites an arbitrary file."""
379 from __future__ import annotations
377 380
378 import argparse
379diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py 381diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py
380index 3c86b6dd07..393a945ff9 100755 382index be518528f1..ccf49f4c6a 100755
381--- a/test/integration/targets/ansible-test-container/runme.py 383--- a/test/integration/targets/ansible-test-container/runme.py
382+++ b/test/integration/targets/ansible-test-container/runme.py 384+++ b/test/integration/targets/ansible-test-container/runme.py
383@@ -1,4 +1,4 @@ 385@@ -1,4 +1,4 @@
@@ -387,35 +389,35 @@ index 3c86b6dd07..393a945ff9 100755
387 389
388 from __future__ import annotations 390 from __future__ import annotations
389diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py 391diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py
390index 8effb647fc..4e34c4bbc1 100755 392index 10fa2d44f5..a9060c221f 100755
391--- a/test/integration/targets/ansible-test-integration-targets/test.py 393--- a/test/integration/targets/ansible-test-integration-targets/test.py
392+++ b/test/integration/targets/ansible-test-integration-targets/test.py 394+++ b/test/integration/targets/ansible-test-integration-targets/test.py
393@@ -1,4 +1,4 @@ 395@@ -1,4 +1,4 @@
394-#!/usr/bin/env python 396-#!/usr/bin/env python
395+#!/usr/bin/env python3 397+#!/usr/bin/env python3
398 from __future__ import annotations
396 399
397 import subprocess 400 import subprocess
398 import unittest
399diff --git a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py 401diff --git a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
400index 463915284b..fc2ed398d9 100755 402index b4ccb7b651..abffbe8c93 100755
401--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py 403--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
402+++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py 404+++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
403@@ -1,4 +1,4 @@ 405@@ -1,4 +1,4 @@
404-#!/usr/bin/env python 406-#!/usr/bin/env python
405+#!/usr/bin/env python3 407+#!/usr/bin/env python3
406 """Run a command using a PTY.""" 408 """Run a command using a PTY."""
409 from __future__ import annotations
407 410
408 import sys
409diff --git a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py 411diff --git a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
410index a2b094e2fc..355dba697a 100755 412index d7f3eb76e0..553bbaa9a4 100755
411--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py 413--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
412+++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py 414+++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
413@@ -1,4 +1,4 @@ 415@@ -1,4 +1,4 @@
414-#!/usr/bin/env python 416-#!/usr/bin/env python
415+#!/usr/bin/env python3 417+#!/usr/bin/env python3
416 """Assert no TTY is available.""" 418 """Assert no TTY is available."""
419 from __future__ import annotations
417 420
418 import sys
419diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py 421diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
420index 4265cc3e6c..e5a0d9b483 100755 422index 4265cc3e6c..e5a0d9b483 100755
421--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py 423--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
@@ -431,17 +433,17 @@ index 4265cc3e6c..e5a0d9b483 100755
431-#!/usr/bin/env python 433-#!/usr/bin/env python
432+#!/usr/bin/env python3 434+#!/usr/bin/env python3
433diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py 435diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py
434index 97998bcd7c..aace3d346d 100755 436index a22ff2803b..5c179af76c 100755
435--- a/test/integration/targets/ansible-test/venv-pythons.py 437--- a/test/integration/targets/ansible-test/venv-pythons.py
436+++ b/test/integration/targets/ansible-test/venv-pythons.py 438+++ b/test/integration/targets/ansible-test/venv-pythons.py
437@@ -1,4 +1,4 @@ 439@@ -1,4 +1,4 @@
438-#!/usr/bin/env python 440-#!/usr/bin/env python
439+#!/usr/bin/env python3 441+#!/usr/bin/env python3
440 """Return target Python options for use with ansible-test.""" 442 """Return target Python options for use with ansible-test."""
443 from __future__ import annotations
441 444
442 import argparse
443diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py 445diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py
444index b67c747563..a30c306a83 100755 446index fdf01ebc02..2ea7c90320 100755
445--- a/test/integration/targets/ansible-vault/faux-editor.py 447--- a/test/integration/targets/ansible-vault/faux-editor.py
446+++ b/test/integration/targets/ansible-vault/faux-editor.py 448+++ b/test/integration/targets/ansible-vault/faux-editor.py
447@@ -1,4 +1,4 @@ 449@@ -1,4 +1,4 @@
@@ -451,7 +453,7 @@ index b67c747563..a30c306a83 100755
451 # Ansible is free software: you can redistribute it and/or modify 453 # Ansible is free software: you can redistribute it and/or modify
452 # it under the terms of the GNU General Public License as published by 454 # it under the terms of the GNU General Public License as published by
453diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py 455diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py
454index 1b7f02beb2..0dcada23c7 100755 456index a65b01dc03..22b68ed08c 100755
455--- a/test/integration/targets/ansible-vault/password-script.py 457--- a/test/integration/targets/ansible-vault/password-script.py
456+++ b/test/integration/targets/ansible-vault/password-script.py 458+++ b/test/integration/targets/ansible-vault/password-script.py
457@@ -1,4 +1,4 @@ 459@@ -1,4 +1,4 @@
@@ -461,27 +463,27 @@ index 1b7f02beb2..0dcada23c7 100755
461 # Ansible is free software: you can redistribute it and/or modify 463 # Ansible is free software: you can redistribute it and/or modify
462 # it under the terms of the GNU General Public License as published by 464 # it under the terms of the GNU General Public License as published by
463diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py 465diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py
464index ee46188742..48244fca09 100755 466index c16e309a6e..17cae8cbca 100755
465--- a/test/integration/targets/ansible-vault/test-vault-client.py 467--- a/test/integration/targets/ansible-vault/test-vault-client.py
466+++ b/test/integration/targets/ansible-vault/test-vault-client.py 468+++ b/test/integration/targets/ansible-vault/test-vault-client.py
467@@ -1,4 +1,4 @@ 469@@ -1,4 +1,4 @@
468-#!/usr/bin/env python 470-#!/usr/bin/env python
469+#!/usr/bin/env python3 471+i#!/usr/bin/env python3
470 # -*- coding: utf-8 -*- 472 # -*- coding: utf-8 -*-
471 473
472 from __future__ import (absolute_import, division, print_function) 474 from __future__ import annotations
473diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py 475diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
474index 93958fc2ad..33509c826a 100644 476index 435a7eb979..381b44272d 100644
475--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py 477--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
476+++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py 478+++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
477@@ -1,4 +1,4 @@ 479@@ -1,4 +1,4 @@
478-#!/usr/bin/env python 480-#!/usr/bin/env python
479+#!/usr/bin/env python3 481+#!/usr/bin/env python3
480 482
481 from __future__ import (absolute_import, division, print_function) 483 from __future__ import annotations
482 __metaclass__ = type 484
483diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py 485diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py
484index 9893d6652e..7a07dcc108 100644 486index 8d961ff36b..fce6c1d19a 100644
485--- a/test/integration/targets/cli/test-cli.py 487--- a/test/integration/targets/cli/test-cli.py
486+++ b/test/integration/targets/cli/test-cli.py 488+++ b/test/integration/targets/cli/test-cli.py
487@@ -1,4 +1,4 @@ 489@@ -1,4 +1,4 @@
@@ -491,7 +493,7 @@ index 9893d6652e..7a07dcc108 100644
491 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 493 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
492 494
493diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py 495diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py
494index f7077fba0a..dcc9614129 100644 496index fe9575c0b2..22215db1a3 100644
495--- a/test/integration/targets/cli/test_k_and_K.py 497--- a/test/integration/targets/cli/test_k_and_K.py
496+++ b/test/integration/targets/cli/test_k_and_K.py 498+++ b/test/integration/targets/cli/test_k_and_K.py
497@@ -1,4 +1,4 @@ 499@@ -1,4 +1,4 @@
@@ -499,37 +501,37 @@ index f7077fba0a..dcc9614129 100644
499+#!/usr/bin/env python3 501+#!/usr/bin/env python3
500 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 502 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
501 503
502 # Make coding more python3-ish 504 from __future__ import annotations
503diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py 505diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py
504index 92a702cf13..9ea69089d5 100755 506index fb363f1274..6c6e181ae4 100755
505--- a/test/integration/targets/collection/update-ignore.py 507--- a/test/integration/targets/collection/update-ignore.py
506+++ b/test/integration/targets/collection/update-ignore.py 508+++ b/test/integration/targets/collection/update-ignore.py
507@@ -1,4 +1,4 @@ 509@@ -1,4 +1,4 @@
508-#!/usr/bin/env python 510-#!/usr/bin/env python
509+#!/usr/bin/env python3 511+#!/usr/bin/env python3
510 """Rewrite a sanity ignore file to expand Python versions for import ignores and write the file out with the correct Ansible version in the name.""" 512 """Rewrite a sanity ignore file to expand Python versions for import ignores and write the file out with the correct Ansible version in the name."""
513 from __future__ import annotations
511 514
512 import os
513diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py 515diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py
514index 237f9c2d90..4fe74903d8 100755 516index 0b65c42492..6989790dd5 100755
515--- a/test/integration/targets/debugger/test_run_once.py 517--- a/test/integration/targets/debugger/test_run_once.py
516+++ b/test/integration/targets/debugger/test_run_once.py 518+++ b/test/integration/targets/debugger/test_run_once.py
517@@ -1,4 +1,4 @@ 519@@ -1,4 +1,4 @@
518-#!/usr/bin/env python 520-#!/usr/bin/env python
519+#!/usr/bin/env python3 521+#!/usr/bin/env python3
522 from __future__ import annotations
520 523
521 import io 524 import io
522 import os
523diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py 525diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py
524index 463915284b..fc2ed398d9 100755 526index b4ccb7b651..abffbe8c93 100755
525--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py 527--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py
526+++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py 528+++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py
527@@ -1,4 +1,4 @@ 529@@ -1,4 +1,4 @@
528-#!/usr/bin/env python 530-#!/usr/bin/env python
529+#!/usr/bin/env python3 531+#!/usr/bin/env python3
530 """Run a command using a PTY.""" 532 """Run a command using a PTY."""
533 from __future__ import annotations
531 534
532 import sys
533diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact 535diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact
534index 79e3f62677..2a294b33a8 100644 536index 79e3f62677..2a294b33a8 100644
535--- a/test/integration/targets/gathering/uuid.fact 537--- a/test/integration/targets/gathering/uuid.fact
@@ -569,37 +571,37 @@ index b7ed707211..97f9eedcdb 100644
569 571
570 bam = "BAM FROM sub/bam/bam.py" 572 bam = "BAM FROM sub/bam/bam.py"
571diff --git a/test/integration/targets/packaging_cli-doc/verify.py b/test/integration/targets/packaging_cli-doc/verify.py 573diff --git a/test/integration/targets/packaging_cli-doc/verify.py b/test/integration/targets/packaging_cli-doc/verify.py
572index 7793fa8c24..71f82186dd 100755 574index 7fe9d1d371..fabd53ca57 100755
573--- a/test/integration/targets/packaging_cli-doc/verify.py 575--- a/test/integration/targets/packaging_cli-doc/verify.py
574+++ b/test/integration/targets/packaging_cli-doc/verify.py 576+++ b/test/integration/targets/packaging_cli-doc/verify.py
575@@ -1,4 +1,4 @@ 577@@ -1,4 +1,4 @@
576-#!/usr/bin/env python 578-#!/usr/bin/env python
577+#!/usr/bin/env python3 579+#!/usr/bin/env python3
580 from __future__ import annotations
578 581
579 import os 582 import os
580 import pathlib
581diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py 583diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py
582index ab771fa09e..1dece083d3 100755 584index 1aebfbbb42..fa13209d34 100755
583--- a/test/integration/targets/pause/test-pause.py 585--- a/test/integration/targets/pause/test-pause.py
584+++ b/test/integration/targets/pause/test-pause.py 586+++ b/test/integration/targets/pause/test-pause.py
585@@ -1,4 +1,4 @@ 587@@ -1,4 +1,4 @@
586-#!/usr/bin/env python 588-#!/usr/bin/env python
587+#!/usr/bin/env python3 589+#!/usr/bin/env python3
588 590
589 from __future__ import (absolute_import, division, print_function) 591 from __future__ import annotations
590 __metaclass__ = type 592
591diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py 593diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py
592index aaf21875ca..2835719e4f 100755 594index 7d7240fe4e..e49aa26558 100755
593--- a/test/integration/targets/pip/files/setup.py 595--- a/test/integration/targets/pip/files/setup.py
594+++ b/test/integration/targets/pip/files/setup.py 596+++ b/test/integration/targets/pip/files/setup.py
595@@ -1,4 +1,4 @@ 597@@ -1,4 +1,4 @@
596-#!/usr/bin/env python 598-#!/usr/bin/env python
597+#!/usr/bin/env python3 599+#!/usr/bin/env python3
598 600
599 from __future__ import (absolute_import, division, print_function) 601 from __future__ import annotations
600 __metaclass__ = type 602
601diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py 603diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py
602index 6292272e63..e5664fb2e3 100644 604index 6bf404cad4..691e6f4cb2 100644
603--- a/test/integration/targets/service/files/ansible_test_service.py 605--- a/test/integration/targets/service/files/ansible_test_service.py
604+++ b/test/integration/targets/service/files/ansible_test_service.py 606+++ b/test/integration/targets/service/files/ansible_test_service.py
605@@ -1,4 +1,4 @@ 607@@ -1,4 +1,4 @@
@@ -609,7 +611,7 @@ index 6292272e63..e5664fb2e3 100644
609 # this is mostly based off of the code found here: 611 # this is mostly based off of the code found here:
610 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ 612 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
611diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py 613diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py
612index 19f1e29138..609218325d 100644 614index 6bf404cad4..691e6f4cb2 100644
613--- a/test/integration/targets/service_facts/files/ansible_test_service.py 615--- a/test/integration/targets/service_facts/files/ansible_test_service.py
614+++ b/test/integration/targets/service_facts/files/ansible_test_service.py 616+++ b/test/integration/targets/service_facts/files/ansible_test_service.py
615@@ -1,4 +1,4 @@ 617@@ -1,4 +1,4 @@
@@ -619,37 +621,37 @@ index 19f1e29138..609218325d 100644
619 # this is mostly based off of the code found here: 621 # this is mostly based off of the code found here:
620 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ 622 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
621diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py 623diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
622index b0a8889439..90c83b582b 100644 624index 6043fdfe0f..54f06923d0 100644
623--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py 625--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
624+++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py 626+++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
625@@ -1,4 +1,4 @@ 627@@ -1,4 +1,4 @@
626-#!/usr/bin/env python 628-#!/usr/bin/env python
627+#!/usr/bin/env python3 629+#!/usr/bin/env python3
628 630
629 from __future__ import (absolute_import, division, print_function) 631 from __future__ import annotations
630 __metaclass__ = type 632
631diff --git a/test/integration/targets/test_utils/scripts/timeout.py b/test/integration/targets/test_utils/scripts/timeout.py 633diff --git a/test/integration/targets/test_utils/scripts/timeout.py b/test/integration/targets/test_utils/scripts/timeout.py
632index f88f3e4e15..c312dc4f6c 100755 634index 996071203e..7c8aaa496b 100755
633--- a/test/integration/targets/test_utils/scripts/timeout.py 635--- a/test/integration/targets/test_utils/scripts/timeout.py
634+++ b/test/integration/targets/test_utils/scripts/timeout.py 636+++ b/test/integration/targets/test_utils/scripts/timeout.py
635@@ -1,4 +1,4 @@ 637@@ -1,4 +1,4 @@
636-#!/usr/bin/env python 638-#!/usr/bin/env python
637+#!/usr/bin/env python3 639+#!/usr/bin/env python3
640 from __future__ import annotations
638 641
639 import argparse 642 import argparse
640 import subprocess
641diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py 643diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py
642index 1a5bdd3078..344bcf0f86 100755 644index 95bb217f70..c162721e15 100755
643--- a/test/integration/targets/throttle/test_throttle.py 645--- a/test/integration/targets/throttle/test_throttle.py
644+++ b/test/integration/targets/throttle/test_throttle.py 646+++ b/test/integration/targets/throttle/test_throttle.py
645@@ -1,4 +1,4 @@ 647@@ -1,4 +1,4 @@
646-#!/usr/bin/env python 648-#!/usr/bin/env python
647+#!/usr/bin/env python3 649+#!/usr/bin/env python3
648 650
649 from __future__ import (absolute_import, division, print_function) 651 from __future__ import annotations
650 __metaclass__ = type 652
651diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py 653diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
652index b03c87b80f..2035463092 100755 654index 6511169014..fd285de84b 100755
653--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py 655--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py
654+++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py 656+++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
655@@ -1,4 +1,4 @@ 657@@ -1,4 +1,4 @@
@@ -659,7 +661,7 @@ index b03c87b80f..2035463092 100755
659 # A tool to check the order of precedence for ansible variables 661 # A tool to check the order of precedence for ansible variables
660 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml 662 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml
661diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py 663diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py
662index 77a6165c8e..865158e3b1 100644 664index a6904971b8..179b8324eb 100644
663--- a/test/lib/ansible_test/_internal/util_common.py 665--- a/test/lib/ansible_test/_internal/util_common.py
664+++ b/test/lib/ansible_test/_internal/util_common.py 666+++ b/test/lib/ansible_test/_internal/util_common.py
665@@ -303,7 +303,7 @@ def get_injector_path() -> str: 667@@ -303,7 +303,7 @@ def get_injector_path() -> str:
@@ -693,7 +695,7 @@ index b0b1319783..9535c3b481 100644
693 695
694 module_shebangs = { 696 module_shebangs = {
695diff --git a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py b/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py 697diff --git a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py b/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
696index 930654fc1e..bbf50369d7 100755 698index 9cb5d04ae0..f450a09466 100755
697--- a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py 699--- a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
698+++ b/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py 700+++ b/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
699@@ -1,4 +1,4 @@ 701@@ -1,4 +1,4 @@
@@ -703,10 +705,10 @@ index 930654fc1e..bbf50369d7 100755
703 """Command line entry point for ansible-test.""" 705 """Command line entry point for ansible-test."""
704 706
705diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py 707diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py
706index 6e2a4956c4..6776de66e1 100644 708index c7edce6b2d..44dd0757a2 100644
707--- a/test/units/executor/module_common/test_module_common.py 709--- a/test/units/executor/module_common/test_module_common.py
708+++ b/test/units/executor/module_common/test_module_common.py 710+++ b/test/units/executor/module_common/test_module_common.py
709@@ -117,8 +117,8 @@ class TestGetShebang: 711@@ -115,8 +115,8 @@ class TestGetShebang:
710 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3') 712 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3')
711 713
712 def test_python_via_env(self, templar): 714 def test_python_via_env(self, templar):
@@ -718,5 +720,5 @@ index 6e2a4956c4..6776de66e1 100644
718 720
719 class TestDetectionRegexes: 721 class TestDetectionRegexes:
720-- 722--
7212.25.1 7232.40.0
722 724
diff --git a/recipes-devtools/python/python3-ansible_2.16.5.bb b/recipes-devtools/python/python3-ansible_2.17.6.bb
index f3ab237..f3ab237 100644
--- a/recipes-devtools/python/python3-ansible_2.16.5.bb
+++ b/recipes-devtools/python/python3-ansible_2.17.6.bb