55import collections
66import functools
77
8+ import cfgv
89from aspy .yaml import ordered_load
910from identify .identify import ALL_TAGS
1011
1112import pre_commit .constants as C
12- from pre_commit import schema
1313from pre_commit .error_handler import FatalError
1414from pre_commit .languages .all import all_languages
1515
1616
17- def check_language (v ):
18- if v not in all_languages :
19- raise schema .ValidationError (
20- 'Expected {} to be in {!r}' .format (v , all_languages ),
21- )
22-
23-
2417def check_type_tag (tag ):
2518 if tag not in ALL_TAGS :
26- raise schema .ValidationError (
19+ raise cfgv .ValidationError (
2720 'Type tag {!r} is not recognized. '
2821 'Try upgrading identify and pre-commit?' .format (tag ),
2922 )
@@ -36,49 +29,48 @@ def _make_argparser(filenames_help):
3629 return parser
3730
3831
39- MANIFEST_HOOK_DICT = schema .Map (
32+ MANIFEST_HOOK_DICT = cfgv .Map (
4033 'Hook' , 'id' ,
4134
42- schema .Required ('id' , schema .check_string ),
43- schema .Required ('name' , schema .check_string ),
44- schema .Required ('entry' , schema .check_string ),
45- schema .Required (
46- 'language' , schema .check_and (schema .check_string , check_language ),
35+ cfgv .Required ('id' , cfgv .check_string ),
36+ cfgv .Required ('name' , cfgv .check_string ),
37+ cfgv .Required ('entry' , cfgv .check_string ),
38+ cfgv .Required (
39+ 'language' ,
40+ cfgv .check_and (cfgv .check_string , cfgv .check_one_of (all_languages )),
4741 ),
4842
49- schema .Optional (
50- 'files' , schema .check_and (schema .check_string , schema .check_regex ),
51- '' ,
43+ cfgv .Optional (
44+ 'files' , cfgv .check_and (cfgv .check_string , cfgv .check_regex ), '' ,
5245 ),
53- schema .Optional (
54- 'exclude' , schema .check_and (schema .check_string , schema .check_regex ),
55- '^$' ,
46+ cfgv .Optional (
47+ 'exclude' , cfgv .check_and (cfgv .check_string , cfgv .check_regex ), '^$' ,
5648 ),
57- schema .Optional ('types' , schema .check_array (check_type_tag ), ['file' ]),
58- schema .Optional ('exclude_types' , schema .check_array (check_type_tag ), []),
49+ cfgv .Optional ('types' , cfgv .check_array (check_type_tag ), ['file' ]),
50+ cfgv .Optional ('exclude_types' , cfgv .check_array (check_type_tag ), []),
5951
60- schema .Optional (
61- 'additional_dependencies' , schema .check_array (schema .check_string ), [],
52+ cfgv .Optional (
53+ 'additional_dependencies' , cfgv .check_array (cfgv .check_string ), [],
6254 ),
63- schema .Optional ('args' , schema .check_array (schema .check_string ), []),
64- schema .Optional ('always_run' , schema .check_bool , False ),
65- schema .Optional ('pass_filenames' , schema .check_bool , True ),
66- schema .Optional ('description' , schema .check_string , '' ),
67- schema .Optional ('language_version' , schema .check_string , 'default' ),
68- schema .Optional ('log_file' , schema .check_string , '' ),
69- schema .Optional ('minimum_pre_commit_version' , schema .check_string , '0' ),
70- schema .Optional ('stages' , schema .check_array (schema .check_string ), []),
71- schema .Optional ('verbose' , schema .check_bool , False ),
55+ cfgv .Optional ('args' , cfgv .check_array (cfgv .check_string ), []),
56+ cfgv .Optional ('always_run' , cfgv .check_bool , False ),
57+ cfgv .Optional ('pass_filenames' , cfgv .check_bool , True ),
58+ cfgv .Optional ('description' , cfgv .check_string , '' ),
59+ cfgv .Optional ('language_version' , cfgv .check_string , 'default' ),
60+ cfgv .Optional ('log_file' , cfgv .check_string , '' ),
61+ cfgv .Optional ('minimum_pre_commit_version' , cfgv .check_string , '0' ),
62+ cfgv .Optional ('stages' , cfgv .check_array (cfgv .check_string ), []),
63+ cfgv .Optional ('verbose' , cfgv .check_bool , False ),
7264)
73- MANIFEST_SCHEMA = schema .Array (MANIFEST_HOOK_DICT )
65+ MANIFEST_SCHEMA = cfgv .Array (MANIFEST_HOOK_DICT )
7466
7567
7668class InvalidManifestError (FatalError ):
7769 pass
7870
7971
8072load_manifest = functools .partial (
81- schema .load_from_filename ,
73+ cfgv .load_from_filename ,
8274 schema = MANIFEST_SCHEMA ,
8375 load_strategy = ordered_load ,
8476 exc_tp = InvalidManifestError ,
@@ -101,40 +93,40 @@ def validate_manifest_main(argv=None):
10193_LOCAL_SENTINEL = 'local'
10294_META_SENTINEL = 'meta'
10395
104- CONFIG_HOOK_DICT = schema .Map (
96+ CONFIG_HOOK_DICT = cfgv .Map (
10597 'Hook' , 'id' ,
10698
107- schema .Required ('id' , schema .check_string ),
99+ cfgv .Required ('id' , cfgv .check_string ),
108100
109101 # All keys in manifest hook dict are valid in a config hook dict, but
110102 # are optional.
111103 # No defaults are provided here as the config is merged on top of the
112104 # manifest.
113105 * [
114- schema .OptionalNoDefault (item .key , item .check_fn )
106+ cfgv .OptionalNoDefault (item .key , item .check_fn )
115107 for item in MANIFEST_HOOK_DICT .items
116108 if item .key != 'id'
117109 ]
118110)
119- CONFIG_REPO_DICT = schema .Map (
111+ CONFIG_REPO_DICT = cfgv .Map (
120112 'Repository' , 'repo' ,
121113
122- schema .Required ('repo' , schema .check_string ),
123- schema .RequiredRecurse ('hooks' , schema .Array (CONFIG_HOOK_DICT )),
114+ cfgv .Required ('repo' , cfgv .check_string ),
115+ cfgv .RequiredRecurse ('hooks' , cfgv .Array (CONFIG_HOOK_DICT )),
124116
125- schema .Conditional (
126- 'sha' , schema .check_string ,
117+ cfgv .Conditional (
118+ 'sha' , cfgv .check_string ,
127119 condition_key = 'repo' ,
128- condition_value = schema .NotIn (_LOCAL_SENTINEL , _META_SENTINEL ),
120+ condition_value = cfgv .NotIn (_LOCAL_SENTINEL , _META_SENTINEL ),
129121 ensure_absent = True ,
130122 ),
131123)
132- CONFIG_SCHEMA = schema .Map (
124+ CONFIG_SCHEMA = cfgv .Map (
133125 'Config' , None ,
134126
135- schema .RequiredRecurse ('repos' , schema .Array (CONFIG_REPO_DICT )),
136- schema .Optional ('exclude' , schema .check_regex , '^$' ),
137- schema .Optional ('fail_fast' , schema .check_bool , False ),
127+ cfgv .RequiredRecurse ('repos' , cfgv .Array (CONFIG_REPO_DICT )),
128+ cfgv .Optional ('exclude' , cfgv .check_regex , '^$' ),
129+ cfgv .Optional ('fail_fast' , cfgv .check_bool , False ),
138130)
139131
140132
@@ -160,7 +152,7 @@ def ordered_load_normalize_legacy_config(contents):
160152
161153
162154load_config = functools .partial (
163- schema .load_from_filename ,
155+ cfgv .load_from_filename ,
164156 schema = CONFIG_SCHEMA ,
165157 load_strategy = ordered_load_normalize_legacy_config ,
166158 exc_tp = InvalidConfigError ,
0 commit comments