File tree Expand file tree Collapse file tree 1 file changed +16
-3
lines changed Expand file tree Collapse file tree 1 file changed +16
-3
lines changed Original file line number Diff line number Diff line change 11import os
22import sys
3+ import typing
34import uuid
45from dataclasses import dataclass
56from importlib .metadata import version
@@ -51,6 +52,19 @@ def path_from_uri(uri: str) -> Path | None:
5152FullClientSettings = TypedDict ("FullClientSettings" , {"auto-typing-final" : ClientSettings })
5253
5354
55+ def parse_settings (raw_full_client_settings : Any ) -> FullClientSettings | None : # noqa: ANN401
56+ if not isinstance (raw_full_client_settings , dict ):
57+ return None
58+ client_settings : Final = raw_full_client_settings .get ("auto-typing-final" )
59+ if not isinstance (client_settings , dict ):
60+ return None
61+ if client_settings .get ("import-style" ) not in {"typing-final" , "final" }:
62+ return None
63+ if not isinstance (client_settings .get ("ignore-global-vars" ), bool ):
64+ return None
65+ return typing .cast ("FullClientSettings" , raw_full_client_settings )
66+
67+
5468@attr .define
5569class Fix :
5670 message : str
@@ -84,9 +98,8 @@ class Service:
8498
8599 @staticmethod
86100 def try_from_settings (ls_name : str , settings : Any ) -> "Service | None" : # noqa: ANN401
87- try :
88- validated_settings : Final = cattrs .structure (settings , FullClientSettings )
89- except cattrs .BaseValidationError :
101+ validated_settings : Final = parse_settings (settings )
102+ if validated_settings is None :
90103 return None
91104
92105 executable_path : Final = Path (sys .executable )
You can’t perform that action at this time.
0 commit comments