Well, I seem to have succeeded in crystallizing opinions on the topic, even if 
the consensus is, "Augh! Make it stop!" :)

The primary objective of that code sample was to make the structure of the code 
as close as possible to the structure of the interpolated string, since having 
descriptive text like "{entry.doc_cname}" inline instead of "%s" is precisely 
what str.format gains over str.__mod__.

But there are several different elements in that code, and I'm curious what 
people find most off-putting. Is it the triple quoted format strings? The 
nesting? The interpolation with `"""...""" if cond else ''`? Just plain 
interpolations as are already available with str.format, but without explicitly 
importing names into the format string's scope via **kwargs? Trying to emulate 
let? Would a different indentation scheme make things better, or is this a 
problem with the coding style I've advanced here, or with the feature itself?

Also, should this be allowed:

def make_frob(foo):
    def frob(bar):
        f"""Frob the bar using {foo}"""

?

ijs

P.S.: I've translated the original snippet into ruby here: 
https://gist.github.com/ischwabacher/405afb86e28282946cc5, since it's already 
legal syntax there.

Ironically, github's syntax highlighting either fails to parse the 
interpolation (in edit mode) or fails to treat the heredoc as a string literal 
(in display mode), but you can open it in your favorite editor to see whether 
the highlighting makes the code clearer.

________________________________________
From: Python-Dev <python-dev-bounces+ischwabacher=wisc....@python.org> on 
behalf of Ethan Furman <et...@stoneleaf.us>
Sent: Wednesday, August 12, 2015 18:11
To: python-dev@python.org
Subject: Re: [Python-Dev] PEP-498: Literal String Formatting

On 08/10/2015 04:05 PM, ISAAC J SCHWABACHER wrote:

> I don't know about you, but I sure like this better than what you have:
>
> code.putlines(f"""
> static char {entry.doc_cname}[] = "{
>      split_string_literal(escape_bytestring(docstr))}";
>
> { # nested!
> f"""
> #if CYTHON_COMPILING_IN_CPYTHON
>      struct wrapperbase {entry.wrapperbase_cname};
> #endif
> """ if entry.is_special else ''}
>
> {(lambda temp, argn: # my kingdom for a let!
> f"""
> for ({temp}=0; {temp}<PyTuple_GET_SIZE({argn}); {temp}++) {{
>      PyObject *item = PyTuple_GET_ITEM({argn}, {temp});
> }}""")(..., Naming.args_cname)}
>
> {self.starstar_arg.entry.cname} =
>      ({Naming.kwds_cname}) ? PyDict_Copy({Naming.kwds_cname})
>                            : PyDict_New();
>
> if (unlikely(!{self.starstar_arg.entry.cname})) return {self.error_value()};
> """)
>
> What do others think of this PEP-498 sample?  (The PEP-501 version looks 
> pretty similar, so I omit it.)

Agh!  My brain is hurting!  ;)

No, I don't care for it at all.

--
~Ethan~
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/ischwabacher%40wisc.edu
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to