Skip to content

Commit 34088a8

Browse files
committed
ansible_mitogen: Consolidate Python 2 & 3 compatibility
Rough guidelines, in decending preference: - Use mitogen.core if possible - Use ansible.module_utils.six if possible - Embed a getattr() or try/except viewkeys() et al can't be brought into mitogen.core because that package still targets Python 2.4. dict.viewkeys() were introduced in Python 2.7.
1 parent 0a908d7 commit 34088a8

File tree

6 files changed

+12
-40
lines changed

6 files changed

+12
-40
lines changed

ansible_mitogen/mixins.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@
3535
import random
3636
import traceback
3737

38-
try:
39-
from shlex import quote as shlex_quote
40-
except ImportError:
41-
from pipes import quote as shlex_quote
42-
4338
import ansible
4439
import ansible.constants
4540
import ansible.plugins
@@ -48,6 +43,7 @@
4843
import ansible.vars.clean
4944

5045
from ansible.module_utils.common.text.converters import to_bytes, to_text
46+
from ansible.module_utils.six.moves import shlex_quote
5147
from ansible.parsing.utils.jsonify import jsonify
5248

5349
import mitogen.core

ansible_mitogen/plugins/connection/mitogen_local.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,7 @@
4242
import ansible_mitogen.connection
4343
import ansible_mitogen.process
4444

45-
46-
if sys.version_info > (3,):
47-
viewkeys = dict.keys
48-
elif sys.version_info > (2, 7):
49-
viewkeys = dict.viewkeys
50-
else:
51-
viewkeys = lambda dct: set(dct)
45+
viewkeys = getattr(dict, 'viewkeys', dict.keys)
5246

5347

5448
def dict_diff(old, new):

ansible_mitogen/runner.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
import traceback
5353
import types
5454

55+
from ansible.module_utils.six.moves import shlex_quote
56+
5557
import mitogen.core
5658
import ansible_mitogen.target # TODO: circular import
5759
from mitogen.core import to_text
@@ -70,12 +72,6 @@
7072
except ImportError:
7173
from io import StringIO
7274

73-
try:
74-
from shlex import quote as shlex_quote
75-
except ImportError:
76-
from pipes import quote as shlex_quote
77-
78-
7975
# Prevent accidental import of an Ansible module from hanging on stdin read.
8076
import ansible.module_utils.basic
8177
ansible.module_utils.basic._ANSIBLE_ARGS = '{}'
@@ -92,7 +88,6 @@
9288
except AttributeError:
9389
pass
9490

95-
iteritems = getattr(dict, 'iteritems', dict.items)
9691
LOG = logging.getLogger(__name__)
9792

9893

@@ -600,7 +595,7 @@ class TemporaryEnvironment(object):
600595
def __init__(self, env=None):
601596
self.original = dict(os.environ)
602597
self.env = env or {}
603-
for key, value in iteritems(self.env):
598+
for key, value in mitogen.core.iteritems(self.env):
604599
key = mitogen.core.to_text(key)
605600
value = mitogen.core.to_text(value)
606601
if value is None:

ansible_mitogen/services.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050

5151
import ansible.constants
5252

53+
from ansible.module_utils.six import reraise
54+
5355
import mitogen.core
5456
import mitogen.service
5557
import ansible_mitogen.loaders
@@ -66,20 +68,6 @@
6668
ansible_mitogen.loaders.shell_loader.get('sh')
6769

6870

69-
if sys.version_info[0] == 3:
70-
def reraise(tp, value, tb):
71-
if value is None:
72-
value = tp()
73-
if value.__traceback__ is not tb:
74-
raise value.with_traceback(tb)
75-
raise value
76-
else:
77-
exec(
78-
"def reraise(tp, value, tb=None):\n"
79-
" raise tp, value, tb\n"
80-
)
81-
82-
8371
def _get_candidate_temp_dirs():
8472
try:
8573
# >=2.5

ansible_mitogen/target.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@
5555
import mitogen.core
5656
import mitogen.parent
5757
import mitogen.service
58-
try:
59-
reduce
60-
except NameError:
61-
# Python 3.x.
62-
from functools import reduce
63-
6458

6559
# Ansible since PR #41749 inserts "import __main__" into
6660
# ansible.module_utils.basic. Mitogen's importer will refuse such an import, so
@@ -70,6 +64,9 @@
7064
sys.modules[str('__main__')] = types.ModuleType(str('__main__'))
7165

7266
import ansible.module_utils.json_utils
67+
68+
from ansible.module_utils.six.moves import reduce
69+
7370
import ansible_mitogen.runner
7471

7572

docs/changelog.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ Unreleased
2727
fallbacks for Python 2.4 & 2.5.
2828
* :gh:issue:`1127` :mod:`ansible_mitogen`: Remove fallback imports for Ansible
2929
releases before 2.10
30+
* :gh:issue:`1127` :mod:`ansible_mitogen`: Consolidate Python 2 & 3
31+
compatibility
3032

3133

3234
v0.3.10 (2024-09-20)

0 commit comments

Comments
 (0)