Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List of missing arguments not displayed in D417 Missing argument description error #14

Open
martinResearch opened this issue Mar 11, 2022 · 15 comments

Comments

@martinResearch
Copy link

When I get D417 errors the list of missing argument is not displayed in the error message.
It would be much more convenient to have the list of missing argument displayed in the error message.

Looking at the code this list get generated here
but does not end up being displayed in the final error message.

example:

def f(a: str, b: str) -> None:
    """
    Simple function

    Arguments:
    ---------
    a: some argument
    """
    print(a+b)

yields

D417 Missing argument descriptions in the docstring

while I would like to get

D417 Missing argument descriptions in the docstring for argument b

@martinResearch
Copy link
Author

actually it seems to be working when using directly pydocstyle, but not when done through flake8 so it seems like it is a flake8 problem instead.

@sigmavirus24
Copy link
Member

Interesting. This should probably be opened against flake8-docstrings as that has to coalesce a violation to what Flake8 expects. I expect we're relying on message there from https://github.com/PyCQA/pydocstyle/blob/1011866e6ea91a1fbcb4b01520d2a348becc7de1/src/pydocstyle/violations.py#L17 but it might not be doing the right thing (as message would be building everything but unfortunately includes the code which might be why it doesn't use that).

@sigmavirus24 sigmavirus24 transferred this issue from PyCQA/pydocstyle Mar 11, 2022
@sigmavirus24
Copy link
Member

I transferred it flake8-docstrings for you

@asottile
Copy link
Member

it looks like .message includes that context but has a different problem -- it adds an extra : in the message after the code (which makes it incompatible with flake8)

two ideas there:

  1. replace out the colon (seems a little fragile)
  2. reimplement pydocstyle's additional message logic (also seems kinda fragile)

@martinResearch
Copy link
Author

I am not sure to understand why option 1 would be fragile. What do you think could break this solution? If flake8 does not handle error messages with ":" then it seems sensible to replace these, at the cost of denaturing some error messages. Alternatively, could flake8 be modified to handle error messages with ":" ?

@asottile
Copy link
Member

asottile commented Mar 17, 2022

pydocstyle has changed the format twice now looking at the git history of flake8-docstrings and I see no reason it wouldn;t change again

changing flake8 is kinda out of the question -- a single plugin doing it wrong shouldn't loosen the framework

@martinResearch
Copy link
Author

martinResearch commented Mar 17, 2022

"a single plugin doing it wrong" not sure to have enough context to understand why using a ":" in the error message is wrong. Is it wrong independently of flake8's requirements? If so, is it documented anywhere that error messages should not use ":" outside the flake8 context? Or is that wrong only in the sense that it is not supported by flake8 and no other flake8 plug-in do that ? If so, why would that be a negative thing to loosen flake8 requirement ? it seems to me like it would then be an improvement of flake8 to support it, and could potentially benefit other plugins.

@asottile
Copy link
Member

yes, the documented message format is code then space then message

changing that would break lots of things

@s0undt3ch
Copy link

If the format is [code] [message], then that's easy to parse, and message could virtually contain anything, so why restrain it?

@s0undt3ch
Copy link

In my case, pydocstyle reports

src/pytestshellutils/shell.py:327 in public method `run`:
        D417: Missing argument descriptions in the docstring (argument(s) cwd, env are missing descriptions in 'run' docstring)

While flake8 ...

flake8...............................................................................Failed
- hook id: flake8
- exit code: 1

src/pytestshellutils/shell.py:327:1: D417 Missing argument descriptions in the docstring

@s0undt3ch
Copy link

Ok, so, it's explicitly only using shor_desc .... Why not the message attribute?

In my case, that seems to be the root cause for now showing what arguments are missing

@asottile
Copy link
Member

@s0undt3ch I appreciate you trying to help but we've already come to that above and have a reason why message is problematic

@s0undt3ch
Copy link

Is the : problematic because of programmatically parsing flake8 output?
Anyway, don't know the whole code base to better form an opinion/solution.

@s0undt3ch
Copy link

We should create(yet another) open standard for linter messages 🤣

@asottile
Copy link
Member

asottile commented Sep 23, 2022

I mean there is flake8's standard which is CODE ASCII_SPACE MESSAGE that's why pydocstyle's (.message) CODE COLON SPACE MESSAGE does not work -- that's the whole point of the issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants