[Python-Dev] PEP 7 and braces { .... } on if

Barry Warsaw barry at python.org
Tue Jun 6 20:30:04 EDT 2017

On Jun 05, 2017, at 08:41 AM, Serhiy Storchaka wrote:

>the example above), and the following code is enough readable:
>         if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
>                              "invalid escape sequence '\\%c'",
>                              *first_invalid_escape) < 0) {
>             Py_DECREF(result);
>             return NULL;
>         }

My rationale for placing the opening brace on a separate line, indented to
under the `if` instead of hanging is that it's easier to miss the opening
brace in the example you posted above.  Visually I (we?) tend to have a harder
time recognizing characters sitting way out to the right.

On Jun 05, 2017, at 08:19 AM, Ethan Furman wrote:

>I would format that as:
>          if (PyErr_WarnFormat(
>                  PyExc_DeprecationWarning,
>                  1,
>                  "invalid escape sequence '\\%c'",
>                  *first_invalid_escape) < 0)
>              {
>              Py_DECREF(result);
>              return NULL;
>          }

In this case I'd *still* indent the opening brace to under the `if`.  The
mismatched indentation between the open and close braces is jarring to me.

>- having all the arguments on separate lines means
>   - the function and first argument don't get run together
>   - it's easy to pick out the individual arguments

That's fine with me, but so is hanging the arguments, so I'd tend to leave
this up to the individual devs.

>- having the opening brace on its own line means
>   - a little extra white space to buffer the condition and the body
>   - it's easier to read the function name and then drop down to the
>     body

Agreed with the rationale for the open brace being on a separate line, but did
you mean to indent the opening and closing braces to different levels?


More information about the Python-Dev mailing list