@@ -28,6 +28,10 @@ def build_modules_register(
2828Config : TypeAlias = Mapping [str , "bool | Config" ]
2929
3030
31+ def _prune (checks : list [str ], key : str ) -> list [str ]:
32+ return [k for k in checks if not (key .startswith (k + "." ) or k == key )]
33+
34+
3135def _flatten_config (config : Config , prefix : str = "" ) -> dict [str , bool ]:
3236 return dict (
3337 chain .from_iterable (
@@ -71,14 +75,20 @@ def get_all_enabled(
7175 self , enabled : dict [str , bool ] = DEFAULT ["checks" ]
7276 ) -> list [Check ]:
7377 """Filter registered checks by config values based on their keys."""
74- flattened = _flatten_config (enabled )
75- self .enabled_checks = flattened
78+ self .enabled_checks = dict (sorted (
79+ _flatten_config (enabled ).items (), key = lambda x : x [0 ].count ('.' )
80+ ))
7681
7782 enabled_checks : list [str ] = []
7883 skipped_checks : list [str ] = []
7984
8085 for key , key_enabled in self .enabled_checks .items ():
81- (skipped_checks , enabled_checks )[key_enabled ].append (key )
86+ if key_enabled :
87+ skipped_checks = _prune (skipped_checks , key )
88+ enabled_checks .append (key )
89+ else :
90+ enabled_checks = _prune (enabled_checks , key )
91+ skipped_checks .append (key )
8292
8393 return [
8494 check
0 commit comments