def FromData(cls, data): """Gets the arg definition from the spec data. Args: data: The spec data. Returns: Argument, the parsed argument. Raises: InvalidSchemaError: if the YAML command is malformed. """ group = data.get('group') if group: return ArgumentGroup.FromData(group) api_field = data.get('api_field') disable_unused_arg_check = data.get('disable_unused_arg_check') arg_name = data.get('arg_name', api_field) if not arg_name: raise util.InvalidSchemaError( 'An argument must have at least one of [api_field, arg_name].') is_positional = data.get('is_positional') flag_name = arg_name if is_positional else '--' + arg_name if data.get('default') and data.get('fallback'): raise util.InvalidSchemaError( 'An argument may have at most one of [default, fallback].') try: help_text = data['help_text'] except KeyError: raise util.InvalidSchemaError('An argument must have help_text.') choices = data.get('choices') return cls( api_field=api_field, arg_name=arg_name, help_text=help_text, metavar=data.get('metavar'), completer=util.Hook.FromData(data, 'completer'), is_positional=is_positional, type=util.ParseType(data.get('type')), choices=[util.Choice(d) for d in choices] if choices else None, default=data.get('default', arg_utils.UNSPECIFIED), fallback=util.Hook.FromData(data, 'fallback'), processor=util.Hook.FromData(data, 'processor'), required=data.get('required', False), hidden=data.get('hidden', False), action=util.ParseAction(data.get('action'), flag_name), repeated=data.get('repeated'), disable_unused_arg_check=disable_unused_arg_check, )
def testParseActionDeprecation(self): result = util.ParseAction({'deprecated': {'warn': 'warn'}}, 'foo') self.assertTrue(issubclass(result, argparse.Action))
def testParseAction(self, action, output): self.assertEqual(util.ParseAction(action, 'foo'), output)