From 34a72b635b89de786dcac2a0fb6b68297f2a9ac2 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Thu, 28 Jul 2022 08:39:57 +0200 Subject: [PATCH] Provide ansible-core extra Fixes #947. --- docs/changelog.rst | 3 ++- setup.py | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index da5cc5e4e..a21f7f686 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -22,12 +22,13 @@ v0.3.4.dev0 * :gh:issue:`929` Support Ansible 6 and ansible-core 2.13 * :gh:issue:`832` Fix runtime error when using the ansible.builtin.dnf module multiple times -* :gh:issue:`925` :class:`ansible_mitogen.connection.Connection` no longer tries to close the +* :gh:issue:`925` :class:`ansible_mitogen.connection.Connection` no longer tries to close the connection on destruction. This is expected to reduce cases of `mitogen.core.Error: An attempt was made to enqueue a message with a Broker that has already exitted`. However it may result in resource leaks. * :gh:issue:`659` Removed :mod:`mitogen.compat.simplejson`, not needed with Python 2.7+, contained Python 3.x syntax errors * :gh:issue:`983` CI: Removed PyPI faulthandler requirement from tests +* :gh:issue:`947` Provide `ansible-core` extra which installs compatible version of ansible-core v0.3.3 (2022-06-03) ------------------- diff --git a/setup.py b/setup.py index 9d2ff36f0..a5242b55f 100644 --- a/setup.py +++ b/setup.py @@ -31,15 +31,39 @@ from setuptools import find_packages, setup +def parse_assignment(line, starts_with): + if line.startswith(starts_with): + _, _, s = line.partition('=') + parts = ast.literal_eval(s.strip()) + return parts + return None + def grep_version(): path = os.path.join(os.path.dirname(__file__), 'mitogen/__init__.py') with open(path) as fp: for line in fp: - if line.startswith('__version__'): - _, _, s = line.partition('=') - parts = ast.literal_eval(s.strip()) - return '.'.join(str(part) for part in parts) + parts = parse_assignment(line, '__version__') + if parts: + return '.'.join(map(str, parts)) + + +def ansible_core_version(): + path = os.path.join(os.path.dirname(__file__), 'ansible_mitogen/loaders.py') + min_version = None + with open(path) as fp: + for line in fp: + ansible_version_min = parse_assignment(line, 'ANSIBLE_VERSION_MIN') + if ansible_version_min: + # ansible-core's minimum version is 2.11, older versions were + # called ansible-base. + if ansible_version_min == (2, 10): + ansible_version_min = (2, 11) + min_version = '.'.join(map(str, ansible_version_min)) + ansible_version_max = parse_assignment(line, 'ANSIBLE_VERSION_MAX') + if ansible_version_max: + major, minor = ansible_version_max + return (min_version, '{}.{}'.format(major, minor + 1)) def long_description(): @@ -81,4 +105,7 @@ def long_description(): 'Topic :: System :: Distributed Computing', 'Topic :: System :: Systems Administration', ], + extras_require = { + 'ansible-core': ['ansible-core>={},<{}'.format(*ansible_core_version())], + }, )