Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: Andrew Burgess <andrew.burgess@embecosm.com>
Cc: gdb-patches@sourceware.org
Subject: Re: Proposal: format GDB Python files with black
Date: Mon, 26 Apr 2021 14:08:24 -0400	[thread overview]
Message-ID: <b66bafd8-c2f6-4dc4-a09c-3b262721fd7d@polymtl.ca> (raw)
In-Reply-To: <20210426175022.GV2610@embecosm.com>

On 2021-04-26 1:50 p.m., Andrew Burgess wrote:
> So without going more sophisticated as you describe below we'd still
> be relying on reviewers to either (with enough experience) "just know"
> that the code is black formatted, or apply the patch, run black, and
> see if the formatting changes.

The use of black would be documented somewhere (in the repo, in the
wiki, or both).  Nevertheless, I don't expect all contributors to know
about it and do it.

I also don't expect reviewers to be able to spot code that isn't
black-compliant.  If you think of checking it or asking about it in a
review, great.  Otherwise, I don't think we should be too afraid of
errors slipping in, since they're trivial to fix.

But to be frank, as a reviewer today, I don't really know what to check
in the Python code formatting.  Our wiki:

  https://sourceware.org/gdb/wiki/Internals%20GDB-Python-Coding-Standards

says that we follow PEP8.  I have no idea how to format PEP8 code, so
as a result I'm not really checking the formatting of Python code today.

> Then of course, there's the questions about what happens when
> different users are running different versions of black - assuming
> different versions might format things slightly differently.

Indeed, I should have mentioned this: we would define a version to use,
just like we do for autoconf/automake.

The goal of black is that the output won't change just for fun, but it
could change due to fixed bugs.

> Another concern I'd have is that unrelated "formatting" changes might
> creep in.
> 
> So, I edit a .py file and either don't run black (naughty), or use
> version X of black.
> 
> Much later, I edit a different part of the same file, now either I run
> black, or run version Y of black.  My original edit is reformatted
> slightly differently.
> 
> My assumption is that this change (the second patch) should be
> rejected at review, as the reformatting change (of the earlier code)
> is unrelated to the work of the second patch.  But I suspect some folk
> might find it frustrating, if on one had we say run black, but on the
> other hand we say you need to exclude unrelated chunks.

This is why I think it's easier to start from a clean state, by
formatting everything in one shot in the beginning.

If the issue you describe happens while I am writing a patch, I would
notice the spurious diff and push an obvious "Format foo.py with
black" commit and rebase my WIP patch on top.

If the issue you describe happens while I am revieweing a patch, I would
probably also push an obvious re-formatting commit (or ask the person to
do so, if they have push access).  The offending hunk will go away when
they rebase, which is necessary prior to pushing.

> I think, in the heterogeneous environments we all develop in,
> situations like the above will crop up, so it would be important to
> know what the expectations would be in such a case.

Indeed.  I hope I was able to show that these situations can be handled
easily and are not a showstopper.

>>
>> If we want to be a bit more sophisticated, we could check-in a git
>> commit hook that runs black (if available) to check your formatting as
>> you are committing, if your commit includes changes to Python files.
>> That doesn't prevents formatting errors from slipping in the repo, but
>> it's already a good start (and formatting errors slipping in the repo
>> are not the end of the world).
> 
> Again, this sort of thing works great in a corporate environment where
> you can guarantee that everyone is (or has no excuse not to be)
> running the exact same version of every tool.

Even in corporate environment, you can't assume that!

> My concern would be that such a strategy would invite unintended
> changes to creep in.
> 
>>
>> We don't really have CI right now (especially pre-merge testing), but if
>> we had, checking the formatting of Python files could be a validation
>> step.
> 
> Agreed.
> 
>> We do however, have scripts that run server side on push, so it would be
>> possible to run black server-side to reject commits that would introduce
>> formatting errors.
> 
> I guess this would solve a lot of the problems I'm concerned about.
> Once we've "corrected" the formatting of all .py code then nobody
> could merge bad code.

Thanks,

Simon

  reply	other threads:[~2021-04-26 18:08 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-26 15:55 Simon Marchi via Gdb-patches
2021-04-26 16:21 ` Andrew Burgess
2021-04-26 17:25   ` Simon Marchi via Gdb-patches
2021-04-26 17:50     ` Andrew Burgess
2021-04-26 18:08       ` Simon Marchi via Gdb-patches [this message]
2021-04-27  7:54         ` Andrew Burgess
2021-04-27 13:21           ` Simon Marchi via Gdb-patches
2021-04-26 17:42   ` Tom Tromey
2021-04-26 17:34 ` Paul Koning via Gdb-patches
2021-04-26 17:44   ` Simon Marchi via Gdb-patches
2021-04-26 17:48     ` Simon Marchi via Gdb-patches
2021-04-26 17:39 ` Tom Tromey
2021-04-30 16:26   ` Joel Brobecker
2021-04-26 22:40 ` Lancelot SIX via Gdb-patches
2021-04-30 17:04   ` Tom Tromey
2021-04-30 17:14     ` Simon Marchi via Gdb-patches
2021-05-01  6:42       ` Joel Brobecker
2021-04-30 17:21 ` Luis Machado via Gdb-patches
2021-05-08 16:00 ` Tom Tromey
2021-05-11  2:55   ` Simon Marchi via Gdb-patches
2021-05-11  2:57     ` Using clang-format Simon Marchi via Gdb-patches
2021-05-11 13:31       ` Marco Barisione via Gdb-patches
2021-05-11 13:44         ` Simon Marchi via Gdb-patches
2021-05-11 20:40       ` Tom Tromey
2021-05-13 17:13         ` Simon Marchi via Gdb-patches
2021-05-11 11:38     ` Proposal: format GDB Python files with black Luis Machado via Gdb-patches
2021-05-11 13:49       ` Simon Marchi via Gdb-patches
2021-05-11 14:23         ` Luis Machado via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b66bafd8-c2f6-4dc4-a09c-3b262721fd7d@polymtl.ca \
    --to=gdb-patches@sourceware.org \
    --cc=andrew.burgess@embecosm.com \
    --cc=simon.marchi@polymtl.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox