summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMingli Yu <mingli.yu@windriver.com>2023-05-15 14:02:47 +0800
committerBruce Ashfield <bruce.ashfield@gmail.com>2023-05-17 11:59:11 -0400
commit7ecb54163f6252cfbecfd9f7f363536c88dbb58a (patch)
tree1d8cee0b834600ea3886158d4c446fc152b1d2fb
parent589cdff6528b3b677b2a76a18d80694ccd9991fb (diff)
downloadmeta-cloud-services-7ecb54163f6252cfbecfd9f7f363536c88dbb58a.tar.gz
python3-ansible: Upgrade to 2.14.5
Rebase the patch python3-ensure-py-scripts-use-py3-for-shebang.patch to new version. 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.inc8
-rw-r--r--recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch1483
-rw-r--r--recipes-devtools/python/python3-ansible_2.14.5.bb (renamed from recipes-devtools/python/python3-ansible_2.3.1.0.bb)0
3 files changed, 540 insertions, 951 deletions
diff --git a/recipes-devtools/python/python-ansible.inc b/recipes-devtools/python/python-ansible.inc
index 0bb663a..fa55ba3 100644
--- a/recipes-devtools/python/python-ansible.inc
+++ b/recipes-devtools/python/python-ansible.inc
@@ -6,13 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
6 6
7SRCNAME = "ansible" 7SRCNAME = "ansible"
8 8
9SRC_URI = "http://releases.ansible.com/ansible/${SRCNAME}-${PV}.tar.gz" 9SRC_URI = "git://github.com/ansible/ansible.git;protocol=https;branch=stable-2.14"
10 10
11SRC_URI[md5sum] = "b1be8f05864a07c06b8a767dcd48ba1b" 11SRCREV = "5c6dfff68759ccc9794b609db45872950077e98b"
12SRC_URI[sha256sum] = "cd4b8f53720fcd0c351156b840fdd15ecfbec22c951b5406ec503de49d40b9f5"
13 12
14 13S = "${WORKDIR}/git"
15S = "${WORKDIR}/${SRCNAME}-${PV}"
16 14
17ANSIBLE_WHITELIST_MODULES ?= "commands files system network/ovs __pycache__ service" 15ANSIBLE_WHITELIST_MODULES ?= "commands files system network/ovs __pycache__ service"
18 16
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 e98eb46..67a4f95 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,799 +1,651 @@
1From 66b824da2fadfd5760040be244f89fa8320df55b Mon Sep 17 00:00:00 2001 1From b5d7b08addeb7795720acf3debd88a13ddd30402 Mon Sep 17 00:00:00 2001
2From: Mark Asselstine <mark.asselstine@windriver.com> 2From: Mark Asselstine <mark.asselstine@windriver.com>
3Date: Thu, 13 Jul 2017 14:11:46 -0400 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
5 5
6Upstream-Status: Pending
7
6Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> 8Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
9Rebase to 2.24.5
10Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
7--- 11---
8 bin/ansible | 2 +- 12 .azure-pipelines/scripts/combine-coverage.py | 2 +-
9 bin/ansible-connection | 2 +- 13 .azure-pipelines/scripts/publish-codecov.py | 2 +-
10 bin/ansible-console | 2 +- 14 .azure-pipelines/scripts/time-command.py | 2 +-
11 bin/ansible-doc | 2 +- 15 docs/bin/find-plugin-refs.py | 2 +-
12 bin/ansible-galaxy | 2 +- 16 docs/docsite/rst/dev_guide/testing/sanity/shebang.rst | 2 +-
13 bin/ansible-playbook | 2 +- 17 docs/docsite/rst/inventory_guide/connection_details.rst | 4 ++--
14 bin/ansible-pull | 2 +- 18 docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po | 4 ++--
15 bin/ansible-vault | 2 +- 19 examples/scripts/uptime.py | 2 +-
16 contrib/inventory/abiquo.py | 2 +- 20 hacking/ansible-profile | 2 +-
17 contrib/inventory/apache-libcloud.py | 2 +- 21 hacking/azp/download.py | 2 +-
18 contrib/inventory/apstra_aos.py | 2 +- 22 hacking/azp/get_recent_coverage_runs.py | 2 +-
19 contrib/inventory/azure_rm.py | 2 +- 23 hacking/azp/incidental.py | 2 +-
20 contrib/inventory/brook.py | 2 +- 24 hacking/azp/run.py | 2 +-
21 contrib/inventory/cloudforms.py | 2 +- 25 hacking/backport/backport_of_line_adder.py | 2 +-
22 contrib/inventory/cloudstack.py | 2 +- 26 hacking/build-ansible.py | 2 +-
23 contrib/inventory/cobbler.py | 2 +- 27 hacking/create_deprecation_bug_reports.py | 2 +-
24 contrib/inventory/collins.py | 2 +- 28 hacking/fix_test_syntax.py | 2 +-
25 contrib/inventory/consul_io.py | 2 +- 29 hacking/get_library.py | 2 +-
26 contrib/inventory/digital_ocean.py | 2 +- 30 hacking/report.py | 2 +-
27 contrib/inventory/docker.py | 2 +- 31 hacking/return_skeleton_generator.py | 2 +-
28 contrib/inventory/ec2.py | 2 +- 32 hacking/test-module.py | 2 +-
29 contrib/inventory/fleet.py | 2 +- 33 hacking/tests/gen_distribution_version_testcase.py | 2 +-
30 contrib/inventory/foreman.py | 2 +- 34 hacking/update-sanity-requirements.py | 2 +-
31 contrib/inventory/freeipa.py | 2 +- 35 lib/ansible/cli/adhoc.py | 2 +-
32 contrib/inventory/gce.py | 2 +- 36 lib/ansible/cli/config.py | 2 +-
33 contrib/inventory/jail.py | 2 +- 37 lib/ansible/cli/console.py | 2 +-
34 contrib/inventory/landscape.py | 2 +- 38 lib/ansible/cli/doc.py | 2 +-
35 contrib/inventory/libvirt_lxc.py | 2 +- 39 lib/ansible/cli/galaxy.py | 2 +-
36 contrib/inventory/linode.py | 2 +- 40 lib/ansible/cli/inventory.py | 2 +-
37 contrib/inventory/lxc_inventory.py | 2 +- 41 lib/ansible/cli/playbook.py | 2 +-
38 contrib/inventory/mdt_dynamic_inventory.py | 2 +- 42 lib/ansible/cli/pull.py | 2 +-
39 contrib/inventory/nagios_livestatus.py | 2 +- 43 lib/ansible/cli/scripts/ansible_connection_cli_stub.py | 2 +-
40 contrib/inventory/nagios_ndo.py | 2 +- 44 lib/ansible/cli/vault.py | 2 +-
41 contrib/inventory/nova.py | 2 +- 45 packaging/release.py | 2 +-
42 contrib/inventory/nsot.py | 2 +- 46 packaging/sdist/check-link-behavior.py | 2 +-
43 contrib/inventory/openshift.py | 2 +- 47 .../targets/ansible-galaxy-collection/files/build_bad_tar.py | 2 +-
44 contrib/inventory/openstack.py | 2 +- 48 test/integration/targets/ansible-test-container/runme.py | 2 +-
45 contrib/inventory/openvz.py | 2 +- 49 .../targets/ansible-test-integration-targets/test.py | 2 +-
46 contrib/inventory/ovirt.py | 2 +- 50 .../ansible_collections/ns/col/run-with-pty.py | 2 +-
47 contrib/inventory/ovirt4.py | 2 +- 51 .../ns/col/tests/integration/targets/no-tty/assert-no-tty.py | 2 +-
48 contrib/inventory/packet_net.py | 2 +- 52 .../ansible_collections/ns/col/scripts/env_python.py | 2 +-
49 contrib/inventory/proxmox.py | 2 +- 53 .../ns/col/tests/integration/targets/valid/env_python.py | 2 +-
50 contrib/inventory/rackhd.py | 2 +- 54 test/integration/targets/ansible-test/venv-pythons.py | 2 +-
51 contrib/inventory/rax.py | 2 +- 55 test/integration/targets/ansible-vault/faux-editor.py | 2 +-
52 contrib/inventory/rhv.py | 2 +- 56 test/integration/targets/ansible-vault/password-script.py | 2 +-
53 contrib/inventory/rudder.py | 2 +- 57 test/integration/targets/ansible-vault/test-vault-client.py | 2 +-
54 contrib/inventory/serf.py | 2 +- 58 .../targets/builtin_vars_prompt/test-vars_prompt.py | 2 +-
55 contrib/inventory/softlayer.py | 2 +- 59 test/integration/targets/cli/test-cli.py | 2 +-
56 contrib/inventory/spacewalk.py | 2 +- 60 test/integration/targets/cli/test_k_and_K.py | 2 +-
57 contrib/inventory/ssh_config.py | 2 +- 61 test/integration/targets/collection/update-ignore.py | 2 +-
58 contrib/inventory/stacki.py | 2 +- 62 test/integration/targets/debugger/test_run_once.py | 2 +-
59 contrib/inventory/vagrant.py | 2 +- 63 test/integration/targets/fork_safe_stdio/run-with-pty.py | 2 +-
60 contrib/inventory/vbox.py | 2 +- 64 test/integration/targets/gathering/uuid.fact | 2 +-
61 contrib/inventory/vmware.py | 2 +- 65 test/integration/targets/gathering_facts/uuid.fact | 2 +-
62 contrib/inventory/vmware_inventory.py | 2 +- 66 test/integration/targets/group/files/gidget.py | 2 +-
63 contrib/inventory/windows_azure.py | 2 +- 67 test/integration/targets/module_utils/module_utils/foo.py | 2 +-
64 contrib/inventory/zabbix.py | 2 +- 68 test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +-
65 contrib/inventory/zone.py | 2 +- 69 .../targets/module_utils/module_utils/sub/bam/bam.py | 2 +-
66 docs/docsite/rst/dev_guide/developing_api.rst | 2 +- 70 .../targets/module_utils/module_utils/sub/bar/bam.py | 2 +-
67 hacking/dump_playbook_attributes.py | 2 +- 71 .../targets/module_utils/module_utils/sub/bar/bar.py | 2 +-
68 hacking/module_formatter.py | 2 +- 72 test/integration/targets/pause/test-pause.py | 2 +-
69 lib/ansible/modules/web_infrastructure/django_manage.py | 2 +- 73 test/integration/targets/pip/files/setup.py | 2 +-
70 lib/ansible/modules/windows/win_file_version.py | 2 +- 74 .../integration/targets/service/files/ansible_test_service.py | 2 +-
71 lib/ansible/modules/windows/win_firewall_rule.py | 2 +- 75 .../targets/service_facts/files/ansible_test_service.py | 2 +-
72 test/compile/compile.py | 2 +- 76 .../targets/template/role_filter/filter_plugins/myplugin.py | 2 +-
73 test/integration/cleanup_rax.py | 2 +- 77 test/integration/targets/throttle/test_throttle.py | 2 +-
74 .../targets/embedded_module/library/test_integration_module | 2 +- 78 .../targets/var_precedence/ansible-var-precedence-check.py | 2 +-
75 test/integration/targets/module_utils/module_utils/foo.py | 2 +- 79 test/lib/ansible_test/_internal/util_common.py | 2 +-
76 test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +- 80 .../_util/controller/sanity/code-smell/shebang.py | 4 ++--
77 test/integration/targets/module_utils/module_utils/sub/bam/bam.py | 2 +- 81 .../ansible_test/_util/target/cli/ansible_test_cli_stub.py | 2 +-
78 test/integration/targets/module_utils/module_utils/sub/bar/bam.py | 2 +- 82 test/units/executor/module_common/test_module_common.py | 4 ++--
79 test/integration/targets/module_utils/module_utils/sub/bar/bar.py | 2 +- 83 71 files changed, 75 insertions(+), 75 deletions(-)
80 test/integration/targets/service/files/ansible_test_service | 2 +-
81 test/runner/ansible-test | 2 +-
82 test/runner/injector/ansible | 2 +-
83 test/runner/injector/ansible-console | 2 +-
84 test/runner/injector/ansible-doc | 2 +-
85 test/runner/injector/ansible-galaxy | 2 +-
86 test/runner/injector/ansible-playbook | 2 +-
87 test/runner/injector/ansible-pull | 2 +-
88 test/runner/injector/ansible-vault | 2 +-
89 test/runner/injector/cover | 2 +-
90 test/runner/injector/cover2 | 2 +-
91 test/runner/injector/cover2.4 | 2 +-
92 test/runner/injector/cover2.6 | 2 +-
93 test/runner/injector/cover2.7 | 2 +-
94 test/runner/injector/cover3 | 2 +-
95 test/runner/injector/cover3.5 | 2 +-
96 test/runner/injector/cover3.6 | 2 +-
97 test/runner/injector/injector.py | 2 +-
98 test/runner/injector/pytest | 2 +-
99 test/runner/injector/runner | 2 +-
100 test/runner/injector/runner2 | 2 +-
101 test/runner/injector/runner2.4 | 2 +-
102 test/runner/injector/runner2.6 | 2 +-
103 test/runner/injector/runner2.7 | 2 +-
104 test/runner/injector/runner3 | 2 +-
105 test/runner/injector/runner3.5 | 2 +-
106 test/runner/injector/runner3.6 | 2 +-
107 test/runner/retry.py | 2 +-
108 test/runner/test.py | 2 +-
109 test/sanity/code-smell/ansible-var-precedence-check.py | 2 +-
110 test/sanity/code-smell/integration-aliases.py | 2 +-
111 test/sanity/code-smell/shebang.sh | 4 ++--
112 test/sanity/validate-modules/test_validate_modules_regex.py | 2 +-
113 test/sanity/validate-modules/validate-modules | 2 +-
114 test/units/executor/module_common/test_module_common.py | 4 ++--
115 test/units/modules/network/nxos/test_nxos_config.py | 2 +-
116 test/utils/shippable/ansible-core-ci | 2 +-
117 test/utils/shippable/download.py | 2 +-
118 121 files changed, 123 insertions(+), 123 deletions(-)
119 84
120diff --git a/bin/ansible b/bin/ansible 85diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py
121index 24550b9..0587499 100755 86index 506ade6460c..15bee402341 100755
122--- a/bin/ansible 87--- a/.azure-pipelines/scripts/combine-coverage.py
123+++ b/bin/ansible 88+++ b/.azure-pipelines/scripts/combine-coverage.py
124@@ -1,4 +1,4 @@ 89@@ -1,4 +1,4 @@
125-#!/usr/bin/env python 90-#!/usr/bin/env python
126+#!/usr/bin/env python3 91+#!/usr/bin/env python3
127 92 """
128 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 93 Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
129 # 94 Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
130diff --git a/bin/ansible-connection b/bin/ansible-connection 95diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py
131index 93d787e..f0b9aa3 100755 96index f2bc4b84b38..01ad32f494c 100755
132--- a/bin/ansible-connection 97--- a/.azure-pipelines/scripts/publish-codecov.py
133+++ b/bin/ansible-connection 98+++ b/.azure-pipelines/scripts/publish-codecov.py
134@@ -1,4 +1,4 @@ 99@@ -1,4 +1,4 @@
135-#!/usr/bin/env python 100-#!/usr/bin/env python
136+#!/usr/bin/env python3 101+#!/usr/bin/env python3
137 102 """
138 # (c) 2016, Ansible, Inc. <support@ansible.com> 103 Upload code coverage reports to codecov.io.
139 # 104 Multiple coverage files from multiple languages are accepted and aggregated after upload.
140diff --git a/bin/ansible-console b/bin/ansible-console 105diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py
141index 24550b9..0587499 100755 106index 5e8eb8d4c8f..5450c48900e 100755
142--- a/bin/ansible-console 107--- a/.azure-pipelines/scripts/time-command.py
143+++ b/bin/ansible-console 108+++ b/.azure-pipelines/scripts/time-command.py
144@@ -1,4 +1,4 @@ 109@@ -1,4 +1,4 @@
145-#!/usr/bin/env python 110-#!/usr/bin/env python
146+#!/usr/bin/env python3 111+#!/usr/bin/env python3
112 """Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
147 113
148 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 114 from __future__ import (absolute_import, division, print_function)
149 # 115diff --git a/docs/bin/find-plugin-refs.py b/docs/bin/find-plugin-refs.py
150diff --git a/bin/ansible-doc b/bin/ansible-doc 116index d603409d688..c52d6d13e38 100755
151index 24550b9..0587499 100755 117--- a/docs/bin/find-plugin-refs.py
152--- a/bin/ansible-doc 118+++ b/docs/bin/find-plugin-refs.py
153+++ b/bin/ansible-doc
154@@ -1,4 +1,4 @@ 119@@ -1,4 +1,4 @@
155-#!/usr/bin/env python 120-#!/usr/bin/env python
156+#!/usr/bin/env python3 121+#!/usr/bin/env python3
157 122
158 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 123 # To run this script, first make webdocs in the toplevel of the checkout. This will generate all
159 # 124 # rst files from their sources. Then run this script ./docs/bin/find-plugin-refs.py
160diff --git a/bin/ansible-galaxy b/bin/ansible-galaxy 125diff --git a/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst b/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
161index 24550b9..0587499 100755 126index cff2aa0914b..7c4bd651563 100644
162--- a/bin/ansible-galaxy 127--- a/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
163+++ b/bin/ansible-galaxy 128+++ b/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
164@@ -1,4 +1,4 @@ 129@@ -6,7 +6,7 @@ Most executable files should only use one of the following shebangs:
165-#!/usr/bin/env python 130 - ``#!/bin/sh``
166+#!/usr/bin/env python3 131 - ``#!/bin/bash``
132 - ``#!/usr/bin/make``
133-- ``#!/usr/bin/env python``
134+- ``#!/usr/bin/env python3``
135 - ``#!/usr/bin/env bash``
167 136
168 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 137 NOTE: For ``#!/bin/bash``, any of the options ``eux`` may also be used, such as ``#!/bin/bash -eux``.
169 # 138diff --git a/docs/docsite/rst/inventory_guide/connection_details.rst b/docs/docsite/rst/inventory_guide/connection_details.rst
170diff --git a/bin/ansible-playbook b/bin/ansible-playbook 139index 5e332160617..65bfd5903ad 100644
171index 24550b9..0587499 100755 140--- a/docs/docsite/rst/inventory_guide/connection_details.rst
172--- a/bin/ansible-playbook 141+++ b/docs/docsite/rst/inventory_guide/connection_details.rst
173+++ b/bin/ansible-playbook 142@@ -84,13 +84,13 @@ You can run commands against the control node by using "localhost" or "127.0.0.1
174@@ -1,4 +1,4 @@
175-#!/usr/bin/env python
176+#!/usr/bin/env python3
177 143
178 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 144 .. code-block:: bash
179 #
180diff --git a/bin/ansible-pull b/bin/ansible-pull
181index 24550b9..0587499 100755
182--- a/bin/ansible-pull
183+++ b/bin/ansible-pull
184@@ -1,4 +1,4 @@
185-#!/usr/bin/env python
186+#!/usr/bin/env python3
187 145
188 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 146- $ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python"'
189 # 147+ $ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python3"'
190diff --git a/bin/ansible-vault b/bin/ansible-vault
191index 24550b9..0587499 100755
192--- a/bin/ansible-vault
193+++ b/bin/ansible-vault
194@@ -1,4 +1,4 @@
195-#!/usr/bin/env python
196+#!/usr/bin/env python3
197 148
198 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> 149 You can specify localhost explicitly by adding this to your inventory file:
199 #
200diff --git a/contrib/inventory/abiquo.py b/contrib/inventory/abiquo.py
201index 405bbbb..d318949 100755
202--- a/contrib/inventory/abiquo.py
203+++ b/contrib/inventory/abiquo.py
204@@ -1,4 +1,4 @@
205-#!/usr/bin/env python
206+#!/usr/bin/env python3
207 # -*- coding: utf-8 -*-
208 150
209 ''' 151 .. code-block:: bash
210diff --git a/contrib/inventory/apache-libcloud.py b/contrib/inventory/apache-libcloud.py
211index 0120d2b..ce92843 100755
212--- a/contrib/inventory/apache-libcloud.py
213+++ b/contrib/inventory/apache-libcloud.py
214@@ -1,4 +1,4 @@
215-#!/usr/bin/env python
216+#!/usr/bin/env python3
217 152
218 # (c) 2013, Sebastien Goasguen <runseb@gmail.com> 153- localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
219 # 154+ localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python3"
220diff --git a/contrib/inventory/apstra_aos.py b/contrib/inventory/apstra_aos.py 155
221index 65838c0..48d293e 100755 156 .. _host_key_checking_on:
222--- a/contrib/inventory/apstra_aos.py 157
223+++ b/contrib/inventory/apstra_aos.py 158diff --git a/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po b/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
224@@ -1,4 +1,4 @@ 159index b6abc3e5874..53f5fdc8986 100644
225-#!/usr/bin/env python 160--- a/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
226+#!/usr/bin/env python3 161+++ b/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
227 # 162@@ -11820,8 +11820,8 @@ msgid "``#!/usr/bin/make``"
228 # (c) 2017 Apstra Inc, <community@apstra.com> 163 msgstr "``#!/usr/bin/make``"
229 # 164
230diff --git a/contrib/inventory/azure_rm.py b/contrib/inventory/azure_rm.py 165 #: ../../rst/dev_guide/testing/sanity/shebang.rst:9
231index 73b8b95..87b31b0 100755 166-msgid "``#!/usr/bin/env python``"
232--- a/contrib/inventory/azure_rm.py 167-msgstr "``#!/usr/bin/env python``"
233+++ b/contrib/inventory/azure_rm.py 168+msgid "``#!/usr/bin/env python3``"
234@@ -1,4 +1,4 @@ 169+msgstr "``#!/usr/bin/env python3``"
235-#!/usr/bin/env python 170
236+#!/usr/bin/env python3 171 #: ../../rst/dev_guide/testing/sanity/shebang.rst:10
237 # 172 msgid "``#!/usr/bin/env bash``"
238 # Copyright (c) 2016 Matt Davis, <mdavis@ansible.com> 173diff --git a/examples/scripts/uptime.py b/examples/scripts/uptime.py
239 # Chris Houseknecht, <house@redhat.com> 174index d77a5fb5660..665594c254b 100755
240diff --git a/contrib/inventory/brook.py b/contrib/inventory/brook.py 175--- a/examples/scripts/uptime.py
241index a7d4741..e4de982 100755 176+++ b/examples/scripts/uptime.py
242--- a/contrib/inventory/brook.py
243+++ b/contrib/inventory/brook.py
244@@ -1,4 +1,4 @@
245-#!/usr/bin/env python
246+#!/usr/bin/env python3
247 # Copyright 2016 Doalitic.
248 #
249 # This file is part of Ansible
250diff --git a/contrib/inventory/cloudforms.py b/contrib/inventory/cloudforms.py
251index 69c149b..202a6c9 100755
252--- a/contrib/inventory/cloudforms.py
253+++ b/contrib/inventory/cloudforms.py
254@@ -1,4 +1,4 @@
255-#!/usr/bin/env python
256+#!/usr/bin/env python3
257 # vim: set fileencoding=utf-8 :
258 #
259 # Copyright (C) 2016 Guido Günther <agx@sigxcpu.org>
260diff --git a/contrib/inventory/cloudstack.py b/contrib/inventory/cloudstack.py
261index a9b6b9f..d7f05ff 100755
262--- a/contrib/inventory/cloudstack.py
263+++ b/contrib/inventory/cloudstack.py
264@@ -1,4 +1,4 @@ 177@@ -1,4 +1,4 @@
265-#!/usr/bin/env python 178-#!/usr/bin/env python
266+#!/usr/bin/env python3 179+#!/usr/bin/env python3
267 # -*- coding: utf-8 -*- 180
268 # 181 from __future__ import (absolute_import, division, print_function)
269 # (c) 2015, René Moser <mail@renemoser.net> 182 __metaclass__ = type
270diff --git a/contrib/inventory/cobbler.py b/contrib/inventory/cobbler.py 183diff --git a/hacking/ansible-profile b/hacking/ansible-profile
271index 89f9bf7..f2a9ff7 100755 184index 6612402da62..d67526a1619 100755
272--- a/contrib/inventory/cobbler.py 185--- a/hacking/ansible-profile
273+++ b/contrib/inventory/cobbler.py 186+++ b/hacking/ansible-profile
274@@ -1,4 +1,4 @@ 187@@ -1,4 +1,4 @@
275-#!/usr/bin/env python 188-#!/usr/bin/env python
276+#!/usr/bin/env python3 189+#!/usr/bin/env python3
190 from __future__ import (absolute_import, division, print_function)
191 __metaclass__ = type
277 192
278 """ 193diff --git a/hacking/azp/download.py b/hacking/azp/download.py
279 Cobbler external inventory script 194index 117e9da5b7a..89466cb17be 100755
280diff --git a/contrib/inventory/collins.py b/contrib/inventory/collins.py 195--- a/hacking/azp/download.py
281index b7193e2..f0bc2a1 100755 196+++ b/hacking/azp/download.py
282--- a/contrib/inventory/collins.py
283+++ b/contrib/inventory/collins.py
284@@ -1,4 +1,4 @@ 197@@ -1,4 +1,4 @@
285-#!/usr/bin/env python 198-#!/usr/bin/env python
286+#!/usr/bin/env python3 199+#!/usr/bin/env python3
200 # PYTHON_ARGCOMPLETE_OK
287 201
288 """ 202 # (c) 2016 Red Hat, Inc.
289 Collins external inventory script 203diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py
290diff --git a/contrib/inventory/consul_io.py b/contrib/inventory/consul_io.py 204index 25e2fa8120a..9b0d9b972ed 100755
291index 8106097..2cdc523 100755 205--- a/hacking/azp/get_recent_coverage_runs.py
292--- a/contrib/inventory/consul_io.py 206+++ b/hacking/azp/get_recent_coverage_runs.py
293+++ b/contrib/inventory/consul_io.py
294@@ -1,4 +1,4 @@ 207@@ -1,4 +1,4 @@
295-#!/usr/bin/env python 208-#!/usr/bin/env python
296+#!/usr/bin/env python3 209+#!/usr/bin/env python3
297 210
211 # (c) 2020 Red Hat, Inc.
298 # 212 #
299 # (c) 2015, Steve Gargan <steve.gargan@gmail.com> 213diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py
300diff --git a/contrib/inventory/digital_ocean.py b/contrib/inventory/digital_ocean.py 214index 87d4d213c94..7660e2ed226 100755
301index 07c124b..0b0e587 100755 215--- a/hacking/azp/incidental.py
302--- a/contrib/inventory/digital_ocean.py 216+++ b/hacking/azp/incidental.py
303+++ b/contrib/inventory/digital_ocean.py
304@@ -1,4 +1,4 @@ 217@@ -1,4 +1,4 @@
305-#!/usr/bin/env python 218-#!/usr/bin/env python
306+#!/usr/bin/env python3 219+#!/usr/bin/env python3
220 # PYTHON_ARGCOMPLETE_OK
307 221
308 ''' 222 # (c) 2020 Red Hat, Inc.
309 DigitalOcean external inventory script 223diff --git a/hacking/azp/run.py b/hacking/azp/run.py
310diff --git a/contrib/inventory/docker.py b/contrib/inventory/docker.py 224index 00a177944f8..591e6bcc4fe 100755
311index da051dd..9b88d0c 100755 225--- a/hacking/azp/run.py
312--- a/contrib/inventory/docker.py 226+++ b/hacking/azp/run.py
313+++ b/contrib/inventory/docker.py
314@@ -1,4 +1,4 @@
315-#!/usr/bin/env python
316+#!/usr/bin/env python3
317 #
318 # (c) 2016 Paul Durivage <paul.durivage@gmail.com>
319 # Chris Houseknecht <house@redhat.com>
320diff --git a/contrib/inventory/ec2.py b/contrib/inventory/ec2.py
321index 03b9820..9c9b2e4 100755
322--- a/contrib/inventory/ec2.py
323+++ b/contrib/inventory/ec2.py
324@@ -1,4 +1,4 @@ 227@@ -1,4 +1,4 @@
325-#!/usr/bin/env python 228-#!/usr/bin/env python
326+#!/usr/bin/env python3 229+#!/usr/bin/env python3
230 # PYTHON_ARGCOMPLETE_OK
327 231
328 ''' 232 # (c) 2016 Red Hat, Inc.
329 EC2 external inventory script 233diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py
330diff --git a/contrib/inventory/fleet.py b/contrib/inventory/fleet.py 234index ef77ddcf400..bbec15de6a2 100755
331index 4db4ea1..8790f2b 100755 235--- a/hacking/backport/backport_of_line_adder.py
332--- a/contrib/inventory/fleet.py 236+++ b/hacking/backport/backport_of_line_adder.py
333+++ b/contrib/inventory/fleet.py
334@@ -1,4 +1,4 @@ 237@@ -1,4 +1,4 @@
335-#!/usr/bin/env python 238-#!/usr/bin/env python
336+#!/usr/bin/env python3 239+#!/usr/bin/env python3
337 """ 240 # (c) 2020, Red Hat, Inc. <relrod@redhat.com>
338 fleetctl base external inventory script. Automatically finds the IPs of the booted coreos instances and 241 #
339 returns it under the host group 'coreos' 242 # This file is part of Ansible
340diff --git a/contrib/inventory/foreman.py b/contrib/inventory/foreman.py 243diff --git a/hacking/build-ansible.py b/hacking/build-ansible.py
341index 9a87397..2483cce 100755 244index c108c1861fa..8ebb88d33bd 100755
342--- a/contrib/inventory/foreman.py 245--- a/hacking/build-ansible.py
343+++ b/contrib/inventory/foreman.py 246+++ b/hacking/build-ansible.py
344@@ -1,4 +1,4 @@ 247@@ -1,4 +1,4 @@
345-#!/usr/bin/env python 248-#!/usr/bin/env python
346+#!/usr/bin/env python3 249+#!/usr/bin/env python3
347 # vim: set fileencoding=utf-8 : 250 # coding: utf-8
348 # 251 # PYTHON_ARGCOMPLETE_OK
349 # Copyright (C) 2016 Guido Günther <agx@sigxcpu.org>, 252 # Copyright: (c) 2019, Ansible Project
350diff --git a/contrib/inventory/freeipa.py b/contrib/inventory/freeipa.py 253diff --git a/hacking/create_deprecation_bug_reports.py b/hacking/create_deprecation_bug_reports.py
351index a72b774..1f092b2 100755 254index e14df4be389..e6b9b9025c3 100755
352--- a/contrib/inventory/freeipa.py 255--- a/hacking/create_deprecation_bug_reports.py
353+++ b/contrib/inventory/freeipa.py 256+++ b/hacking/create_deprecation_bug_reports.py
354@@ -1,4 +1,4 @@ 257@@ -1,4 +1,4 @@
355-#!/usr/bin/env python 258-#!/usr/bin/env python
356+#!/usr/bin/env python3 259+#!/usr/bin/env python3
260 # PYTHON_ARGCOMPLETE_OK
261 """Create GitHub issues for deprecated features."""
357 262
358 import argparse 263diff --git a/hacking/fix_test_syntax.py b/hacking/fix_test_syntax.py
359 from ipalib import api 264index 7178033406a..78d87ef71cb 100755
360diff --git a/contrib/inventory/gce.py b/contrib/inventory/gce.py 265--- a/hacking/fix_test_syntax.py
361index 5c58146..7616843 100755 266+++ b/hacking/fix_test_syntax.py
362--- a/contrib/inventory/gce.py
363+++ b/contrib/inventory/gce.py
364@@ -1,4 +1,4 @@ 267@@ -1,4 +1,4 @@
365-#!/usr/bin/env python 268-#!/usr/bin/env python
366+#!/usr/bin/env python3 269+#!/usr/bin/env python3
367 # Copyright 2013 Google Inc. 270 # -*- coding: utf-8 -*-
271 # (c) 2017, Matt Martz <matt@sivel.net>
368 # 272 #
369 # This file is part of Ansible 273diff --git a/hacking/get_library.py b/hacking/get_library.py
370diff --git a/contrib/inventory/jail.py b/contrib/inventory/jail.py 274index 23bf4a39bb5..9346784398f 100755
371index 98b6acf..b12289c 100755 275--- a/hacking/get_library.py
372--- a/contrib/inventory/jail.py 276+++ b/hacking/get_library.py
373+++ b/contrib/inventory/jail.py
374@@ -1,4 +1,4 @@ 277@@ -1,4 +1,4 @@
375-#!/usr/bin/env python 278-#!/usr/bin/env python
376+#!/usr/bin/env python3 279+#!/usr/bin/env python3
377 280
378 # (c) 2013, Michael Scherer <misc@zarb.org> 281 # (c) 2014, Will Thames <will@thames.id.au>
379 # 282 #
380diff --git a/contrib/inventory/landscape.py b/contrib/inventory/landscape.py 283diff --git a/hacking/report.py b/hacking/report.py
381index 4b53171..7f52639 100755 284index 58b3a6b915a..78eed516dc0 100755
382--- a/contrib/inventory/landscape.py 285--- a/hacking/report.py
383+++ b/contrib/inventory/landscape.py 286+++ b/hacking/report.py
384@@ -1,4 +1,4 @@ 287@@ -1,4 +1,4 @@
385-#!/usr/bin/env python 288-#!/usr/bin/env python
386+#!/usr/bin/env python3 289+#!/usr/bin/env python3
290 # PYTHON_ARGCOMPLETE_OK
291 """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting."""
387 292
388 # (c) 2015, Marc Abramowitz <marca@surveymonkey.com> 293diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py
389 # 294index 7002b7899d5..cff03c38e6b 100755
390diff --git a/contrib/inventory/libvirt_lxc.py b/contrib/inventory/libvirt_lxc.py 295--- a/hacking/return_skeleton_generator.py
391index 35ccf40..ba3496d 100755 296+++ b/hacking/return_skeleton_generator.py
392--- a/contrib/inventory/libvirt_lxc.py
393+++ b/contrib/inventory/libvirt_lxc.py
394@@ -1,4 +1,4 @@ 297@@ -1,4 +1,4 @@
395-#!/usr/bin/env python 298-#!/usr/bin/env python
396+#!/usr/bin/env python3 299+#!/usr/bin/env python3
397 300
398 # (c) 2013, Michael Scherer <misc@zarb.org> 301 # (c) 2017, Will Thames <will@thames.id.au>
399 # 302 #
400diff --git a/contrib/inventory/linode.py b/contrib/inventory/linode.py 303diff --git a/hacking/test-module.py b/hacking/test-module.py
401index 6fd922f..cab7a70 100755 304index 54343e07e8b..38d4b8c60bb 100755
402--- a/contrib/inventory/linode.py 305--- a/hacking/test-module.py
403+++ b/contrib/inventory/linode.py 306+++ b/hacking/test-module.py
404@@ -1,4 +1,4 @@ 307@@ -1,4 +1,4 @@
405-#!/usr/bin/env python 308-#!/usr/bin/env python
406+#!/usr/bin/env python3 309+#!/usr/bin/env python3
407 310
408 ''' 311 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
409 Linode external inventory script
410diff --git a/contrib/inventory/lxc_inventory.py b/contrib/inventory/lxc_inventory.py
411index d82bb61..f7ac67c 100755
412--- a/contrib/inventory/lxc_inventory.py
413+++ b/contrib/inventory/lxc_inventory.py
414@@ -1,4 +1,4 @@
415-#!/usr/bin/env python
416+#!/usr/bin/env python3
417 # 312 #
418 # (c) 2015-16 Florian Haas, hastexo Professional Services GmbH 313diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py
419 # <florian@hastexo.com> 314index 2fc5a2f9328..18e67d7d121 100755
420diff --git a/contrib/inventory/mdt_dynamic_inventory.py b/contrib/inventory/mdt_dynamic_inventory.py 315--- a/hacking/tests/gen_distribution_version_testcase.py
421index 89ecc3e..5540a41 100755 316+++ b/hacking/tests/gen_distribution_version_testcase.py
422--- a/contrib/inventory/mdt_dynamic_inventory.py
423+++ b/contrib/inventory/mdt_dynamic_inventory.py
424@@ -1,4 +1,4 @@ 317@@ -1,4 +1,4 @@
425-#!/usr/bin/env python 318-#!/usr/bin/env python
426+#!/usr/bin/env python3 319+#!/usr/bin/env python3
427 320
428 # (c) 2016, Julian Barnett <jbarnett@tableau.com> 321 """
429 # 322 This script generated test_cases for test_distribution_version.py.
430diff --git a/contrib/inventory/nagios_livestatus.py b/contrib/inventory/nagios_livestatus.py 323diff --git a/hacking/update-sanity-requirements.py b/hacking/update-sanity-requirements.py
431index e1c145e..3e250cb 100755 324index 747f058880a..2570ab2c7d3 100755
432--- a/contrib/inventory/nagios_livestatus.py 325--- a/hacking/update-sanity-requirements.py
433+++ b/contrib/inventory/nagios_livestatus.py 326+++ b/hacking/update-sanity-requirements.py
434@@ -1,4 +1,4 @@ 327@@ -1,4 +1,4 @@
435-#!/usr/bin/env python 328-#!/usr/bin/env python
436+#!/usr/bin/env python3 329+#!/usr/bin/env python3
330 # PYTHON_ARGCOMPLETE_OK
331 """Generate frozen sanity test requirements from source requirements files."""
437 332
438 # (c) 2015, Yannig Perre <yannig.perre@gmail.com> 333diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
439 # 334index e90b44ce101..120948c7495 100755
440diff --git a/contrib/inventory/nagios_ndo.py b/contrib/inventory/nagios_ndo.py 335--- a/lib/ansible/cli/adhoc.py
441index 49ec563..cc10a51 100755 336+++ b/lib/ansible/cli/adhoc.py
442--- a/contrib/inventory/nagios_ndo.py
443+++ b/contrib/inventory/nagios_ndo.py
444@@ -1,4 +1,4 @@ 337@@ -1,4 +1,4 @@
445-#!/usr/bin/env python 338-#!/usr/bin/env python
446+#!/usr/bin/env python3 339+#!/usr/bin/env python3
447 340 # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
448 # (c) 2014, Jonathan Lestrelin <jonathan.lestrelin@gmail.com> 341 # Copyright: (c) 2018, Ansible Project
449 # 342 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
450diff --git a/contrib/inventory/nova.py b/contrib/inventory/nova.py 343diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py
451index f8c1617..d0ad7f0 100755 344index 3a5c24214b1..98d7a732517 100755
452--- a/contrib/inventory/nova.py 345--- a/lib/ansible/cli/config.py
453+++ b/contrib/inventory/nova.py 346+++ b/lib/ansible/cli/config.py
454@@ -1,4 +1,4 @@ 347@@ -1,4 +1,4 @@
455-#!/usr/bin/env python 348-#!/usr/bin/env python
456+#!/usr/bin/env python3 349+#!/usr/bin/env python3
457 350 # Copyright: (c) 2017, Ansible Project
458 # (c) 2012, Marco Vito Moscaritolo <marco@agavee.com> 351 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
459 # 352 # PYTHON_ARGCOMPLETE_OK
460diff --git a/contrib/inventory/nsot.py b/contrib/inventory/nsot.py 353diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
461index 62be85a..0a8dc9b 100755 354index 3125cc47a7f..4a2f38bb48e 100755
462--- a/contrib/inventory/nsot.py 355--- a/lib/ansible/cli/console.py
463+++ b/contrib/inventory/nsot.py 356+++ b/lib/ansible/cli/console.py
464@@ -1,4 +1,4 @@ 357@@ -1,4 +1,4 @@
465-#!/usr/bin/env python 358-#!/usr/bin/env python
466+#!/usr/bin/env python3 359+#!/usr/bin/env python3
467 360 # Copyright: (c) 2014, Nandor Sivok <dominis@haxor.hu>
468 ''' 361 # Copyright: (c) 2016, Redhat Inc
469 nsot 362 # Copyright: (c) 2018, Ansible Project
470diff --git a/contrib/inventory/openshift.py b/contrib/inventory/openshift.py 363diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py
471index 479b808..dc398b5 100755 364index 9f560bcbc6d..a0d34d92f6d 100755
472--- a/contrib/inventory/openshift.py 365--- a/lib/ansible/cli/doc.py
473+++ b/contrib/inventory/openshift.py 366+++ b/lib/ansible/cli/doc.py
474@@ -1,4 +1,4 @@ 367@@ -1,4 +1,4 @@
475-#!/usr/bin/env python 368-#!/usr/bin/env python
476+#!/usr/bin/env python3 369+#!/usr/bin/env python3
477 370 # Copyright: (c) 2014, James Tanner <tanner.jc@gmail.com>
478 # (c) 2013, Michael Scherer <misc@zarb.org> 371 # Copyright: (c) 2018, Ansible Project
479 # 372 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
480diff --git a/contrib/inventory/openstack.py b/contrib/inventory/openstack.py 373diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py
481index 6679a2c..eb38742 100755 374index c280380c18c..0357401c749 100755
482--- a/contrib/inventory/openstack.py 375--- a/lib/ansible/cli/galaxy.py
483+++ b/contrib/inventory/openstack.py 376+++ b/lib/ansible/cli/galaxy.py
484@@ -1,4 +1,4 @@ 377@@ -1,4 +1,4 @@
485-#!/usr/bin/env python 378-#!/usr/bin/env python
486+#!/usr/bin/env python3 379+#!/usr/bin/env python3
487 380 # Copyright: (c) 2013, James Cammarata <jcammarata@ansible.com>
488 # Copyright (c) 2012, Marco Vito Moscaritolo <marco@agavee.com> 381 # Copyright: (c) 2018-2021, Ansible Project
489 # Copyright (c) 2013, Jesse Keating <jesse.keating@rackspace.com> 382 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
490diff --git a/contrib/inventory/openvz.py b/contrib/inventory/openvz.py 383diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py
491index 1ef8ab1..d4dfcde 100755 384index e8ed75e4636..e4bb334932e 100755
492--- a/contrib/inventory/openvz.py 385--- a/lib/ansible/cli/inventory.py
493+++ b/contrib/inventory/openvz.py 386+++ b/lib/ansible/cli/inventory.py
494@@ -1,4 +1,4 @@ 387@@ -1,4 +1,4 @@
495-#!/usr/bin/env python 388-#!/usr/bin/env python
496+#!/usr/bin/env python3 389+#!/usr/bin/env python3
497 # -*- coding: utf-8 -*- 390 # Copyright: (c) 2017, Brian Coca <bcoca@ansible.com>
498 # 391 # Copyright: (c) 2018, Ansible Project
499 # openvz.py 392 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
500diff --git a/contrib/inventory/ovirt.py b/contrib/inventory/ovirt.py 393diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py
501index 7f505d9..ada01fa 100755 394index 9c091a675a9..27ff7d442e4 100755
502--- a/contrib/inventory/ovirt.py 395--- a/lib/ansible/cli/playbook.py
503+++ b/contrib/inventory/ovirt.py 396+++ b/lib/ansible/cli/playbook.py
504@@ -1,4 +1,4 @@ 397@@ -1,4 +1,4 @@
505-#!/usr/bin/env python 398-#!/usr/bin/env python
506+#!/usr/bin/env python3 399+#!/usr/bin/env python3
507 # Copyright 2015 IIX Inc. 400 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
508 # 401 # Copyright: (c) 2018, Ansible Project
509 # This file is part of Ansible 402 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
510diff --git a/contrib/inventory/ovirt4.py b/contrib/inventory/ovirt4.py 403diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py
511index 5ee5986..9d9e940 100755 404index dc8f055b44d..0e5b030eecf 100755
512--- a/contrib/inventory/ovirt4.py 405--- a/lib/ansible/cli/pull.py
513+++ b/contrib/inventory/ovirt4.py 406+++ b/lib/ansible/cli/pull.py
514@@ -1,4 +1,4 @@ 407@@ -1,4 +1,4 @@
515-#!/usr/bin/env python 408-#!/usr/bin/env python
516+#!/usr/bin/env python3 409+#!/usr/bin/env python3
517 # -*- coding: utf-8 -*- 410 # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
518 # 411 # Copyright: (c) 2018, Ansible Project
519 # Copyright (c) 2016 Red Hat, Inc. 412 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
520diff --git a/contrib/inventory/packet_net.py b/contrib/inventory/packet_net.py 413diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
521index c40c821..d23eba1 100755 414index 9109137e7f8..f01b1ec58dc 100755
522--- a/contrib/inventory/packet_net.py 415--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
523+++ b/contrib/inventory/packet_net.py 416+++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
524@@ -1,4 +1,4 @@ 417@@ -1,4 +1,4 @@
525-#!/usr/bin/env python 418-#!/usr/bin/env python
526+#!/usr/bin/env python3 419+#!/usr/bin/env python3
527 420 # Copyright: (c) 2017, Ansible Project
528 ''' 421 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
529 Packet.net external inventory script 422 from __future__ import (absolute_import, division, print_function)
530diff --git a/contrib/inventory/proxmox.py b/contrib/inventory/proxmox.py 423diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
531index c0ffb0b..ef7a394 100755 424index 3e60329de60..69499407479 100755
532--- a/contrib/inventory/proxmox.py 425--- a/lib/ansible/cli/vault.py
533+++ b/contrib/inventory/proxmox.py 426+++ b/lib/ansible/cli/vault.py
534@@ -1,4 +1,4 @@ 427@@ -1,4 +1,4 @@
535-#!/usr/bin/env python 428-#!/usr/bin/env python
536+#!/usr/bin/env python3 429+#!/usr/bin/env python3
537 430 # (c) 2014, James Tanner <tanner.jc@gmail.com>
538 # Copyright (C) 2014 Mathieu GAUTHIER-LAFAYE <gauthierl@lapth.cnrs.fr> 431 # Copyright: (c) 2018, Ansible Project
539 # 432 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
540diff --git a/contrib/inventory/rackhd.py b/contrib/inventory/rackhd.py 433diff --git a/packaging/release.py b/packaging/release.py
541index a89cb04..05b3ada 100755 434index 1d1ba37117a..a561dc6a905 100755
542--- a/contrib/inventory/rackhd.py 435--- a/packaging/release.py
543+++ b/contrib/inventory/rackhd.py 436+++ b/packaging/release.py
544@@ -1,4 +1,4 @@ 437@@ -1,4 +1,4 @@
545-#!/usr/bin/env python 438-#!/usr/bin/env python
546+#!/usr/bin/env python3 439+#!/usr/bin/env python3
440 # PYTHON_ARGCOMPLETE_OK
441 """Manage upstream ansible-core releases."""
547 442
548 import json 443diff --git a/packaging/sdist/check-link-behavior.py b/packaging/sdist/check-link-behavior.py
549 import requests 444index 34e05023d48..42f6c4be98f 100755
550diff --git a/contrib/inventory/rax.py b/contrib/inventory/rax.py 445--- a/packaging/sdist/check-link-behavior.py
551index d20a8ab..6c34753 100755 446+++ b/packaging/sdist/check-link-behavior.py
552--- a/contrib/inventory/rax.py
553+++ b/contrib/inventory/rax.py
554@@ -1,4 +1,4 @@ 447@@ -1,4 +1,4 @@
555-#!/usr/bin/env python 448-#!/usr/bin/env python
556+#!/usr/bin/env python3 449+#!/usr/bin/env python3
450 """Checks for link behavior required for sdist to retain symlinks."""
557 451
558 # (c) 2013, Jesse Keating <jesse.keating@rackspace.com, 452 from __future__ import (absolute_import, division, print_function)
559 # Paul Durivage <paul.durivage@rackspace.com>, 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
560diff --git a/contrib/inventory/rhv.py b/contrib/inventory/rhv.py 454index 6182e865db0..5829df52b5b 100644
561index 5ee5986..9d9e940 100755 455--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
562--- a/contrib/inventory/rhv.py 456+++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
563+++ b/contrib/inventory/rhv.py
564@@ -1,4 +1,4 @@ 457@@ -1,4 +1,4 @@
565-#!/usr/bin/env python 458-#!/usr/bin/env python
566+#!/usr/bin/env python3 459+#!/usr/bin/env python3
567 # -*- coding: utf-8 -*- 460
568 # 461 # Copyright: (c) 2020, Ansible Project
569 # Copyright (c) 2016 Red Hat, Inc. 462 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
570diff --git a/contrib/inventory/rudder.py b/contrib/inventory/rudder.py 463diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py
571index 5cf16c9..a669c37 100755 464index 687128056f7..bd7f3671655 100755
572--- a/contrib/inventory/rudder.py 465--- a/test/integration/targets/ansible-test-container/runme.py
573+++ b/contrib/inventory/rudder.py 466+++ b/test/integration/targets/ansible-test-container/runme.py
574@@ -1,4 +1,4 @@ 467@@ -1,4 +1,4 @@
575-#!/usr/bin/env python 468-#!/usr/bin/env python
576+#!/usr/bin/env python3 469+#!/usr/bin/env python3
470 """Test suite used to verify ansible-test is able to run its containers on various container hosts."""
577 471
578 # Copyright (c) 2015, Normation SAS 472 from __future__ import annotations
579 # 473diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py
580diff --git a/contrib/inventory/serf.py b/contrib/inventory/serf.py 474index 8effb647fca..4e34c4bbc16 100755
581index e1340da..6242eda 100755 475--- a/test/integration/targets/ansible-test-integration-targets/test.py
582--- a/contrib/inventory/serf.py 476+++ b/test/integration/targets/ansible-test-integration-targets/test.py
583+++ b/contrib/inventory/serf.py
584@@ -1,4 +1,4 @@ 477@@ -1,4 +1,4 @@
585-#!/usr/bin/env python 478-#!/usr/bin/env python
586+#!/usr/bin/env python3 479+#!/usr/bin/env python3
587 480
588 # (c) 2015, Marc Abramowitz <marca@surveymonkey.com> 481 import subprocess
589 # 482 import unittest
590diff --git a/contrib/inventory/softlayer.py b/contrib/inventory/softlayer.py 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
591index 3933eb4..519092f 100755 484index 463915284b2..fc2ed398d9f 100755
592--- a/contrib/inventory/softlayer.py 485--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
593+++ b/contrib/inventory/softlayer.py 486+++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
594@@ -1,4 +1,4 @@ 487@@ -1,4 +1,4 @@
595-#!/usr/bin/env python 488-#!/usr/bin/env python
596+#!/usr/bin/env python3 489+#!/usr/bin/env python3
597 """ 490 """Run a command using a PTY."""
598 SoftLayer external inventory script.
599 491
600diff --git a/contrib/inventory/spacewalk.py b/contrib/inventory/spacewalk.py 492 import sys
601index 2735a81..2da2720 100755 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
602--- a/contrib/inventory/spacewalk.py 494index a2b094e2fca..355dba697a9 100755
603+++ b/contrib/inventory/spacewalk.py 495--- 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
604@@ -1,4 +1,4 @@ 497@@ -1,4 +1,4 @@
605-#!/usr/bin/env python 498-#!/usr/bin/env python
606+#!/usr/bin/env python3 499+#!/usr/bin/env python3
500 """Assert no TTY is available."""
607 501
608 """ 502 import sys
609 Spacewalk external inventory script 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
610diff --git a/contrib/inventory/ssh_config.py b/contrib/inventory/ssh_config.py 504index 4265cc3e6c1..e5a0d9b4834 100755
611index ae41e58..05373ec 100755 505--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
612--- a/contrib/inventory/ssh_config.py 506+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
613+++ b/contrib/inventory/ssh_config.py 507@@ -1 +1 @@
614@@ -1,4 +1,4 @@
615-#!/usr/bin/env python 508-#!/usr/bin/env python
616+#!/usr/bin/env python3 509+#!/usr/bin/env python3
617 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
618 # (c) 2014, Tomas Karasek <tomas.karasek@digile.fi> 511index 4265cc3e6c1..e5a0d9b4834 100755
619 # 512--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
620diff --git a/contrib/inventory/stacki.py b/contrib/inventory/stacki.py 513+++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
621index fd4cda5..d6acda3 100755 514@@ -1 +1 @@
622--- a/contrib/inventory/stacki.py 515-#!/usr/bin/env python
623+++ b/contrib/inventory/stacki.py 516+#!/usr/bin/env python3
517diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py
518index b380f147fca..e97f2fcb33d 100755
519--- a/test/integration/targets/ansible-test/venv-pythons.py
520+++ b/test/integration/targets/ansible-test/venv-pythons.py
624@@ -1,4 +1,4 @@ 521@@ -1,4 +1,4 @@
625-#!/usr/bin/env python 522-#!/usr/bin/env python
626+#!/usr/bin/env python3 523+#!/usr/bin/env python3
524 """Return target Python options for use with ansible-test."""
627 525
628 # Copyright (c) 2016, Hugh Ma <hugh.ma@flextronics.com> 526 import os
629 # 527diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py
630diff --git a/contrib/inventory/vagrant.py b/contrib/inventory/vagrant.py 528index b67c7475631..a30c306a831 100755
631index 37a6741..86fc67d 100755 529--- a/test/integration/targets/ansible-vault/faux-editor.py
632--- a/contrib/inventory/vagrant.py 530+++ b/test/integration/targets/ansible-vault/faux-editor.py
633+++ b/contrib/inventory/vagrant.py
634@@ -1,4 +1,4 @@ 531@@ -1,4 +1,4 @@
635-#!/usr/bin/env python 532-#!/usr/bin/env python
636+#!/usr/bin/env python3 533+#!/usr/bin/env python3
637 """ 534 #
638 Vagrant external inventory script. Automatically finds the IP of the booted vagrant vm(s), and 535 # Ansible is free software: you can redistribute it and/or modify
639 returns it under the host group 'vagrant' 536 # it under the terms of the GNU General Public License as published by
640diff --git a/contrib/inventory/vbox.py b/contrib/inventory/vbox.py 537diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py
641index 8905fab..141b01a 100755 538index 1b7f02beb23..0dcada23c7e 100755
642--- a/contrib/inventory/vbox.py 539--- a/test/integration/targets/ansible-vault/password-script.py
643+++ b/contrib/inventory/vbox.py 540+++ b/test/integration/targets/ansible-vault/password-script.py
644@@ -1,4 +1,4 @@ 541@@ -1,4 +1,4 @@
645-#!/usr/bin/env python 542-#!/usr/bin/env python
646+#!/usr/bin/env python3 543+#!/usr/bin/env python3
647
648 # This file is part of Ansible,
649 # 544 #
650diff --git a/contrib/inventory/vmware.py b/contrib/inventory/vmware.py 545 # Ansible is free software: you can redistribute it and/or modify
651index 377c7cb..cee232a 100755 546 # it under the terms of the GNU General Public License as published by
652--- a/contrib/inventory/vmware.py 547diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py
653+++ b/contrib/inventory/vmware.py 548index ee46188742d..48244fca09e 100755
549--- a/test/integration/targets/ansible-vault/test-vault-client.py
550+++ b/test/integration/targets/ansible-vault/test-vault-client.py
654@@ -1,4 +1,4 @@ 551@@ -1,4 +1,4 @@
655-#!/usr/bin/env python 552-#!/usr/bin/env python
656+#!/usr/bin/env python3 553+#!/usr/bin/env python3
657 # -*- coding: utf-8 -*- 554 # -*- coding: utf-8 -*-
658 ''' 555
659 VMware Inventory Script 556 from __future__ import (absolute_import, division, print_function)
660diff --git a/contrib/inventory/vmware_inventory.py b/contrib/inventory/vmware_inventory.py 557diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
661index 58ee473..4300fe5 100755 558index 93958fc2adb..33509c826a3 100644
662--- a/contrib/inventory/vmware_inventory.py 559--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
663+++ b/contrib/inventory/vmware_inventory.py 560+++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
664@@ -1,4 +1,4 @@ 561@@ -1,4 +1,4 @@
665-#!/usr/bin/env python 562-#!/usr/bin/env python
666+#!/usr/bin/env python3 563+#!/usr/bin/env python3
667 564
668 # Requirements 565 from __future__ import (absolute_import, division, print_function)
669 # - pyvmomi >= 6.0.0.2016.4 566 __metaclass__ = type
670diff --git a/contrib/inventory/windows_azure.py b/contrib/inventory/windows_azure.py 567diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py
671index cceed36..f8777be 100755 568index 9893d6652ed..7a07dcc108e 100644
672--- a/contrib/inventory/windows_azure.py 569--- a/test/integration/targets/cli/test-cli.py
673+++ b/contrib/inventory/windows_azure.py 570+++ b/test/integration/targets/cli/test-cli.py
674@@ -1,4 +1,4 @@ 571@@ -1,4 +1,4 @@
675-#!/usr/bin/env python 572-#!/usr/bin/env python
676+#!/usr/bin/env python3 573+#!/usr/bin/env python3
574 # Copyright (c) 2019 Matt Martz <matt@sivel.net>
575 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
677 576
678 ''' 577diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py
679 Windows Azure external inventory script 578index f7077fba0ab..dcc96141295 100644
680diff --git a/contrib/inventory/zabbix.py b/contrib/inventory/zabbix.py 579--- a/test/integration/targets/cli/test_k_and_K.py
681index f6b37b9..241823b 100755 580+++ b/test/integration/targets/cli/test_k_and_K.py
682--- a/contrib/inventory/zabbix.py
683+++ b/contrib/inventory/zabbix.py
684@@ -1,4 +1,4 @@ 581@@ -1,4 +1,4 @@
685-#!/usr/bin/env python 582-#!/usr/bin/env python
686+#!/usr/bin/env python3 583+#!/usr/bin/env python3
584 # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
687 585
688 # (c) 2013, Greg Buehler 586 # Make coding more python3-ish
689 # 587diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py
690diff --git a/contrib/inventory/zone.py b/contrib/inventory/zone.py 588index 92a702cf13e..9ea69089d58 100755
691index 893953e..b049fd7 100755 589--- a/test/integration/targets/collection/update-ignore.py
692--- a/contrib/inventory/zone.py 590+++ b/test/integration/targets/collection/update-ignore.py
693+++ b/contrib/inventory/zone.py
694@@ -1,4 +1,4 @@ 591@@ -1,4 +1,4 @@
695-#!/usr/bin/env python 592-#!/usr/bin/env python
696+#!/usr/bin/env python3 593+#!/usr/bin/env python3
594 """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."""
697 595
698 # (c) 2015, Dagobert Michelsen <dam@baltic-online.de> 596 import os
699 # 597diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py
700diff --git a/docs/docsite/rst/dev_guide/developing_api.rst b/docs/docsite/rst/dev_guide/developing_api.rst 598index 237f9c2d903..4fe74903d8d 100755
701index bb2cbc4..55d4212 100644 599--- a/test/integration/targets/debugger/test_run_once.py
702--- a/docs/docsite/rst/dev_guide/developing_api.rst 600+++ b/test/integration/targets/debugger/test_run_once.py
703+++ b/docs/docsite/rst/dev_guide/developing_api.rst
704@@ -37,7 +37,7 @@ Python API 2.0
705 In 2.0 things get a bit more complicated to start, but you end up with much more discrete and readable classes::
706
707
708- #!/usr/bin/env python
709+ #!/usr/bin/env python3
710
711 import json
712 from collections import namedtuple
713diff --git a/hacking/dump_playbook_attributes.py b/hacking/dump_playbook_attributes.py
714index 204fe3f..9d86b66 100755
715--- a/hacking/dump_playbook_attributes.py
716+++ b/hacking/dump_playbook_attributes.py
717@@ -1,4 +1,4 @@ 601@@ -1,4 +1,4 @@
718-#!/usr/bin/env python 602-#!/usr/bin/env python
719+#!/usr/bin/env python3 603+#!/usr/bin/env python3
720 604
721 import optparse 605 import io
722 from jinja2 import Environment, FileSystemLoader 606 import os
723diff --git a/hacking/module_formatter.py b/hacking/module_formatter.py 607diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py
724index 4f132aa..1bee33a 100755 608index 463915284b2..fc2ed398d9f 100755
725--- a/hacking/module_formatter.py 609--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py
726+++ b/hacking/module_formatter.py 610+++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py
727@@ -1,4 +1,4 @@ 611@@ -1,4 +1,4 @@
728-#!/usr/bin/env python 612-#!/usr/bin/env python
729+#!/usr/bin/env python3 613+#!/usr/bin/env python3
730 # (c) 2012, Jan-Piet Mens <jpmens () gmail.com> 614 """Run a command using a PTY."""
731 # (c) 2012-2014, Michael DeHaan <michael@ansible.com> and others 615
732 # 616 import sys
733diff --git a/lib/ansible/modules/web_infrastructure/django_manage.py b/lib/ansible/modules/web_infrastructure/django_manage.py 617diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact
734index ac24829..90aee1b 100644 618index 79e3f62677e..2a294b33a82 100644
735--- a/lib/ansible/modules/web_infrastructure/django_manage.py 619--- a/test/integration/targets/gathering/uuid.fact
736+++ b/lib/ansible/modules/web_infrastructure/django_manage.py 620+++ b/test/integration/targets/gathering/uuid.fact
737@@ -97,7 +97,7 @@ notes:
738 - This module assumes English error messages for the 'createcachetable' command to detect table existence, unfortunately.
739 - To be able to use the migrate command with django versions < 1.7, you must have south installed and added as an app in your settings.
740 - To be able to use the collectstatic command, you must have enabled staticfiles in your settings.
741- - As of ansible 2.x, your I(manage.py) application must be executable (rwxr-xr-x), and must have a valid I(shebang), i.e. "#!/usr/bin/env python", for invoking the appropriate Python interpreter.
742+ - As of ansible 2.x, your I(manage.py) application must be executable (rwxr-xr-x), and must have a valid I(shebang), i.e. "#!/usr/bin/env python3", for invoking the appropriate Python interpreter.
743 requirements: [ "virtualenv", "django" ]
744 author: "Scott Anderson (@tastychutney)"
745 '''
746diff --git a/lib/ansible/modules/windows/win_file_version.py b/lib/ansible/modules/windows/win_file_version.py
747index 399c978..1225a06 100644
748--- a/lib/ansible/modules/windows/win_file_version.py
749+++ b/lib/ansible/modules/windows/win_file_version.py
750@@ -1,4 +1,4 @@ 621@@ -1,4 +1,4 @@
751-#!/usr/bin/env python 622-#!/usr/bin/env python
752+#!/usr/bin/env python3 623+#!/usr/bin/env python3
753 # -*- coding: utf-8 -*- 624 # -*- coding: utf-8 -*-
754 625
755 # Get DLL or EXE build version
756diff --git a/lib/ansible/modules/windows/win_firewall_rule.py b/lib/ansible/modules/windows/win_firewall_rule.py
757index e4ab1e4..456523d 100644
758--- a/lib/ansible/modules/windows/win_firewall_rule.py
759+++ b/lib/ansible/modules/windows/win_firewall_rule.py
760@@ -1,4 +1,4 @@
761-#!/usr/bin/env python
762+#!/usr/bin/env python3
763 626
764 # (c) 2014, Timothy Vandenbrande <timothy.vandenbrande@gmail.com> 627diff --git a/test/integration/targets/gathering_facts/uuid.fact b/test/integration/targets/gathering_facts/uuid.fact
765 # 628index 79e3f62677e..2a294b33a82 100644
766diff --git a/test/compile/compile.py b/test/compile/compile.py 629--- a/test/integration/targets/gathering_facts/uuid.fact
767index 01144c6..6e332a9 100755 630+++ b/test/integration/targets/gathering_facts/uuid.fact
768--- a/test/compile/compile.py
769+++ b/test/compile/compile.py
770@@ -1,4 +1,4 @@ 631@@ -1,4 +1,4 @@
771-#!/usr/bin/env python 632-#!/usr/bin/env python
772+#!/usr/bin/env python3 633+#!/usr/bin/env python3
773 """Python syntax checker with lint friendly output.""" 634 # -*- coding: utf-8 -*-
774 635
775 import os
776diff --git a/test/integration/cleanup_rax.py b/test/integration/cleanup_rax.py
777index 5c757f5..bc3448b 100755
778--- a/test/integration/cleanup_rax.py
779+++ b/test/integration/cleanup_rax.py
780@@ -1,4 +1,4 @@
781-#!/usr/bin/env python
782+#!/usr/bin/env python3
783 636
784 import os 637diff --git a/test/integration/targets/group/files/gidget.py b/test/integration/targets/group/files/gidget.py
785 import re 638index 4b771516fdd..085dfcdee11 100644
786diff --git a/test/integration/targets/embedded_module/library/test_integration_module b/test/integration/targets/embedded_module/library/test_integration_module 639--- a/test/integration/targets/group/files/gidget.py
787index f564619..0d46d15 100644 640+++ b/test/integration/targets/group/files/gidget.py
788--- a/test/integration/targets/embedded_module/library/test_integration_module 641@@ -1,4 +1,4 @@
789+++ b/test/integration/targets/embedded_module/library/test_integration_module
790@@ -1,3 +1,3 @@
791-#!/usr/bin/env python 642-#!/usr/bin/env python
792+#!/usr/bin/env python3 643+#!/usr/bin/env python3
793 644
794 print('{"changed":false, "msg":"this is the embedded module"}') 645 from __future__ import (absolute_import, division, print_function)
646 __metaclass__ = type
795diff --git a/test/integration/targets/module_utils/module_utils/foo.py b/test/integration/targets/module_utils/module_utils/foo.py 647diff --git a/test/integration/targets/module_utils/module_utils/foo.py b/test/integration/targets/module_utils/module_utils/foo.py
796index 20698f1..0cd5c85 100644 648index 20698f1f463..0cd5c851429 100644
797--- a/test/integration/targets/module_utils/module_utils/foo.py 649--- a/test/integration/targets/module_utils/module_utils/foo.py
798+++ b/test/integration/targets/module_utils/module_utils/foo.py 650+++ b/test/integration/targets/module_utils/module_utils/foo.py
799@@ -1,3 +1,3 @@ 651@@ -1,3 +1,3 @@
@@ -802,7 +654,7 @@ index 20698f1..0cd5c85 100644
802 654
803 foo = "FOO FROM foo.py" 655 foo = "FOO FROM foo.py"
804diff --git a/test/integration/targets/module_utils/module_utils/sub/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam.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
805index 566f8b7..0814485 100644 657index 566f8b7c47f..0814485d5fe 100644
806--- a/test/integration/targets/module_utils/module_utils/sub/bam.py 658--- a/test/integration/targets/module_utils/module_utils/sub/bam.py
807+++ b/test/integration/targets/module_utils/module_utils/sub/bam.py 659+++ b/test/integration/targets/module_utils/module_utils/sub/bam.py
808@@ -1,3 +1,3 @@ 660@@ -1,3 +1,3 @@
@@ -811,7 +663,7 @@ index 566f8b7..0814485 100644
811 663
812 bam = "BAM FROM sub/bam.py" 664 bam = "BAM FROM sub/bam.py"
813diff --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 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
814index b7ed707..97f9eed 100644 666index b7ed707211e..97f9eedcdb7 100644
815--- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py 667--- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
816+++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py 668+++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
817@@ -1,3 +1,3 @@ 669@@ -1,3 +1,3 @@
@@ -820,7 +672,7 @@ index b7ed707..97f9eed 100644
820 672
821 bam = "BAM FROM sub/bam/bam.py" 673 bam = "BAM FROM sub/bam/bam.py"
822diff --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 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
823index 02fafd4..3a93360 100644 675index 02fafd40f3f..3a93360c69e 100644
824--- a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py 676--- a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
825+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py 677+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
826@@ -1,3 +1,3 @@ 678@@ -1,3 +1,3 @@
@@ -829,7 +681,7 @@ index 02fafd4..3a93360 100644
829 681
830 bam = "BAM FROM sub/bar/bam.py" 682 bam = "BAM FROM sub/bar/bam.py"
831diff --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 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
832index 8566901..40f0c94 100644 684index 8566901f044..40f0c9446c9 100644
833--- a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py 685--- a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
834+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py 686+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
835@@ -1,3 +1,3 @@ 687@@ -1,3 +1,3 @@
@@ -837,396 +689,135 @@ index 8566901..40f0c94 100644
837+#!/usr/bin/env python3 689+#!/usr/bin/env python3
838 690
839 bar = "BAR FROM sub/bar/bar.py" 691 bar = "BAR FROM sub/bar/bar.py"
840diff --git a/test/integration/targets/service/files/ansible_test_service b/test/integration/targets/service/files/ansible_test_service 692diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py
841index 682edeb..e858909 100755 693index 3703470d065..dd14b2810d6 100755
842--- a/test/integration/targets/service/files/ansible_test_service 694--- a/test/integration/targets/pause/test-pause.py
843+++ b/test/integration/targets/service/files/ansible_test_service 695+++ b/test/integration/targets/pause/test-pause.py
844@@ -1,4 +1,4 @@
845-#!/usr/bin/env python
846+#!/usr/bin/env python3
847
848 # this is mostly based off of the code found here:
849 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
850diff --git a/test/runner/ansible-test b/test/runner/ansible-test
851index 801f07f..804aa8f 100755
852--- a/test/runner/ansible-test
853+++ b/test/runner/ansible-test
854@@ -1,4 +1,4 @@
855-#!/usr/bin/env python
856+#!/usr/bin/env python3
857 # PYTHON_ARGCOMPLETE_OK
858 """Test runner for all Ansible tests."""
859
860diff --git a/test/runner/injector/ansible b/test/runner/injector/ansible
861index 57241c9..c463946 100755
862--- a/test/runner/injector/ansible
863+++ b/test/runner/injector/ansible
864@@ -1,4 +1,4 @@
865-#!/usr/bin/env python
866+#!/usr/bin/env python3
867 """Code coverage wrapper."""
868
869 from __future__ import absolute_import, print_function
870diff --git a/test/runner/injector/ansible-console b/test/runner/injector/ansible-console
871index 57241c9..c463946 100755
872--- a/test/runner/injector/ansible-console
873+++ b/test/runner/injector/ansible-console
874@@ -1,4 +1,4 @@
875-#!/usr/bin/env python
876+#!/usr/bin/env python3
877 """Code coverage wrapper."""
878
879 from __future__ import absolute_import, print_function
880diff --git a/test/runner/injector/ansible-doc b/test/runner/injector/ansible-doc
881index 57241c9..c463946 100755
882--- a/test/runner/injector/ansible-doc
883+++ b/test/runner/injector/ansible-doc
884@@ -1,4 +1,4 @@
885-#!/usr/bin/env python
886+#!/usr/bin/env python3
887 """Code coverage wrapper."""
888
889 from __future__ import absolute_import, print_function
890diff --git a/test/runner/injector/ansible-galaxy b/test/runner/injector/ansible-galaxy
891index 57241c9..c463946 100755
892--- a/test/runner/injector/ansible-galaxy
893+++ b/test/runner/injector/ansible-galaxy
894@@ -1,4 +1,4 @@
895-#!/usr/bin/env python
896+#!/usr/bin/env python3
897 """Code coverage wrapper."""
898
899 from __future__ import absolute_import, print_function
900diff --git a/test/runner/injector/ansible-playbook b/test/runner/injector/ansible-playbook
901index 57241c9..c463946 100755
902--- a/test/runner/injector/ansible-playbook
903+++ b/test/runner/injector/ansible-playbook
904@@ -1,4 +1,4 @@
905-#!/usr/bin/env python
906+#!/usr/bin/env python3
907 """Code coverage wrapper."""
908
909 from __future__ import absolute_import, print_function
910diff --git a/test/runner/injector/ansible-pull b/test/runner/injector/ansible-pull
911index 57241c9..c463946 100755
912--- a/test/runner/injector/ansible-pull
913+++ b/test/runner/injector/ansible-pull
914@@ -1,4 +1,4 @@
915-#!/usr/bin/env python
916+#!/usr/bin/env python3
917 """Code coverage wrapper."""
918
919 from __future__ import absolute_import, print_function
920diff --git a/test/runner/injector/ansible-vault b/test/runner/injector/ansible-vault
921index 57241c9..c463946 100755
922--- a/test/runner/injector/ansible-vault
923+++ b/test/runner/injector/ansible-vault
924@@ -1,4 +1,4 @@
925-#!/usr/bin/env python
926+#!/usr/bin/env python3
927 """Code coverage wrapper."""
928
929 from __future__ import absolute_import, print_function
930diff --git a/test/runner/injector/cover b/test/runner/injector/cover
931index 57241c9..c463946 100755
932--- a/test/runner/injector/cover
933+++ b/test/runner/injector/cover
934@@ -1,4 +1,4 @@
935-#!/usr/bin/env python
936+#!/usr/bin/env python3
937 """Code coverage wrapper."""
938
939 from __future__ import absolute_import, print_function
940diff --git a/test/runner/injector/cover2 b/test/runner/injector/cover2
941index 57241c9..c463946 100755
942--- a/test/runner/injector/cover2
943+++ b/test/runner/injector/cover2
944@@ -1,4 +1,4 @@
945-#!/usr/bin/env python
946+#!/usr/bin/env python3
947 """Code coverage wrapper."""
948
949 from __future__ import absolute_import, print_function
950diff --git a/test/runner/injector/cover2.4 b/test/runner/injector/cover2.4
951index 57241c9..c463946 100755
952--- a/test/runner/injector/cover2.4
953+++ b/test/runner/injector/cover2.4
954@@ -1,4 +1,4 @@
955-#!/usr/bin/env python
956+#!/usr/bin/env python3
957 """Code coverage wrapper."""
958
959 from __future__ import absolute_import, print_function
960diff --git a/test/runner/injector/cover2.6 b/test/runner/injector/cover2.6
961index 57241c9..c463946 100755
962--- a/test/runner/injector/cover2.6
963+++ b/test/runner/injector/cover2.6
964@@ -1,4 +1,4 @@
965-#!/usr/bin/env python
966+#!/usr/bin/env python3
967 """Code coverage wrapper."""
968
969 from __future__ import absolute_import, print_function
970diff --git a/test/runner/injector/cover2.7 b/test/runner/injector/cover2.7
971index 57241c9..c463946 100755
972--- a/test/runner/injector/cover2.7
973+++ b/test/runner/injector/cover2.7
974@@ -1,4 +1,4 @@
975-#!/usr/bin/env python
976+#!/usr/bin/env python3
977 """Code coverage wrapper."""
978
979 from __future__ import absolute_import, print_function
980diff --git a/test/runner/injector/cover3 b/test/runner/injector/cover3
981index 57241c9..c463946 100755
982--- a/test/runner/injector/cover3
983+++ b/test/runner/injector/cover3
984@@ -1,4 +1,4 @@
985-#!/usr/bin/env python
986+#!/usr/bin/env python3
987 """Code coverage wrapper."""
988
989 from __future__ import absolute_import, print_function
990diff --git a/test/runner/injector/cover3.5 b/test/runner/injector/cover3.5
991index 57241c9..c463946 100755
992--- a/test/runner/injector/cover3.5
993+++ b/test/runner/injector/cover3.5
994@@ -1,4 +1,4 @@
995-#!/usr/bin/env python
996+#!/usr/bin/env python3
997 """Code coverage wrapper."""
998
999 from __future__ import absolute_import, print_function
1000diff --git a/test/runner/injector/cover3.6 b/test/runner/injector/cover3.6
1001index 57241c9..c463946 100755
1002--- a/test/runner/injector/cover3.6
1003+++ b/test/runner/injector/cover3.6
1004@@ -1,4 +1,4 @@
1005-#!/usr/bin/env python
1006+#!/usr/bin/env python3
1007 """Code coverage wrapper."""
1008
1009 from __future__ import absolute_import, print_function
1010diff --git a/test/runner/injector/injector.py b/test/runner/injector/injector.py
1011index 57241c9..c463946 100755
1012--- a/test/runner/injector/injector.py
1013+++ b/test/runner/injector/injector.py
1014@@ -1,4 +1,4 @@
1015-#!/usr/bin/env python
1016+#!/usr/bin/env python3
1017 """Code coverage wrapper."""
1018
1019 from __future__ import absolute_import, print_function
1020diff --git a/test/runner/injector/pytest b/test/runner/injector/pytest
1021index 57241c9..c463946 100755
1022--- a/test/runner/injector/pytest
1023+++ b/test/runner/injector/pytest
1024@@ -1,4 +1,4 @@ 696@@ -1,4 +1,4 @@
1025-#!/usr/bin/env python 697-#!/usr/bin/env python
1026+#!/usr/bin/env python3 698+#!/usr/bin/env python3
1027 """Code coverage wrapper."""
1028 699
1029 from __future__ import absolute_import, print_function 700 from __future__ import (absolute_import, division, print_function)
1030diff --git a/test/runner/injector/runner b/test/runner/injector/runner 701 __metaclass__ = type
1031index 57241c9..c463946 100755 702diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py
1032--- a/test/runner/injector/runner 703index aaf21875ca2..2835719e4f2 100755
1033+++ b/test/runner/injector/runner 704--- a/test/integration/targets/pip/files/setup.py
705+++ b/test/integration/targets/pip/files/setup.py
1034@@ -1,4 +1,4 @@ 706@@ -1,4 +1,4 @@
1035-#!/usr/bin/env python 707-#!/usr/bin/env python
1036+#!/usr/bin/env python3 708+#!/usr/bin/env python3
1037 """Code coverage wrapper."""
1038 709
1039 from __future__ import absolute_import, print_function 710 from __future__ import (absolute_import, division, print_function)
1040diff --git a/test/runner/injector/runner2 b/test/runner/injector/runner2 711 __metaclass__ = type
1041index 57241c9..c463946 100755 712diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py
1042--- a/test/runner/injector/runner2 713index 522493fcc77..b3aaf7f6b43 100644
1043+++ b/test/runner/injector/runner2 714--- a/test/integration/targets/service/files/ansible_test_service.py
715+++ b/test/integration/targets/service/files/ansible_test_service.py
1044@@ -1,4 +1,4 @@ 716@@ -1,4 +1,4 @@
1045-#!/usr/bin/env python 717-#!/usr/bin/env python
1046+#!/usr/bin/env python3 718+#!/usr/bin/env python3
1047 """Code coverage wrapper."""
1048 719
1049 from __future__ import absolute_import, print_function 720 # this is mostly based off of the code found here:
1050diff --git a/test/runner/injector/runner2.4 b/test/runner/injector/runner2.4 721 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
1051index 57241c9..c463946 100755 722diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py
1052--- a/test/runner/injector/runner2.4 723index 19f1e291388..609218325d6 100644
1053+++ b/test/runner/injector/runner2.4 724--- a/test/integration/targets/service_facts/files/ansible_test_service.py
1054@@ -1,4 +1,4 @@ 725+++ b/test/integration/targets/service_facts/files/ansible_test_service.py
1055-#!/usr/bin/env python
1056+#!/usr/bin/env python3
1057 """Code coverage wrapper."""
1058
1059 from __future__ import absolute_import, print_function
1060diff --git a/test/runner/injector/runner2.6 b/test/runner/injector/runner2.6
1061index 57241c9..c463946 100755
1062--- a/test/runner/injector/runner2.6
1063+++ b/test/runner/injector/runner2.6
1064@@ -1,4 +1,4 @@
1065-#!/usr/bin/env python
1066+#!/usr/bin/env python3
1067 """Code coverage wrapper."""
1068
1069 from __future__ import absolute_import, print_function
1070diff --git a/test/runner/injector/runner2.7 b/test/runner/injector/runner2.7
1071index 57241c9..c463946 100755
1072--- a/test/runner/injector/runner2.7
1073+++ b/test/runner/injector/runner2.7
1074@@ -1,4 +1,4 @@
1075-#!/usr/bin/env python
1076+#!/usr/bin/env python3
1077 """Code coverage wrapper."""
1078
1079 from __future__ import absolute_import, print_function
1080diff --git a/test/runner/injector/runner3 b/test/runner/injector/runner3
1081index 57241c9..c463946 100755
1082--- a/test/runner/injector/runner3
1083+++ b/test/runner/injector/runner3
1084@@ -1,4 +1,4 @@
1085-#!/usr/bin/env python
1086+#!/usr/bin/env python3
1087 """Code coverage wrapper."""
1088
1089 from __future__ import absolute_import, print_function
1090diff --git a/test/runner/injector/runner3.5 b/test/runner/injector/runner3.5
1091index 57241c9..c463946 100755
1092--- a/test/runner/injector/runner3.5
1093+++ b/test/runner/injector/runner3.5
1094@@ -1,4 +1,4 @@
1095-#!/usr/bin/env python
1096+#!/usr/bin/env python3
1097 """Code coverage wrapper."""
1098
1099 from __future__ import absolute_import, print_function
1100diff --git a/test/runner/injector/runner3.6 b/test/runner/injector/runner3.6
1101index 57241c9..c463946 100755
1102--- a/test/runner/injector/runner3.6
1103+++ b/test/runner/injector/runner3.6
1104@@ -1,4 +1,4 @@ 726@@ -1,4 +1,4 @@
1105-#!/usr/bin/env python 727-#!/usr/bin/env python
1106+#!/usr/bin/env python3 728+#!/usr/bin/env python3
1107 """Code coverage wrapper."""
1108 729
1109 from __future__ import absolute_import, print_function 730 # this is mostly based off of the code found here:
1110diff --git a/test/runner/retry.py b/test/runner/retry.py 731 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
1111index 4972131..a9ffb07 100755 732diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
1112--- a/test/runner/retry.py 733index b0a8889439a..90c83b582b4 100644
1113+++ b/test/runner/retry.py 734--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
735+++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
1114@@ -1,4 +1,4 @@ 736@@ -1,4 +1,4 @@
1115-#!/usr/bin/env python 737-#!/usr/bin/env python
1116+#!/usr/bin/env python3 738+#!/usr/bin/env python3
1117 # PYTHON_ARGCOMPLETE_OK
1118 """Automatically retry failed commands."""
1119 739
1120diff --git a/test/runner/test.py b/test/runner/test.py 740 from __future__ import (absolute_import, division, print_function)
1121index 801f07f..804aa8f 100755 741 __metaclass__ = type
1122--- a/test/runner/test.py 742diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py
1123+++ b/test/runner/test.py 743index 1a5bdd30789..344bcf0f868 100755
744--- a/test/integration/targets/throttle/test_throttle.py
745+++ b/test/integration/targets/throttle/test_throttle.py
1124@@ -1,4 +1,4 @@ 746@@ -1,4 +1,4 @@
1125-#!/usr/bin/env python 747-#!/usr/bin/env python
1126+#!/usr/bin/env python3 748+#!/usr/bin/env python3
1127 # PYTHON_ARGCOMPLETE_OK
1128 """Test runner for all Ansible tests."""
1129 749
1130diff --git a/test/sanity/code-smell/ansible-var-precedence-check.py b/test/sanity/code-smell/ansible-var-precedence-check.py 750 from __future__ import (absolute_import, division, print_function)
1131index e10c097..13c7a73 100755 751 __metaclass__ = type
1132--- a/test/sanity/code-smell/ansible-var-precedence-check.py 752diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
1133+++ b/test/sanity/code-smell/ansible-var-precedence-check.py 753index fc31688be2e..f964bbe8d6d 100755
754--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py
755+++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
1134@@ -1,4 +1,4 @@ 756@@ -1,4 +1,4 @@
1135-#!/usr/bin/env python 757-#!/usr/bin/env python
1136+#!/usr/bin/env python3 758+#!/usr/bin/env python3
1137 759
1138 # A tool to check the order of precedence for ansible variables 760 # A tool to check the order of precedence for ansible variables
1139 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml 761 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml
1140diff --git a/test/sanity/code-smell/integration-aliases.py b/test/sanity/code-smell/integration-aliases.py 762diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py
1141index 50301e3..ac53ca9 100755 763index 79ff6c03ae3..730c87d3fc1 100644
1142--- a/test/sanity/code-smell/integration-aliases.py 764--- a/test/lib/ansible_test/_internal/util_common.py
1143+++ b/test/sanity/code-smell/integration-aliases.py 765+++ b/test/lib/ansible_test/_internal/util_common.py
1144@@ -1,4 +1,4 @@ 766@@ -271,7 +271,7 @@ def get_injector_path() -> str:
1145-#!/usr/bin/env python 767 ])
1146+#!/usr/bin/env python3 768
1147 769 scripts = (
1148 import os 770- ('python.py', '/usr/bin/env python', MODE_FILE_EXECUTE),
1149 import textwrap 771+ ('python.py', '/usr/bin/env python3', MODE_FILE_EXECUTE),
1150diff --git a/test/sanity/code-smell/shebang.sh b/test/sanity/code-smell/shebang.sh 772 ('virtualenv.sh', '/usr/bin/env bash', MODE_FILE),
1151index 76d72c1..565a198 100755 773 )
1152--- a/test/sanity/code-smell/shebang.sh 774
1153+++ b/test/sanity/code-smell/shebang.sh 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
1154@@ -8,11 +8,11 @@ grep '^#!' -rIn . \ 776index b0b13197839..9535c3b4819 100644
1155 -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!powershell$' \ 777--- a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
1156 -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!/usr/bin/python$' \ 778+++ b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
1157 -e '^\./test/integration/targets/module_precedence/.*lib.*:#!/usr/bin/python$' \ 779@@ -16,14 +16,14 @@ def main():
1158- -e '^\./hacking/cherrypick.py:#!/usr/bin/env python3$' \ 780 b'#!/usr/bin/env bash',
1159+ -e '^\./hacking/cherrypick.py:#!/usr/bin/env python33$' \ 781 b'#!/usr/bin/env fish',
1160 -e ':#!/bin/sh$' \ 782 b'#!/usr/bin/env pwsh',
1161 -e ':#!/bin/bash( -[eux]|$)' \ 783- b'#!/usr/bin/env python',
1162 -e ':#!/usr/bin/make -f$' \ 784+ b'#!/usr/bin/env python3',
1163- -e ':#!/usr/bin/env python$' \ 785 b'#!/usr/bin/make -f',
1164+ -e ':#!/usr/bin/env python3$' \ 786 ])
1165 -e ':#!/usr/bin/env bash$' \ 787
1166 -e ':#!/usr/bin/env fish$' \ 788 integration_shebangs = set([
1167 789 b'#!/bin/sh',
1168diff --git a/test/sanity/validate-modules/test_validate_modules_regex.py b/test/sanity/validate-modules/test_validate_modules_regex.py 790 b'#!/usr/bin/env bash',
1169index 0e41ee7..8a86b07 100644 791- b'#!/usr/bin/env python',
1170--- a/test/sanity/validate-modules/test_validate_modules_regex.py 792+ b'#!/usr/bin/env python3',
1171+++ b/test/sanity/validate-modules/test_validate_modules_regex.py 793 ])
794
795 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
797index 930654fc1e7..bbf50369d7d 100755
798--- 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
1172@@ -1,4 +1,4 @@ 800@@ -1,4 +1,4 @@
1173-#!/usr/bin/env python 801-#!/usr/bin/env python
1174+#!/usr/bin/env python3 802+#!/usr/bin/env python3
803 # PYTHON_ARGCOMPLETE_OK
804 """Command line entry point for ansible-test."""
1175 805
1176 # This is a standalone test for the regex inside validate-modules
1177 # It is not suitable to add to the make tests target because the
1178diff --git a/test/sanity/validate-modules/validate-modules b/test/sanity/validate-modules/validate-modules
1179index d03bff1..201cd41 100755
1180--- a/test/sanity/validate-modules/validate-modules
1181+++ b/test/sanity/validate-modules/validate-modules
1182@@ -1,4 +1,4 @@
1183-#!/usr/bin/env python
1184+#!/usr/bin/env python3
1185 # -*- coding: utf-8 -*-
1186 #
1187 # Copyright (C) 2015 Matt Martz <matt@sivel.net>
1188diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py 806diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py
1189index edbf836..1f3bb5a 100644 807index fa6add8cd61..fcfd096e546 100644
1190--- a/test/units/executor/module_common/test_module_common.py 808--- a/test/units/executor/module_common/test_module_common.py
1191+++ b/test/units/executor/module_common/test_module_common.py 809+++ b/test/units/executor/module_common/test_module_common.py
1192@@ -114,5 +114,5 @@ class TestGetShebang(object): 810@@ -132,8 +132,8 @@ class TestGetShebang:
1193 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3') 811 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3')
1194 812
1195 def test_python_via_env(self): 813 def test_python_via_env(self, templar):
1196- assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}) == \ 814- assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}, templar) == \
1197- (u'#!/usr/bin/env python', u'/usr/bin/env python') 815- (u'#!/usr/bin/env python', u'/usr/bin/env python')
1198+ assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}) == \ 816+ assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}, templar) == \
1199+ (u'#!/usr/bin/env python3', u'/usr/bin/env python') 817+ (u'#!/usr/bin/env python3', u'/usr/bin/env python3')
1200diff --git a/test/units/modules/network/nxos/test_nxos_config.py b/test/units/modules/network/nxos/test_nxos_config.py
1201index 8e3a59c..46764a8 100644
1202--- a/test/units/modules/network/nxos/test_nxos_config.py
1203+++ b/test/units/modules/network/nxos/test_nxos_config.py
1204@@ -1,4 +1,4 @@
1205-#!/usr/bin/env python
1206+#!/usr/bin/env python3
1207 #
1208 # (c) 2016 Red Hat Inc.
1209 #
1210diff --git a/test/utils/shippable/ansible-core-ci b/test/utils/shippable/ansible-core-ci
1211index e91b426..44f8fb9 100755
1212--- a/test/utils/shippable/ansible-core-ci
1213+++ b/test/utils/shippable/ansible-core-ci
1214@@ -1,4 +1,4 @@
1215-#!/usr/bin/env python
1216+#!/usr/bin/env python3
1217 818
1218 # (c) 2016 Matt Clay <matt@mystile.com>
1219 #
1220diff --git a/test/utils/shippable/download.py b/test/utils/shippable/download.py
1221index cbda144..e86c8e6 100755
1222--- a/test/utils/shippable/download.py
1223+++ b/test/utils/shippable/download.py
1224@@ -1,4 +1,4 @@
1225-#!/usr/bin/env python
1226+#!/usr/bin/env python3
1227 # PYTHON_ARGCOMPLETE_OK
1228 819
1229 # (c) 2016 Red Hat, Inc. 820 class TestDetectionRegexes:
1230-- 821--
12312.7.4 8222.25.1
1232 823
diff --git a/recipes-devtools/python/python3-ansible_2.3.1.0.bb b/recipes-devtools/python/python3-ansible_2.14.5.bb
index ea0fdbe..ea0fdbe 100644
--- a/recipes-devtools/python/python3-ansible_2.3.1.0.bb
+++ b/recipes-devtools/python/python3-ansible_2.14.5.bb