1- from __future__ import absolute_import
2- from __future__ import unicode_literals
3-
41import argparse
52import functools
63import logging
74import pipes
85import sys
6+ from typing import Any
7+ from typing import Dict
8+ from typing import Optional
9+ from typing import Sequence
910
1011import cfgv
1112from aspy .yaml import ordered_load
2122check_string_regex = cfgv .check_and (cfgv .check_string , cfgv .check_regex )
2223
2324
24- def check_type_tag (tag ) :
25+ def check_type_tag (tag : str ) -> None :
2526 if tag not in ALL_TAGS :
2627 raise cfgv .ValidationError (
2728 'Type tag {!r} is not recognized. '
2829 'Try upgrading identify and pre-commit?' .format (tag ),
2930 )
3031
3132
32- def check_min_version (version ) :
33+ def check_min_version (version : str ) -> None :
3334 if parse_version (version ) > parse_version (C .VERSION ):
3435 raise cfgv .ValidationError (
3536 'pre-commit version {} is required but version {} is installed. '
@@ -39,7 +40,7 @@ def check_min_version(version):
3940 )
4041
4142
42- def _make_argparser (filenames_help ) :
43+ def _make_argparser (filenames_help : str ) -> argparse . ArgumentParser :
4344 parser = argparse .ArgumentParser ()
4445 parser .add_argument ('filenames' , nargs = '*' , help = filenames_help )
4546 parser .add_argument ('-V' , '--version' , action = 'version' , version = C .VERSION )
@@ -89,7 +90,7 @@ class InvalidManifestError(FatalError):
8990)
9091
9192
92- def validate_manifest_main (argv = None ):
93+ def validate_manifest_main (argv : Optional [ Sequence [ str ]] = None ) -> int :
9394 parser = _make_argparser ('Manifest filenames.' )
9495 args = parser .parse_args (argv )
9596 ret = 0
@@ -106,19 +107,19 @@ def validate_manifest_main(argv=None):
106107META = 'meta'
107108
108109
109- class MigrateShaToRev ( object ) :
110+ class MigrateShaToRev :
110111 key = 'rev'
111112
112113 @staticmethod
113- def _cond (key ) :
114+ def _cond (key : str ) -> cfgv . Conditional :
114115 return cfgv .Conditional (
115116 key , cfgv .check_string ,
116117 condition_key = 'repo' ,
117118 condition_value = cfgv .NotIn (LOCAL , META ),
118119 ensure_absent = True ,
119120 )
120121
121- def check (self , dct ) :
122+ def check (self , dct : Dict [ str , Any ]) -> None :
122123 if dct .get ('repo' ) in {LOCAL , META }:
123124 self ._cond ('rev' ).check (dct )
124125 self ._cond ('sha' ).check (dct )
@@ -129,14 +130,14 @@ def check(self, dct):
129130 else :
130131 self ._cond ('rev' ).check (dct )
131132
132- def apply_default (self , dct ) :
133+ def apply_default (self , dct : Dict [ str , Any ]) -> None :
133134 if 'sha' in dct :
134135 dct ['rev' ] = dct .pop ('sha' )
135136
136137 remove_default = cfgv .Required .remove_default
137138
138139
139- def _entry (modname ) :
140+ def _entry (modname : str ) -> str :
140141 """the hook `entry` is passed through `shlex.split()` by the command
141142 runner, so to prevent issues with spaces and backslashes (on Windows)
142143 it must be quoted here.
@@ -146,13 +147,21 @@ def _entry(modname):
146147 )
147148
148149
149- 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 :
150155 logger .warning (
151156 'Unexpected key(s) present at root: {}' .format (', ' .join (extra )),
152157 )
153158
154159
155- 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 :
156165 logger .warning (
157166 'Unexpected key(s) present on {}: {}' .format (
158167 dct ['repo' ], ', ' .join (extra ),
@@ -202,7 +211,7 @@ def warn_unknown_keys_repo(extra, orig_keys, dct):
202211 if item .key in {'name' , 'language' , 'entry' } else
203212 item
204213 for item in MANIFEST_HOOK_DICT .items
205- ])
214+ ]),
206215)
207216CONFIG_HOOK_DICT = cfgv .Map (
208217 'Hook' , 'id' ,
@@ -217,7 +226,7 @@ def warn_unknown_keys_repo(extra, orig_keys, dct):
217226 cfgv .OptionalNoDefault (item .key , item .check_fn )
218227 for item in MANIFEST_HOOK_DICT .items
219228 if item .key != 'id'
220- ]
229+ ],
221230)
222231CONFIG_REPO_DICT = cfgv .Map (
223232 'Repository' , 'repo' ,
@@ -243,7 +252,7 @@ def warn_unknown_keys_repo(extra, orig_keys, dct):
243252DEFAULT_LANGUAGE_VERSION = cfgv .Map (
244253 'DefaultLanguageVersion' , None ,
245254 cfgv .NoAdditionalKeys (all_languages ),
246- * [cfgv .Optional (x , cfgv .check_string , C .DEFAULT ) for x in all_languages ]
255+ * [cfgv .Optional (x , cfgv .check_string , C .DEFAULT ) for x in all_languages ],
247256)
248257CONFIG_SCHEMA = cfgv .Map (
249258 'Config' , None ,
@@ -284,7 +293,7 @@ class InvalidConfigError(FatalError):
284293 pass
285294
286295
287- def ordered_load_normalize_legacy_config (contents ) :
296+ def ordered_load_normalize_legacy_config (contents : str ) -> Dict [ str , Any ] :
288297 data = ordered_load (contents )
289298 if isinstance (data , list ):
290299 # TODO: Once happy, issue a deprecation warning and instructions
@@ -301,7 +310,7 @@ def ordered_load_normalize_legacy_config(contents):
301310)
302311
303312
304- def validate_config_main (argv = None ):
313+ def validate_config_main (argv : Optional [ Sequence [ str ]] = None ) -> int :
305314 parser = _make_argparser ('Config filenames.' )
306315 args = parser .parse_args (argv )
307316 ret = 0
0 commit comments