def _make_argparser(filenames_help): parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*', help=filenames_help) parser.add_argument('-V', '--version', action='version', version=C.VERSION) return parser MANIFEST_HOOK_DICT = cfgv.Map( 'Hook', 'id', cfgv.Required('id', cfgv.check_string), cfgv.Required('name', cfgv.check_string), cfgv.Required('entry', cfgv.check_string), cfgv.Required('language', cfgv.check_one_of(all_languages)), cfgv.Optional('alias', cfgv.check_string, ''), cfgv.Optional( 'files', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '', ), cfgv.Optional( 'exclude', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '^$', ), cfgv.Optional('types', cfgv.check_array(check_type_tag), ['file']), cfgv.Optional('exclude_types', cfgv.check_array(check_type_tag), []), cfgv.Optional( 'additional_dependencies',
def _make_argparser(filenames_help): parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*', help=filenames_help) parser.add_argument('-V', '--version', action='version', version=C.VERSION) return parser MANIFEST_HOOK_DICT = cfgv.Map( 'Hook', 'id', cfgv.Required('id', cfgv.check_string), cfgv.Required('name', cfgv.check_string), cfgv.Required('entry', cfgv.check_string), cfgv.Required('language', cfgv.check_one_of(all_languages)), cfgv.Optional('alias', cfgv.check_string, ''), cfgv.Optional( 'files', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '', ), cfgv.Optional( 'exclude', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '^$', ), cfgv.Optional('types', cfgv.check_array(check_type_tag), ['file']), cfgv.Optional('exclude_types', cfgv.check_array(check_type_tag), []), cfgv.Optional( 'additional_dependencies', cfgv.check_array(cfgv.check_string), [], ), cfgv.Optional('args', cfgv.check_array(cfgv.check_string), []),
def test_check_one_of(): with pytest.raises(ValidationError) as excinfo: check_one_of((1, 2))(3) assert excinfo.value.error_msg == 'Expected one of 1, 2 but got: 3'
def test_check_one_of_ok(): check_one_of((1, 2))(2)
def _make_argparser(filenames_help): parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*', help=filenames_help) parser.add_argument('-V', '--version', action='version', version=C.VERSION) return parser MANIFEST_HOOK_DICT = cfgv.Map( 'Hook', 'id', cfgv.Required('id', cfgv.check_string), cfgv.Required('name', cfgv.check_string), cfgv.Required('entry', cfgv.check_string), cfgv.Required( 'language', cfgv.check_and(cfgv.check_string, cfgv.check_one_of(all_languages)), ), cfgv.Optional( 'files', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '', ), cfgv.Optional( 'exclude', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '^$', ), cfgv.Optional('types', cfgv.check_array(check_type_tag), ['file']), cfgv.Optional('exclude_types', cfgv.check_array(check_type_tag), []), cfgv.Optional( 'additional_dependencies', cfgv.check_array(cfgv.check_string), [], ), cfgv.Optional('args', cfgv.check_array(cfgv.check_string), []),
def _make_argparser(filenames_help): parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*', help=filenames_help) parser.add_argument('-V', '--version', action='version', version=C.VERSION) return parser MANIFEST_HOOK_DICT = cfgv.Map( 'Hook', 'id', cfgv.Required('id', cfgv.check_string), cfgv.Required('name', cfgv.check_string), cfgv.Required('entry', cfgv.check_string), cfgv.Required('language', cfgv.check_one_of(all_languages)), cfgv.Optional( 'files', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '', ), cfgv.Optional( 'exclude', cfgv.check_and(cfgv.check_string, cfgv.check_regex), '^$', ), cfgv.Optional('types', cfgv.check_array(check_type_tag), ['file']), cfgv.Optional('exclude_types', cfgv.check_array(check_type_tag), []), cfgv.Optional( 'additional_dependencies', cfgv.check_array(cfgv.check_string), [], ), cfgv.Optional('args', cfgv.check_array(cfgv.check_string), []), cfgv.Optional('always_run', cfgv.check_bool, False),
def _make_argparser(filenames_help: str) -> argparse.ArgumentParser: parser = argparse.ArgumentParser() parser.add_argument("filenames", nargs="*", help=filenames_help) parser.add_argument("-V", "--version", action="version", version=C.VERSION) return parser MANIFEST_HOOK_DICT = cfgv.Map( "Hook", "id", cfgv.Required("id", cfgv.check_string), cfgv.Required("name", cfgv.check_string), cfgv.Required("entry", cfgv.check_string), cfgv.Required("language", cfgv.check_one_of(all_languages)), cfgv.Optional("alias", cfgv.check_string, ""), cfgv.Optional("files", check_string_regex, ""), cfgv.Optional("exclude", check_string_regex, "^$"), cfgv.Optional("types", cfgv.check_array(check_type_tag), ["file"]), cfgv.Optional("exclude_types", cfgv.check_array(check_type_tag), []), cfgv.Optional("additional_dependencies", cfgv.check_array(cfgv.check_string), [],), cfgv.Optional("args", cfgv.check_array(cfgv.check_string), []), cfgv.Optional("always_run", cfgv.check_bool, False), cfgv.Optional("pass_filenames", cfgv.check_bool, True), cfgv.Optional("description", cfgv.check_string, ""), cfgv.Optional("language_version", cfgv.check_string, C.DEFAULT), cfgv.Optional("log_file", cfgv.check_string, ""), cfgv.Optional("minimum_pre_commit_version", cfgv.check_string, "0"), cfgv.Optional("require_serial", cfgv.check_bool, False), cfgv.Optional("stages", cfgv.check_array(cfgv.check_one_of(C.STAGES)), []),
'CI', None, cfgv.Optional( 'autofix_commit_msg', cfgv.check_and(cfgv.check_string, _check_non_empty_string), AUTOFIX_DEFAULT_COMMIT_MSG, ), cfgv.Optional('autofix_prs', cfgv.check_bool, True), cfgv.Optional( 'autoupdate_commit_msg', cfgv.check_and(cfgv.check_string, _check_non_empty_string), '[pre-commit.ci] pre-commit autoupdate', ), cfgv.Optional( 'autoupdate_schedule', cfgv.check_one_of(('weekly', 'monthly', 'quarterly')), 'weekly', ), cfgv.Optional('skip', cfgv.check_array(cfgv.check_string), []), cfgv.Optional('submodules', cfgv.check_bool, False), ) SCHEMA = cfgv.Map( 'Config', None, # to cross-validate hook values cfgv.RequiredRecurse('repos', cfgv.Array(CONFIG_REPO_DICT)), # our configuration cfgv.OptionalRecurse('ci', CI_DICT, {}),
import re from typing import Any from typing import Dict from typing import List from typing import NamedTuple from typing import Pattern import cfgv DEFAULT_GENERATE_CONFIG_FILENAME = 'generate_config.yaml' SCHEMA = cfgv.Map( 'Config', 'repo', cfgv.Required('repo', cfgv.check_string), cfgv.Required('database', cfgv.check_string), cfgv.Optional('repo_type', cfgv.check_one_of(['git', 'hg']), 'git'), cfgv.Optional('skip_default_metrics', cfgv.check_bool, False), cfgv.Optional( 'metric_package_names', cfgv.check_array(cfgv.check_string), [], ), cfgv.Optional('exclude', cfgv.check_regex, '^$'), ) class GenerateOptions(NamedTuple): skip_default_metrics: bool metric_package_names: List[str] repo: str repo_type: str