From: Lars Beckers <lars@extmind.de>
Date: Thu, 29 Apr 2021 22:43:54 +0200
Subject: ansible: Respect interpreter_python config variable

Origin: https://github.com/mitogen-hq/mitogen/pull/833
Bug-Upstream: https://github.com/mitogen-hq/mitogen/issues/740
---
 ansible_mitogen/connection.py       | 7 ++++---
 ansible_mitogen/transport_config.py | 7 ++++++-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/ansible_mitogen/connection.py b/ansible_mitogen/connection.py
index 6bdf11b..78fb797 100644
--- a/ansible_mitogen/connection.py
+++ b/ansible_mitogen/connection.py
@@ -630,7 +630,7 @@ class Connection(ansible.plugins.connection.ConnectionBase):
         does not make sense to extract connection-related configuration for the
         delegated-to machine from them.
         """
-        def _fetch_task_var(task_vars, key):
+        def _fetch_task_var(task_vars, key, default):
             """
             Special helper func in case vars can be templated
             """
@@ -648,15 +648,16 @@ class Connection(ansible.plugins.connection.ConnectionBase):
                         escape_backslashes=False
                     )
                 return val
+            return default
 
         task_vars = self._get_task_vars()
         if self.delegate_to_hostname is None:
-            return _fetch_task_var(task_vars, key)
+            return _fetch_task_var(task_vars, key, default)
         else:
             delegated_vars = task_vars['ansible_delegated_vars']
             if self.delegate_to_hostname in delegated_vars:
                 task_vars = delegated_vars[self.delegate_to_hostname]
-                return _fetch_task_var(task_vars, key)
+                return _fetch_task_var(task_vars, key, default)
 
         return default
 
diff --git a/ansible_mitogen/transport_config.py b/ansible_mitogen/transport_config.py
index 3ab623f..9209737 100644
--- a/ansible_mitogen/transport_config.py
+++ b/ansible_mitogen/transport_config.py
@@ -463,7 +463,9 @@ class PlayContextSpec(Spec):
         return self._play_context.port
 
     def python_path(self, rediscover_python=False):
-        s = self._connection.get_task_var('ansible_python_interpreter')
+        s = self._connection.get_task_var('ansible_python_interpreter',
+                default=C.config.get_config_value('INTERPRETER_PYTHON',
+                    variables=self._task_vars))
         # #511, #536: executor/module_common.py::_get_shebang() hard-wires
         # "/usr/bin/python" as the default interpreter path if no other
         # interpreter is specified.
@@ -698,6 +700,9 @@ class MitogenViaSpec(Spec):
 
     def python_path(self, rediscover_python=False):
         s = self._host_vars.get('ansible_python_interpreter')
+        if s is None:
+            s = C.config.get_config_value('INTERPRETER_PYTHON',
+                    variables=self._task_vars)
         # #511, #536: executor/module_common.py::_get_shebang() hard-wires
         # "/usr/bin/python" as the default interpreter path if no other
         # interpreter is specified.
