Skip to content

Unclear how plugins should indicate a configuration failure #1108

@asottile

Description

@asottile

In GitLab by @pjacock on Aug 6, 2019, 02:42

I have read http://flake8.pycqa.org/en/latest/plugin-development/plugin-parameters.html#accessing-parsed-options

I am working on a plugin which successfully sets and receives additional configuration values. However, I wish to validate the configuration once (as early as possible), and may need to indicate an error to flake8 signalling it to abort. The simple option of raising a ValueError within parse_options does not work gracefully:

...

    @classmethod
    def add_options(cls, parser):
        ...
        # Define option "--our_config_file"

    @classmethod
    def parse_options(cls, options):
        ...
        if not os.path.isfile(options.our_config_file):
            raise ValueError("Could not find specified file: %r" % options.our_config_file)

...

This has the desired effect of aborting flake8 early, but with an ugly traceback.

Is there an expected approach I have overlooked, or would documenting this with a try/except in flake8 be preferred?

I think the change would be in the provide_options method here:

https://gitlab.com/pycqa/flake8/blob/3.7.8/src/flake8/plugins/manager.py#L186

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions