1
0
Fork 0
gitlint/gitlint-core/gitlint/deprecation.py
Daniel Baumann 2efee3d3ab
Merging upstream version 0.19.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-13 06:07:32 +01:00

39 lines
1.5 KiB
Python

import logging
LOG = logging.getLogger("gitlint.deprecated")
DEPRECATED_LOG_FORMAT = "%(levelname)s: %(message)s"
class Deprecation:
"""Singleton class that handles deprecation warnings and behavior."""
# LintConfig class that is used to determine deprecation behavior
config = None
# Set of warning messages that have already been logged, to prevent duplicate warnings
warning_msgs = set()
@classmethod
def get_regex_method(cls, rule, regex_option):
"""Returns the regex method to be used for a given rule based on general.regex-style-search option.
Logs a warning if the deprecated re.match method is returned."""
# if general.regex-style-search is set, just return re.search
if cls.config.regex_style_search:
return regex_option.value.search
warning_msg = (
f"{rule.id} - {rule.name}: gitlint will be switching from using Python regex 'match' (match beginning) to "
"'search' (match anywhere) semantics. "
f"Please review your {rule.name}.regex option accordingly. "
"To remove this warning, set general.regex-style-search=True. "
"More details: https://jorisroovers.github.io/gitlint/configuration/#regex-style-search"
)
# Only log warnings once
if warning_msg not in cls.warning_msgs:
log = logging.getLogger("gitlint.deprecated.regex_style_search")
log.warning(warning_msg)
cls.warning_msgs.add(warning_msg)
return regex_option.value.match