33import logging
44import pipes
55import sys
6+ from typing import Any
7+ from typing import Dict
8+ from typing import Optional
9+ from typing import Sequence
610
711import cfgv
812from aspy .yaml import ordered_load
1822check_string_regex = cfgv .check_and (cfgv .check_string , cfgv .check_regex )
1923
2024
21- def check_type_tag (tag ) :
25+ def check_type_tag (tag : str ) -> None :
2226 if tag not in ALL_TAGS :
2327 raise cfgv .ValidationError (
2428 'Type tag {!r} is not recognized. '
2529 'Try upgrading identify and pre-commit?' .format (tag ),
2630 )
2731
2832
29- def check_min_version (version ) :
33+ def check_min_version (version : str ) -> None :
3034 if parse_version (version ) > parse_version (C .VERSION ):
3135 raise cfgv .ValidationError (
3236 'pre-commit version {} is required but version {} is installed. '
@@ -36,7 +40,7 @@ def check_min_version(version):
3640 )
3741
3842
39- def _make_argparser (filenames_help ) :
43+ def _make_argparser (filenames_help : str ) -> argparse . ArgumentParser :
4044 parser = argparse .ArgumentParser ()
4145 parser .add_argument ('filenames' , nargs = '*' , help = filenames_help )
4246 parser .add_argument ('-V' , '--version' , action = 'version' , version = C .VERSION )
@@ -86,7 +90,7 @@ class InvalidManifestError(FatalError):
8690)
8791
8892
89- def validate_manifest_main (argv = None ):
93+ def validate_manifest_main (argv : Optional [ Sequence [ str ]] = None ) -> int :
9094 parser = _make_argparser ('Manifest filenames.' )
9195 args = parser .parse_args (argv )
9296 ret = 0
@@ -107,15 +111,15 @@ class MigrateShaToRev:
107111 key = 'rev'
108112
109113 @staticmethod
110- def _cond (key ) :
114+ def _cond (key : str ) -> cfgv . Conditional :
111115 return cfgv .Conditional (
112116 key , cfgv .check_string ,
113117 condition_key = 'repo' ,
114118 condition_value = cfgv .NotIn (LOCAL , META ),
115119 ensure_absent = True ,
116120 )
117121
118- def check (self , dct ) :
122+ def check (self , dct : Dict [ str , Any ]) -> None :
119123 if dct .get ('repo' ) in {LOCAL , META }:
120124 self ._cond ('rev' ).check (dct )
121125 self ._cond ('sha' ).check (dct )
@@ -126,14 +130,14 @@ def check(self, dct):
126130 else :
127131 self ._cond ('rev' ).check (dct )
128132
129- def apply_default (self , dct ) :
133+ def apply_default (self , dct : Dict [ str , Any ]) -> None :
130134 if 'sha' in dct :
131135 dct ['rev' ] = dct .pop ('sha' )
132136
133137 remove_default = cfgv .Required .remove_default
134138
135139
136- def _entry (modname ) :
140+ def _entry (modname : str ) -> str :
137141 """the hook `entry` is passed through `shlex.split()` by the command
138142 runner, so to prevent issues with spaces and backslashes (on Windows)
139143 it must be quoted here.
@@ -143,13 +147,21 @@ def _entry(modname):
143147 )
144148
145149
146- def warn_unknown_keys_root (extra , orig_keys , dct ):
150+ def warn_unknown_keys_root (
151+ extra : Sequence [str ],
152+ orig_keys : Sequence [str ],
153+ dct : Dict [str , str ],
154+ ) -> None :
147155 logger .warning (
148156 'Unexpected key(s) present at root: {}' .format (', ' .join (extra )),
149157 )
150158
151159
152- def warn_unknown_keys_repo (extra , orig_keys , dct ):
160+ def warn_unknown_keys_repo (
161+ extra : Sequence [str ],
162+ orig_keys : Sequence [str ],
163+ dct : Dict [str , str ],
164+ ) -> None :
153165 logger .warning (
154166 'Unexpected key(s) present on {}: {}' .format (
155167 dct ['repo' ], ', ' .join (extra ),
@@ -281,7 +293,7 @@ class InvalidConfigError(FatalError):
281293 pass
282294
283295
284- def ordered_load_normalize_legacy_config (contents ) :
296+ def ordered_load_normalize_legacy_config (contents : str ) -> Dict [ str , Any ] :
285297 data = ordered_load (contents )
286298 if isinstance (data , list ):
287299 # TODO: Once happy, issue a deprecation warning and instructions
@@ -298,7 +310,7 @@ def ordered_load_normalize_legacy_config(contents):
298310)
299311
300312
301- def validate_config_main (argv = None ):
313+ def validate_config_main (argv : Optional [ Sequence [ str ]] = None ) -> int :
302314 parser = _make_argparser ('Config filenames.' )
303315 args = parser .parse_args (argv )
304316 ret = 0
0 commit comments