diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-03-11 08:03:07 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-03-11 08:03:07 +0000 |
commit | dcc28a9a987457acf9e2c8249a9df5e40143eba3 (patch) | |
tree | a3b44db00ff34f0dee0406875e7320c4dce3041e /gitlint-core/gitlint/rule_finder.py | |
parent | Releasing debian version 0.19.0~dev-1. (diff) | |
download | gitlint-dcc28a9a987457acf9e2c8249a9df5e40143eba3.tar.xz gitlint-dcc28a9a987457acf9e2c8249a9df5e40143eba3.zip |
Merging upstream version 0.19.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gitlint-core/gitlint/rule_finder.py')
-rw-r--r-- | gitlint-core/gitlint/rule_finder.py | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/gitlint-core/gitlint/rule_finder.py b/gitlint-core/gitlint/rule_finder.py index 11665cf..810faa9 100644 --- a/gitlint-core/gitlint/rule_finder.py +++ b/gitlint-core/gitlint/rule_finder.py @@ -1,10 +1,10 @@ import fnmatch +import importlib import inspect import os import sys -import importlib -from gitlint import rules, options +from gitlint import options, rules def find_rule_classes(extra_path): @@ -55,7 +55,7 @@ def find_rule_classes(extra_path): importlib.import_module(module) except Exception as e: - raise rules.UserRuleError(f"Error while importing extra-path module '{module}': {e}") + raise rules.UserRuleError(f"Error while importing extra-path module '{module}': {e}") from e # Find all rule classes in the module. We do this my inspecting all members of the module and checking # 1) is it a class, if not, skip @@ -67,11 +67,7 @@ def find_rule_classes(extra_path): for _, clazz in inspect.getmembers(sys.modules[module]) if inspect.isclass(clazz) # check isclass to ensure clazz.__module__ exists and clazz.__module__ == module # ignore imported classes - and ( - issubclass(clazz, rules.LineRule) - or issubclass(clazz, rules.CommitRule) - or issubclass(clazz, rules.ConfigurationRule) - ) + and (issubclass(clazz, (rules.LineRule, rules.CommitRule, rules.ConfigurationRule))) ] ) @@ -82,7 +78,7 @@ def find_rule_classes(extra_path): return rule_classes -def assert_valid_rule_class(clazz, rule_type="User-defined"): # pylint: disable=too-many-branches +def assert_valid_rule_class(clazz, rule_type="User-defined"): # noqa: PLR0912 (too many branches) """ Asserts that a given rule clazz is valid by checking a number of its properties: - Rules must extend from LineRule, CommitRule or ConfigurationRule @@ -97,11 +93,7 @@ def assert_valid_rule_class(clazz, rule_type="User-defined"): # pylint: disable """ # Rules must extend from LineRule, CommitRule or ConfigurationRule - if not ( - issubclass(clazz, rules.LineRule) - or issubclass(clazz, rules.CommitRule) - or issubclass(clazz, rules.ConfigurationRule) - ): + if not issubclass(clazz, (rules.LineRule, rules.CommitRule, rules.ConfigurationRule)): msg = ( f"{rule_type} rule class '{clazz.__name__}' " f"must extend from {rules.CommitRule.__module__}.{rules.LineRule.__name__}, " @@ -142,17 +134,18 @@ def assert_valid_rule_class(clazz, rule_type="User-defined"): # pylint: disable # Line/Commit rules must have a `validate` method # We use isroutine() as it's both python 2 and 3 compatible. Details: http://stackoverflow.com/a/17019998/381010 - if issubclass(clazz, rules.LineRule) or issubclass(clazz, rules.CommitRule): + if issubclass(clazz, (rules.LineRule, rules.CommitRule)): if not hasattr(clazz, "validate") or not inspect.isroutine(clazz.validate): raise rules.UserRuleError(f"{rule_type} rule class '{clazz.__name__}' must have a 'validate' method") + # Configuration rules must have an `apply` method - elif issubclass(clazz, rules.ConfigurationRule): + elif issubclass(clazz, rules.ConfigurationRule): # noqa: SIM102 if not hasattr(clazz, "apply") or not inspect.isroutine(clazz.apply): msg = f"{rule_type} Configuration rule class '{clazz.__name__}' must have an 'apply' method" raise rules.UserRuleError(msg) # LineRules must have a valid target: rules.CommitMessageTitle or rules.CommitMessageBody - if issubclass(clazz, rules.LineRule): + if issubclass(clazz, rules.LineRule): # noqa: SIM102 if clazz.target not in [rules.CommitMessageTitle, rules.CommitMessageBody]: msg = ( f"The target attribute of the {rule_type.lower()} LineRule class '{clazz.__name__}' " |