From 86b997a2d73ba7680e0632cf4b350d6d25afebe0 Mon Sep 17 00:00:00 2001 From: harshith gandhe Date: Wed, 2 Jul 2025 13:19:27 +0530 Subject: [PATCH] AMBARI-26524: Fix inspect deprecations for Python 3.11 compatibility --- .../main/python/ambari_jinja2/docs/jinjaext.py | 7 ++++--- .../libraries/script/script.py | 4 ++-- ambari-common/src/test/python/mock/mock.py | 18 ++++++++---------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/ambari-common/src/main/python/ambari_jinja2/docs/jinjaext.py b/ambari-common/src/main/python/ambari_jinja2/docs/jinjaext.py index b9fb4003a87..94c76a0e55c 100644 --- a/ambari-common/src/main/python/ambari_jinja2/docs/jinjaext.py +++ b/ambari-common/src/main/python/ambari_jinja2/docs/jinjaext.py @@ -91,11 +91,12 @@ def format_function(name, aliases, func): signature = match.group(1) else: try: - argspec = inspect.getargspec(func) + sig = inspect.signature(func) + params = list(sig.parameters.values()) if getattr(func, 'environmentfilter', False) or \ getattr(func, 'contextfilter', False): - del argspec[0][0] - signature = inspect.formatargspec(*argspec) + params = params[1:] + signature = f"({', '.join(str(param) for param in params)})" except: pass result = [f'.. function:: {name}{signature}', ''] diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py index 4247689152c..6b231349d31 100644 --- a/ambari-common/src/main/python/resource_management/libraries/script/script.py +++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py @@ -1149,7 +1149,7 @@ def restart(self, env): else: # To remain backward compatible with older stacks, only pass upgrade_type if available. # TODO, remove checking the argspec for "upgrade_type" once all of the services support that optional param. - if "upgrade_type" in inspect.getargspec(self.stop).args: + if "upgrade_type" in inspect.signature(self.stop).parameters: self.stop(env, upgrade_type=upgrade_type) else: if is_stack_upgrade: @@ -1192,7 +1192,7 @@ def restart(self, env): # To remain backward compatible with older stacks, only pass upgrade_type if available. # TODO, remove checking the argspec for "upgrade_type" once all of the services support that optional param. self.pre_start(env) - if "upgrade_type" in inspect.getargspec(self.start).args: + if "upgrade_type" in inspect.signature(self.start).parameters: self.start(env, upgrade_type=upgrade_type) else: if is_stack_upgrade: diff --git a/ambari-common/src/test/python/mock/mock.py b/ambari-common/src/test/python/mock/mock.py index 076ef12c2bd..983a62f17aa 100644 --- a/ambari-common/src/test/python/mock/mock.py +++ b/ambari-common/src/test/python/mock/mock.py @@ -201,16 +201,14 @@ def _getsignature(func, skipfirst, instance=False): regargs = regargs[1:] if inPy3k: - signature = inspect.formatargspec( - regargs, - varargs, - varkw, - defaults, - kwonly, - kwonlydef, - ann, - formatvalue=lambda value: "", - ) + parts = [] + if regargs: + parts.extend(regargs) + if varargs: + parts.append("*" + varargs) + if varkw: + parts.append("**" + varkw) + signature = "(" + ", ".join(parts) + ")" else: signature = inspect.formatargspec( regargs, varargs, varkwargs, defaults, formatvalue=lambda value: ""