in knack/arguments.py [0:0]
def _handle_deprecations(self, argument_dest, **kwargs):
def _handle_argument_deprecation(deprecate_info):
parent_class = self._get_parent_class(**kwargs)
class DeprecatedArgumentAction(parent_class):
def __call__(self, parser, namespace, values, option_string=None):
if not hasattr(namespace, '_argument_deprecations'):
setattr(namespace, '_argument_deprecations', [deprecate_info])
else:
namespace._argument_deprecations.append(deprecate_info) # pylint: disable=protected-access
try:
super().__call__(parser, namespace, values, option_string)
except NotImplementedError:
setattr(namespace, self.dest, values)
return DeprecatedArgumentAction
def _handle_option_deprecation(deprecated_options):
if not isinstance(deprecated_options, list):
deprecated_options = [deprecated_options]
parent_class = self._get_parent_class(**kwargs)
class DeprecatedOptionAction(parent_class):
def __call__(self, parser, namespace, values, option_string=None):
deprecated_opt = next((x for x in deprecated_options if option_string == x.target), None)
if deprecated_opt:
if not hasattr(namespace, '_argument_deprecations'):
setattr(namespace, '_argument_deprecations', [deprecated_opt])
else:
namespace._argument_deprecations.append(deprecated_opt) # pylint: disable=protected-access
try:
super().__call__(parser, namespace, values, option_string)
except NotImplementedError:
setattr(namespace, self.dest, values)
return DeprecatedOptionAction
action = kwargs.get('action', None)
deprecate_info = kwargs.get('deprecate_info', None)
if deprecate_info:
deprecate_info.target = deprecate_info.target or argument_dest
action = _handle_argument_deprecation(deprecate_info)
deprecated_opts = [x for x in kwargs.get('options_list', []) if isinstance(x, Deprecated)]
if deprecated_opts:
action = _handle_option_deprecation(deprecated_opts)
return action