From b071b6b2163b19e93544d977ab4d3f0bd368949e Mon Sep 17 00:00:00 2001 From: Hongbin Lu Date: Tue, 13 Mar 2018 18:14:49 +0000 Subject: [PATCH] Remove the warning of getargspec removal The method getargspec is deprecated and will be removed [1]. This produces a lot of deprecation warning in the logs which is noisy. This patch proposes to use getfullargspec if it is available. For python 2 compatibility, we need to fall back to getargspec. [1] https://docs.python.org/3/library/inspect.html#inspect.getargspec Change-Id: Ide7d9ca99e0edf23261b5d47f35766aaaac9059b --- cliff/app.py | 3 +-- cliff/commandmanager.py | 5 +++-- cliff/help.py | 5 +++-- cliff/utils.py | 7 +++++++ 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/cliff/app.py b/cliff/app.py index 62f822e9..b6392edf 100644 --- a/cliff/app.py +++ b/cliff/app.py @@ -14,7 +14,6 @@ """ import codecs -import inspect import locale import logging import logging.handlers @@ -384,7 +383,7 @@ class App(object): return 2 cmd_factory, cmd_name, sub_argv = subcommand kwargs = {} - if 'cmd_name' in inspect.getargspec(cmd_factory.__init__).args: + if 'cmd_name' in utils.getargspec(cmd_factory.__init__).args: kwargs['cmd_name'] = cmd_name cmd = cmd_factory(self, self.options, **kwargs) err = None diff --git a/cliff/commandmanager.py b/cliff/commandmanager.py index a0a9bb36..20cf17ff 100644 --- a/cliff/commandmanager.py +++ b/cliff/commandmanager.py @@ -13,11 +13,12 @@ """Discover and lookup command plugins. """ -import inspect import logging import pkg_resources +from . import utils + LOG = logging.getLogger(__name__) @@ -103,7 +104,7 @@ class CommandManager(object): else: # NOTE(dhellmann): Some fake classes don't take # require as an argument. Yay? - arg_spec = inspect.getargspec(cmd_ep.load) + arg_spec = utils.getargspec(cmd_ep.load) if 'require' in arg_spec[0]: cmd_factory = cmd_ep.load(require=False) else: diff --git a/cliff/help.py b/cliff/help.py index 971e9ad6..92e4c2fb 100644 --- a/cliff/help.py +++ b/cliff/help.py @@ -16,6 +16,7 @@ import sys import traceback from . import command +from . import utils class HelpAction(argparse.Action): @@ -47,7 +48,7 @@ class HelpAction(argparse.Action): continue try: kwargs = {} - if 'cmd_name' in inspect.getargspec(factory.__init__).args: + if 'cmd_name' in utils.getargspec(factory.__init__).args: kwargs['cmd_name'] = name cmd = factory(app, None, **kwargs) if cmd.deprecated: @@ -100,7 +101,7 @@ class HelpCommand(command.Command): return self.app_args.cmd = search_args kwargs = {} - if 'cmd_name' in inspect.getargspec(cmd_factory.__init__).args: + if 'cmd_name' in utils.getargspec(cmd_factory.__init__).args: kwargs['cmd_name'] = cmd_name cmd = cmd_factory(self.app, self.app_args, **kwargs) full_name = (cmd_name diff --git a/cliff/utils.py b/cliff/utils.py index a9ee9756..0da9b423 100644 --- a/cliff/utils.py +++ b/cliff/utils.py @@ -13,6 +13,7 @@ import codecs import ctypes +import inspect import os import struct import sys @@ -28,6 +29,12 @@ import six COST = {'w': 0, 's': 2, 'a': 1, 'd': 3} +if hasattr(inspect, 'getfullargspec'): + getargspec = inspect.getfullargspec +else: + getargspec = inspect.getargspec + + def damerau_levenshtein(s1, s2, cost): """Calculates the Damerau-Levenshtein distance between two strings.