Thanks for the update, most appreciated.

This is now merged.

Bruce

On Mon, May 15, 2023 at 2:02 AM Yu, Mingli <[email protected]> wrote:
>
> From: Mingli Yu <[email protected]>
>
> Rebase the patch python3-ensure-py-scripts-use-py3-for-shebang.patch
> to new version.
>
> Signed-off-by: Mingli Yu <[email protected]>
> ---
>  recipes-devtools/python/python-ansible.inc    |    8 +-
>  ...nsure-py-scripts-use-py3-for-shebang.patch | 1483 ++++++-----------
>  ...e_2.3.1.0.bb => python3-ansible_2.14.5.bb} |    0
>  3 files changed, 540 insertions(+), 951 deletions(-)
>  rename recipes-devtools/python/{python3-ansible_2.3.1.0.bb => 
> python3-ansible_2.14.5.bb} (100%)
>
> diff --git a/recipes-devtools/python/python-ansible.inc 
> b/recipes-devtools/python/python-ansible.inc
> index 0bb663ae..fa55ba3f 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 = "5c6dfff68759ccc9794b609db45872950077e98b"
>
> -
> -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..67a4f954 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 @@
> -From 66b824da2fadfd5760040be244f89fa8320df55b Mon Sep 17 00:00:00 2001
> +From b5d7b08addeb7795720acf3debd88a13ddd30402 Mon Sep 17 00:00:00 2001
>  From: Mark Asselstine <[email protected]>
> -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 <[email protected]>
> +Rebase to 2.24.5
> +Signed-off-by: Mingli Yu <[email protected]>
>  ---
> - 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 +-
> + docs/bin/find-plugin-refs.py                                  | 2 +-
> + docs/docsite/rst/dev_guide/testing/sanity/shebang.rst         | 2 +-
> + docs/docsite/rst/inventory_guide/connection_details.rst       | 4 ++--
> + docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po          | 4 ++--
> + examples/scripts/uptime.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/build-ansible.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/release.py                                          | 2 +-
> + packaging/sdist/check-link-behavior.py                        | 2 +-
> + .../targets/ansible-galaxy-collection/files/build_bad_tar.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/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 ++--
> + 71 files changed, 75 insertions(+), 75 deletions(-)
>
> -diff --git a/bin/ansible b/bin/ansible
> -index 24550b9..0587499 100755
> ---- a/bin/ansible
> -+++ b/bin/ansible
> +diff --git a/.azure-pipelines/scripts/combine-coverage.py 
> b/.azure-pipelines/scripts/combine-coverage.py
> +index 506ade6460c..15bee402341 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 <[email protected]>
> - #
> -diff --git a/bin/ansible-connection b/bin/ansible-connection
> -index 93d787e..f0b9aa3 100755
> ---- a/bin/ansible-connection
> -+++ b/bin/ansible-connection
> + """
> + 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 f2bc4b84b38..01ad32f494c 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) 2016, Ansible, Inc. <[email protected]>
> - #
> -diff --git a/bin/ansible-console b/bin/ansible-console
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-console
> -+++ b/bin/ansible-console
> + """
> + 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 5e8eb8d4c8f..5450c48900e 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 <[email protected]>
> - #
> -diff --git a/bin/ansible-doc b/bin/ansible-doc
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-doc
> -+++ b/bin/ansible-doc
> + from __future__ import (absolute_import, division, print_function)
> +diff --git a/docs/bin/find-plugin-refs.py b/docs/bin/find-plugin-refs.py
> +index d603409d688..c52d6d13e38 100755
> +--- a/docs/bin/find-plugin-refs.py
> ++++ b/docs/bin/find-plugin-refs.py
>  @@ -1,4 +1,4 @@
>  -#!/usr/bin/env python
>  +#!/usr/bin/env python3
>
> - # (c) 2012, Michael DeHaan <[email protected]>
> - #
> -diff --git a/bin/ansible-galaxy b/bin/ansible-galaxy
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-galaxy
> -+++ b/bin/ansible-galaxy
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> + # To run this script, first make webdocs in the toplevel of the checkout.  
> This will generate all
> + # rst files from their sources.  Then run this script 
> ./docs/bin/find-plugin-refs.py
> +diff --git a/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst 
> b/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
> +index cff2aa0914b..7c4bd651563 100644
> +--- a/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
> ++++ b/docs/docsite/rst/dev_guide/testing/sanity/shebang.rst
> +@@ -6,7 +6,7 @@ Most executable files should only use one of the following 
> shebangs:
> + - ``#!/bin/sh``
> + - ``#!/bin/bash``
> + - ``#!/usr/bin/make``
> +-- ``#!/usr/bin/env python``
> ++- ``#!/usr/bin/env python3``
> + - ``#!/usr/bin/env bash``
>
> - # (c) 2012, Michael DeHaan <[email protected]>
> - #
> -diff --git a/bin/ansible-playbook b/bin/ansible-playbook
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-playbook
> -+++ b/bin/ansible-playbook
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> + NOTE: For ``#!/bin/bash``, any of the options ``eux`` may also be used, 
> such as ``#!/bin/bash -eux``.
> +diff --git a/docs/docsite/rst/inventory_guide/connection_details.rst 
> b/docs/docsite/rst/inventory_guide/connection_details.rst
> +index 5e332160617..65bfd5903ad 100644
> +--- a/docs/docsite/rst/inventory_guide/connection_details.rst
> ++++ b/docs/docsite/rst/inventory_guide/connection_details.rst
> +@@ -84,13 +84,13 @@ You can run commands against the control node by using 
> "localhost" or "127.0.0.1
>
> - # (c) 2012, Michael DeHaan <[email protected]>
> - #
> -diff --git a/bin/ansible-pull b/bin/ansible-pull
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-pull
> -+++ b/bin/ansible-pull
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> + .. code-block:: bash
>
> - # (c) 2012, Michael DeHaan <[email protected]>
> - #
> -diff --git a/bin/ansible-vault b/bin/ansible-vault
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-vault
> -+++ b/bin/ansible-vault
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> +-    $ ansible localhost -m ping -e 
> 'ansible_python_interpreter="/usr/bin/env python"'
> ++    $ ansible localhost -m ping -e 
> 'ansible_python_interpreter="/usr/bin/env python3"'
>
> - # (c) 2012, Michael DeHaan <[email protected]>
> - #
> -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
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> + You can specify localhost explicitly by adding this to your inventory file:
>
> - '''
> -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
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> + .. code-block:: bash
>
> - # (c) 2013, Sebastien Goasguen <[email protected]>
> - #
> -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, <[email protected]>
> - #
> -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, <[email protected]>
> - #                    Chris Houseknecht, <[email protected]>
> -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
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # Copyright 2016 Doalitic.
> - #
> - # 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
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # vim: set fileencoding=utf-8 :
> - #
> - # Copyright (C) 2016 Guido Günther <[email protected]>
> -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
> +-    localhost ansible_connection=local 
> ansible_python_interpreter="/usr/bin/env python"
> ++    localhost ansible_connection=local 
> ansible_python_interpreter="/usr/bin/env python3"
> +
> + .. _host_key_checking_on:
> +
> +diff --git a/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po 
> b/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
> +index b6abc3e5874..53f5fdc8986 100644
> +--- a/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
> ++++ b/docs/docsite/rst/locales/ja/LC_MESSAGES/dev_guide.po
> +@@ -11820,8 +11820,8 @@ msgid "``#!/usr/bin/make``"
> + msgstr "``#!/usr/bin/make``"
> +
> + #: ../../rst/dev_guide/testing/sanity/shebang.rst:9
> +-msgid "``#!/usr/bin/env python``"
> +-msgstr "``#!/usr/bin/env python``"
> ++msgid "``#!/usr/bin/env python3``"
> ++msgstr "``#!/usr/bin/env python3``"
> +
> + #: ../../rst/dev_guide/testing/sanity/shebang.rst:10
> + msgid "``#!/usr/bin/env bash``"
> +diff --git a/examples/scripts/uptime.py b/examples/scripts/uptime.py
> +index d77a5fb5660..665594c254b 100755
> +--- a/examples/scripts/uptime.py
> ++++ b/examples/scripts/uptime.py
>  @@ -1,4 +1,4 @@
>  -#!/usr/bin/env python
>  +#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> - #
> - # (c) 2015, René Moser <[email protected]>
> -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
> +
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> +diff --git a/hacking/ansible-profile b/hacking/ansible-profile
> +index 6612402da62..d67526a1619 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
>
> - """
> - 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
> +diff --git a/hacking/azp/download.py b/hacking/azp/download.py
> +index 117e9da5b7a..89466cb17be 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
>
> - """
> - 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
> + # (c) 2016 Red Hat, Inc.
> +diff --git a/hacking/azp/get_recent_coverage_runs.py 
> b/hacking/azp/get_recent_coverage_runs.py
> +index 25e2fa8120a..9b0d9b972ed 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) 2020 Red Hat, Inc.
>   #
> - # (c) 2015, Steve Gargan <[email protected]>
> -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/azp/incidental.py b/hacking/azp/incidental.py
> +index 87d4d213c94..7660e2ed226 100755
> +--- a/hacking/azp/incidental.py
> ++++ b/hacking/azp/incidental.py
>  @@ -1,4 +1,4 @@
>  -#!/usr/bin/env python
>  +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
>
> - '''
> - 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) 2016 Paul Durivage <[email protected]>
> - #          Chris Houseknecht <[email protected]>
> -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
> + # (c) 2020 Red Hat, Inc.
> +diff --git a/hacking/azp/run.py b/hacking/azp/run.py
> +index 00a177944f8..591e6bcc4fe 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
>
> - '''
> - 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
> + # (c) 2016 Red Hat, Inc.
> +diff --git a/hacking/backport/backport_of_line_adder.py 
> b/hacking/backport/backport_of_line_adder.py
> +index ef77ddcf400..bbec15de6a2 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
> - """
> - 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
> + # (c) 2020, Red Hat, Inc. <[email protected]>
> + #
> + # This file is part of Ansible
> +diff --git a/hacking/build-ansible.py b/hacking/build-ansible.py
> +index c108c1861fa..8ebb88d33bd 100755
> +--- a/hacking/build-ansible.py
> ++++ b/hacking/build-ansible.py
>  @@ -1,4 +1,4 @@
>  -#!/usr/bin/env python
>  +#!/usr/bin/env python3
> - # vim: set fileencoding=utf-8 :
> - #
> - # Copyright (C) 2016 Guido Günther <[email protected]>,
> -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
> + # coding: utf-8
> + # PYTHON_ARGCOMPLETE_OK
> + # Copyright: (c) 2019, Ansible Project
> +diff --git a/hacking/create_deprecation_bug_reports.py 
> b/hacking/create_deprecation_bug_reports.py
> +index e14df4be389..e6b9b9025c3 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
> + # PYTHON_ARGCOMPLETE_OK
> + """Create GitHub issues for deprecated features."""
>
> - 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
> +diff --git a/hacking/fix_test_syntax.py b/hacking/fix_test_syntax.py
> +index 7178033406a..78d87ef71cb 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
> - # Copyright 2013 Google Inc.
> + # -*- coding: utf-8 -*-
> + # (c) 2017, Matt Martz <[email protected]>
>   #
> - # 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/hacking/get_library.py b/hacking/get_library.py
> +index 23bf4a39bb5..9346784398f 100755
> +--- a/hacking/get_library.py
> ++++ b/hacking/get_library.py
>  @@ -1,4 +1,4 @@
>  -#!/usr/bin/env python
>  +#!/usr/bin/env python3
>
> - # (c) 2013, Michael Scherer <[email protected]>
> + # (c) 2014, Will Thames <[email protected]>
>   #
> -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
> +diff --git a/hacking/report.py b/hacking/report.py
> +index 58b3a6b915a..78eed516dc0 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."""
>
> - # (c) 2015, Marc Abramowitz <[email protected]>
> - #
> -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
> +diff --git a/hacking/return_skeleton_generator.py 
> b/hacking/return_skeleton_generator.py
> +index 7002b7899d5..cff03c38e6b 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) 2013, Michael Scherer <[email protected]>
> + # (c) 2017, Will Thames <[email protected]>
>   #
> -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
> +diff --git a/hacking/test-module.py b/hacking/test-module.py
> +index 54343e07e8b..38d4b8c60bb 100755
> +--- a/hacking/test-module.py
> ++++ b/hacking/test-module.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
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> + # (c) 2012, Michael DeHaan <[email protected]>
>   #
> - # (c) 2015-16 Florian Haas, hastexo Professional Services GmbH
> - # <[email protected]>
> -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
> +diff --git a/hacking/tests/gen_distribution_version_testcase.py 
> b/hacking/tests/gen_distribution_version_testcase.py
> +index 2fc5a2f9328..18e67d7d121 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
>
> - # (c) 2016, Julian Barnett <[email protected]>
> - #
> -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
> + """
> + 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 747f058880a..2570ab2c7d3 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."""
>
> - # (c) 2015, Yannig Perre <[email protected]>
> - #
> -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
> +diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
> +index e90b44ce101..120948c7495 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) 2014, Jonathan Lestrelin <[email protected]>
> - #
> -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 <[email protected]>
> + # 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 3a5c24214b1..98d7a732517 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) 2012, Marco Vito Moscaritolo <[email protected]>
> - #
> -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)
> + # PYTHON_ARGCOMPLETE_OK
> +diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
> +index 3125cc47a7f..4a2f38bb48e 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
> -
> - '''
> - 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
> + # Copyright: (c) 2014, Nandor Sivok <[email protected]>
> + # 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 9f560bcbc6d..a0d34d92f6d 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
> -
> - # (c) 2013, Michael Scherer <[email protected]>
> - #
> -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
> + # Copyright: (c) 2014, James Tanner <[email protected]>
> + # 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 c280380c18c..0357401c749 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
> -
> - # Copyright (c) 2012, Marco Vito Moscaritolo <[email protected]>
> - # Copyright (c) 2013, Jesse Keating <[email protected]>
> -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
> + # Copyright: (c) 2013, James Cammarata <[email protected]>
> + # 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 e8ed75e4636..e4bb334932e 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
> - # -*- 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
> + # Copyright: (c) 2017, Brian Coca <[email protected]>
> + # 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 9c091a675a9..27ff7d442e4 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
> - # 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
> + # (c) 2012, Michael DeHaan <[email protected]>
> + # 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 dc8f055b44d..0e5b030eecf 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
> - # -*- 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
> + # Copyright: (c) 2012, Michael DeHaan <[email protected]>
> + # 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 9109137e7f8..f01b1ec58dc 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
> -
> - '''
> - 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) 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 3e60329de60..69499407479 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
> -
> - # Copyright (C) 2014  Mathieu GAUTHIER-LAFAYE <[email protected]>
> - #
> -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
> + # (c) 2014, James Tanner <[email protected]>
> + # 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/release.py b/packaging/release.py
> +index 1d1ba37117a..a561dc6a905 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."""
>
> - 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
> +diff --git a/packaging/sdist/check-link-behavior.py 
> b/packaging/sdist/check-link-behavior.py
> +index 34e05023d48..42f6c4be98f 100755
> +--- a/packaging/sdist/check-link-behavior.py
> ++++ b/packaging/sdist/check-link-behavior.py
>  @@ -1,4 +1,4 @@
>  -#!/usr/bin/env python
>  +#!/usr/bin/env python3
> + """Checks for link behavior required for sdist to retain symlinks."""
>
> - # (c) 2013, Jesse Keating <[email protected],
> - #           Paul Durivage <[email protected]>,
> -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
> + from __future__ import (absolute_import, division, print_function)
> +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 6182e865db0..5829df52b5b 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
> - # -*- 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
> +
> + # 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-test-container/runme.py 
> b/test/integration/targets/ansible-test-container/runme.py
> +index 687128056f7..bd7f3671655 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."""
>
> - # 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
> + 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 8effb647fca..4e34c4bbc16 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) 2015, Marc Abramowitz <[email protected]>
> - #
> -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
> + 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 463915284b2..fc2ed398d9f 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
> - """
> - SoftLayer external inventory script.
> + """Run a command using a PTY."""
>
> -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
> + 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 a2b094e2fca..355dba697a9 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."""
>
> - """
> - 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
> -@@ -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 4265cc3e6c1..e5a0d9b4834 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
> -
> - # (c) 2014, Tomas Karasek <[email protected]>
> - #
> -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
> +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 4265cc3e6c1..e5a0d9b4834 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
> +diff --git a/test/integration/targets/ansible-test/venv-pythons.py 
> b/test/integration/targets/ansible-test/venv-pythons.py
> +index b380f147fca..e97f2fcb33d 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."""
>
> - # Copyright (c) 2016, Hugh Ma <[email protected]>
> - #
> -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
> + import os
> +diff --git a/test/integration/targets/ansible-vault/faux-editor.py 
> b/test/integration/targets/ansible-vault/faux-editor.py
> +index b67c7475631..a30c306a831 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
> - """
> - 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 1b7f02beb23..0dcada23c7e 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 ee46188742d..48244fca09e 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 93958fc2adb..33509c826a3 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 9893d6652ed..7a07dcc108e 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 <[email protected]>
> + # 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 f7077fba0ab..dcc96141295 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 92a702cf13e..9ea69089d58 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 <[email protected]>
> - #
> -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 237f9c2d903..4fe74903d8d 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 463915284b2..fc2ed398d9f 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 <[email protected]> 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 79e3f62677e..2a294b33a82 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 <[email protected]>
> - #
> -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 79e3f62677e..2a294b33a82 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 4b771516fdd..085dfcdee11 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 20698f1f463..0cd5c851429 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 +654,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 566f8b7c47f..0814485d5fe 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 +663,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 b7ed707211e..97f9eedcdb7 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 +672,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 02fafd40f3f..3a93360c69e 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 +681,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 8566901f044..40f0c9446c9 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 +689,135 @@ 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
> -@@ -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
> +diff --git a/test/integration/targets/pause/test-pause.py 
> b/test/integration/targets/pause/test-pause.py
> +index 3703470d065..dd14b2810d6 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/runner b/test/runner/injector/runner
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner
> -+++ b/test/runner/injector/runner
> + 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 aaf21875ca2..2835719e4f2 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/runner2 b/test/runner/injector/runner2
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner2
> -+++ b/test/runner/injector/runner2
> + 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 522493fcc77..b3aaf7f6b43 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/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
> -@@ -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
> -@@ -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
> -@@ -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 19f1e291388..609218325d6 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 b0a8889439a..90c83b582b4 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 1a5bdd30789..344bcf0f868 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 fc31688be2e..f964bbe8d6d 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 79ff6c03ae3..730c87d3fc1 100644
> +--- a/test/lib/ansible_test/_internal/util_common.py
> ++++ b/test/lib/ansible_test/_internal/util_common.py
> +@@ -271,7 +271,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 b0b13197839..9535c3b4819 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 930654fc1e7..bbf50369d7d 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 <[email protected]>
>  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 fa6add8cd61..fcfd096e546 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 <[email protected]>
> - #
> -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.25.1
>
> diff --git a/recipes-devtools/python/python3-ansible_2.3.1.0.bb 
> b/recipes-devtools/python/python3-ansible_2.14.5.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.5.bb
> --
> 2.25.1
>
>
> 
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#8064): 
https://lists.yoctoproject.org/g/meta-virtualization/message/8064
Mute This Topic: https://lists.yoctoproject.org/mt/98897981/21656
Group Owner: [email protected]
Unsubscribe: 
https://lists.yoctoproject.org/g/meta-virtualization/leave/6693005/21656/1014668956/xyzzy
 [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to