-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
False negative with useless-expression on strings #11292
Comments
The intention here is to avoid flagging docstrings, but I think we need to make it more targeted. |
Yeah, that's what I figured. I tried to illustrate some reasonable uses of strings. I'm not sure how you feel about the "variable docstring", which some editors recognize. As far as I know, they're rarely used and not really a Python concept. They look pretty weird in code: length: int # The length of the object.
width: int # The width of the object. versus length: int
"The length of the object."
width: int
"The width of the object." |
Yeah, I think we do need to ignore attribute docstrings. They're not standardized, but they're popular enough that I think it'd be a net-negative to flag them. |
I think this can be fixed because our docstring detection is quite accurate now. |
It seems that updating |
Please don't use the same documentation as PLW0105: strings are not reasonable documentation in Python, and I don't think the linter should suggest that. |
If B018 is to be modified, consider the special case of useless string expression after a string assignment. This is rather nasty and hard to detect for a human (the correct code should have parentheses to make this a multi line implicit string concatenation): def __str__(self) -> str:
string = f"AnalysisConfig(ID: {self.uuid},"
f"BackendURL: {self.backend_url},"
f"AnnotationTypes: {self.annotation_types})"
return string For that matter, any case with an f-string is probably always an error, since it would be pointless to use those for comments. |
Maybe Ruff should flag "attribute docstrings" using a separate rule to convert them to annotated annotations? x: int
"blah" becomes x: Annotated[int, "blah"] This is more consistent with modern Python. |
For some reason useless-expression is not triggered by loose strings. Should these be caught? If comments are intended, then Ruff could suggest converting them comments?
The text was updated successfully, but these errors were encountered: