[Python-ideas] Multi-line string indentation
Joao S. O. Bueno
jsbueno at python.org.br
Fri Feb 8 10:48:12 EST 2019
/me also would be strongly in favor of this.
"+1 " .
Even taking in consideration the added complexity .
On Fri, 8 Feb 2019 at 13:26, Paul Ferrell <pflarr at gmail.com> wrote:
> I particularly like the str.dedent() idea. Adding yet another string
> prefix adds more complexity to the language, which I'm generally not
> in favor of.
>
> On 2/7/19, Mike Miller <python-ideas at mgmiller.net> wrote:
> > Was: "Dart (Swift) like multi line strings indentation"
> >
> > This discussion petered-out but I liked the idea, as it alleviates
> something
> >
> > occasionally annoying.
> >
> > Am supportive of the d'' prefix, perhaps the capital prefixes can be
> > deprecated
> > to avoid issues? If not, a sometimes-optimized (or C-accelerated)
> > str.dedent()
> > is acceptable too.
> >
> > Anyone still interested in this?
> >
> > -Mike
> >
> >
> >
> > On 3/31/18 5:43 PM, Steven D'Aprano wrote:
> >> The ideal solution would:
> >>
> >> - require only a single pair of starting/ending string delimiters;
> >>
> >> - allow string literals to be indented to the current block, for
> >> the visual look and to make it more convenient with editors
> >> which automatically indent;
> >>
> >> - evaluate without the indents;
> >>
> >> - with no runtime cost.
> >>
> >>
> >> One solution is to add yet another string prefix, let's say d for
> >> dedent, but as Terry and others point out, that leads to a combinational
> >> explosion with f-strings and r-strings already existing.
> >>
> >> Another possibility is to make dedent a string method:
> >>
> >> def spam():
> >> text = """\
> >> some text
> >> another line
> >> and a third
> >> """.dedent()
> >> print(text)
> >>
> >> and avoid the import of textwrap. However, that also imposes a runtime
> >> cost, which could be expensive if you are careless:
> >>
> >> for x in seq:
> >> for y in another_seq:
> >> process("""/
> >> some large indented string
> >> """.dedent()
> >> )
> >>
> >> (Note: the same applies to using textwrap.dedent.)
> >>
> >> But we could avoid that runtime cost if the keyhole optimizer performed
> >> the dedent at compile time:
> >>
> >> triple-quoted string literal
> >> .dedent()
> >>
> >> could be optimized at compile-time, like other constant-folding.
> >>
> >> Out of all the options, including the status quo, the one I dislike the
> >> least is the last one:
> >>
> >> - make dedent a string method;
> >>
> >> - recommend (but don't require) that implementations perform the
> >> dedent of string literals at compile time;
> >>
> >> (failure to do so is a quality of implementation issue, not a bug)
> >>
> >> - textwrap.dedent then becomes a thin wrapper around the string method.
> >
> >
> >
> > On 4/1/18 4:41 AM, Michel Desmoulin wrote:>
> > > A "d" prefix to do textwrap.dedent is something I wished for a long
> > time.
> > >
> > > It's like the "f" one: we already can do it, be hell is it convenient
> to
> > > have a shortcut.
> > >
> > > This is especially if, like me, you take a lot of care in the error
> > > messages you give to the user. I write a LOT of them, very long, very
> > > descriptive, and I have to either import textwrap or play the
> > > concatenation game.
> > >
> > > Having a str.dedent() method would be nice, but the d prefix has the
> > > huge advantage to be able to dedent on parsing, and hence be more
> > > performant.
> > >
> > _______________________________________________
> > Python-ideas mailing list
> > Python-ideas at python.org
> > https://mail.python.org/mailman/listinfo/python-ideas
> > Code of Conduct: http://python.org/psf/codeofconduct/
> >
>
>
> --
> Paul Ferrell
> pflarr at gmail.com
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190208/97a533e4/attachment.html>
More information about the Python-ideas
mailing list