Open anntzer opened 3 months ago
this passes, though I'm not sure it's right -- I'm inclined to just say "you're doing too much in an f-string and the linter is rightfully punishing you" (despite the probable bug) -- do the assignments to some variables outside the fstring and the code will be much easier to read and maintain anyway:
class T:
def m1(self):
print(f"""
preamble
{some_long_func(
some_long_arg, other_long_arg, more_long_arg)}
postamble
""")
def m2(self):
print(f"""
preamble
{some_long_func(
some_long_arg, other_long_arg, more_long_arg)}
postamble
""")
Ah, I didn't think of trying to indent all the way up to the indent defined by outside the f-string. I would still say it is a bug (I think the reasonable indent would be 4 (or 5) spaces from the left, i.e. including the opening brace or not, but I leave it up to you as to whether this is something you want to fix or just to close. Alternatively, another solution would be to just accept all indents inside a multiline f-string, because I don't think there's actually any clear style guidelines about that (well, possibly except "don't have substitutions so long that they must be split over multiple lines"... which could possibly be its own style check).
For the following example
there appears to be no indentation of the "long args line" that makes pycodestyle not emit a E122 ("continuation line missing indentation or outdented") for that line. (If m1 and m2 are toplevel functions and not methods, then the second form makes pycodestyle happy.)