> On 2 Dec 2020, at 16:42, Paul Vinciguerra <pvi...@vinciconsulting.com> wrote: > > > > >> On Wed, Dec 2, 2020 at 5:38 AM Andrew 👽 Yourtchenko <ayour...@gmail.com> >> wrote: >> >> >> > On 2 Dec 2020, at 10:38, Klement Sekera via lists.fd.io >> > <ksekera=cisco....@lists.fd.io> wrote: >> > >> > I like the idea. >> > >> > Regarding maintainer pain: >> > >> > Q: are we now stuck forever with what we have because there will always be >> > somebody facing some difficulties adopting? >> >> To me it is always a question of cost/benefit analysis - and admittedly the >> value of “cost” and “benefit” is always subjective, and not the same in >> time, so let me expand on why I suggested why suggested: >> >> - I can see a benefit in having a target “make test-fixstyle”, similar with >> C code, introduced sometime *just* before the LTS branch pull, such that we >> have a chance to be able to sync the changes. >> >> - I can see less benefit in introducing that target now, so soon after the >> LTS release - since that would mean the moment you run a .py file on master >> through the formatter, as a developer now you will have to manually deal >> with *two* versions of file - in master and LTS. And porting the diffs that >> don’t apply due to python formatting is a highly unhappy task. > > I don't know if git 2.23 helps you there. If we make the change now > (figuratively), the issue goes away in theory this time next year as the old > releases go out of support.
Right. And until then nearly every change involving test code changes will have to be backported to 20.09 manually by the feature developers. I would it’s the net increase of work, with less trivial yet still very sad job of dealing with reshuffling the patches. PEP501-type annoyance, but with more lines and higher chances of error. > >> >> - Having this done automatically as a precommit hook and removing it from >> the checkstyle job means: >> >> 1) we trust the client to run the formatting themselves. This is a recipe to >> style inconsistency due to *whatever* unrelated things like merges, etc. >> >> 2) forcefully running it just seems like a unsound idea since then we are >> going to get arbitrary white space changes whenever someone of the formatter >> devs decides to change the python formatter. I tried formatters for C, >> golang, rust to name a few. *none* of them produce the identical result from >> differently white-spaced code, that is functionally identical, even if the >> formatter is part of the language. >> >> In addition this approach shares all the drawbacks of introducing the change >> at the inopportune moment. > > I'm not saying +2 the change today. ;). I'm trying to socialize the idea and > see what folks think. Ah ok :) > >> >> That’s the reason I suggested to just add the E501 to ignore and move on - >> on balance it seems like their relieves the maximum amount of real pain >> without introducing unknown amounts of new one. > Going to a line length of 88 (value taken from black) leaves us with only 4-6 > E501's (line too long) in test. That is *today* with the existing “new meaningless variable” hacks already in place. > >> >> That said: I think it is a good idea to add the formatter as a dependency, >> add a “make test-fixstyle” target and let the willing folks experiment with >> it for the time being for the regular commits, this will keep the white >> space changes contained on a per-feature-maintainer basis. > > One monster change is supposedly easier to manage from the git side. Doing > it piecemeal seems to have more problems associated with it. If it is done just before LTS branch fork - sure, I won’t mind a single commit which would both add black as a “make test-fixcheckstyle” and run it on all the files. With enough warning the folks can avoid having any inflight work related to it. > As it is today, people frequently make formatting changes in the same > changeset as something more valuable. My experience is that the devs writing C features just want their tests to work. But I am open to seei the examples. > One of the benefits of black, is that it formats the code to be more git > friendly. Define “git friendly” ? —a > >> >> Thoughts ? >> >> —a >> >> > >> > Thanks, >> > Klement >> > >> >>> On 2 Dec 2020, at 10:30, Andrew Yourtchenko <ayour...@gmail.com> wrote: >> >>> >> >>> >> >>>> On 2 Dec 2020, at 10:27, Neale Ranns via lists.fd.io >> >>>> <nranns=cisco....@lists.fd.io> wrote: >> >>> >> >>> >> >>> >> >>> Hi Paul, >> >>> >> >>> Having to write code to conform to python linting is my number 1 >> >>> annoyance when writing tests. This is my usual hack: >> >>> e = VppEnum.vl_api_tunnel_encap_decap_flags_t >> >>> f = e.TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP >> >> >> >> +1 E501 specifically being a massive annoyance and having to use the >> >> exact same hack - if you use the flags multiple times it might forcing >> >> the somewhat better readability, but then one still has to do f1, f2 and >> >> later combine *them*, which definitely doesn’t help understanding of the >> >> code by any later reader since now they have to keep these mappings in >> >> the head. >> >> >> >> —a >> >> >> >>> >> >>> I support having an auto-linter. I have no knowledge about what’s >> >>> available, so I defer to your choice. All I ask is that it works 😉 i.e. >> >>> you don’t have to pepper code with /* *HERE-BE-DRAGONS* */ >> >>> >> >>> IIUC the plan post 21.01 is to upgrade our default linux distro to >> >>> 20.04, that brings git 2.25 (at least that’s what my VM has, but maybe I >> >>> put that there for recent gerrit up-revs…) >> >>> >> >>> /neale >> >>> >> >>> From: <vpp-dev@lists.fd.io> on behalf of Paul Vinciguerra >> >>> <pvi...@vinciconsulting.com> >> >>> Date: Tuesday 1 December 2020 at 23:56 >> >>> To: vpp-dev <vpp-dev@lists.fd.io> >> >>> Subject: [vpp-dev] replacing make test-checkstyle with black >> >>> >> >>> I'd like to propose that we make it easier for everyone by adding black >> >>> [0] as a pre-commit hook. Black will automatically reformat your file >> >>> to a git friendly, pep-8 friendly file. >> >>> For those interested in the details, it moves to a line length of 88, >> >>> which helps us out with the lengthy VppEnum names we have. We can keep >> >>> it at 80 if the community objects. >> >>> I can't do anything about: >> >>> /vpp/build-root/build-test/src/test_ipsec_esp.py:504:89: E501 line too >> >>> long (97 > 88 characters) >> >>> >> >>> VppEnum.vl_api_tunnel_encap_decap_flags_t.TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DSCP >> >>> ;) >> >>> >> >>> For those who want more details in the changes, see the black code style >> >>> [1] >> >>> >> >>> Saving time around python linting is the #1 request I have had from the >> >>> community. >> >>> >> >>> This is a MASSIVE whitespace change. git blame can ignore whitespace >> >>> changes starting in git 2.23. >> >>> >> >>> The question is whether the community wants to upgrade their version of >> >>> git to ignore this change with git blame, in exchange for not having to >> >>> manually lint/fix their files. >> >>> >> >>> Thoughts? >> >>> >> >>> [0] https://github.com/psf/black >> >>> [1] https://github.com/psf/black/blob/master/docs/the_black_code_style.md >> >>> >> >>> >> >>> >> >> >> >> >> > >> > >> > >> >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#18229): https://lists.fd.io/g/vpp-dev/message/18229 Mute This Topic: https://lists.fd.io/mt/78647163/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-