On Sun, Nov 14, 2021 at 11:40 AM Ralf Gommers <ralf.gomm...@gmail.com>
wrote:

>
>
> On Sun, Nov 14, 2021 at 6:14 PM Charles R Harris <
> charlesr.har...@gmail.com> wrote:
>
>> Hi All,
>>
>> This post is for discussing the automatic code formatters for C/C++/*.py
>> that are now available. The current options, as I see them, are
>> clang-format (C/C++) and black (*.py, *.pyi, etc). Neither is perfect to my
>> eye, but I think they are good enough at this point and would reduce amount
>> of style nitpicking.
>>
>> *clang-format*
>>
>> There is already a '.clang-format' file in the numpy repository. The main
>> drawbacks that I see are:
>>
>>    - no automatic spacing between function definitions,
>>    - all operators, including '*' and '/',  get spaces around them,
>>    - no extra indenting of continued 'if' conditions,
>>    - the order of includes is alphabetical within groups. The groups are
>>    currently defined in the 'clang-format' file, but there may still be
>>    problems with include order that we will need to fix.
>>
>> I think those can be lived with. The results are good enough that I think
>> it can replace the official C coding style for most things. The maximum
>> line length is currently 79 characters.
>>
>> *black*
>>
>> The black formatter is much improved in its latest version and I think
>> good enough to start using. The main drawbacks that I see are:
>>
>>    - all operators, including '*' and '/',  get spaces around them,
>>    - very long strings are not broken into multiple lines,
>>    - lists, tuples, and function signatures are either on one line, or
>>    broken into multiple lines of one element/argument each,
>>    - the formatting of extended logical expressions could be improved to
>>    emphasize the priority of 'and' over 'or' operators
>>
>> There is no current configuration in pyproject.toml, the default maximum
>> line length is 88 characters. I note that setting the line length to 79
>> notably increases the number of line breaks needed. Note that double quotes
>> are now preferred to single quotes.
>>
>> I think that including black configuration in pyproject.toml would be a
>> good idea, the main question is line length, 79 or 88 characters. The same
>> question of line length can also be raised for clang-format. Lines much
>> longer than 88 are characters are not only a problem for terminals, they
>> are also hard to focus on if you have bad eyes, but lines longer
>> than 79 characters also reduce the number of line breaks needed.
>>
>> Thoughts?
>>
>
> I'd suggest:
> (1) let's discuss `clang-format` for C/C++ separately from `black` for
> Python.
> (2) to read https://github.com/scipy/scipy/pull/14330 and
> https://github.com/scipy/scipy/issues/14354 and then not even continue
> the discussion on `black`. A detailed proposal with an incremental
> formatter may have a chance here (xref `darker` and our `tools/linter.py`),
> a "let's just run black" one seems dead in the water given the people and
> opinions in the linked SciPy PR and issue from a few months ago.
>

"black" is under active development and has relaxed their rigid ideas on
formatting. I am not advocating blindly reformatting all the files, but
having something in pyproject.toml so that folks can run it on new code as
a first pass and fix up places where the result is less than optimal. The
main place where that might be inconvenient is the expansion of
lists/tuples/signatures into vertical lists, but my impression is that one
could get used to that and maybe it is an improvement. I think formatters
are the future, it is just a question of when the future arrives.

Chuck
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to