From b230707007ce561c306d49deab1cb2cd6e85dff7 Mon Sep 17 00:00:00 2001 From: hunghoang-saritasa Date: Mon, 12 Dec 2022 14:41:19 +0700 Subject: [PATCH] Support flake8 3.x onwards compatibility --- flake8_filename/__init__.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/flake8_filename/__init__.py b/flake8_filename/__init__.py index d11617a..9eb192f 100644 --- a/flake8_filename/__init__.py +++ b/flake8_filename/__init__.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from flake8_filename import rules +import optparse __version__ = '1.0.0' @@ -15,6 +16,23 @@ class FilenameChecker(object): max_check = 50 filename_checks = dict.fromkeys(["filename_check{}".format(x) for x in range(min_check, max_check)], {}) + @classmethod + def register_options(cls, parser, *args, **kwargs): + """Options handler to support cross compatibility. + + Args: + parser (OptionsManager): + """ + try: + # Flake8 3.x registration + parser.add_option(*args, **kwargs) + except (optparse.OptionError, TypeError): + # Flake8 2.x registration + parse_from_config = kwargs.pop('parse_from_config', False) + option = parser.add_option(*args, **kwargs) + if parse_from_config: + parser.config_options.append(option.get_opt_string().lstrip('-')) + @classmethod def add_options(cls, parser): """Required by flake8 @@ -26,7 +44,7 @@ def add_options(cls, parser): kwargs = {'action': 'store', 'default': '', 'parse_from_config': True, 'comma_separated_list': True} for num in range(cls.min_check, cls.max_check): - parser.add_option(None, "--filename_check{}".format(num), **kwargs) + cls.register_options(parser, "--filename_check{}".format(num), **kwargs) @classmethod def parse_options(cls, options):