From fe8a3a71fcba652cc80d05641f11cba487f94a43 Mon Sep 17 00:00:00 2001 From: Alex Willmer Date: Wed, 6 Mar 2024 11:07:45 +0000 Subject: [PATCH] ansible_mitogen: Remove use of distutils, which was removed in Python 3.12 --- ansible_mitogen/utils.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/ansible_mitogen/utils.py b/ansible_mitogen/utils.py index 25c5a692..a01b261d 100644 --- a/ansible_mitogen/utils.py +++ b/ansible_mitogen/utils.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, division, print_function __metaclass__ = type -import distutils.version +import re import ansible @@ -9,6 +9,21 @@ __all__ = [ 'ansible_version', ] -ansible_version = tuple(distutils.version.LooseVersion(ansible.__version__).version) -del distutils + +def _parse(v_string): + # Adapted from distutils.version.LooseVersion.parse() + component_re = re.compile(r'(\d+ | [a-z]+ | \.)', re.VERBOSE) + for component in component_re.split(v_string): + if not component or component == '.': + continue + try: + yield int(component) + except ValueError: + yield component + + +ansible_version = tuple(_parse(ansible.__version__)) + +del _parse +del re del ansible