Deprecate `pycompat24` (#81896)

pull/81874/head
Sviatoslav Sydorenko 8 months ago committed by GitHub
parent 350a394185
commit 46623b0a96
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -148,7 +148,6 @@ from ansible.module_utils.common.sys_info import (
get_distribution_version,
get_platform_subclass,
)
from ansible.module_utils.pycompat24 import get_exception, literal_eval
from ansible.module_utils.common.parameters import (
env_fallback,
remove_values,
@ -205,8 +204,6 @@ except NameError:
# Python 3
basestring = string_types
_literal_eval = literal_eval
# End of deprecated names
# Internal global holding passed in params. This is consulted in case
@ -2135,3 +2132,33 @@ class AnsibleModule(object):
def get_module_path():
return os.path.dirname(os.path.realpath(__file__))
def __getattr__(importable_name):
"""Inject import-time deprecation warnings.
Specifically, for ``literal_eval()``, ``_literal_eval()``
and ``get_exception()``.
"""
if importable_name == 'get_exception':
deprecate(
msg=f'The `ansible.module_utils.basic.'
f'{importable_name}` function is deprecated.',
version='2.19',
)
from ansible.module_utils.pycompat24 import get_exception
return get_exception
if importable_name in {'literal_eval', '_literal_eval'}:
deprecate(
msg=f'The `ansible.module_utils.basic.'
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})',
)

@ -30,6 +30,8 @@ from __future__ import annotations
import sys
from ansible.module_utils.common.warnings import deprecate
def get_exception():
"""Get the current exception.
@ -43,10 +45,29 @@ def get_exception():
e = get_exception()
"""
deprecate(
msg='The `ansible.module_utils.pycompat24.get_exception` '
'function is deprecated.',
version='2.19',
)
return sys.exc_info()[1]
from ast import literal_eval
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')
__all__ = ('get_exception', 'literal_eval') # pylint: disable=undefined-all-variable

@ -49,6 +49,7 @@ 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/modules/yum.py validate-modules:parameter-invalid
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.7!skip # pass/fail depends on presence of libselinux.so
lib/ansible/module_utils/compat/selinux.py import-3.8!skip # pass/fail depends on presence of libselinux.so

Loading…
Cancel
Save