Skip to content

Commit c1b06f6

Browse files
committed
feat: properly override configuration
1 parent 6fd7193 commit c1b06f6

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

proselint/registry/__init__.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ def build_modules_register(
2828
Config: 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+
3135
def _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

Comments
 (0)