On 11/12/05, Raymond Hettinger firstname.lastname@example.org wrote:
The motivation is to be able to write multilined strings easily without damaging the visual indentation of the source code
That is somewhat misleading. We already have that ability. What is being proposed is moving existing code to a different namespace. So the motivation is really something like:
I want to write s = s.dedent() because it is too painful to write s = textwrap.dedent(s)
Sorry, I didn't mean to mislead. I wrote "easily" - I guess using the current textwrap.dedent isn't really hard, but still, writing:
import textwrap ...
r = some_func(textwrap.dedent('''\ line1 line2'''))
Seems harder to me than simply
r = some_func('''\ line1 line2'''.dedent())
This example brings up another reason why "dedent" us a method is a good idea: It is a common convention to indent things according to the last opening bracket. "dedent" as a function makes the indentation grow in at least 7 characters, and in 16 characters if you don't do "from textwrap import dedent".
Another reason to make it a method is that I think it focuses attention at the string, which comes first, instead of at the "textwrap.dedent", which is only there to make the code look nicer.
And, a last reason: making dedent a built-in method makes it a more "official" way of doing things, and I think that this way of writing a multilined string inside an indented block is really the best way to do it.