How to use the yamllint.config.YamlLintConfigError function in yamllint

To help you get started, we’ve selected a few yamllint examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github adrienverge / yamllint / tests / test_config.py View on Github external
def test_invalid_conf(self):
        with self.assertRaises(config.YamlLintConfigError):
            config.YamlLintConfig('not: valid: yaml')
github adrienverge / yamllint / tests / test_config.py View on Github external
config.validate_rule_conf(Rule, {'a': True, 'b': 0})
        config.validate_rule_conf(Rule, {'a': True})
        config.validate_rule_conf(Rule, {'b': 0})
        self.assertRaises(config.YamlLintConfigError,
                          config.validate_rule_conf, Rule, {'a': 1, 'b': 0})

        Rule.CONF = {'choice': (True, 88, 'str')}
        Rule.DEFAULT = {'choice': 88}
        config.validate_rule_conf(Rule, {'choice': True})
        config.validate_rule_conf(Rule, {'choice': 88})
        config.validate_rule_conf(Rule, {'choice': 'str'})
        self.assertRaises(config.YamlLintConfigError,
                          config.validate_rule_conf, Rule, {'choice': False})
        self.assertRaises(config.YamlLintConfigError,
                          config.validate_rule_conf, Rule, {'choice': 99})
        self.assertRaises(config.YamlLintConfigError,
                          config.validate_rule_conf, Rule, {'choice': 'abc'})

        Rule.CONF = {'choice': (int, 'hardcoded')}
        Rule.DEFAULT = {'choice': 1337}
        config.validate_rule_conf(Rule, {'choice': 42})
        config.validate_rule_conf(Rule, {'choice': 'hardcoded'})
        config.validate_rule_conf(Rule, {})
        self.assertRaises(config.YamlLintConfigError,
                          config.validate_rule_conf, Rule, {'choice': False})
        self.assertRaises(config.YamlLintConfigError,
                          config.validate_rule_conf, Rule, {'choice': 'abc'})

        Rule.CONF = {'multiple': ['item1', 'item2', 'item3']}
        Rule.DEFAULT = {'multiple': ['item1']}
        config.validate_rule_conf(Rule, {'multiple': []})
        config.validate_rule_conf(Rule, {'multiple': ['item2']})
github adrienverge / yamllint / yamllint / cli.py View on Github external
if args.config_data != '' and ':' not in args.config_data:
                args.config_data = 'extends: ' + args.config_data
            conf = YamlLintConfig(content=args.config_data)
        elif args.config_file is not None:
            conf = YamlLintConfig(file=args.config_file)
        elif os.path.isfile('.yamllint'):
            conf = YamlLintConfig(file='.yamllint')
        elif os.path.isfile('.yamllint.yaml'):
            conf = YamlLintConfig(file='.yamllint.yaml')
        elif os.path.isfile('.yamllint.yml'):
            conf = YamlLintConfig(file='.yamllint.yml')
        elif os.path.isfile(user_global_config):
            conf = YamlLintConfig(file=user_global_config)
        else:
            conf = YamlLintConfig('extends: default')
    except YamlLintConfigError as e:
        print(e, file=sys.stderr)
        sys.exit(-1)

    locale.setlocale(locale.LC_ALL, conf.locale)

    max_level = 0

    for file in find_files_recursively(args.files, conf):
        filepath = file[2:] if file.startswith('./') else file
        try:
            with io.open(file, newline='') as f:
                problems = linter.run(f, conf, filepath)
        except EnvironmentError as e:
            print(e, file=sys.stderr)
            sys.exit(-1)
        prob_level = show_problems(problems, file, args_format=args.format,
github adrienverge / yamllint / yamllint / config.py View on Github external
def validate_rule_conf(rule, conf):
    if conf is False:  # disable
        return False

    if isinstance(conf, dict):
        if ('ignore' in conf and
                not isinstance(conf['ignore'], pathspec.pathspec.PathSpec)):
            if not isinstance(conf['ignore'], str):
                raise YamlLintConfigError(
                    'invalid config: ignore should contain file patterns')
            conf['ignore'] = pathspec.PathSpec.from_lines(
                'gitwildmatch', conf['ignore'].splitlines())

        if 'level' not in conf:
            conf['level'] = 'error'
        elif conf['level'] not in ('error', 'warning'):
            raise YamlLintConfigError(
                'invalid config: level should be "error" or "warning"')

        options = getattr(rule, 'CONF', {})
        options_default = getattr(rule, 'DEFAULT', {})
        for optkey in conf:
            if optkey in ('ignore', 'level'):
                continue
            if optkey not in options:
github adrienverge / yamllint / yamllint / config.py View on Github external
'invalid config: ignore should contain file patterns')
            self.ignore = pathspec.PathSpec.from_lines(
                'gitwildmatch', conf['ignore'].splitlines())

        if 'yaml-files' in conf:
            if not (isinstance(conf['yaml-files'], list)
                    and all(isinstance(i, str) for i in conf['yaml-files'])):
                raise YamlLintConfigError(
                    'invalid config: yaml-files '
                    'should be a list of file patterns')
            self.yaml_files = pathspec.PathSpec.from_lines('gitwildmatch',
                                                           conf['yaml-files'])

        if 'locale' in conf:
            if not isinstance(conf['locale'], str):
                raise YamlLintConfigError(
                    'invalid config: locale should be a string')
            self.locale = conf['locale']
github adrienverge / yamllint / yamllint / config.py View on Github external
# Example: CONF = {option: ['flag1', 'flag2', int]}
            #          → {option: [flag1]}      → {option: [42, flag1, flag2]}
            elif isinstance(options[optkey], list):
                if (type(conf[optkey]) is not list or
                        any(flag not in options[optkey] and
                            type(flag) not in options[optkey]
                            for flag in conf[optkey])):
                    raise YamlLintConfigError(
                        ('invalid config: option "%s" of "%s" should only '
                         'contain values in %s')
                        % (optkey, rule.ID, str(options[optkey])))
            # Example: CONF = {option: int}
            #          → {option: 42}
            else:
                if not isinstance(conf[optkey], options[optkey]):
                    raise YamlLintConfigError(
                        'invalid config: option "%s" of "%s" should be %s'
                        % (optkey, rule.ID, options[optkey].__name__))
        for optkey in options:
            if optkey not in conf:
                conf[optkey] = options_default[optkey]

        if hasattr(rule, 'VALIDATE'):
            res = rule.VALIDATE(conf)
            if res:
                raise YamlLintConfigError('invalid config: %s: %s' %
                                          (rule.ID, res))
    else:
        raise YamlLintConfigError(('invalid config: rule "%s": should be '
                                   'either "enable", "disable" or a dict')
                                  % rule.ID)
github adrienverge / yamllint / yamllint / config.py View on Github external
conf['ignore'] = pathspec.PathSpec.from_lines(
                'gitwildmatch', conf['ignore'].splitlines())

        if 'level' not in conf:
            conf['level'] = 'error'
        elif conf['level'] not in ('error', 'warning'):
            raise YamlLintConfigError(
                'invalid config: level should be "error" or "warning"')

        options = getattr(rule, 'CONF', {})
        options_default = getattr(rule, 'DEFAULT', {})
        for optkey in conf:
            if optkey in ('ignore', 'level'):
                continue
            if optkey not in options:
                raise YamlLintConfigError(
                    'invalid config: unknown option "%s" for rule "%s"' %
                    (optkey, rule.ID))
            # Example: CONF = {option: (bool, 'mixed')}
            #          → {option: true}         → {option: mixed}
            if isinstance(options[optkey], tuple):
                if (conf[optkey] not in options[optkey] and
                        type(conf[optkey]) not in options[optkey]):
                    raise YamlLintConfigError(
                        'invalid config: option "%s" of "%s" should be in %s'
                        % (optkey, rule.ID, options[optkey]))
            # Example: CONF = {option: ['flag1', 'flag2', int]}
            #          → {option: [flag1]}      → {option: [42, flag1, flag2]}
            elif isinstance(options[optkey], list):
                if (type(conf[optkey]) is not list or
                        any(flag not in options[optkey] and
                            type(flag) not in options[optkey]
github adrienverge / yamllint / yamllint / config.py View on Github external
def parse(self, raw_content):
        try:
            conf = yaml.safe_load(raw_content)
        except Exception as e:
            raise YamlLintConfigError('invalid config: %s' % e)

        if not isinstance(conf, dict):
            raise YamlLintConfigError('invalid config: not a dict')

        self.rules = conf.get('rules', {})
        for rule in self.rules:
            if self.rules[rule] == 'enable':
                self.rules[rule] = {}
            elif self.rules[rule] == 'disable':
                self.rules[rule] = False

        # Does this conf override another conf that we need to load?
        if 'extends' in conf:
            path = get_extended_config_file(conf['extends'])
            base = YamlLintConfig(file=path)
            try:
                self.extend(base)
            except Exception as e:
                raise YamlLintConfigError('invalid config: %s' % e)
github adrienverge / yamllint / yamllint / config.py View on Github external
try:
                self.extend(base)
            except Exception as e:
                raise YamlLintConfigError('invalid config: %s' % e)

        if 'ignore' in conf:
            if not isinstance(conf['ignore'], str):
                raise YamlLintConfigError(
                    'invalid config: ignore should contain file patterns')
            self.ignore = pathspec.PathSpec.from_lines(
                'gitwildmatch', conf['ignore'].splitlines())

        if 'yaml-files' in conf:
            if not (isinstance(conf['yaml-files'], list)
                    and all(isinstance(i, str) for i in conf['yaml-files'])):
                raise YamlLintConfigError(
                    'invalid config: yaml-files '
                    'should be a list of file patterns')
            self.yaml_files = pathspec.PathSpec.from_lines('gitwildmatch',
                                                           conf['yaml-files'])

        if 'locale' in conf:
            if not isinstance(conf['locale'], str):
                raise YamlLintConfigError(
                    'invalid config: locale should be a string')
            self.locale = conf['locale']