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. Cheers, Ralf
_______________________________________________ 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