@@ -102,20 +102,27 @@ def _need_installed():
102102 _write_state (cmd_runner , venv , state )
103103
104104
105- def _validate_minimum_version (hook ):
106- hook_version = pkg_resources .parse_version (
107- hook ['minimum_pre_commit_version' ],
108- )
109- if hook_version > C .VERSION_PARSED :
105+ def _hook (* hook_dicts ):
106+ ret , rest = dict (hook_dicts [0 ]), hook_dicts [1 :]
107+ for dct in rest :
108+ ret .update (dct )
109+
110+ version = pkg_resources .parse_version (ret ['minimum_pre_commit_version' ])
111+ if version > C .VERSION_PARSED :
110112 logger .error (
111- 'The hook `{}` requires pre-commit version {} but '
112- 'version {} is installed. '
113+ 'The hook `{}` requires pre-commit version {} but version {} '
114+ 'is installed. '
113115 'Perhaps run `pip install --upgrade pre-commit`.' .format (
114- hook ['id' ], hook_version , C .VERSION_PARSED ,
116+ ret ['id' ], version , C .VERSION_PARSED ,
115117 ),
116118 )
117119 exit (1 )
118- return hook
120+
121+ if ret ['language_version' ] == 'default' :
122+ language = languages [ret ['language' ]]
123+ ret ['language_version' ] = language .get_default_version ()
124+
125+ return ret
119126
120127
121128class Repository (object ):
@@ -161,10 +168,8 @@ def hooks(self):
161168 )
162169 exit (1 )
163170
164- _validate_minimum_version (self .manifest .hooks [hook ['id' ]])
165-
166171 return tuple (
167- (hook ['id' ], dict (self .manifest .hooks [hook ['id' ]], ** hook ))
172+ (hook ['id' ], _hook (self .manifest .hooks [hook ['id' ]], hook ))
168173 for hook in self .repo_config ['hooks' ]
169174 )
170175
@@ -215,16 +220,14 @@ def manifest(self):
215220
216221 @cached_property
217222 def hooks (self ):
223+ def _from_manifest_dct (dct ):
224+ dct = validate (dct , MANIFEST_HOOK_DICT )
225+ dct = apply_defaults (dct , MANIFEST_HOOK_DICT )
226+ dct = _hook (dct )
227+ return dct
228+
218229 return tuple (
219- (
220- hook ['id' ],
221- _validate_minimum_version (
222- apply_defaults (
223- validate (hook , MANIFEST_HOOK_DICT ),
224- MANIFEST_HOOK_DICT ,
225- ),
226- ),
227- )
230+ (hook ['id' ], _from_manifest_dct (hook ))
228231 for hook in self .repo_config ['hooks' ]
229232 )
230233
0 commit comments