summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMingli Yu <mingli.yu@windriver.com>2024-04-03 16:55:27 +0800
committerBruce Ashfield <bruce.ashfield@gmail.com>2024-04-09 14:13:25 +0000
commite17a391cfd9bc9caa6002f4b5283f6da5b7476cf (patch)
treece9d633ff7624ccac6ddb294a1ba2622ddd7b3bc
parent2f83250ec1c08410a5684b03e0a8baf062dd0d66 (diff)
downloadmeta-cloud-services-e17a391cfd9bc9caa6002f4b5283f6da5b7476cf.tar.gz
python3-ansible: Upgrade 2.14.5 -> 2.16.5
The 2.14.x will be EOL 20 May 2024 [1], so upgrade to 2.16.5 which also includes the security fix for CVE-2024-0690. [1] https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html Signed-off-by: Mingli Yu <mingli.yu@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-rw-r--r--recipes-devtools/python/python-ansible.inc6
-rw-r--r--recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch337
-rw-r--r--recipes-devtools/python/python3-ansible_2.16.5.bb (renamed from recipes-devtools/python/python3-ansible_2.14.5.bb)0
3 files changed, 121 insertions, 222 deletions
diff --git a/recipes-devtools/python/python-ansible.inc b/recipes-devtools/python/python-ansible.inc
index fa55ba3..7c9d0f5 100644
--- a/recipes-devtools/python/python-ansible.inc
+++ b/recipes-devtools/python/python-ansible.inc
@@ -2,13 +2,13 @@ DESCRIPTION = "Ansible is a simple IT automation platform that makes your applic
2HOMEPAGE = "https://github.com/ansible/ansible/" 2HOMEPAGE = "https://github.com/ansible/ansible/"
3SECTION = "devel/python" 3SECTION = "devel/python"
4LICENSE = "GPL-3.0-only" 4LICENSE = "GPL-3.0-only"
5LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a" 5LIC_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.14" 9SRC_URI = "git://github.com/ansible/ansible.git;protocol=https;branch=stable-2.16"
10 10
11SRCREV = "5c6dfff68759ccc9794b609db45872950077e98b" 11SRCREV = "ee04df4796af1a438bc80aff33cdd5ca4d5304aa"
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 67a4f95..420324b 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 b5d7b08addeb7795720acf3debd88a13ddd30402 Mon Sep 17 00:00:00 2001 1From f14f3a89262e9348348f6aeced9c20067a613062 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
@@ -6,27 +6,21 @@ Subject: [PATCH] python3: ensure py scripts use py3 for shebang
6Upstream-Status: Pending 6Upstream-Status: Pending
7 7
8Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> 8Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
9Rebase to 2.24.5 9Rebase to 2.14.5
10Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
11Rebase to 2.16.5
10Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 12Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
11--- 13---
12 .azure-pipelines/scripts/combine-coverage.py | 2 +- 14 .azure-pipelines/scripts/combine-coverage.py | 2 +-
13 .azure-pipelines/scripts/publish-codecov.py | 2 +- 15 .azure-pipelines/scripts/publish-codecov.py | 2 +-
14 .azure-pipelines/scripts/time-command.py | 2 +- 16 .azure-pipelines/scripts/time-command.py | 2 +-
15 docs/bin/find-plugin-refs.py | 2 +-
16 docs/docsite/rst/dev_guide/testing/sanity/shebang.rst | 2 +-
17 docs/docsite/rst/inventory_guide/connection_details.rst | 4 ++--
18 docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po | 4 ++--
19 examples/scripts/uptime.py | 2 +-
20 hacking/ansible-profile | 2 +- 17 hacking/ansible-profile | 2 +-
21 hacking/azp/download.py | 2 +- 18 hacking/azp/download.py | 2 +-
22 hacking/azp/get_recent_coverage_runs.py | 2 +- 19 hacking/azp/get_recent_coverage_runs.py | 2 +-
23 hacking/azp/incidental.py | 2 +- 20 hacking/azp/incidental.py | 2 +-
24 hacking/azp/run.py | 2 +- 21 hacking/azp/run.py | 2 +-
25 hacking/backport/backport_of_line_adder.py | 2 +- 22 hacking/backport/backport_of_line_adder.py | 2 +-
26 hacking/build-ansible.py | 2 +- 23 hacking/create-bulk-issues.py | 2 +-
27 hacking/create_deprecation_bug_reports.py | 2 +-
28 hacking/fix_test_syntax.py | 2 +-
29 hacking/get_library.py | 2 +-
30 hacking/report.py | 2 +- 24 hacking/report.py | 2 +-
31 hacking/return_skeleton_generator.py | 2 +- 25 hacking/return_skeleton_generator.py | 2 +-
32 hacking/test-module.py | 2 +- 26 hacking/test-module.py | 2 +-
@@ -42,9 +36,11 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
42 lib/ansible/cli/pull.py | 2 +- 36 lib/ansible/cli/pull.py | 2 +-
43 lib/ansible/cli/scripts/ansible_connection_cli_stub.py | 2 +- 37 lib/ansible/cli/scripts/ansible_connection_cli_stub.py | 2 +-
44 lib/ansible/cli/vault.py | 2 +- 38 lib/ansible/cli/vault.py | 2 +-
39 packaging/cli-doc/build.py | 2 +-
45 packaging/release.py | 2 +- 40 packaging/release.py | 2 +-
46 packaging/sdist/check-link-behavior.py | 2 +- 41 test/integration/targets/ansible-config/files/ini_dupes.py | 2 +-
47 .../targets/ansible-galaxy-collection/files/build_bad_tar.py | 2 +- 42 .../targets/ansible-galaxy-collection/files/build_bad_tar.py | 2 +-
43 .../targets/ansible-galaxy-role/files/create-role-archive.py | 2 +-
48 test/integration/targets/ansible-test-container/runme.py | 2 +- 44 test/integration/targets/ansible-test-container/runme.py | 2 +-
49 .../targets/ansible-test-integration-targets/test.py | 2 +- 45 .../targets/ansible-test-integration-targets/test.py | 2 +-
50 .../ansible_collections/ns/col/run-with-pty.py | 2 +- 46 .../ansible_collections/ns/col/run-with-pty.py | 2 +-
@@ -63,27 +59,25 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
63 test/integration/targets/fork_safe_stdio/run-with-pty.py | 2 +- 59 test/integration/targets/fork_safe_stdio/run-with-pty.py | 2 +-
64 test/integration/targets/gathering/uuid.fact | 2 +- 60 test/integration/targets/gathering/uuid.fact | 2 +-
65 test/integration/targets/gathering_facts/uuid.fact | 2 +- 61 test/integration/targets/gathering_facts/uuid.fact | 2 +-
66 test/integration/targets/group/files/gidget.py | 2 +-
67 test/integration/targets/module_utils/module_utils/foo.py | 2 +-
68 test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +- 62 test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +-
69 .../targets/module_utils/module_utils/sub/bam/bam.py | 2 +- 63 .../targets/module_utils/module_utils/sub/bam/bam.py | 2 +-
70 .../targets/module_utils/module_utils/sub/bar/bam.py | 2 +- 64 test/integration/targets/packaging_cli-doc/verify.py | 2 +-
71 .../targets/module_utils/module_utils/sub/bar/bar.py | 2 +-
72 test/integration/targets/pause/test-pause.py | 2 +- 65 test/integration/targets/pause/test-pause.py | 2 +-
73 test/integration/targets/pip/files/setup.py | 2 +- 66 test/integration/targets/pip/files/setup.py | 2 +-
74 .../integration/targets/service/files/ansible_test_service.py | 2 +- 67 .../integration/targets/service/files/ansible_test_service.py | 2 +-
75 .../targets/service_facts/files/ansible_test_service.py | 2 +- 68 .../targets/service_facts/files/ansible_test_service.py | 2 +-
76 .../targets/template/role_filter/filter_plugins/myplugin.py | 2 +- 69 .../targets/template/role_filter/filter_plugins/myplugin.py | 2 +-
70 test/integration/targets/test_utils/scripts/timeout.py | 2 +-
77 test/integration/targets/throttle/test_throttle.py | 2 +- 71 test/integration/targets/throttle/test_throttle.py | 2 +-
78 .../targets/var_precedence/ansible-var-precedence-check.py | 2 +- 72 .../targets/var_precedence/ansible-var-precedence-check.py | 2 +-
79 test/lib/ansible_test/_internal/util_common.py | 2 +- 73 test/lib/ansible_test/_internal/util_common.py | 2 +-
80 .../_util/controller/sanity/code-smell/shebang.py | 4 ++-- 74 .../_util/controller/sanity/code-smell/shebang.py | 4 ++--
81 .../ansible_test/_util/target/cli/ansible_test_cli_stub.py | 2 +- 75 .../ansible_test/_util/target/cli/ansible_test_cli_stub.py | 2 +-
82 test/units/executor/module_common/test_module_common.py | 4 ++-- 76 test/units/executor/module_common/test_module_common.py | 4 ++--
83 71 files changed, 75 insertions(+), 75 deletions(-) 77 63 files changed, 65 insertions(+), 65 deletions(-)
84 78
85diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py 79diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py
86index 506ade6460c..15bee402341 100755 80index 506ade6460..15bee40234 100755
87--- a/.azure-pipelines/scripts/combine-coverage.py 81--- a/.azure-pipelines/scripts/combine-coverage.py
88+++ b/.azure-pipelines/scripts/combine-coverage.py 82+++ b/.azure-pipelines/scripts/combine-coverage.py
89@@ -1,4 +1,4 @@ 83@@ -1,4 +1,4 @@
@@ -93,7 +87,7 @@ index 506ade6460c..15bee402341 100755
93 Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job. 87 Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
94 Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}" 88 Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
95diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py 89diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py
96index f2bc4b84b38..01ad32f494c 100755 90index f2bc4b84b3..01ad32f494 100755
97--- a/.azure-pipelines/scripts/publish-codecov.py 91--- a/.azure-pipelines/scripts/publish-codecov.py
98+++ b/.azure-pipelines/scripts/publish-codecov.py 92+++ b/.azure-pipelines/scripts/publish-codecov.py
99@@ -1,4 +1,4 @@ 93@@ -1,4 +1,4 @@
@@ -103,7 +97,7 @@ index f2bc4b84b38..01ad32f494c 100755
103 Upload code coverage reports to codecov.io. 97 Upload code coverage reports to codecov.io.
104 Multiple coverage files from multiple languages are accepted and aggregated after upload. 98 Multiple coverage files from multiple languages are accepted and aggregated after upload.
105diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py 99diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py
106index 5e8eb8d4c8f..5450c48900e 100755 100index 5e8eb8d4c8..5450c48900 100755
107--- a/.azure-pipelines/scripts/time-command.py 101--- a/.azure-pipelines/scripts/time-command.py
108+++ b/.azure-pipelines/scripts/time-command.py 102+++ b/.azure-pipelines/scripts/time-command.py
109@@ -1,4 +1,4 @@ 103@@ -1,4 +1,4 @@
@@ -112,76 +106,8 @@ index 5e8eb8d4c8f..5450c48900e 100755
112 """Prepends a relative timestamp to each input line from stdin and writes it to stdout.""" 106 """Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
113 107
114 from __future__ import (absolute_import, division, print_function) 108 from __future__ import (absolute_import, division, print_function)
115diff --git a/docs/bin/find-plugin-refs.py b/docs/bin/find-plugin-refs.py
116index d603409d688..c52d6d13e38 100755
117--- a/docs/bin/find-plugin-refs.py
118+++ b/docs/bin/find-plugin-refs.py
119@@ -1,4 +1,4 @@
120-#!/usr/bin/env python
121+#!/usr/bin/env python3
122
123 # To run this script, first make webdocs in the toplevel of the checkout. This will generate all
124 # rst files from their sources. Then run this script ./docs/bin/find-plugin-refs.py
125diff --git a/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst b/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
126index cff2aa0914b..7c4bd651563 100644
127--- a/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
128+++ b/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
129@@ -6,7 +6,7 @@ Most executable files should only use one of the following shebangs:
130 - ``#!/bin/sh``
131 - ``#!/bin/bash``
132 - ``#!/usr/bin/make``
133-- ``#!/usr/bin/env python``
134+- ``#!/usr/bin/env python3``
135 - ``#!/usr/bin/env bash``
136
137 NOTE: For ``#!/bin/bash``, any of the options ``eux`` may also be used, such as ``#!/bin/bash -eux``.
138diff --git a/docs/docsite/rst/inventory_guide/connection_details.rst b/docs/docsite/rst/inventory_guide/connection_details.rst
139index 5e332160617..65bfd5903ad 100644
140--- a/docs/docsite/rst/inventory_guide/connection_details.rst
141+++ b/docs/docsite/rst/inventory_guide/connection_details.rst
142@@ -84,13 +84,13 @@ You can run commands against the control node by using "localhost" or "127.0.0.1
143
144 .. code-block:: bash
145
146- $ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python"'
147+ $ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python3"'
148
149 You can specify localhost explicitly by adding this to your inventory file:
150
151 .. code-block:: bash
152
153- localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
154+ localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python3"
155
156 .. _host_key_checking_on:
157
158diff --git a/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po b/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
159index b6abc3e5874..53f5fdc8986 100644
160--- a/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
161+++ b/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
162@@ -11820,8 +11820,8 @@ msgid "``#!/usr/bin/make``"
163 msgstr "``#!/usr/bin/make``"
164
165 #: ../../rst/dev_guide/testing/sanity/shebang.rst:9
166-msgid "``#!/usr/bin/env python``"
167-msgstr "``#!/usr/bin/env python``"
168+msgid "``#!/usr/bin/env python3``"
169+msgstr "``#!/usr/bin/env python3``"
170
171 #: ../../rst/dev_guide/testing/sanity/shebang.rst:10
172 msgid "``#!/usr/bin/env bash``"
173diff --git a/examples/scripts/uptime.py b/examples/scripts/uptime.py
174index d77a5fb5660..665594c254b 100755
175--- a/examples/scripts/uptime.py
176+++ b/examples/scripts/uptime.py
177@@ -1,4 +1,4 @@
178-#!/usr/bin/env python
179+#!/usr/bin/env python3
180
181 from __future__ import (absolute_import, division, print_function)
182 __metaclass__ = type
183diff --git a/hacking/ansible-profile b/hacking/ansible-profile 109diff --git a/hacking/ansible-profile b/hacking/ansible-profile
184index 6612402da62..d67526a1619 100755 110index 9856e7ab5c..0988bb2037 100755
185--- a/hacking/ansible-profile 111--- a/hacking/ansible-profile
186+++ b/hacking/ansible-profile 112+++ b/hacking/ansible-profile
187@@ -1,4 +1,4 @@ 113@@ -1,4 +1,4 @@
@@ -191,7 +117,7 @@ index 6612402da62..d67526a1619 100755
191 __metaclass__ = type 117 __metaclass__ = type
192 118
193diff --git a/hacking/azp/download.py b/hacking/azp/download.py 119diff --git a/hacking/azp/download.py b/hacking/azp/download.py
194index 117e9da5b7a..89466cb17be 100755 120index e0de99a27a..6ccd51b2aa 100755
195--- a/hacking/azp/download.py 121--- a/hacking/azp/download.py
196+++ b/hacking/azp/download.py 122+++ b/hacking/azp/download.py
197@@ -1,4 +1,4 @@ 123@@ -1,4 +1,4 @@
@@ -201,7 +127,7 @@ index 117e9da5b7a..89466cb17be 100755
201 127
202 # (c) 2016 Red Hat, Inc. 128 # (c) 2016 Red Hat, Inc.
203diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py 129diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py
204index 25e2fa8120a..9b0d9b972ed 100755 130index 1be867da1e..2fb1cc4582 100755
205--- a/hacking/azp/get_recent_coverage_runs.py 131--- a/hacking/azp/get_recent_coverage_runs.py
206+++ b/hacking/azp/get_recent_coverage_runs.py 132+++ b/hacking/azp/get_recent_coverage_runs.py
207@@ -1,4 +1,4 @@ 133@@ -1,4 +1,4 @@
@@ -211,7 +137,7 @@ index 25e2fa8120a..9b0d9b972ed 100755
211 # (c) 2020 Red Hat, Inc. 137 # (c) 2020 Red Hat, Inc.
212 # 138 #
213diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py 139diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py
214index 87d4d213c94..7660e2ed226 100755 140index 87d4d213c9..7660e2ed22 100755
215--- a/hacking/azp/incidental.py 141--- a/hacking/azp/incidental.py
216+++ b/hacking/azp/incidental.py 142+++ b/hacking/azp/incidental.py
217@@ -1,4 +1,4 @@ 143@@ -1,4 +1,4 @@
@@ -221,7 +147,7 @@ index 87d4d213c94..7660e2ed226 100755
221 147
222 # (c) 2020 Red Hat, Inc. 148 # (c) 2020 Red Hat, Inc.
223diff --git a/hacking/azp/run.py b/hacking/azp/run.py 149diff --git a/hacking/azp/run.py b/hacking/azp/run.py
224index 00a177944f8..591e6bcc4fe 100755 150index 00a177944f..591e6bcc4f 100755
225--- a/hacking/azp/run.py 151--- a/hacking/azp/run.py
226+++ b/hacking/azp/run.py 152+++ b/hacking/azp/run.py
227@@ -1,4 +1,4 @@ 153@@ -1,4 +1,4 @@
@@ -231,7 +157,7 @@ index 00a177944f8..591e6bcc4fe 100755
231 157
232 # (c) 2016 Red Hat, Inc. 158 # (c) 2016 Red Hat, Inc.
233diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py 159diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py
234index ef77ddcf400..bbec15de6a2 100755 160index ef77ddcf40..bbec15de6a 100755
235--- a/hacking/backport/backport_of_line_adder.py 161--- a/hacking/backport/backport_of_line_adder.py
236+++ b/hacking/backport/backport_of_line_adder.py 162+++ b/hacking/backport/backport_of_line_adder.py
237@@ -1,4 +1,4 @@ 163@@ -1,4 +1,4 @@
@@ -240,48 +166,18 @@ index ef77ddcf400..bbec15de6a2 100755
240 # (c) 2020, Red Hat, Inc. <relrod@redhat.com> 166 # (c) 2020, Red Hat, Inc. <relrod@redhat.com>
241 # 167 #
242 # This file is part of Ansible 168 # This file is part of Ansible
243diff --git a/hacking/build-ansible.py b/hacking/build-ansible.py 169diff --git a/hacking/create-bulk-issues.py b/hacking/create-bulk-issues.py
244index c108c1861fa..8ebb88d33bd 100755 170index d2651415df..2235daa5ec 100755
245--- a/hacking/build-ansible.py 171--- a/hacking/create-bulk-issues.py
246+++ b/hacking/build-ansible.py 172+++ b/hacking/create-bulk-issues.py
247@@ -1,4 +1,4 @@
248-#!/usr/bin/env python
249+#!/usr/bin/env python3
250 # coding: utf-8
251 # PYTHON_ARGCOMPLETE_OK
252 # Copyright: (c) 2019, Ansible Project
253diff --git a/hacking/create_deprecation_bug_reports.py b/hacking/create_deprecation_bug_reports.py
254index e14df4be389..e6b9b9025c3 100755
255--- a/hacking/create_deprecation_bug_reports.py
256+++ b/hacking/create_deprecation_bug_reports.py
257@@ -1,4 +1,4 @@ 173@@ -1,4 +1,4 @@
258-#!/usr/bin/env python 174-#!/usr/bin/env python
259+#!/usr/bin/env python3 175+#!/usr/bin/env python3
260 # PYTHON_ARGCOMPLETE_OK 176 # PYTHON_ARGCOMPLETE_OK
261 """Create GitHub issues for deprecated features.""" 177 """Create GitHub issues for deprecated features."""
262 178
263diff --git a/hacking/fix_test_syntax.py b/hacking/fix_test_syntax.py
264index 7178033406a..78d87ef71cb 100755
265--- a/hacking/fix_test_syntax.py
266+++ b/hacking/fix_test_syntax.py
267@@ -1,4 +1,4 @@
268-#!/usr/bin/env python
269+#!/usr/bin/env python3
270 # -*- coding: utf-8 -*-
271 # (c) 2017, Matt Martz <matt@sivel.net>
272 #
273diff --git a/hacking/get_library.py b/hacking/get_library.py
274index 23bf4a39bb5..9346784398f 100755
275--- a/hacking/get_library.py
276+++ b/hacking/get_library.py
277@@ -1,4 +1,4 @@
278-#!/usr/bin/env python
279+#!/usr/bin/env python3
280
281 # (c) 2014, Will Thames <will@thames.id.au>
282 #
283diff --git a/hacking/report.py b/hacking/report.py 179diff --git a/hacking/report.py b/hacking/report.py
284index 58b3a6b915a..78eed516dc0 100755 180index 58b3a6b915..78eed516dc 100755
285--- a/hacking/report.py 181--- a/hacking/report.py
286+++ b/hacking/report.py 182+++ b/hacking/report.py
287@@ -1,4 +1,4 @@ 183@@ -1,4 +1,4 @@
@@ -291,7 +187,7 @@ index 58b3a6b915a..78eed516dc0 100755
291 """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting.""" 187 """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting."""
292 188
293diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py 189diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py
294index 7002b7899d5..cff03c38e6b 100755 190index 7002b7899d..cff03c38e6 100755
295--- a/hacking/return_skeleton_generator.py 191--- a/hacking/return_skeleton_generator.py
296+++ b/hacking/return_skeleton_generator.py 192+++ b/hacking/return_skeleton_generator.py
297@@ -1,4 +1,4 @@ 193@@ -1,4 +1,4 @@
@@ -301,7 +197,7 @@ index 7002b7899d5..cff03c38e6b 100755
301 # (c) 2017, Will Thames <will@thames.id.au> 197 # (c) 2017, Will Thames <will@thames.id.au>
302 # 198 #
303diff --git a/hacking/test-module.py b/hacking/test-module.py 199diff --git a/hacking/test-module.py b/hacking/test-module.py
304index 54343e07e8b..38d4b8c60bb 100755 200index 7a329b4b2d..a1118ba144 100755
305--- a/hacking/test-module.py 201--- a/hacking/test-module.py
306+++ b/hacking/test-module.py 202+++ b/hacking/test-module.py
307@@ -1,4 +1,4 @@ 203@@ -1,4 +1,4 @@
@@ -311,7 +207,7 @@ index 54343e07e8b..38d4b8c60bb 100755
311 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 207 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
312 # 208 #
313diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py 209diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py
314index 2fc5a2f9328..18e67d7d121 100755 210index e75c78ad91..1613b02ed5 100755
315--- a/hacking/tests/gen_distribution_version_testcase.py 211--- a/hacking/tests/gen_distribution_version_testcase.py
316+++ b/hacking/tests/gen_distribution_version_testcase.py 212+++ b/hacking/tests/gen_distribution_version_testcase.py
317@@ -1,4 +1,4 @@ 213@@ -1,4 +1,4 @@
@@ -321,7 +217,7 @@ index 2fc5a2f9328..18e67d7d121 100755
321 """ 217 """
322 This script generated test_cases for test_distribution_version.py. 218 This script generated test_cases for test_distribution_version.py.
323diff --git a/hacking/update-sanity-requirements.py b/hacking/update-sanity-requirements.py 219diff --git a/hacking/update-sanity-requirements.py b/hacking/update-sanity-requirements.py
324index 747f058880a..2570ab2c7d3 100755 220index 997d6dbf87..16a47f0f3c 100755
325--- a/hacking/update-sanity-requirements.py 221--- a/hacking/update-sanity-requirements.py
326+++ b/hacking/update-sanity-requirements.py 222+++ b/hacking/update-sanity-requirements.py
327@@ -1,4 +1,4 @@ 223@@ -1,4 +1,4 @@
@@ -331,7 +227,7 @@ index 747f058880a..2570ab2c7d3 100755
331 """Generate frozen sanity test requirements from source requirements files.""" 227 """Generate frozen sanity test requirements from source requirements files."""
332 228
333diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py 229diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
334index e90b44ce101..120948c7495 100755 230index a54dacb70c..dc14986420 100755
335--- a/lib/ansible/cli/adhoc.py 231--- a/lib/ansible/cli/adhoc.py
336+++ b/lib/ansible/cli/adhoc.py 232+++ b/lib/ansible/cli/adhoc.py
337@@ -1,4 +1,4 @@ 233@@ -1,4 +1,4 @@
@@ -341,7 +237,7 @@ index e90b44ce101..120948c7495 100755
341 # Copyright: (c) 2018, Ansible Project 237 # Copyright: (c) 2018, Ansible Project
342 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 238 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
343diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py 239diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py
344index 3a5c24214b1..98d7a732517 100755 240index f394ef7c1e..e37c9fd619 100755
345--- a/lib/ansible/cli/config.py 241--- a/lib/ansible/cli/config.py
346+++ b/lib/ansible/cli/config.py 242+++ b/lib/ansible/cli/config.py
347@@ -1,4 +1,4 @@ 243@@ -1,4 +1,4 @@
@@ -351,7 +247,7 @@ index 3a5c24214b1..98d7a732517 100755
351 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 247 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
352 # PYTHON_ARGCOMPLETE_OK 248 # PYTHON_ARGCOMPLETE_OK
353diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py 249diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
354index 3125cc47a7f..4a2f38bb48e 100755 250index 2325bf05d6..475f03eb00 100755
355--- a/lib/ansible/cli/console.py 251--- a/lib/ansible/cli/console.py
356+++ b/lib/ansible/cli/console.py 252+++ b/lib/ansible/cli/console.py
357@@ -1,4 +1,4 @@ 253@@ -1,4 +1,4 @@
@@ -361,7 +257,7 @@ index 3125cc47a7f..4a2f38bb48e 100755
361 # Copyright: (c) 2016, Redhat Inc 257 # Copyright: (c) 2016, Redhat Inc
362 # Copyright: (c) 2018, Ansible Project 258 # Copyright: (c) 2018, Ansible Project
363diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py 259diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py
364index 9f560bcbc6d..a0d34d92f6d 100755 260index 4a5c892816..c99d25d9cb 100755
365--- a/lib/ansible/cli/doc.py 261--- a/lib/ansible/cli/doc.py
366+++ b/lib/ansible/cli/doc.py 262+++ b/lib/ansible/cli/doc.py
367@@ -1,4 +1,4 @@ 263@@ -1,4 +1,4 @@
@@ -371,7 +267,7 @@ index 9f560bcbc6d..a0d34d92f6d 100755
371 # Copyright: (c) 2018, Ansible Project 267 # Copyright: (c) 2018, Ansible Project
372 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 268 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
373diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py 269diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py
374index c280380c18c..0357401c749 100755 270index 334e4bf4f0..9918f338c1 100755
375--- a/lib/ansible/cli/galaxy.py 271--- a/lib/ansible/cli/galaxy.py
376+++ b/lib/ansible/cli/galaxy.py 272+++ b/lib/ansible/cli/galaxy.py
377@@ -1,4 +1,4 @@ 273@@ -1,4 +1,4 @@
@@ -381,7 +277,7 @@ index c280380c18c..0357401c749 100755
381 # Copyright: (c) 2018-2021, Ansible Project 277 # Copyright: (c) 2018-2021, Ansible Project
382 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 278 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
383diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py 279diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py
384index e8ed75e4636..e4bb334932e 100755 280index 3550079bf8..f1da0d0531 100755
385--- a/lib/ansible/cli/inventory.py 281--- a/lib/ansible/cli/inventory.py
386+++ b/lib/ansible/cli/inventory.py 282+++ b/lib/ansible/cli/inventory.py
387@@ -1,4 +1,4 @@ 283@@ -1,4 +1,4 @@
@@ -391,7 +287,7 @@ index e8ed75e4636..e4bb334932e 100755
391 # Copyright: (c) 2018, Ansible Project 287 # Copyright: (c) 2018, Ansible Project
392 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 288 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
393diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py 289diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py
394index 9c091a675a9..27ff7d442e4 100755 290index e63785b058..bc5fbc2f6f 100755
395--- a/lib/ansible/cli/playbook.py 291--- a/lib/ansible/cli/playbook.py
396+++ b/lib/ansible/cli/playbook.py 292+++ b/lib/ansible/cli/playbook.py
397@@ -1,4 +1,4 @@ 293@@ -1,4 +1,4 @@
@@ -401,7 +297,7 @@ index 9c091a675a9..27ff7d442e4 100755
401 # Copyright: (c) 2018, Ansible Project 297 # Copyright: (c) 2018, Ansible Project
402 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 298 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
403diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py 299diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py
404index dc8f055b44d..0e5b030eecf 100755 300index f369c390ec..f0ca673b36 100755
405--- a/lib/ansible/cli/pull.py 301--- a/lib/ansible/cli/pull.py
406+++ b/lib/ansible/cli/pull.py 302+++ b/lib/ansible/cli/pull.py
407@@ -1,4 +1,4 @@ 303@@ -1,4 +1,4 @@
@@ -411,7 +307,7 @@ index dc8f055b44d..0e5b030eecf 100755
411 # Copyright: (c) 2018, Ansible Project 307 # Copyright: (c) 2018, Ansible Project
412 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 308 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
413diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 309diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
414index 9109137e7f8..f01b1ec58dc 100755 310index b1ed18c9c6..03c26d52cb 100755
415--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 311--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
416+++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py 312+++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
417@@ -1,4 +1,4 @@ 313@@ -1,4 +1,4 @@
@@ -421,7 +317,7 @@ index 9109137e7f8..f01b1ec58dc 100755
421 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 317 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
422 from __future__ import (absolute_import, division, print_function) 318 from __future__ import (absolute_import, division, print_function)
423diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py 319diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
424index 3e60329de60..69499407479 100755 320index cf2c9dd901..3545624a09 100755
425--- a/lib/ansible/cli/vault.py 321--- a/lib/ansible/cli/vault.py
426+++ b/lib/ansible/cli/vault.py 322+++ b/lib/ansible/cli/vault.py
427@@ -1,4 +1,4 @@ 323@@ -1,4 +1,4 @@
@@ -430,8 +326,18 @@ index 3e60329de60..69499407479 100755
430 # (c) 2014, James Tanner <tanner.jc@gmail.com> 326 # (c) 2014, James Tanner <tanner.jc@gmail.com>
431 # Copyright: (c) 2018, Ansible Project 327 # Copyright: (c) 2018, Ansible Project
432 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 328 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
329diff --git a/packaging/cli-doc/build.py b/packaging/cli-doc/build.py
330index 878ba8eabf..64a614f3f7 100755
331--- a/packaging/cli-doc/build.py
332+++ b/packaging/cli-doc/build.py
333@@ -1,4 +1,4 @@
334-#!/usr/bin/env python
335+#!/usr/bin/env python3
336 # PYTHON_ARGCOMPLETE_OK
337 """Build documentation for ansible-core CLI programs."""
338
433diff --git a/packaging/release.py b/packaging/release.py 339diff --git a/packaging/release.py b/packaging/release.py
434index 1d1ba37117a..a561dc6a905 100755 340index 97c58a7424..fa5a27f794 100755
435--- a/packaging/release.py 341--- a/packaging/release.py
436+++ b/packaging/release.py 342+++ b/packaging/release.py
437@@ -1,4 +1,4 @@ 343@@ -1,4 +1,4 @@
@@ -440,18 +346,18 @@ index 1d1ba37117a..a561dc6a905 100755
440 # PYTHON_ARGCOMPLETE_OK 346 # PYTHON_ARGCOMPLETE_OK
441 """Manage upstream ansible-core releases.""" 347 """Manage upstream ansible-core releases."""
442 348
443diff --git a/packaging/sdist/check-link-behavior.py b/packaging/sdist/check-link-behavior.py 349diff --git a/test/integration/targets/ansible-config/files/ini_dupes.py b/test/integration/targets/ansible-config/files/ini_dupes.py
444index 34e05023d48..42f6c4be98f 100755 350index ed42e6acb8..e61252100e 100755
445--- a/packaging/sdist/check-link-behavior.py 351--- a/test/integration/targets/ansible-config/files/ini_dupes.py
446+++ b/packaging/sdist/check-link-behavior.py 352+++ b/test/integration/targets/ansible-config/files/ini_dupes.py
447@@ -1,4 +1,4 @@ 353@@ -1,4 +1,4 @@
448-#!/usr/bin/env python 354-#!/usr/bin/env python
449+#!/usr/bin/env python3 355+#!/usr/bin/env python3
450 """Checks for link behavior required for sdist to retain symlinks.""" 356 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
451 357
452 from __future__ import (absolute_import, division, print_function) 358 from __future__ import annotations
453diff --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 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
454index 6182e865db0..5829df52b5b 100644 360index 6182e865db..5829df52b5 100644
455--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py 361--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
456+++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py 362+++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
457@@ -1,4 +1,4 @@ 363@@ -1,4 +1,4 @@
@@ -460,8 +366,18 @@ index 6182e865db0..5829df52b5b 100644
460 366
461 # Copyright: (c) 2020, Ansible Project 367 # Copyright: (c) 2020, Ansible Project
462 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 368 # 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
370index 487666381f..86a3ea66d7 100755
371--- 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
373@@ -1,4 +1,4 @@
374-#!/usr/bin/env python
375+#!/usr/bin/env python3
376 """Create a role archive which overwrites an arbitrary file."""
377
378 import argparse
463diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py 379diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py
464index 687128056f7..bd7f3671655 100755 380index 3c86b6dd07..393a945ff9 100755
465--- a/test/integration/targets/ansible-test-container/runme.py 381--- a/test/integration/targets/ansible-test-container/runme.py
466+++ b/test/integration/targets/ansible-test-container/runme.py 382+++ b/test/integration/targets/ansible-test-container/runme.py
467@@ -1,4 +1,4 @@ 383@@ -1,4 +1,4 @@
@@ -471,7 +387,7 @@ index 687128056f7..bd7f3671655 100755
471 387
472 from __future__ import annotations 388 from __future__ import annotations
473diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py 389diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py
474index 8effb647fca..4e34c4bbc16 100755 390index 8effb647fc..4e34c4bbc1 100755
475--- a/test/integration/targets/ansible-test-integration-targets/test.py 391--- a/test/integration/targets/ansible-test-integration-targets/test.py
476+++ b/test/integration/targets/ansible-test-integration-targets/test.py 392+++ b/test/integration/targets/ansible-test-integration-targets/test.py
477@@ -1,4 +1,4 @@ 393@@ -1,4 +1,4 @@
@@ -481,7 +397,7 @@ index 8effb647fca..4e34c4bbc16 100755
481 import subprocess 397 import subprocess
482 import unittest 398 import unittest
483diff --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 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
484index 463915284b2..fc2ed398d9f 100755 400index 463915284b..fc2ed398d9 100755
485--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py 401--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
486+++ b/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
487@@ -1,4 +1,4 @@ 403@@ -1,4 +1,4 @@
@@ -491,7 +407,7 @@ index 463915284b2..fc2ed398d9f 100755
491 407
492 import sys 408 import sys
493diff --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 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
494index a2b094e2fca..355dba697a9 100755 410index a2b094e2fc..355dba697a 100755
495--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py 411--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
496+++ b/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
497@@ -1,4 +1,4 @@ 413@@ -1,4 +1,4 @@
@@ -501,21 +417,21 @@ index a2b094e2fca..355dba697a9 100755
501 417
502 import sys 418 import sys
503diff --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 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
504index 4265cc3e6c1..e5a0d9b4834 100755 420index 4265cc3e6c..e5a0d9b483 100755
505--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py 421--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
506+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py 422+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
507@@ -1 +1 @@ 423@@ -1 +1 @@
508-#!/usr/bin/env python 424-#!/usr/bin/env python
509+#!/usr/bin/env python3 425+#!/usr/bin/env python3
510diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py 426diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
511index 4265cc3e6c1..e5a0d9b4834 100755 427index 4265cc3e6c..e5a0d9b483 100755
512--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py 428--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
513+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py 429+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
514@@ -1 +1 @@ 430@@ -1 +1 @@
515-#!/usr/bin/env python 431-#!/usr/bin/env python
516+#!/usr/bin/env python3 432+#!/usr/bin/env python3
517diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py 433diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py
518index b380f147fca..e97f2fcb33d 100755 434index 97998bcd7c..aace3d346d 100755
519--- a/test/integration/targets/ansible-test/venv-pythons.py 435--- a/test/integration/targets/ansible-test/venv-pythons.py
520+++ b/test/integration/targets/ansible-test/venv-pythons.py 436+++ b/test/integration/targets/ansible-test/venv-pythons.py
521@@ -1,4 +1,4 @@ 437@@ -1,4 +1,4 @@
@@ -523,9 +439,9 @@ index b380f147fca..e97f2fcb33d 100755
523+#!/usr/bin/env python3 439+#!/usr/bin/env python3
524 """Return target Python options for use with ansible-test.""" 440 """Return target Python options for use with ansible-test."""
525 441
526 import os 442 import argparse
527diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py 443diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py
528index b67c7475631..a30c306a831 100755 444index b67c747563..a30c306a83 100755
529--- a/test/integration/targets/ansible-vault/faux-editor.py 445--- a/test/integration/targets/ansible-vault/faux-editor.py
530+++ b/test/integration/targets/ansible-vault/faux-editor.py 446+++ b/test/integration/targets/ansible-vault/faux-editor.py
531@@ -1,4 +1,4 @@ 447@@ -1,4 +1,4 @@
@@ -535,7 +451,7 @@ index b67c7475631..a30c306a831 100755
535 # Ansible is free software: you can redistribute it and/or modify 451 # Ansible is free software: you can redistribute it and/or modify
536 # it under the terms of the GNU General Public License as published by 452 # it under the terms of the GNU General Public License as published by
537diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py 453diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py
538index 1b7f02beb23..0dcada23c7e 100755 454index 1b7f02beb2..0dcada23c7 100755
539--- a/test/integration/targets/ansible-vault/password-script.py 455--- a/test/integration/targets/ansible-vault/password-script.py
540+++ b/test/integration/targets/ansible-vault/password-script.py 456+++ b/test/integration/targets/ansible-vault/password-script.py
541@@ -1,4 +1,4 @@ 457@@ -1,4 +1,4 @@
@@ -545,7 +461,7 @@ index 1b7f02beb23..0dcada23c7e 100755
545 # Ansible is free software: you can redistribute it and/or modify 461 # Ansible is free software: you can redistribute it and/or modify
546 # it under the terms of the GNU General Public License as published by 462 # it under the terms of the GNU General Public License as published by
547diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py 463diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py
548index ee46188742d..48244fca09e 100755 464index ee46188742..48244fca09 100755
549--- a/test/integration/targets/ansible-vault/test-vault-client.py 465--- a/test/integration/targets/ansible-vault/test-vault-client.py
550+++ b/test/integration/targets/ansible-vault/test-vault-client.py 466+++ b/test/integration/targets/ansible-vault/test-vault-client.py
551@@ -1,4 +1,4 @@ 467@@ -1,4 +1,4 @@
@@ -555,7 +471,7 @@ index ee46188742d..48244fca09e 100755
555 471
556 from __future__ import (absolute_import, division, print_function) 472 from __future__ import (absolute_import, division, print_function)
557diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py 473diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
558index 93958fc2adb..33509c826a3 100644 474index 93958fc2ad..33509c826a 100644
559--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py 475--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
560+++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py 476+++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
561@@ -1,4 +1,4 @@ 477@@ -1,4 +1,4 @@
@@ -565,7 +481,7 @@ index 93958fc2adb..33509c826a3 100644
565 from __future__ import (absolute_import, division, print_function) 481 from __future__ import (absolute_import, division, print_function)
566 __metaclass__ = type 482 __metaclass__ = type
567diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py 483diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py
568index 9893d6652ed..7a07dcc108e 100644 484index 9893d6652e..7a07dcc108 100644
569--- a/test/integration/targets/cli/test-cli.py 485--- a/test/integration/targets/cli/test-cli.py
570+++ b/test/integration/targets/cli/test-cli.py 486+++ b/test/integration/targets/cli/test-cli.py
571@@ -1,4 +1,4 @@ 487@@ -1,4 +1,4 @@
@@ -575,7 +491,7 @@ index 9893d6652ed..7a07dcc108e 100644
575 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) 491 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
576 492
577diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py 493diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py
578index f7077fba0ab..dcc96141295 100644 494index f7077fba0a..dcc9614129 100644
579--- a/test/integration/targets/cli/test_k_and_K.py 495--- a/test/integration/targets/cli/test_k_and_K.py
580+++ b/test/integration/targets/cli/test_k_and_K.py 496+++ b/test/integration/targets/cli/test_k_and_K.py
581@@ -1,4 +1,4 @@ 497@@ -1,4 +1,4 @@
@@ -585,7 +501,7 @@ index f7077fba0ab..dcc96141295 100644
585 501
586 # Make coding more python3-ish 502 # Make coding more python3-ish
587diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py 503diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py
588index 92a702cf13e..9ea69089d58 100755 504index 92a702cf13..9ea69089d5 100755
589--- a/test/integration/targets/collection/update-ignore.py 505--- a/test/integration/targets/collection/update-ignore.py
590+++ b/test/integration/targets/collection/update-ignore.py 506+++ b/test/integration/targets/collection/update-ignore.py
591@@ -1,4 +1,4 @@ 507@@ -1,4 +1,4 @@
@@ -595,7 +511,7 @@ index 92a702cf13e..9ea69089d58 100755
595 511
596 import os 512 import os
597diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py 513diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py
598index 237f9c2d903..4fe74903d8d 100755 514index 237f9c2d90..4fe74903d8 100755
599--- a/test/integration/targets/debugger/test_run_once.py 515--- a/test/integration/targets/debugger/test_run_once.py
600+++ b/test/integration/targets/debugger/test_run_once.py 516+++ b/test/integration/targets/debugger/test_run_once.py
601@@ -1,4 +1,4 @@ 517@@ -1,4 +1,4 @@
@@ -605,7 +521,7 @@ index 237f9c2d903..4fe74903d8d 100755
605 import io 521 import io
606 import os 522 import os
607diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py 523diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py
608index 463915284b2..fc2ed398d9f 100755 524index 463915284b..fc2ed398d9 100755
609--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py 525--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py
610+++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py 526+++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py
611@@ -1,4 +1,4 @@ 527@@ -1,4 +1,4 @@
@@ -615,7 +531,7 @@ index 463915284b2..fc2ed398d9f 100755
615 531
616 import sys 532 import sys
617diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact 533diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact
618index 79e3f62677e..2a294b33a82 100644 534index 79e3f62677..2a294b33a8 100644
619--- a/test/integration/targets/gathering/uuid.fact 535--- a/test/integration/targets/gathering/uuid.fact
620+++ b/test/integration/targets/gathering/uuid.fact 536+++ b/test/integration/targets/gathering/uuid.fact
621@@ -1,4 +1,4 @@ 537@@ -1,4 +1,4 @@
@@ -625,7 +541,7 @@ index 79e3f62677e..2a294b33a82 100644
625 541
626 542
627diff --git a/test/integration/targets/gathering_facts/uuid.fact b/test/integration/targets/gathering_facts/uuid.fact 543diff --git a/test/integration/targets/gathering_facts/uuid.fact b/test/integration/targets/gathering_facts/uuid.fact
628index 79e3f62677e..2a294b33a82 100644 544index 79e3f62677..2a294b33a8 100644
629--- a/test/integration/targets/gathering_facts/uuid.fact 545--- a/test/integration/targets/gathering_facts/uuid.fact
630+++ b/test/integration/targets/gathering_facts/uuid.fact 546+++ b/test/integration/targets/gathering_facts/uuid.fact
631@@ -1,4 +1,4 @@ 547@@ -1,4 +1,4 @@
@@ -634,27 +550,8 @@ index 79e3f62677e..2a294b33a82 100644
634 # -*- coding: utf-8 -*- 550 # -*- coding: utf-8 -*-
635 551
636 552
637diff --git a/test/integration/targets/group/files/gidget.py b/test/integration/targets/group/files/gidget.py
638index 4b771516fdd..085dfcdee11 100644
639--- a/test/integration/targets/group/files/gidget.py
640+++ b/test/integration/targets/group/files/gidget.py
641@@ -1,4 +1,4 @@
642-#!/usr/bin/env python
643+#!/usr/bin/env python3
644
645 from __future__ import (absolute_import, division, print_function)
646 __metaclass__ = type
647diff --git a/test/integration/targets/module_utils/module_utils/foo.py b/test/integration/targets/module_utils/module_utils/foo.py
648index 20698f1f463..0cd5c851429 100644
649--- a/test/integration/targets/module_utils/module_utils/foo.py
650+++ b/test/integration/targets/module_utils/module_utils/foo.py
651@@ -1,3 +1,3 @@
652-#!/usr/bin/env python
653+#!/usr/bin/env python3
654
655 foo = "FOO FROM foo.py"
656diff --git a/test/integration/targets/module_utils/module_utils/sub/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam.py 553diff --git a/test/integration/targets/module_utils/module_utils/sub/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam.py
657index 566f8b7c47f..0814485d5fe 100644 554index 566f8b7c47..0814485d5f 100644
658--- a/test/integration/targets/module_utils/module_utils/sub/bam.py 555--- a/test/integration/targets/module_utils/module_utils/sub/bam.py
659+++ b/test/integration/targets/module_utils/module_utils/sub/bam.py 556+++ b/test/integration/targets/module_utils/module_utils/sub/bam.py
660@@ -1,3 +1,3 @@ 557@@ -1,3 +1,3 @@
@@ -663,7 +560,7 @@ index 566f8b7c47f..0814485d5fe 100644
663 560
664 bam = "BAM FROM sub/bam.py" 561 bam = "BAM FROM sub/bam.py"
665diff --git a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py 562diff --git a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
666index b7ed707211e..97f9eedcdb7 100644 563index b7ed707211..97f9eedcdb 100644
667--- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py 564--- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
668+++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py 565+++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
669@@ -1,3 +1,3 @@ 566@@ -1,3 +1,3 @@
@@ -671,26 +568,18 @@ index b7ed707211e..97f9eedcdb7 100644
671+#!/usr/bin/env python3 568+#!/usr/bin/env python3
672 569
673 bam = "BAM FROM sub/bam/bam.py" 570 bam = "BAM FROM sub/bam/bam.py"
674diff --git a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py 571diff --git a/test/integration/targets/packaging_cli-doc/verify.py b/test/integration/targets/packaging_cli-doc/verify.py
675index 02fafd40f3f..3a93360c69e 100644 572index 7793fa8c24..71f82186dd 100755
676--- a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py 573--- a/test/integration/targets/packaging_cli-doc/verify.py
677+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py 574+++ b/test/integration/targets/packaging_cli-doc/verify.py
678@@ -1,3 +1,3 @@ 575@@ -1,4 +1,4 @@
679-#!/usr/bin/env python
680+#!/usr/bin/env python3
681
682 bam = "BAM FROM sub/bar/bam.py"
683diff --git a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
684index 8566901f044..40f0c9446c9 100644
685--- a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
686+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
687@@ -1,3 +1,3 @@
688-#!/usr/bin/env python 576-#!/usr/bin/env python
689+#!/usr/bin/env python3 577+#!/usr/bin/env python3
690 578
691 bar = "BAR FROM sub/bar/bar.py" 579 import os
580 import pathlib
692diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py 581diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py
693index 3703470d065..dd14b2810d6 100755 582index ab771fa09e..1dece083d3 100755
694--- a/test/integration/targets/pause/test-pause.py 583--- a/test/integration/targets/pause/test-pause.py
695+++ b/test/integration/targets/pause/test-pause.py 584+++ b/test/integration/targets/pause/test-pause.py
696@@ -1,4 +1,4 @@ 585@@ -1,4 +1,4 @@
@@ -700,7 +589,7 @@ index 3703470d065..dd14b2810d6 100755
700 from __future__ import (absolute_import, division, print_function) 589 from __future__ import (absolute_import, division, print_function)
701 __metaclass__ = type 590 __metaclass__ = type
702diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py 591diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py
703index aaf21875ca2..2835719e4f2 100755 592index aaf21875ca..2835719e4f 100755
704--- a/test/integration/targets/pip/files/setup.py 593--- a/test/integration/targets/pip/files/setup.py
705+++ b/test/integration/targets/pip/files/setup.py 594+++ b/test/integration/targets/pip/files/setup.py
706@@ -1,4 +1,4 @@ 595@@ -1,4 +1,4 @@
@@ -710,7 +599,7 @@ index aaf21875ca2..2835719e4f2 100755
710 from __future__ import (absolute_import, division, print_function) 599 from __future__ import (absolute_import, division, print_function)
711 __metaclass__ = type 600 __metaclass__ = type
712diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py 601diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py
713index 522493fcc77..b3aaf7f6b43 100644 602index 6292272e63..e5664fb2e3 100644
714--- a/test/integration/targets/service/files/ansible_test_service.py 603--- a/test/integration/targets/service/files/ansible_test_service.py
715+++ b/test/integration/targets/service/files/ansible_test_service.py 604+++ b/test/integration/targets/service/files/ansible_test_service.py
716@@ -1,4 +1,4 @@ 605@@ -1,4 +1,4 @@
@@ -720,7 +609,7 @@ index 522493fcc77..b3aaf7f6b43 100644
720 # this is mostly based off of the code found here: 609 # this is mostly based off of the code found here:
721 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ 610 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
722diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py 611diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py
723index 19f1e291388..609218325d6 100644 612index 19f1e29138..609218325d 100644
724--- a/test/integration/targets/service_facts/files/ansible_test_service.py 613--- a/test/integration/targets/service_facts/files/ansible_test_service.py
725+++ b/test/integration/targets/service_facts/files/ansible_test_service.py 614+++ b/test/integration/targets/service_facts/files/ansible_test_service.py
726@@ -1,4 +1,4 @@ 615@@ -1,4 +1,4 @@
@@ -730,7 +619,7 @@ index 19f1e291388..609218325d6 100644
730 # this is mostly based off of the code found here: 619 # this is mostly based off of the code found here:
731 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/ 620 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
732diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py 621diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
733index b0a8889439a..90c83b582b4 100644 622index b0a8889439..90c83b582b 100644
734--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py 623--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
735+++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py 624+++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
736@@ -1,4 +1,4 @@ 625@@ -1,4 +1,4 @@
@@ -739,8 +628,18 @@ index b0a8889439a..90c83b582b4 100644
739 628
740 from __future__ import (absolute_import, division, print_function) 629 from __future__ import (absolute_import, division, print_function)
741 __metaclass__ = type 630 __metaclass__ = type
631diff --git a/test/integration/targets/test_utils/scripts/timeout.py b/test/integration/targets/test_utils/scripts/timeout.py
632index f88f3e4e15..c312dc4f6c 100755
633--- a/test/integration/targets/test_utils/scripts/timeout.py
634+++ b/test/integration/targets/test_utils/scripts/timeout.py
635@@ -1,4 +1,4 @@
636-#!/usr/bin/env python
637+#!/usr/bin/env python3
638
639 import argparse
640 import subprocess
742diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py 641diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py
743index 1a5bdd30789..344bcf0f868 100755 642index 1a5bdd3078..344bcf0f86 100755
744--- a/test/integration/targets/throttle/test_throttle.py 643--- a/test/integration/targets/throttle/test_throttle.py
745+++ b/test/integration/targets/throttle/test_throttle.py 644+++ b/test/integration/targets/throttle/test_throttle.py
746@@ -1,4 +1,4 @@ 645@@ -1,4 +1,4 @@
@@ -750,7 +649,7 @@ index 1a5bdd30789..344bcf0f868 100755
750 from __future__ import (absolute_import, division, print_function) 649 from __future__ import (absolute_import, division, print_function)
751 __metaclass__ = type 650 __metaclass__ = type
752diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py 651diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
753index fc31688be2e..f964bbe8d6d 100755 652index b03c87b80f..2035463092 100755
754--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py 653--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py
755+++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py 654+++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
756@@ -1,4 +1,4 @@ 655@@ -1,4 +1,4 @@
@@ -760,10 +659,10 @@ index fc31688be2e..f964bbe8d6d 100755
760 # A tool to check the order of precedence for ansible variables 659 # A tool to check the order of precedence for ansible variables
761 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml 660 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml
762diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py 661diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py
763index 79ff6c03ae3..730c87d3fc1 100644 662index 77a6165c8e..865158e3b1 100644
764--- a/test/lib/ansible_test/_internal/util_common.py 663--- a/test/lib/ansible_test/_internal/util_common.py
765+++ b/test/lib/ansible_test/_internal/util_common.py 664+++ b/test/lib/ansible_test/_internal/util_common.py
766@@ -271,7 +271,7 @@ def get_injector_path() -> str: 665@@ -303,7 +303,7 @@ def get_injector_path() -> str:
767 ]) 666 ])
768 667
769 scripts = ( 668 scripts = (
@@ -773,7 +672,7 @@ index 79ff6c03ae3..730c87d3fc1 100644
773 ) 672 )
774 673
775diff --git a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py 674diff --git a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
776index b0b13197839..9535c3b4819 100644 675index b0b1319783..9535c3b481 100644
777--- a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py 676--- a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
778+++ b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py 677+++ b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
779@@ -16,14 +16,14 @@ def main(): 678@@ -16,14 +16,14 @@ def main():
@@ -794,7 +693,7 @@ index b0b13197839..9535c3b4819 100644
794 693
795 module_shebangs = { 694 module_shebangs = {
796diff --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 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
797index 930654fc1e7..bbf50369d7d 100755 696index 930654fc1e..bbf50369d7 100755
798--- a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py 697--- a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
799+++ b/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
800@@ -1,4 +1,4 @@ 699@@ -1,4 +1,4 @@
@@ -804,10 +703,10 @@ index 930654fc1e7..bbf50369d7d 100755
804 """Command line entry point for ansible-test.""" 703 """Command line entry point for ansible-test."""
805 704
806diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py 705diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py
807index fa6add8cd61..fcfd096e546 100644 706index 6e2a4956c4..6776de66e1 100644
808--- a/test/units/executor/module_common/test_module_common.py 707--- a/test/units/executor/module_common/test_module_common.py
809+++ b/test/units/executor/module_common/test_module_common.py 708+++ b/test/units/executor/module_common/test_module_common.py
810@@ -132,8 +132,8 @@ class TestGetShebang: 709@@ -117,8 +117,8 @@ class TestGetShebang:
811 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3') 710 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3')
812 711
813 def test_python_via_env(self, templar): 712 def test_python_via_env(self, templar):
diff --git a/recipes-devtools/python/python3-ansible_2.14.5.bb b/recipes-devtools/python/python3-ansible_2.16.5.bb
index f3ab237..f3ab237 100644
--- a/recipes-devtools/python/python3-ansible_2.14.5.bb
+++ b/recipes-devtools/python/python3-ansible_2.16.5.bb