diff options
Diffstat (limited to 'pylint/checkers/unsupported_version.py')
-rw-r--r-- | pylint/checkers/unsupported_version.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/pylint/checkers/unsupported_version.py b/pylint/checkers/unsupported_version.py new file mode 100644 index 000000000..917d64cba --- /dev/null +++ b/pylint/checkers/unsupported_version.py @@ -0,0 +1,49 @@ +# Copyright (c) 2021 Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> + +# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html +# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE + +"""Checker for features used that are not supported by all python versions +indicated by the py-version setting. +""" + +from astroid import nodes + +from pylint.checkers import BaseChecker +from pylint.checkers.utils import check_messages +from pylint.interfaces import IAstroidChecker +from pylint.lint import PyLinter +from pylint.utils import get_global_option + + +class UnsupportedVersionChecker(BaseChecker): + """Checker for features that are not supported by all python versions + indicated by the py-version setting. + """ + + __implements__ = (IAstroidChecker,) + name = "unsupported_version" + msgs = { + "W1601": ( + "F-strings are not supported by all versions included in the py-version setting", + "using-f-string-in-unsupported-version", + "Used when the py-version set by the user is lower than 3.6 and pylint encounters " + "a f-string.", + ), + } + + def open(self) -> None: + """Initialize visit variables and statistics.""" + py_version = get_global_option(self, "py-version") + self._py36_plus = py_version >= (3, 6) + + @check_messages("using-f-string-in-unsupported-version") + def visit_joinedstr(self, node: nodes.JoinedStr) -> None: + """Check f-strings""" + if not self._py36_plus: + self.add_message("using-f-string-in-unsupported-version", node=node) + + +def register(linter: PyLinter) -> None: + """Required method to auto register this checker""" + linter.register_checker(UnsupportedVersionChecker(linter)) |