71
71
from usethis ._io import Key , KeyValueFileManager
72
72
73
73
ResolutionT : TypeAlias = Literal ["first" , "first_content" , "bespoke" ]
74
+ Rule : TypeAlias = str
74
75
75
76
76
77
class ConfigSpec (BaseModel ):
@@ -546,7 +547,7 @@ def update_bitbucket_steps(self) -> None:
546
547
):
547
548
remove_bitbucket_step_from_default (step )
548
549
549
- def get_associated_ruff_rules (self ) -> list [str ]:
550
+ def get_associated_ruff_rules (self ) -> list [Rule ]:
550
551
"""Get the Ruff rule codes associated with the tool.
551
552
552
553
These are managed rules and it is assumed that they can be removed if the tool
@@ -557,22 +558,22 @@ def get_associated_ruff_rules(self) -> list[str]:
557
558
# https://github.com/nathanjmcdougall/usethis-python/issues/499
558
559
return []
559
560
560
- def is_managed_rule (self , rule : str ) -> bool :
561
+ def is_managed_rule (self , rule : Rule ) -> bool :
561
562
"""Determine if a rule is managed by this tool."""
562
563
return False
563
564
564
- def select_rules (self , rules : list [str ]) -> None :
565
+ def select_rules (self , rules : list [Rule ]) -> None :
565
566
"""Select the rules managed by the tool.
566
567
567
568
These rules are not validated; it is assumed they are valid rules for the tool,
568
569
and that the tool will be able to manage them.
569
570
"""
570
571
571
- def get_selected_rules (self ) -> list [str ]:
572
+ def get_selected_rules (self ) -> list [Rule ]:
572
573
"""Get the rules managed by the tool that are currently selected."""
573
574
return []
574
575
575
- def ignore_rules (self , rules : list [str ]) -> None :
576
+ def ignore_rules (self , rules : list [Rule ]) -> None :
576
577
"""Ignore rules managed by the tool.
577
578
578
579
Ignoring a rule is different from deselecting it - it means that even if it
@@ -583,11 +584,11 @@ def ignore_rules(self, rules: list[str]) -> None:
583
584
and that the tool will be able to manage them.
584
585
"""
585
586
586
- def get_ignored_rules (self ) -> list [str ]:
587
+ def get_ignored_rules (self ) -> list [Rule ]:
587
588
"""Get the ignored rules managed by the tool."""
588
589
return []
589
590
590
- def deselect_rules (self , rules : list [str ]) -> None :
591
+ def deselect_rules (self , rules : list [Rule ]) -> None :
591
592
"""Deselect the rules managed by the tool.
592
593
593
594
Any rules that aren't already selected are ignored.
@@ -948,24 +949,24 @@ def get_bitbucket_steps(self) -> list[BitbucketStep]:
948
949
)
949
950
]
950
951
951
- def is_managed_rule (self , rule : str ) -> bool :
952
+ def is_managed_rule (self , rule : Rule ) -> bool :
952
953
return rule .startswith ("DEP" ) and rule [3 :].isdigit ()
953
954
954
- def select_rules (self , rules : list [str ]) -> None :
955
+ def select_rules (self , rules : list [Rule ]) -> None :
955
956
"""Does nothing for deptry - all rules are automatically enabled by default."""
956
957
957
- def get_selected_rules (self ) -> list [str ]:
958
+ def get_selected_rules (self ) -> list [Rule ]:
958
959
"""No notion of selection for deptry.
959
960
960
961
This doesn't mean rules won't be enabled, it just means we don't keep track
961
962
of selection for them.
962
963
"""
963
964
return []
964
965
965
- def deselect_rules (self , rules : list [str ]) -> None :
966
+ def deselect_rules (self , rules : list [Rule ]) -> None :
966
967
"""Does nothing for deptry - all rules are automatically enabled by default."""
967
968
968
- def ignore_rules (self , rules : list [str ]) -> None :
969
+ def ignore_rules (self , rules : list [Rule ]) -> None :
969
970
rules = sorted (set (rules ) - set (self .get_ignored_rules ()))
970
971
971
972
if not rules :
@@ -982,11 +983,11 @@ def ignore_rules(self, rules: list[str]) -> None:
982
983
keys = self ._get_ignore_keys (file_manager )
983
984
file_manager .extend_list (keys = keys , values = rules )
984
985
985
- def get_ignored_rules (self ) -> list [str ]:
986
+ def get_ignored_rules (self ) -> list [Rule ]:
986
987
(file_manager ,) = self .get_active_config_file_managers ()
987
988
keys = self ._get_ignore_keys (file_manager )
988
989
try :
989
- rules : list [str ] = file_manager [keys ]
990
+ rules : list [Rule ] = file_manager [keys ]
990
991
except (KeyError , FileNotFoundError ):
991
992
rules = []
992
993
@@ -1559,7 +1560,7 @@ def get_config_spec(self) -> ConfigSpec:
1559
1560
def get_managed_files (self ) -> list [Path ]:
1560
1561
return [Path (".pytest.ini" ), Path ("pytest.ini" ), Path ("tests/conftest.py" )]
1561
1562
1562
- def get_associated_ruff_rules (self ) -> list [str ]:
1563
+ def get_associated_ruff_rules (self ) -> list [Rule ]:
1563
1564
return ["PT" ]
1564
1565
1565
1566
def get_active_config_file_managers (self ) -> set [KeyValueFileManager ]:
@@ -1814,7 +1815,7 @@ def get_bitbucket_steps(self) -> list[BitbucketStep]:
1814
1815
)
1815
1816
]
1816
1817
1817
- def select_rules (self , rules : list [str ]) -> None :
1818
+ def select_rules (self , rules : list [Rule ]) -> None :
1818
1819
"""Add Ruff rules to the project."""
1819
1820
rules = sorted (set (rules ) - set (self .get_selected_rules ()))
1820
1821
@@ -1832,7 +1833,7 @@ def select_rules(self, rules: list[str]) -> None:
1832
1833
keys = self ._get_select_keys (file_manager )
1833
1834
file_manager .extend_list (keys = keys , values = rules )
1834
1835
1835
- def ignore_rules (self , rules : list [str ]) -> None :
1836
+ def ignore_rules (self , rules : list [Rule ]) -> None :
1836
1837
"""Ignore Ruff rules in the project."""
1837
1838
rules = sorted (set (rules ) - set (self .get_ignored_rules ()))
1838
1839
@@ -1850,7 +1851,7 @@ def ignore_rules(self, rules: list[str]) -> None:
1850
1851
keys = self ._get_ignore_keys (file_manager )
1851
1852
file_manager .extend_list (keys = keys , values = rules )
1852
1853
1853
- def deselect_rules (self , rules : list [str ]) -> None :
1854
+ def deselect_rules (self , rules : list [Rule ]) -> None :
1854
1855
"""Ensure Ruff rules are not selected in the project."""
1855
1856
rules = list (set (rules ) & set (self .get_selected_rules ()))
1856
1857
@@ -1868,24 +1869,24 @@ def deselect_rules(self, rules: list[str]) -> None:
1868
1869
keys = self ._get_select_keys (file_manager )
1869
1870
file_manager .remove_from_list (keys = keys , values = rules )
1870
1871
1871
- def get_selected_rules (self ) -> list [str ]:
1872
+ def get_selected_rules (self ) -> list [Rule ]:
1872
1873
"""Get the Ruff rules selected in the project."""
1873
1874
(file_manager ,) = self .get_active_config_file_managers ()
1874
1875
1875
1876
keys = self ._get_select_keys (file_manager )
1876
1877
try :
1877
- rules : list [str ] = file_manager [keys ]
1878
+ rules : list [Rule ] = file_manager [keys ]
1878
1879
except (KeyError , FileNotFoundError ):
1879
1880
rules = []
1880
1881
1881
1882
return rules
1882
1883
1883
- def get_ignored_rules (self ) -> list [str ]:
1884
+ def get_ignored_rules (self ) -> list [Rule ]:
1884
1885
"""Get the Ruff rules ignored in the project."""
1885
1886
(file_manager ,) = self .get_active_config_file_managers ()
1886
1887
keys = self ._get_ignore_keys (file_manager )
1887
1888
try :
1888
- rules : list [str ] = file_manager [keys ]
1889
+ rules : list [Rule ] = file_manager [keys ]
1889
1890
except (KeyError , FileNotFoundError ):
1890
1891
rules = []
1891
1892
@@ -1930,7 +1931,7 @@ def _are_pydocstyle_rules_selected(self) -> bool:
1930
1931
return False
1931
1932
1932
1933
@staticmethod
1933
- def _is_pydocstyle_rule (rule : str ) -> bool :
1934
+ def _is_pydocstyle_rule (rule : Rule ) -> bool :
1934
1935
return [d for d in rule if d .isalpha ()] == ["D" ]
1935
1936
1936
1937
def _get_select_keys (self , file_manager : KeyValueFileManager ) -> list [str ]:
0 commit comments