From 3a40ba3b2c396bde54d1a71db73296ec88343f86 Mon Sep 17 00:00:00 2001 From: Abhijeet Kasurde Date: Tue, 29 Oct 2024 08:14:01 -0700 Subject: Remove deprecated pycompat24 and importlib (#84161) * Removed deprecated pycompat24 and importlib Signed-off-by: Abhijeet Kasurde * Make CI green Signed-off-by: Abhijeet Kasurde * Ignore basic.py Signed-off-by: Abhijeet Kasurde * Make CI green III Signed-off-by: Abhijeet Kasurde * Make CI green IV Signed-off-by: Abhijeet Kasurde --------- Signed-off-by: Abhijeet Kasurde --- changelogs/fragments/compat_removal.yml | 3 + lib/ansible/module_utils/basic.py | 8 +-- lib/ansible/module_utils/compat/importlib.py | 26 -------- lib/ansible/module_utils/pycompat24.py | 73 ---------------------- test/sanity/ignore.txt | 4 -- .../module_common/test_recursive_finder.py | 21 ++----- 6 files changed, 8 insertions(+), 127 deletions(-) create mode 100644 changelogs/fragments/compat_removal.yml delete mode 100644 lib/ansible/module_utils/compat/importlib.py delete mode 100644 lib/ansible/module_utils/pycompat24.py diff --git a/changelogs/fragments/compat_removal.yml b/changelogs/fragments/compat_removal.yml new file mode 100644 index 0000000000..86da5d9933 --- /dev/null +++ b/changelogs/fragments/compat_removal.yml @@ -0,0 +1,3 @@ +--- +removed_features: + - removed deprecated pycompat24 and compat.importlib. diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py index d3420c0980..41ae6288c5 100644 --- a/lib/ansible/module_utils/basic.py +++ b/lib/ansible/module_utils/basic.py @@ -2066,13 +2066,7 @@ def get_module_path(): def __getattr__(importable_name): """Inject import-time deprecation warnings.""" - if importable_name == 'get_exception': - from ansible.module_utils.pycompat24 import get_exception - importable = get_exception - elif importable_name in {'literal_eval', '_literal_eval'}: - from ast import literal_eval - importable = literal_eval - elif importable_name == 'datetime': + if importable_name == 'datetime': import datetime importable = datetime elif importable_name == 'signal': diff --git a/lib/ansible/module_utils/compat/importlib.py b/lib/ansible/module_utils/compat/importlib.py deleted file mode 100644 index 4074f3733d..0000000000 --- a/lib/ansible/module_utils/compat/importlib.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2020 Matt Martz -# Simplified BSD License (see licenses/simplified_bsd.txt or https://opensource.org/licenses/BSD-2-Clause) - -from __future__ import annotations - -from ansible.module_utils.common.warnings import deprecate - - -def __getattr__(importable_name): - """Inject import-time deprecation warnings. - - Specifically, for ``import_module()``. - """ - if importable_name == 'import_module': - deprecate( - msg=f'The `ansible.module_utils.compat.importlib.' - f'{importable_name}` function is deprecated.', - version='2.19', - ) - from importlib import import_module - return import_module - - raise AttributeError( - f'cannot import name {importable_name !r} ' - f'has no attribute ({__file__ !s})', - ) diff --git a/lib/ansible/module_utils/pycompat24.py b/lib/ansible/module_utils/pycompat24.py deleted file mode 100644 index 27d61485b2..0000000000 --- a/lib/ansible/module_utils/pycompat24.py +++ /dev/null @@ -1,73 +0,0 @@ -# This code is part of Ansible, but is an independent component. -# This particular file snippet, and this file snippet only, is BSD licensed. -# Modules you write using this snippet, which is embedded dynamically by Ansible -# still belong to the author of the module, and may assign their own license -# to the complete work. -# -# Copyright (c) 2016, Toshio Kuratomi -# Copyright (c) 2015, Marius Gedminas -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -from __future__ import annotations - -import sys - -from ansible.module_utils.common.warnings import deprecate - - -def get_exception(): - """Get the current exception. - - This code needs to work on Python 2.4 through 3.x, so we cannot use - "except Exception, e:" (SyntaxError on Python 3.x) nor - "except Exception as e:" (SyntaxError on Python 2.4-2.5). - Instead we must use :: - - except Exception: - e = get_exception() - - """ - deprecate( - msg='The `ansible.module_utils.pycompat24.get_exception` ' - 'function is deprecated.', - version='2.19', - ) - return sys.exc_info()[1] - - -def __getattr__(importable_name): - """Inject import-time deprecation warning for ``literal_eval()``.""" - if importable_name == 'literal_eval': - deprecate( - msg=f'The `ansible.module_utils.pycompat24.' - f'{importable_name}` function is deprecated.', - version='2.19', - ) - from ast import literal_eval - return literal_eval - - raise AttributeError( - f'cannot import name {importable_name !r} ' - f'has no attribute ({__file__ !s})', - ) - - -__all__ = ('get_exception', 'literal_eval') # pylint: disable=undefined-all-variable diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt index 4ec1539100..2466a64221 100644 --- a/test/sanity/ignore.txt +++ b/test/sanity/ignore.txt @@ -28,7 +28,6 @@ lib/ansible/modules/systemd_service.py validate-modules:parameter-invalid lib/ansible/modules/uri.py validate-modules:doc-required-mismatch lib/ansible/modules/user.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/user.py validate-modules:use-run-command-not-popen -lib/ansible/module_utils/basic.py no-get-exception # only referenced in deprecation code lib/ansible/module_utils/basic.py pylint:unused-import # deferring resolution to allow enabling the rule now lib/ansible/module_utils/compat/selinux.py import-3.8!skip # pass/fail depends on presence of libselinux.so lib/ansible/module_utils/compat/selinux.py import-3.9!skip # pass/fail depends on presence of libselinux.so @@ -46,7 +45,6 @@ lib/ansible/module_utils/powershell/Ansible.ModuleUtils.FileUtil.psm1 pslint:PSP lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 pslint:PSCustomUseLiteralPath lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1 pslint:PSUseApprovedVerbs lib/ansible/module_utils/powershell/Ansible.ModuleUtils.LinkUtil.psm1 pslint:PSUseApprovedVerbs -lib/ansible/module_utils/pycompat24.py no-get-exception lib/ansible/module_utils/six/__init__.py pylint:self-assigning-variable lib/ansible/module_utils/six/__init__.py pylint:trailing-comma-tuple lib/ansible/module_utils/six/__init__.py pylint:unidiomatic-typecheck @@ -157,8 +155,6 @@ lib/ansible/modules/user.py pylint:used-before-assignment lib/ansible/plugins/action/copy.py pylint:undefined-variable test/integration/targets/module_utils/library/test_optional.py pylint:used-before-assignment test/support/windows-integration/plugins/action/win_copy.py pylint:undefined-variable -lib/ansible/module_utils/compat/importlib.py pylint:ansible-deprecated-version -lib/ansible/module_utils/pycompat24.py pylint:ansible-deprecated-version lib/ansible/plugins/connection/__init__.py pylint:ansible-deprecated-version lib/ansible/plugins/filter/core.py pylint:ansible-deprecated-version lib/ansible/vars/manager.py pylint:ansible-deprecated-version diff --git a/test/units/executor/module_common/test_recursive_finder.py b/test/units/executor/module_common/test_recursive_finder.py index 92d7c206e0..c44edcf3e9 100644 --- a/test/units/executor/module_common/test_recursive_finder.py +++ b/test/units/executor/module_common/test_recursive_finder.py @@ -1,20 +1,8 @@ -# (c) 2017, Toshio Kuratomi -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# -*- coding: utf-8 -*- +# Copyright: (c) 2017, Toshio Kuratomi +# Copyright: Contributors to the Ansible project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import annotations import os @@ -62,7 +50,6 @@ MODULE_UTILS_BASIC_FILES = frozenset(('ansible/__init__.py', 'ansible/module_utils/errors.py', 'ansible/module_utils/parsing/__init__.py', 'ansible/module_utils/parsing/convert_bool.py', - 'ansible/module_utils/pycompat24.py', 'ansible/module_utils/six/__init__.py', )) -- cgit v1.2.3