meta-virtualization.lists.yoctoproject.org archive mirror
 help / color / mirror / Atom feed
From: nmali <narpat.mali@windriver.com>
To: <meta-virtualization@lists.yoctoproject.org>
Subject: [meta-virtualization][kirkstone][PATCH 1/2] python3-ansible: Upgrade to 2.14.11
Date: Mon, 6 Nov 2023 14:51:05 +0000	[thread overview]
Message-ID: <20231106145106.2671320-1-narpat.mali@windriver.com> (raw)

From: Narpat Mali <narpat.mali@windriver.com>

This upgrade incorporates the CVE-2023-5115 fix and other bug fixes.
Release Notes:
https://github.com/ansible/ansible/blob/v2.14.11/changelogs/CHANGELOG-v2.14.rst#v2-14-11

Rebase the patch python3-ensure-py-scripts-use-py3-for-shebang.patch to new version.
Reference upstream master commit:
https://git.yoctoproject.org/meta-cloud-services/commit/?id=7ecb54163f6252cfbecfd9f7f363536c88dbb58a

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
---
 recipes-devtools/python/python-ansible.inc    |    8 +-
 ...nsure-py-scripts-use-py3-for-shebang.patch | 1427 ++++++-----------
 ..._2.3.1.0.bb => python3-ansible_2.14.11.bb} |    0
 3 files changed, 482 insertions(+), 953 deletions(-)
 rename recipes-devtools/python/{python3-ansible_2.3.1.0.bb => python3-ansible_2.14.11.bb} (100%)

diff --git a/recipes-devtools/python/python-ansible.inc b/recipes-devtools/python/python-ansible.inc
index 0bb663ae..c31d10ed 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"
 
 SRCNAME = "ansible"
 
-SRC_URI = "http://releases.ansible.com/ansible/${SRCNAME}-${PV}.tar.gz"
+SRC_URI = "git://github.com/ansible/ansible.git;protocol=https;branch=stable-2.14"
 
-SRC_URI[md5sum] = "b1be8f05864a07c06b8a767dcd48ba1b"
-SRC_URI[sha256sum] = "cd4b8f53720fcd0c351156b840fdd15ecfbec22c951b5406ec503de49d40b9f5"
+SRCREV = "dcdb718f7a4c03f174030db425eee2a551ab2698"
 
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
+S = "${WORKDIR}/git"
 
 ANSIBLE_WHITELIST_MODULES ?= "commands files system network/ovs __pycache__ service"
 
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 e98eb46c..67142fc0 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,581 @@
-From 66b824da2fadfd5760040be244f89fa8320df55b Mon Sep 17 00:00:00 2001
+From 5f7c3d72eec080b2e1c34565babfd53528fc4770 Mon Sep 17 00:00:00 2001
 From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Thu, 13 Jul 2017 14:11:46 -0400
+Date: Thu, 11 May 2023 17:05:54 +0800
 Subject: [PATCH] python3: ensure py scripts use py3 for shebang
 
+Upstream-Status: Pending
+
 Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
+
+Rebase to 2.14.11
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
 ---
- bin/ansible                                                           | 2 +-
- bin/ansible-connection                                                | 2 +-
- bin/ansible-console                                                   | 2 +-
- bin/ansible-doc                                                       | 2 +-
- bin/ansible-galaxy                                                    | 2 +-
- bin/ansible-playbook                                                  | 2 +-
- bin/ansible-pull                                                      | 2 +-
- bin/ansible-vault                                                     | 2 +-
- contrib/inventory/abiquo.py                                           | 2 +-
- contrib/inventory/apache-libcloud.py                                  | 2 +-
- contrib/inventory/apstra_aos.py                                       | 2 +-
- contrib/inventory/azure_rm.py                                         | 2 +-
- contrib/inventory/brook.py                                            | 2 +-
- contrib/inventory/cloudforms.py                                       | 2 +-
- contrib/inventory/cloudstack.py                                       | 2 +-
- contrib/inventory/cobbler.py                                          | 2 +-
- contrib/inventory/collins.py                                          | 2 +-
- contrib/inventory/consul_io.py                                        | 2 +-
- contrib/inventory/digital_ocean.py                                    | 2 +-
- contrib/inventory/docker.py                                           | 2 +-
- contrib/inventory/ec2.py                                              | 2 +-
- contrib/inventory/fleet.py                                            | 2 +-
- contrib/inventory/foreman.py                                          | 2 +-
- contrib/inventory/freeipa.py                                          | 2 +-
- contrib/inventory/gce.py                                              | 2 +-
- contrib/inventory/jail.py                                             | 2 +-
- contrib/inventory/landscape.py                                        | 2 +-
- contrib/inventory/libvirt_lxc.py                                      | 2 +-
- contrib/inventory/linode.py                                           | 2 +-
- contrib/inventory/lxc_inventory.py                                    | 2 +-
- contrib/inventory/mdt_dynamic_inventory.py                            | 2 +-
- contrib/inventory/nagios_livestatus.py                                | 2 +-
- contrib/inventory/nagios_ndo.py                                       | 2 +-
- contrib/inventory/nova.py                                             | 2 +-
- contrib/inventory/nsot.py                                             | 2 +-
- contrib/inventory/openshift.py                                        | 2 +-
- contrib/inventory/openstack.py                                        | 2 +-
- contrib/inventory/openvz.py                                           | 2 +-
- contrib/inventory/ovirt.py                                            | 2 +-
- contrib/inventory/ovirt4.py                                           | 2 +-
- contrib/inventory/packet_net.py                                       | 2 +-
- contrib/inventory/proxmox.py                                          | 2 +-
- contrib/inventory/rackhd.py                                           | 2 +-
- contrib/inventory/rax.py                                              | 2 +-
- contrib/inventory/rhv.py                                              | 2 +-
- contrib/inventory/rudder.py                                           | 2 +-
- contrib/inventory/serf.py                                             | 2 +-
- contrib/inventory/softlayer.py                                        | 2 +-
- contrib/inventory/spacewalk.py                                        | 2 +-
- contrib/inventory/ssh_config.py                                       | 2 +-
- contrib/inventory/stacki.py                                           | 2 +-
- contrib/inventory/vagrant.py                                          | 2 +-
- contrib/inventory/vbox.py                                             | 2 +-
- contrib/inventory/vmware.py                                           | 2 +-
- contrib/inventory/vmware_inventory.py                                 | 2 +-
- contrib/inventory/windows_azure.py                                    | 2 +-
- contrib/inventory/zabbix.py                                           | 2 +-
- contrib/inventory/zone.py                                             | 2 +-
- docs/docsite/rst/dev_guide/developing_api.rst                         | 2 +-
- hacking/dump_playbook_attributes.py                                   | 2 +-
- hacking/module_formatter.py                                           | 2 +-
- lib/ansible/modules/web_infrastructure/django_manage.py               | 2 +-
- lib/ansible/modules/windows/win_file_version.py                       | 2 +-
- lib/ansible/modules/windows/win_firewall_rule.py                      | 2 +-
- test/compile/compile.py                                               | 2 +-
- test/integration/cleanup_rax.py                                       | 2 +-
- .../targets/embedded_module/library/test_integration_module           | 2 +-
- test/integration/targets/module_utils/module_utils/foo.py             | 2 +-
- test/integration/targets/module_utils/module_utils/sub/bam.py         | 2 +-
- test/integration/targets/module_utils/module_utils/sub/bam/bam.py     | 2 +-
- test/integration/targets/module_utils/module_utils/sub/bar/bam.py     | 2 +-
- test/integration/targets/module_utils/module_utils/sub/bar/bar.py     | 2 +-
- test/integration/targets/service/files/ansible_test_service           | 2 +-
- test/runner/ansible-test                                              | 2 +-
- test/runner/injector/ansible                                          | 2 +-
- test/runner/injector/ansible-console                                  | 2 +-
- test/runner/injector/ansible-doc                                      | 2 +-
- test/runner/injector/ansible-galaxy                                   | 2 +-
- test/runner/injector/ansible-playbook                                 | 2 +-
- test/runner/injector/ansible-pull                                     | 2 +-
- test/runner/injector/ansible-vault                                    | 2 +-
- test/runner/injector/cover                                            | 2 +-
- test/runner/injector/cover2                                           | 2 +-
- test/runner/injector/cover2.4                                         | 2 +-
- test/runner/injector/cover2.6                                         | 2 +-
- test/runner/injector/cover2.7                                         | 2 +-
- test/runner/injector/cover3                                           | 2 +-
- test/runner/injector/cover3.5                                         | 2 +-
- test/runner/injector/cover3.6                                         | 2 +-
- test/runner/injector/injector.py                                      | 2 +-
- test/runner/injector/pytest                                           | 2 +-
- test/runner/injector/runner                                           | 2 +-
- test/runner/injector/runner2                                          | 2 +-
- test/runner/injector/runner2.4                                        | 2 +-
- test/runner/injector/runner2.6                                        | 2 +-
- test/runner/injector/runner2.7                                        | 2 +-
- test/runner/injector/runner3                                          | 2 +-
- test/runner/injector/runner3.5                                        | 2 +-
- test/runner/injector/runner3.6                                        | 2 +-
- test/runner/retry.py                                                  | 2 +-
- test/runner/test.py                                                   | 2 +-
- test/sanity/code-smell/ansible-var-precedence-check.py                | 2 +-
- test/sanity/code-smell/integration-aliases.py                         | 2 +-
- test/sanity/code-smell/shebang.sh                                     | 4 ++--
- test/sanity/validate-modules/test_validate_modules_regex.py           | 2 +-
- test/sanity/validate-modules/validate-modules                         | 2 +-
- test/units/executor/module_common/test_module_common.py               | 4 ++--
- test/units/modules/network/nxos/test_nxos_config.py                   | 2 +-
- test/utils/shippable/ansible-core-ci                                  | 2 +-
- test/utils/shippable/download.py                                      | 2 +-
- 121 files changed, 123 insertions(+), 123 deletions(-)
+ .azure-pipelines/scripts/combine-coverage.py                  | 2 +-
+ .azure-pipelines/scripts/publish-codecov.py                   | 2 +-
+ .azure-pipelines/scripts/time-command.py                      | 2 +-
+ hacking/ansible-profile                                       | 2 +-
+ hacking/azp/download.py                                       | 2 +-
+ hacking/azp/get_recent_coverage_runs.py                       | 2 +-
+ hacking/azp/incidental.py                                     | 2 +-
+ hacking/azp/run.py                                            | 2 +-
+ hacking/backport/backport_of_line_adder.py                    | 2 +-
+ hacking/create_deprecation_bug_reports.py                     | 2 +-
+ hacking/fix_test_syntax.py                                    | 2 +-
+ hacking/get_library.py                                        | 2 +-
+ hacking/report.py                                             | 2 +-
+ hacking/return_skeleton_generator.py                          | 2 +-
+ hacking/test-module.py                                        | 2 +-
+ hacking/tests/gen_distribution_version_testcase.py            | 2 +-
+ hacking/update-sanity-requirements.py                         | 2 +-
+ lib/ansible/cli/adhoc.py                                      | 2 +-
+ lib/ansible/cli/config.py                                     | 2 +-
+ lib/ansible/cli/console.py                                    | 2 +-
+ lib/ansible/cli/doc.py                                        | 2 +-
+ lib/ansible/cli/galaxy.py                                     | 2 +-
+ lib/ansible/cli/inventory.py                                  | 2 +-
+ lib/ansible/cli/playbook.py                                   | 2 +-
+ lib/ansible/cli/pull.py                                       | 2 +-
+ lib/ansible/cli/scripts/ansible_connection_cli_stub.py        | 2 +-
+ lib/ansible/cli/vault.py                                      | 2 +-
+ packaging/cli-doc/build.py                                    | 2 +-
+ packaging/release.py                                          | 2 +-
+ .../targets/ansible-galaxy-collection/files/build_bad_tar.py  | 2 +-
+ .../targets/ansible-galaxy-role/files/create-role-archive.py  | 2 +-
+ test/integration/targets/ansible-test-container/runme.py      | 2 +-
+ .../targets/ansible-test-integration-targets/test.py          | 2 +-
+ .../ansible_collections/ns/col/run-with-pty.py                | 2 +-
+ .../ns/col/tests/integration/targets/no-tty/assert-no-tty.py  | 2 +-
+ .../ansible_collections/ns/col/scripts/env_python.py          | 2 +-
+ .../ns/col/tests/integration/targets/valid/env_python.py      | 2 +-
+ test/integration/targets/ansible-test/venv-pythons.py         | 2 +-
+ test/integration/targets/ansible-vault/faux-editor.py         | 2 +-
+ test/integration/targets/ansible-vault/password-script.py     | 2 +-
+ test/integration/targets/ansible-vault/test-vault-client.py   | 2 +-
+ .../targets/builtin_vars_prompt/test-vars_prompt.py           | 2 +-
+ test/integration/targets/cli/test-cli.py                      | 2 +-
+ test/integration/targets/cli/test_k_and_K.py                  | 2 +-
+ test/integration/targets/collection/update-ignore.py          | 2 +-
+ test/integration/targets/debugger/test_run_once.py            | 2 +-
+ test/integration/targets/fork_safe_stdio/run-with-pty.py      | 2 +-
+ test/integration/targets/gathering/uuid.fact                  | 2 +-
+ test/integration/targets/gathering_facts/uuid.fact            | 2 +-
+ test/integration/targets/group/files/gidget.py                | 2 +-
+ test/integration/targets/module_utils/module_utils/foo.py     | 2 +-
+ test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +-
+ .../targets/module_utils/module_utils/sub/bam/bam.py          | 2 +-
+ .../targets/module_utils/module_utils/sub/bar/bam.py          | 2 +-
+ .../targets/module_utils/module_utils/sub/bar/bar.py          | 2 +-
+ test/integration/targets/packaging_cli-doc/verify.py          | 2 +-
+ test/integration/targets/pause/test-pause.py                  | 2 +-
+ test/integration/targets/pip/files/setup.py                   | 2 +-
+ .../integration/targets/service/files/ansible_test_service.py | 2 +-
+ .../targets/service_facts/files/ansible_test_service.py       | 2 +-
+ .../targets/template/role_filter/filter_plugins/myplugin.py   | 2 +-
+ test/integration/targets/throttle/test_throttle.py            | 2 +-
+ .../targets/var_precedence/ansible-var-precedence-check.py    | 2 +-
+ test/lib/ansible_test/_internal/util_common.py                | 2 +-
+ .../_util/controller/sanity/code-smell/shebang.py             | 4 ++--
+ .../ansible_test/_util/target/cli/ansible_test_cli_stub.py    | 2 +-
+ test/units/executor/module_common/test_module_common.py       | 4 ++--
+ 67 files changed, 69 insertions(+), 69 deletions(-)
 
-diff --git a/bin/ansible b/bin/ansible
-index 24550b9..0587499 100755
---- a/bin/ansible
-+++ b/bin/ansible
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- 
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
- #
-diff --git a/bin/ansible-connection b/bin/ansible-connection
-index 93d787e..f0b9aa3 100755
---- a/bin/ansible-connection
-+++ b/bin/ansible-connection
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- 
- # (c) 2016, Ansible, Inc. <support@ansible.com>
- #
-diff --git a/bin/ansible-console b/bin/ansible-console
-index 24550b9..0587499 100755
---- a/bin/ansible-console
-+++ b/bin/ansible-console
+diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py
+index 506ade6460..15bee40234 100755
+--- a/.azure-pipelines/scripts/combine-coverage.py
++++ b/.azure-pipelines/scripts/combine-coverage.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
- #
-diff --git a/bin/ansible-doc b/bin/ansible-doc
-index 24550b9..0587499 100755
---- a/bin/ansible-doc
-+++ b/bin/ansible-doc
+ """
+ Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
+ Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
+diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py
+index f2bc4b84b3..01ad32f494 100755
+--- a/.azure-pipelines/scripts/publish-codecov.py
++++ b/.azure-pipelines/scripts/publish-codecov.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
- #
-diff --git a/bin/ansible-galaxy b/bin/ansible-galaxy
-index 24550b9..0587499 100755
---- a/bin/ansible-galaxy
-+++ b/bin/ansible-galaxy
+ """
+ Upload code coverage reports to codecov.io.
+ Multiple coverage files from multiple languages are accepted and aggregated after upload.
+diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py
+index 5e8eb8d4c8..5450c48900 100755
+--- a/.azure-pipelines/scripts/time-command.py
++++ b/.azure-pipelines/scripts/time-command.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
  
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
- #
-diff --git a/bin/ansible-playbook b/bin/ansible-playbook
-index 24550b9..0587499 100755
---- a/bin/ansible-playbook
-+++ b/bin/ansible-playbook
+ from __future__ import (absolute_import, division, print_function)
+diff --git a/hacking/ansible-profile b/hacking/ansible-profile
+index 6612402da6..d67526a161 100755
+--- a/hacking/ansible-profile
++++ b/hacking/ansible-profile
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
  
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
- #
-diff --git a/bin/ansible-pull b/bin/ansible-pull
-index 24550b9..0587499 100755
---- a/bin/ansible-pull
-+++ b/bin/ansible-pull
+diff --git a/hacking/azp/download.py b/hacking/azp/download.py
+index 117e9da5b7..89466cb17b 100755
+--- a/hacking/azp/download.py
++++ b/hacking/azp/download.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
  
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
- #
-diff --git a/bin/ansible-vault b/bin/ansible-vault
-index 24550b9..0587499 100755
---- a/bin/ansible-vault
-+++ b/bin/ansible-vault
+ # (c) 2016 Red Hat, Inc.
+diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py
+index 25e2fa8120..9b0d9b972e 100755
+--- a/hacking/azp/get_recent_coverage_runs.py
++++ b/hacking/azp/get_recent_coverage_runs.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
+ # (c) 2020 Red Hat, Inc.
  #
-diff --git a/contrib/inventory/abiquo.py b/contrib/inventory/abiquo.py
-index 405bbbb..d318949 100755
---- a/contrib/inventory/abiquo.py
-+++ b/contrib/inventory/abiquo.py
+diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py
+index 87d4d213c9..7660e2ed22 100755
+--- a/hacking/azp/incidental.py
++++ b/hacking/azp/incidental.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # -*- coding: utf-8 -*-
+ # PYTHON_ARGCOMPLETE_OK
  
- '''
-diff --git a/contrib/inventory/apache-libcloud.py b/contrib/inventory/apache-libcloud.py
-index 0120d2b..ce92843 100755
---- a/contrib/inventory/apache-libcloud.py
-+++ b/contrib/inventory/apache-libcloud.py
+ # (c) 2020 Red Hat, Inc.
+diff --git a/hacking/azp/run.py b/hacking/azp/run.py
+index 00a177944f..591e6bcc4f 100755
+--- a/hacking/azp/run.py
++++ b/hacking/azp/run.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
  
- # (c) 2013, Sebastien Goasguen <runseb@gmail.com>
- #
-diff --git a/contrib/inventory/apstra_aos.py b/contrib/inventory/apstra_aos.py
-index 65838c0..48d293e 100755
---- a/contrib/inventory/apstra_aos.py
-+++ b/contrib/inventory/apstra_aos.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # (c) 2017 Apstra Inc, <community@apstra.com>
- #
-diff --git a/contrib/inventory/azure_rm.py b/contrib/inventory/azure_rm.py
-index 73b8b95..87b31b0 100755
---- a/contrib/inventory/azure_rm.py
-+++ b/contrib/inventory/azure_rm.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # Copyright (c) 2016 Matt Davis, <mdavis@ansible.com>
- #                    Chris Houseknecht, <house@redhat.com>
-diff --git a/contrib/inventory/brook.py b/contrib/inventory/brook.py
-index a7d4741..e4de982 100755
---- a/contrib/inventory/brook.py
-+++ b/contrib/inventory/brook.py
+ # (c) 2016 Red Hat, Inc.
+diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py
+index ef77ddcf40..bbec15de6a 100755
+--- a/hacking/backport/backport_of_line_adder.py
++++ b/hacking/backport/backport_of_line_adder.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # Copyright 2016 Doalitic.
+ # (c) 2020, Red Hat, Inc. <relrod@redhat.com>
  #
  # This file is part of Ansible
-diff --git a/contrib/inventory/cloudforms.py b/contrib/inventory/cloudforms.py
-index 69c149b..202a6c9 100755
---- a/contrib/inventory/cloudforms.py
-+++ b/contrib/inventory/cloudforms.py
+diff --git a/hacking/create_deprecation_bug_reports.py b/hacking/create_deprecation_bug_reports.py
+index e14df4be38..e6b9b9025c 100755
+--- a/hacking/create_deprecation_bug_reports.py
++++ b/hacking/create_deprecation_bug_reports.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # vim: set fileencoding=utf-8 :
- #
- # Copyright (C) 2016 Guido Günther <agx@sigxcpu.org>
-diff --git a/contrib/inventory/cloudstack.py b/contrib/inventory/cloudstack.py
-index a9b6b9f..d7f05ff 100755
---- a/contrib/inventory/cloudstack.py
-+++ b/contrib/inventory/cloudstack.py
+ # PYTHON_ARGCOMPLETE_OK
+ """Create GitHub issues for deprecated features."""
+
+diff --git a/hacking/fix_test_syntax.py b/hacking/fix_test_syntax.py
+index 7178033406..78d87ef71c 100755
+--- a/hacking/fix_test_syntax.py
++++ b/hacking/fix_test_syntax.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  # -*- coding: utf-8 -*-
+ # (c) 2017, Matt Martz <matt@sivel.net>
  #
- # (c) 2015, René Moser <mail@renemoser.net>
-diff --git a/contrib/inventory/cobbler.py b/contrib/inventory/cobbler.py
-index 89f9bf7..f2a9ff7 100755
---- a/contrib/inventory/cobbler.py
-+++ b/contrib/inventory/cobbler.py
+diff --git a/hacking/get_library.py b/hacking/get_library.py
+index 23bf4a39bb..9346784398 100755
+--- a/hacking/get_library.py
++++ b/hacking/get_library.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- """
- Cobbler external inventory script
-diff --git a/contrib/inventory/collins.py b/contrib/inventory/collins.py
-index b7193e2..f0bc2a1 100755
---- a/contrib/inventory/collins.py
-+++ b/contrib/inventory/collins.py
+ # (c) 2014, Will Thames <will@thames.id.au>
+ #
+diff --git a/hacking/report.py b/hacking/report.py
+index 58b3a6b915..78eed516dc 100755
+--- a/hacking/report.py
++++ b/hacking/report.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
+ """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting."""
  
- """
- Collins external inventory script
-diff --git a/contrib/inventory/consul_io.py b/contrib/inventory/consul_io.py
-index 8106097..2cdc523 100755
---- a/contrib/inventory/consul_io.py
-+++ b/contrib/inventory/consul_io.py
+diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py
+index 7002b7899d..cff03c38e6 100755
+--- a/hacking/return_skeleton_generator.py
++++ b/hacking/return_skeleton_generator.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
+ # (c) 2017, Will Thames <will@thames.id.au>
  #
- # (c) 2015, Steve Gargan <steve.gargan@gmail.com>
-diff --git a/contrib/inventory/digital_ocean.py b/contrib/inventory/digital_ocean.py
-index 07c124b..0b0e587 100755
---- a/contrib/inventory/digital_ocean.py
-+++ b/contrib/inventory/digital_ocean.py
+diff --git a/hacking/test-module.py b/hacking/test-module.py
+index 54343e07e8..38d4b8c60b 100755
+--- a/hacking/test-module.py
++++ b/hacking/test-module.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- '''
- DigitalOcean external inventory script
-diff --git a/contrib/inventory/docker.py b/contrib/inventory/docker.py
-index da051dd..9b88d0c 100755
---- a/contrib/inventory/docker.py
-+++ b/contrib/inventory/docker.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
+ # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
  #
- # (c) 2016 Paul Durivage <paul.durivage@gmail.com>
- #          Chris Houseknecht <house@redhat.com>
-diff --git a/contrib/inventory/ec2.py b/contrib/inventory/ec2.py
-index 03b9820..9c9b2e4 100755
---- a/contrib/inventory/ec2.py
-+++ b/contrib/inventory/ec2.py
+diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py
+index 2fc5a2f932..18e67d7d12 100755
+--- a/hacking/tests/gen_distribution_version_testcase.py
++++ b/hacking/tests/gen_distribution_version_testcase.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- '''
- EC2 external inventory script
-diff --git a/contrib/inventory/fleet.py b/contrib/inventory/fleet.py
-index 4db4ea1..8790f2b 100755
---- a/contrib/inventory/fleet.py
-+++ b/contrib/inventory/fleet.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
  """
- fleetctl base external inventory script. Automatically finds the IPs of the booted coreos instances and
- returns it under the host group 'coreos'
-diff --git a/contrib/inventory/foreman.py b/contrib/inventory/foreman.py
-index 9a87397..2483cce 100755
---- a/contrib/inventory/foreman.py
-+++ b/contrib/inventory/foreman.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # vim: set fileencoding=utf-8 :
- #
- # Copyright (C) 2016 Guido Günther <agx@sigxcpu.org>,
-diff --git a/contrib/inventory/freeipa.py b/contrib/inventory/freeipa.py
-index a72b774..1f092b2 100755
---- a/contrib/inventory/freeipa.py
-+++ b/contrib/inventory/freeipa.py
+ This script generated test_cases for test_distribution_version.py.
+diff --git a/hacking/update-sanity-requirements.py b/hacking/update-sanity-requirements.py
+index 997d6dbf87..16a47f0f3c 100755
+--- a/hacking/update-sanity-requirements.py
++++ b/hacking/update-sanity-requirements.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
+ """Generate frozen sanity test requirements from source requirements files."""
  
- import argparse
- from ipalib import api
-diff --git a/contrib/inventory/gce.py b/contrib/inventory/gce.py
-index 5c58146..7616843 100755
---- a/contrib/inventory/gce.py
-+++ b/contrib/inventory/gce.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright 2013 Google Inc.
- #
- # This file is part of Ansible
-diff --git a/contrib/inventory/jail.py b/contrib/inventory/jail.py
-index 98b6acf..b12289c 100755
---- a/contrib/inventory/jail.py
-+++ b/contrib/inventory/jail.py
+diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
+index e90b44ce10..120948c749 100755
+--- a/lib/ansible/cli/adhoc.py
++++ b/lib/ansible/cli/adhoc.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2013, Michael Scherer <misc@zarb.org>
- #
-diff --git a/contrib/inventory/landscape.py b/contrib/inventory/landscape.py
-index 4b53171..7f52639 100755
---- a/contrib/inventory/landscape.py
-+++ b/contrib/inventory/landscape.py
+ # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
+ # Copyright: (c) 2018, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py
+index c8d99ea09c..987700e11d 100755
+--- a/lib/ansible/cli/config.py
++++ b/lib/ansible/cli/config.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2015, Marc Abramowitz <marca@surveymonkey.com>
- #
-diff --git a/contrib/inventory/libvirt_lxc.py b/contrib/inventory/libvirt_lxc.py
-index 35ccf40..ba3496d 100755
---- a/contrib/inventory/libvirt_lxc.py
-+++ b/contrib/inventory/libvirt_lxc.py
+ # Copyright: (c) 2017, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+ # PYTHON_ARGCOMPLETE_OK
+diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
+index 3125cc47a7..4a2f38bb48 100755
+--- a/lib/ansible/cli/console.py
++++ b/lib/ansible/cli/console.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2013, Michael Scherer <misc@zarb.org>
- #
-diff --git a/contrib/inventory/linode.py b/contrib/inventory/linode.py
-index 6fd922f..cab7a70 100755
---- a/contrib/inventory/linode.py
-+++ b/contrib/inventory/linode.py
+ # Copyright: (c) 2014, Nandor Sivok <dominis@haxor.hu>
+ # Copyright: (c) 2016, Redhat Inc
+ # Copyright: (c) 2018, Ansible Project
+diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py
+index 9f560bcbc6..a0d34d92f6 100755
+--- a/lib/ansible/cli/doc.py
++++ b/lib/ansible/cli/doc.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- '''
- Linode external inventory script
-diff --git a/contrib/inventory/lxc_inventory.py b/contrib/inventory/lxc_inventory.py
-index d82bb61..f7ac67c 100755
---- a/contrib/inventory/lxc_inventory.py
-+++ b/contrib/inventory/lxc_inventory.py
+ # Copyright: (c) 2014, James Tanner <tanner.jc@gmail.com>
+ # Copyright: (c) 2018, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py
+index 536964e28f..8053119bb6 100755
+--- a/lib/ansible/cli/galaxy.py
++++ b/lib/ansible/cli/galaxy.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- #
- # (c) 2015-16 Florian Haas, hastexo Professional Services GmbH
- # <florian@hastexo.com>
-diff --git a/contrib/inventory/mdt_dynamic_inventory.py b/contrib/inventory/mdt_dynamic_inventory.py
-index 89ecc3e..5540a41 100755
---- a/contrib/inventory/mdt_dynamic_inventory.py
-+++ b/contrib/inventory/mdt_dynamic_inventory.py
+ # Copyright: (c) 2013, James Cammarata <jcammarata@ansible.com>
+ # Copyright: (c) 2018-2021, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py
+index 56c370ccf8..085ccda0fd 100755
+--- a/lib/ansible/cli/inventory.py
++++ b/lib/ansible/cli/inventory.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2016, Julian Barnett <jbarnett@tableau.com>
- #
-diff --git a/contrib/inventory/nagios_livestatus.py b/contrib/inventory/nagios_livestatus.py
-index e1c145e..3e250cb 100755
---- a/contrib/inventory/nagios_livestatus.py
-+++ b/contrib/inventory/nagios_livestatus.py
+ # Copyright: (c) 2017, Brian Coca <bcoca@ansible.com>
+ # Copyright: (c) 2018, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py
+index 9c091a675a..27ff7d442e 100755
+--- a/lib/ansible/cli/playbook.py
++++ b/lib/ansible/cli/playbook.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2015, Yannig Perre <yannig.perre@gmail.com>
- #
-diff --git a/contrib/inventory/nagios_ndo.py b/contrib/inventory/nagios_ndo.py
-index 49ec563..cc10a51 100755
---- a/contrib/inventory/nagios_ndo.py
-+++ b/contrib/inventory/nagios_ndo.py
+ # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
+ # Copyright: (c) 2018, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py
+index dc8f055b44..0e5b030eec 100755
+--- a/lib/ansible/cli/pull.py
++++ b/lib/ansible/cli/pull.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2014, Jonathan Lestrelin <jonathan.lestrelin@gmail.com>
- #
-diff --git a/contrib/inventory/nova.py b/contrib/inventory/nova.py
-index f8c1617..d0ad7f0 100755
---- a/contrib/inventory/nova.py
-+++ b/contrib/inventory/nova.py
+ # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
+ # Copyright: (c) 2018, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
+index 9109137e7f..f01b1ec58d 100755
+--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
++++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # (c) 2012, Marco Vito Moscaritolo <marco@agavee.com>
- #
-diff --git a/contrib/inventory/nsot.py b/contrib/inventory/nsot.py
-index 62be85a..0a8dc9b 100755
---- a/contrib/inventory/nsot.py
-+++ b/contrib/inventory/nsot.py
+ # Copyright: (c) 2017, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+ from __future__ import (absolute_import, division, print_function)
+diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
+index 3e60329de6..6949940747 100755
+--- a/lib/ansible/cli/vault.py
++++ b/lib/ansible/cli/vault.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- '''
- nsot
-diff --git a/contrib/inventory/openshift.py b/contrib/inventory/openshift.py
-index 479b808..dc398b5 100755
---- a/contrib/inventory/openshift.py
-+++ b/contrib/inventory/openshift.py
+ # (c) 2014, James Tanner <tanner.jc@gmail.com>
+ # Copyright: (c) 2018, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --git a/packaging/cli-doc/build.py b/packaging/cli-doc/build.py
+index 878ba8eabf..64a614f3f7 100755
+--- a/packaging/cli-doc/build.py
++++ b/packaging/cli-doc/build.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
+ """Build documentation for ansible-core CLI programs."""
  
- # (c) 2013, Michael Scherer <misc@zarb.org>
- #
-diff --git a/contrib/inventory/openstack.py b/contrib/inventory/openstack.py
-index 6679a2c..eb38742 100755
---- a/contrib/inventory/openstack.py
-+++ b/contrib/inventory/openstack.py
+diff --git a/packaging/release.py b/packaging/release.py
+index 97c58a7424..fa5a27f794 100755
+--- a/packaging/release.py
++++ b/packaging/release.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
+ """Manage upstream ansible-core releases."""
  
- # Copyright (c) 2012, Marco Vito Moscaritolo <marco@agavee.com>
- # Copyright (c) 2013, Jesse Keating <jesse.keating@rackspace.com>
-diff --git a/contrib/inventory/openvz.py b/contrib/inventory/openvz.py
-index 1ef8ab1..d4dfcde 100755
---- a/contrib/inventory/openvz.py
-+++ b/contrib/inventory/openvz.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- #
- # openvz.py
-diff --git a/contrib/inventory/ovirt.py b/contrib/inventory/ovirt.py
-index 7f505d9..ada01fa 100755
---- a/contrib/inventory/ovirt.py
-+++ b/contrib/inventory/ovirt.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright 2015 IIX Inc.
- #
- # This file is part of Ansible
-diff --git a/contrib/inventory/ovirt4.py b/contrib/inventory/ovirt4.py
-index 5ee5986..9d9e940 100755
---- a/contrib/inventory/ovirt4.py
-+++ b/contrib/inventory/ovirt4.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- #
- # Copyright (c) 2016 Red Hat, Inc.
-diff --git a/contrib/inventory/packet_net.py b/contrib/inventory/packet_net.py
-index c40c821..d23eba1 100755
---- a/contrib/inventory/packet_net.py
-+++ b/contrib/inventory/packet_net.py
+diff --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
+index 6182e865db..5829df52b5 100644
+--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
++++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- '''
- Packet.net external inventory script
-diff --git a/contrib/inventory/proxmox.py b/contrib/inventory/proxmox.py
-index c0ffb0b..ef7a394 100755
---- a/contrib/inventory/proxmox.py
-+++ b/contrib/inventory/proxmox.py
+ # Copyright: (c) 2020, Ansible Project
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+diff --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
+index cfd908c17b..3319084473 100755
+--- a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
++++ b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """Create a role archive which overwrites an arbitrary file."""
  
- # Copyright (C) 2014  Mathieu GAUTHIER-LAFAYE <gauthierl@lapth.cnrs.fr>
- #
-diff --git a/contrib/inventory/rackhd.py b/contrib/inventory/rackhd.py
-index a89cb04..05b3ada 100755
---- a/contrib/inventory/rackhd.py
-+++ b/contrib/inventory/rackhd.py
+ import argparse
+diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py
+index 687128056f..bd7f367165 100755
+--- a/test/integration/targets/ansible-test-container/runme.py
++++ b/test/integration/targets/ansible-test-container/runme.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """Test suite used to verify ansible-test is able to run its containers on various container hosts."""
  
- import json
- import requests
-diff --git a/contrib/inventory/rax.py b/contrib/inventory/rax.py
-index d20a8ab..6c34753 100755
---- a/contrib/inventory/rax.py
-+++ b/contrib/inventory/rax.py
+ from __future__ import annotations
+diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py
+index 8effb647fc..4e34c4bbc1 100755
+--- a/test/integration/targets/ansible-test-integration-targets/test.py
++++ b/test/integration/targets/ansible-test-integration-targets/test.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- # (c) 2013, Jesse Keating <jesse.keating@rackspace.com,
- #           Paul Durivage <paul.durivage@rackspace.com>,
-diff --git a/contrib/inventory/rhv.py b/contrib/inventory/rhv.py
-index 5ee5986..9d9e940 100755
---- a/contrib/inventory/rhv.py
-+++ b/contrib/inventory/rhv.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- #
- # Copyright (c) 2016 Red Hat, Inc.
-diff --git a/contrib/inventory/rudder.py b/contrib/inventory/rudder.py
-index 5cf16c9..a669c37 100755
---- a/contrib/inventory/rudder.py
-+++ b/contrib/inventory/rudder.py
+ import subprocess
+ import unittest
+diff --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
+index 463915284b..fc2ed398d9 100755
+--- 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
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """Run a command using a PTY."""
  
- # Copyright (c) 2015, Normation SAS
- #
-diff --git a/contrib/inventory/serf.py b/contrib/inventory/serf.py
-index e1340da..6242eda 100755
---- a/contrib/inventory/serf.py
-+++ b/contrib/inventory/serf.py
+ import sys
+diff --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
+index a2b094e2fc..355dba697a 100755
+--- 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
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """Assert no TTY is available."""
  
- # (c) 2015, Marc Abramowitz <marca@surveymonkey.com>
- #
-diff --git a/contrib/inventory/softlayer.py b/contrib/inventory/softlayer.py
-index 3933eb4..519092f 100755
---- a/contrib/inventory/softlayer.py
-+++ b/contrib/inventory/softlayer.py
-@@ -1,4 +1,4 @@
+ import sys
+diff --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
+index 4265cc3e6c..e5a0d9b483 100755
+--- 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
+@@ -1 +1 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """
- SoftLayer external inventory script.
- 
-diff --git a/contrib/inventory/spacewalk.py b/contrib/inventory/spacewalk.py
-index 2735a81..2da2720 100755
---- a/contrib/inventory/spacewalk.py
-+++ b/contrib/inventory/spacewalk.py
-@@ -1,4 +1,4 @@
+diff --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
+index 4265cc3e6c..e5a0d9b483 100755
+--- 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
+@@ -1 +1 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- """
- Spacewalk external inventory script
-diff --git a/contrib/inventory/ssh_config.py b/contrib/inventory/ssh_config.py
-index ae41e58..05373ec 100755
---- a/contrib/inventory/ssh_config.py
-+++ b/contrib/inventory/ssh_config.py
+diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py
+index b380f147fc..e97f2fcb33 100755
+--- a/test/integration/targets/ansible-test/venv-pythons.py
++++ b/test/integration/targets/ansible-test/venv-pythons.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """Return target Python options for use with ansible-test."""
  
- # (c) 2014, Tomas Karasek <tomas.karasek@digile.fi>
- #
-diff --git a/contrib/inventory/stacki.py b/contrib/inventory/stacki.py
-index fd4cda5..d6acda3 100755
---- a/contrib/inventory/stacki.py
-+++ b/contrib/inventory/stacki.py
+ import os
+diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py
+index b67c747563..a30c306a83 100755
+--- a/test/integration/targets/ansible-vault/faux-editor.py
++++ b/test/integration/targets/ansible-vault/faux-editor.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # Copyright (c) 2016, Hugh Ma <hugh.ma@flextronics.com>
  #
-diff --git a/contrib/inventory/vagrant.py b/contrib/inventory/vagrant.py
-index 37a6741..86fc67d 100755
---- a/contrib/inventory/vagrant.py
-+++ b/contrib/inventory/vagrant.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """
- Vagrant external inventory script. Automatically finds the IP of the booted vagrant vm(s), and
- returns it under the host group 'vagrant'
-diff --git a/contrib/inventory/vbox.py b/contrib/inventory/vbox.py
-index 8905fab..141b01a 100755
---- a/contrib/inventory/vbox.py
-+++ b/contrib/inventory/vbox.py
+ # Ansible is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py
+index 1b7f02beb2..0dcada23c7 100755
+--- a/test/integration/targets/ansible-vault/password-script.py
++++ b/test/integration/targets/ansible-vault/password-script.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- 
- # This file is part of Ansible,
  #
-diff --git a/contrib/inventory/vmware.py b/contrib/inventory/vmware.py
-index 377c7cb..cee232a 100755
---- a/contrib/inventory/vmware.py
-+++ b/contrib/inventory/vmware.py
+ # Ansible is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py
+index ee46188742..48244fca09 100755
+--- a/test/integration/targets/ansible-vault/test-vault-client.py
++++ b/test/integration/targets/ansible-vault/test-vault-client.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  # -*- coding: utf-8 -*-
- '''
- VMware Inventory Script
-diff --git a/contrib/inventory/vmware_inventory.py b/contrib/inventory/vmware_inventory.py
-index 58ee473..4300fe5 100755
---- a/contrib/inventory/vmware_inventory.py
-+++ b/contrib/inventory/vmware_inventory.py
+
+ from __future__ import (absolute_import, division, print_function)
+diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
+index 93958fc2ad..33509c826a 100644
+--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
++++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- # Requirements
- #   - pyvmomi >= 6.0.0.2016.4
-diff --git a/contrib/inventory/windows_azure.py b/contrib/inventory/windows_azure.py
-index cceed36..f8777be 100755
---- a/contrib/inventory/windows_azure.py
-+++ b/contrib/inventory/windows_azure.py
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
+diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py
+index 9893d6652e..7a07dcc108 100644
+--- a/test/integration/targets/cli/test-cli.py
++++ b/test/integration/targets/cli/test-cli.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # Copyright (c) 2019 Matt Martz <matt@sivel.net>
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
  
- '''
- Windows Azure external inventory script
-diff --git a/contrib/inventory/zabbix.py b/contrib/inventory/zabbix.py
-index f6b37b9..241823b 100755
---- a/contrib/inventory/zabbix.py
-+++ b/contrib/inventory/zabbix.py
+diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py
+index f7077fba0a..dcc9614129 100644
+--- a/test/integration/targets/cli/test_k_and_K.py
++++ b/test/integration/targets/cli/test_k_and_K.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
  
- # (c) 2013, Greg Buehler
- #
-diff --git a/contrib/inventory/zone.py b/contrib/inventory/zone.py
-index 893953e..b049fd7 100755
---- a/contrib/inventory/zone.py
-+++ b/contrib/inventory/zone.py
+ # Make coding more python3-ish
+diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py
+index 92a702cf13..9ea69089d5 100755
+--- a/test/integration/targets/collection/update-ignore.py
++++ b/test/integration/targets/collection/update-ignore.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ """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."""
  
- # (c) 2015, Dagobert Michelsen <dam@baltic-online.de>
- #
-diff --git a/docs/docsite/rst/dev_guide/developing_api.rst b/docs/docsite/rst/dev_guide/developing_api.rst
-index bb2cbc4..55d4212 100644
---- a/docs/docsite/rst/dev_guide/developing_api.rst
-+++ b/docs/docsite/rst/dev_guide/developing_api.rst
-@@ -37,7 +37,7 @@ Python API 2.0
- In 2.0 things get a bit more complicated to start, but you end up with much more discrete and readable classes::
- 
- 
--    #!/usr/bin/env python
-+    #!/usr/bin/env python3
- 
-     import json
-     from collections import namedtuple
-diff --git a/hacking/dump_playbook_attributes.py b/hacking/dump_playbook_attributes.py
-index 204fe3f..9d86b66 100755
---- a/hacking/dump_playbook_attributes.py
-+++ b/hacking/dump_playbook_attributes.py
+ import os
+diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py
+index 237f9c2d90..4fe74903d8 100755
+--- a/test/integration/targets/debugger/test_run_once.py
++++ b/test/integration/targets/debugger/test_run_once.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- import optparse
- from jinja2 import Environment, FileSystemLoader
-diff --git a/hacking/module_formatter.py b/hacking/module_formatter.py
-index 4f132aa..1bee33a 100755
---- a/hacking/module_formatter.py
-+++ b/hacking/module_formatter.py
+ import io
+ import os
+diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py
+index 463915284b..fc2ed398d9 100755
+--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py
++++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # (c) 2012, Jan-Piet Mens <jpmens () gmail.com>
- # (c) 2012-2014, Michael DeHaan <michael@ansible.com> and others
- #
-diff --git a/lib/ansible/modules/web_infrastructure/django_manage.py b/lib/ansible/modules/web_infrastructure/django_manage.py
-index ac24829..90aee1b 100644
---- a/lib/ansible/modules/web_infrastructure/django_manage.py
-+++ b/lib/ansible/modules/web_infrastructure/django_manage.py
-@@ -97,7 +97,7 @@ notes:
-    - This module assumes English error messages for the 'createcachetable' command to detect table existence, unfortunately.
-    - 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.
-    - To be able to use the collectstatic command, you must have enabled staticfiles in your settings.
--   - 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.
-+   - 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.
- requirements: [ "virtualenv", "django" ]
- author: "Scott Anderson (@tastychutney)"
- '''
-diff --git a/lib/ansible/modules/windows/win_file_version.py b/lib/ansible/modules/windows/win_file_version.py
-index 399c978..1225a06 100644
---- a/lib/ansible/modules/windows/win_file_version.py
-+++ b/lib/ansible/modules/windows/win_file_version.py
+ """Run a command using a PTY."""
+
+ import sys
+diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact
+index 79e3f62677..2a294b33a8 100644
+--- a/test/integration/targets/gathering/uuid.fact
++++ b/test/integration/targets/gathering/uuid.fact
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  # -*- coding: utf-8 -*-
  
- # Get DLL or EXE build version
-diff --git a/lib/ansible/modules/windows/win_firewall_rule.py b/lib/ansible/modules/windows/win_firewall_rule.py
-index e4ab1e4..456523d 100644
---- a/lib/ansible/modules/windows/win_firewall_rule.py
-+++ b/lib/ansible/modules/windows/win_firewall_rule.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
  
- # (c) 2014, Timothy Vandenbrande <timothy.vandenbrande@gmail.com>
- #
-diff --git a/test/compile/compile.py b/test/compile/compile.py
-index 01144c6..6e332a9 100755
---- a/test/compile/compile.py
-+++ b/test/compile/compile.py
+diff --git a/test/integration/targets/gathering_facts/uuid.fact b/test/integration/targets/gathering_facts/uuid.fact
+index 79e3f62677..2a294b33a8 100644
+--- a/test/integration/targets/gathering_facts/uuid.fact
++++ b/test/integration/targets/gathering_facts/uuid.fact
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """Python syntax checker with lint friendly output."""
+ # -*- coding: utf-8 -*-
  
- import os
-diff --git a/test/integration/cleanup_rax.py b/test/integration/cleanup_rax.py
-index 5c757f5..bc3448b 100755
---- a/test/integration/cleanup_rax.py
-+++ b/test/integration/cleanup_rax.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
  
- import os
- import re
-diff --git a/test/integration/targets/embedded_module/library/test_integration_module b/test/integration/targets/embedded_module/library/test_integration_module
-index f564619..0d46d15 100644
---- a/test/integration/targets/embedded_module/library/test_integration_module
-+++ b/test/integration/targets/embedded_module/library/test_integration_module
-@@ -1,3 +1,3 @@
+diff --git a/test/integration/targets/group/files/gidget.py b/test/integration/targets/group/files/gidget.py
+index 4b771516fd..085dfcdee1 100644
+--- a/test/integration/targets/group/files/gidget.py
++++ b/test/integration/targets/group/files/gidget.py
+@@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
- print('{"changed":false, "msg":"this is the embedded module"}')
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
 diff --git a/test/integration/targets/module_utils/module_utils/foo.py b/test/integration/targets/module_utils/module_utils/foo.py
-index 20698f1..0cd5c85 100644
+index 20698f1f46..0cd5c85142 100644
 --- a/test/integration/targets/module_utils/module_utils/foo.py
 +++ b/test/integration/targets/module_utils/module_utils/foo.py
 @@ -1,3 +1,3 @@
@@ -802,7 +584,7 @@ index 20698f1..0cd5c85 100644
  
  foo = "FOO FROM foo.py"
 diff --git a/test/integration/targets/module_utils/module_utils/sub/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam.py
-index 566f8b7..0814485 100644
+index 566f8b7c47..0814485d5f 100644
 --- a/test/integration/targets/module_utils/module_utils/sub/bam.py
 +++ b/test/integration/targets/module_utils/module_utils/sub/bam.py
 @@ -1,3 +1,3 @@
@@ -811,7 +593,7 @@ index 566f8b7..0814485 100644
  
  bam = "BAM FROM sub/bam.py"
 diff --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
-index b7ed707..97f9eed 100644
+index b7ed707211..97f9eedcdb 100644
 --- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
 +++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
 @@ -1,3 +1,3 @@
@@ -820,7 +602,7 @@ index b7ed707..97f9eed 100644
  
  bam = "BAM FROM sub/bam/bam.py"
 diff --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
-index 02fafd4..3a93360 100644
+index 02fafd40f3..3a93360c69 100644
 --- a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
 +++ b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
 @@ -1,3 +1,3 @@
@@ -829,7 +611,7 @@ index 02fafd4..3a93360 100644
  
  bam = "BAM FROM sub/bar/bam.py"
 diff --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
-index 8566901..40f0c94 100644
+index 8566901f04..40f0c9446c 100644
 --- a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
 +++ b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
 @@ -1,3 +1,3 @@
@@ -837,396 +619,145 @@ index 8566901..40f0c94 100644
 +#!/usr/bin/env python3
  
  bar = "BAR FROM sub/bar/bar.py"
-diff --git a/test/integration/targets/service/files/ansible_test_service b/test/integration/targets/service/files/ansible_test_service
-index 682edeb..e858909 100755
---- a/test/integration/targets/service/files/ansible_test_service
-+++ b/test/integration/targets/service/files/ansible_test_service
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- 
- # this is mostly based off of the code found here:
- # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
-diff --git a/test/runner/ansible-test b/test/runner/ansible-test
-index 801f07f..804aa8f 100755
---- a/test/runner/ansible-test
-+++ b/test/runner/ansible-test
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # PYTHON_ARGCOMPLETE_OK
- """Test runner for all Ansible tests."""
- 
-diff --git a/test/runner/injector/ansible b/test/runner/injector/ansible
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible
-+++ b/test/runner/injector/ansible
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/ansible-console b/test/runner/injector/ansible-console
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible-console
-+++ b/test/runner/injector/ansible-console
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/ansible-doc b/test/runner/injector/ansible-doc
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible-doc
-+++ b/test/runner/injector/ansible-doc
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/ansible-galaxy b/test/runner/injector/ansible-galaxy
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible-galaxy
-+++ b/test/runner/injector/ansible-galaxy
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/ansible-playbook b/test/runner/injector/ansible-playbook
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible-playbook
-+++ b/test/runner/injector/ansible-playbook
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/ansible-pull b/test/runner/injector/ansible-pull
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible-pull
-+++ b/test/runner/injector/ansible-pull
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/ansible-vault b/test/runner/injector/ansible-vault
-index 57241c9..c463946 100755
---- a/test/runner/injector/ansible-vault
-+++ b/test/runner/injector/ansible-vault
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover b/test/runner/injector/cover
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover
-+++ b/test/runner/injector/cover
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover2 b/test/runner/injector/cover2
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover2
-+++ b/test/runner/injector/cover2
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover2.4 b/test/runner/injector/cover2.4
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover2.4
-+++ b/test/runner/injector/cover2.4
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover2.6 b/test/runner/injector/cover2.6
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover2.6
-+++ b/test/runner/injector/cover2.6
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover2.7 b/test/runner/injector/cover2.7
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover2.7
-+++ b/test/runner/injector/cover2.7
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover3 b/test/runner/injector/cover3
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover3
-+++ b/test/runner/injector/cover3
+diff --git a/test/integration/targets/packaging_cli-doc/verify.py b/test/integration/targets/packaging_cli-doc/verify.py
+index 7793fa8c24..71f82186dd 100755
+--- a/test/integration/targets/packaging_cli-doc/verify.py
++++ b/test/integration/targets/packaging_cli-doc/verify.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """Code coverage wrapper."""
  
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover3.5 b/test/runner/injector/cover3.5
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover3.5
-+++ b/test/runner/injector/cover3.5
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/cover3.6 b/test/runner/injector/cover3.6
-index 57241c9..c463946 100755
---- a/test/runner/injector/cover3.6
-+++ b/test/runner/injector/cover3.6
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/injector.py b/test/runner/injector/injector.py
-index 57241c9..c463946 100755
---- a/test/runner/injector/injector.py
-+++ b/test/runner/injector/injector.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/pytest b/test/runner/injector/pytest
-index 57241c9..c463946 100755
---- a/test/runner/injector/pytest
-+++ b/test/runner/injector/pytest
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner b/test/runner/injector/runner
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner
-+++ b/test/runner/injector/runner
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner2 b/test/runner/injector/runner2
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner2
-+++ b/test/runner/injector/runner2
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner2.4 b/test/runner/injector/runner2.4
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner2.4
-+++ b/test/runner/injector/runner2.4
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner2.6 b/test/runner/injector/runner2.6
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner2.6
-+++ b/test/runner/injector/runner2.6
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- """Code coverage wrapper."""
- 
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner2.7 b/test/runner/injector/runner2.7
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner2.7
-+++ b/test/runner/injector/runner2.7
+ import os
+ import pathlib
+diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py
+index 3703470d06..dd14b2810d 100755
+--- a/test/integration/targets/pause/test-pause.py
++++ b/test/integration/targets/pause/test-pause.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """Code coverage wrapper."""
  
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner3 b/test/runner/injector/runner3
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner3
-+++ b/test/runner/injector/runner3
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
+diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py
+index aaf21875ca..2835719e4f 100755
+--- a/test/integration/targets/pip/files/setup.py
++++ b/test/integration/targets/pip/files/setup.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """Code coverage wrapper."""
  
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner3.5 b/test/runner/injector/runner3.5
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner3.5
-+++ b/test/runner/injector/runner3.5
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
+diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py
+index 522493fcc7..b3aaf7f6b4 100644
+--- a/test/integration/targets/service/files/ansible_test_service.py
++++ b/test/integration/targets/service/files/ansible_test_service.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """Code coverage wrapper."""
  
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/injector/runner3.6 b/test/runner/injector/runner3.6
-index 57241c9..c463946 100755
---- a/test/runner/injector/runner3.6
-+++ b/test/runner/injector/runner3.6
+ # this is mostly based off of the code found here:
+ # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
+diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py
+index 19f1e29138..609218325d 100644
+--- a/test/integration/targets/service_facts/files/ansible_test_service.py
++++ b/test/integration/targets/service_facts/files/ansible_test_service.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- """Code coverage wrapper."""
  
- from __future__ import absolute_import, print_function
-diff --git a/test/runner/retry.py b/test/runner/retry.py
-index 4972131..a9ffb07 100755
---- a/test/runner/retry.py
-+++ b/test/runner/retry.py
+ # this is mostly based off of the code found here:
+ # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
+diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
+index b0a8889439..90c83b582b 100644
+--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
++++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # PYTHON_ARGCOMPLETE_OK
- """Automatically retry failed commands."""
  
-diff --git a/test/runner/test.py b/test/runner/test.py
-index 801f07f..804aa8f 100755
---- a/test/runner/test.py
-+++ b/test/runner/test.py
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
+diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py
+index 1a5bdd3078..344bcf0f86 100755
+--- a/test/integration/targets/throttle/test_throttle.py
++++ b/test/integration/targets/throttle/test_throttle.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # PYTHON_ARGCOMPLETE_OK
- """Test runner for all Ansible tests."""
  
-diff --git a/test/sanity/code-smell/ansible-var-precedence-check.py b/test/sanity/code-smell/ansible-var-precedence-check.py
-index e10c097..13c7a73 100755
---- a/test/sanity/code-smell/ansible-var-precedence-check.py
-+++ b/test/sanity/code-smell/ansible-var-precedence-check.py
+ from __future__ import (absolute_import, division, print_function)
+ __metaclass__ = type
+diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
+index fc31688be2..f964bbe8d6 100755
+--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py
++++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
  
  # A tool to check the order of precedence for ansible variables
  # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml
-diff --git a/test/sanity/code-smell/integration-aliases.py b/test/sanity/code-smell/integration-aliases.py
-index 50301e3..ac53ca9 100755
---- a/test/sanity/code-smell/integration-aliases.py
-+++ b/test/sanity/code-smell/integration-aliases.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- 
- import os
- import textwrap
-diff --git a/test/sanity/code-smell/shebang.sh b/test/sanity/code-smell/shebang.sh
-index 76d72c1..565a198 100755
---- a/test/sanity/code-smell/shebang.sh
-+++ b/test/sanity/code-smell/shebang.sh
-@@ -8,11 +8,11 @@ grep '^#!' -rIn . \
-     -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!powershell$' \
-     -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!/usr/bin/python$' \
-     -e '^\./test/integration/targets/module_precedence/.*lib.*:#!/usr/bin/python$' \
--    -e '^\./hacking/cherrypick.py:#!/usr/bin/env python3$' \
-+    -e '^\./hacking/cherrypick.py:#!/usr/bin/env python33$' \
-     -e ':#!/bin/sh$' \
-     -e ':#!/bin/bash( -[eux]|$)' \
-     -e ':#!/usr/bin/make -f$' \
--    -e ':#!/usr/bin/env python$' \
-+    -e ':#!/usr/bin/env python3$' \
-     -e ':#!/usr/bin/env bash$' \
-     -e ':#!/usr/bin/env fish$' \
- 
-diff --git a/test/sanity/validate-modules/test_validate_modules_regex.py b/test/sanity/validate-modules/test_validate_modules_regex.py
-index 0e41ee7..8a86b07 100644
---- a/test/sanity/validate-modules/test_validate_modules_regex.py
-+++ b/test/sanity/validate-modules/test_validate_modules_regex.py
+diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py
+index 222366e473..2b11060113 100644
+--- a/test/lib/ansible_test/_internal/util_common.py
++++ b/test/lib/ansible_test/_internal/util_common.py
+@@ -303,7 +303,7 @@ def get_injector_path() -> str:
+     ])
+
+     scripts = (
+-        ('python.py', '/usr/bin/env python', MODE_FILE_EXECUTE),
++        ('python.py', '/usr/bin/env python3', MODE_FILE_EXECUTE),
+         ('virtualenv.sh', '/usr/bin/env bash', MODE_FILE),
+     )
+
+diff --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
+index b0b1319783..9535c3b481 100644
+--- a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
++++ b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
+@@ -16,14 +16,14 @@ def main():
+         b'#!/usr/bin/env bash',
+         b'#!/usr/bin/env fish',
+         b'#!/usr/bin/env pwsh',
+-        b'#!/usr/bin/env python',
++        b'#!/usr/bin/env python3',
+         b'#!/usr/bin/make -f',
+     ])
+
+     integration_shebangs = set([
+         b'#!/bin/sh',
+         b'#!/usr/bin/env bash',
+-        b'#!/usr/bin/env python',
++        b'#!/usr/bin/env python3',
+     ])
+
+     module_shebangs = {
+diff --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
+index 930654fc1e..bbf50369d7 100755
+--- 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
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
+ # PYTHON_ARGCOMPLETE_OK
+ """Command line entry point for ansible-test."""
  
- # This is a standalone test for the regex inside validate-modules
- # It is not suitable to add to the make tests target because the
-diff --git a/test/sanity/validate-modules/validate-modules b/test/sanity/validate-modules/validate-modules
-index d03bff1..201cd41 100755
---- a/test/sanity/validate-modules/validate-modules
-+++ b/test/sanity/validate-modules/validate-modules
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- #
- # Copyright (C) 2015 Matt Martz <matt@sivel.net>
 diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py
-index edbf836..1f3bb5a 100644
+index fa6add8cd6..fcfd096e54 100644
 --- a/test/units/executor/module_common/test_module_common.py
 +++ b/test/units/executor/module_common/test_module_common.py
-@@ -114,5 +114,5 @@ class TestGetShebang(object):
+@@ -132,8 +132,8 @@ class TestGetShebang:
              (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3')
  
-     def test_python_via_env(self):
--        assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}) == \
+     def test_python_via_env(self, templar):
+-        assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}, templar) == \
 -            (u'#!/usr/bin/env python', u'/usr/bin/env python')
-+        assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}) == \
-+            (u'#!/usr/bin/env python3', u'/usr/bin/env python')
-diff --git a/test/units/modules/network/nxos/test_nxos_config.py b/test/units/modules/network/nxos/test_nxos_config.py
-index 8e3a59c..46764a8 100644
---- a/test/units/modules/network/nxos/test_nxos_config.py
-+++ b/test/units/modules/network/nxos/test_nxos_config.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # (c) 2016 Red Hat Inc.
- #
-diff --git a/test/utils/shippable/ansible-core-ci b/test/utils/shippable/ansible-core-ci
-index e91b426..44f8fb9 100755
---- a/test/utils/shippable/ansible-core-ci
-+++ b/test/utils/shippable/ansible-core-ci
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
++        assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}, templar) == \
++            (u'#!/usr/bin/env python3', u'/usr/bin/env python3')
  
- # (c) 2016 Matt Clay <matt@mystile.com>
- #
-diff --git a/test/utils/shippable/download.py b/test/utils/shippable/download.py
-index cbda144..e86c8e6 100755
---- a/test/utils/shippable/download.py
-+++ b/test/utils/shippable/download.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # PYTHON_ARGCOMPLETE_OK
  
- # (c) 2016 Red Hat, Inc.
+ class TestDetectionRegexes:
 -- 
-2.7.4
+2.40.0
 
diff --git a/recipes-devtools/python/python3-ansible_2.3.1.0.bb b/recipes-devtools/python/python3-ansible_2.14.11.bb
similarity index 100%
rename from recipes-devtools/python/python3-ansible_2.3.1.0.bb
rename to recipes-devtools/python/python3-ansible_2.14.11.bb
-- 
2.40.0



             reply	other threads:[~2023-11-06 14:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-06 14:51 nmali [this message]
2023-11-06 14:51 ` [meta-virtualization][kirkstone][PATCH 2/2] python3-ansible: Add locale-base-en-us to RDEPENDS nmali
2023-11-07  1:47 ` [meta-virtualization][kirkstone][PATCH 1/2] python3-ansible: Upgrade to 2.14.11 Bruce Ashfield

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=20231106145106.2671320-1-narpat.mali@windriver.com \
    --to=narpat.mali@windriver.com \
    --cc=meta-virtualization@lists.yoctoproject.org \
    /path/to/YOUR_REPLY

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

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