s/Got doesn’t have/Git doesn’t have/ (iPhone autocorrect, sorry)
--a > On 2 Dec 2020, at 19:01, Andrew Yourtchenko via lists.fd.io > <ayourtch=gmail....@lists.fd.io> wrote: > > > >>> On 2 Dec 2020, at 18:21, Paul Vinciguerra <pvi...@vinciconsulting.com> >>> wrote: >>> >> >> >> >>> On Wed, Dec 2, 2020 at 10:57 AM Andrew 👽 Yourtchenko <ayour...@gmail.com> >>> wrote: >>> >>> >>>>> 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. >> >> So, this is a different issue to me. Because we don't like chained commits, >> this is an issue. To do this properly in my mind, that is to make your job >> easier, there are dependent changes needed. One tuning the build system to >> support the "black" pep8 output, the second with the changes introducing >> black and the file changes. >> >> If the first change were backported, then post black changes shouldn't cause >> the stable to barf on it. > > Got doesn’t have an idea about dependent changes. > >> >>> >>>> >>>>> >>>>> - 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. >> Correct. >> >>> >>> >>>> >>>>> >>>>> 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. >>> >> See above, 2 commits may make life easier for everyone. > > Not so much, imho. > >>> >>> >>>> 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. >> The linting is supposed to accomplish multiple things. >> 1. Enforce a standard to keep style changes out of git. >> 2. Catch logic errors. We have short circuited this one to a large degree, >> by virtue of the fact that we ignore the warnings that aren't trivial to >> change. ( like 'except:') > > Line length does nothing of the above, it’s just a way of enforcing an > arbitrary preference. For C I can argue it is okay, splitting the line is > easy. But in my book a language with a significant white space should not > dictate line length, as this forces a less readable code. > > >>> >>>> One of the benefits of black, is that it formats the code to be more git >>>> friendly. >>> >>> Define “git friendly” ? >> Things like sorted imports and extendable lists, dicts, etc. split at points >> so that git can rebase more changes without needing manual intervention. >> -from vpp_ip_route import VppIpRoute, VppRoutePath, VppMplsLabel, \ >> - VppIpTable, FibPathProto >> +from vpp_ip_route import ( >> + VppIpRoute, >> + VppRoutePath, >> + VppMplsLabel, >> + VppIpTable, >> + FibPathProto, >> +) >> >> >> - rule_1 = AclRule(is_permit=1, proto=17, ports=1234, >> - src_prefix=IPv4Network("1.1.1.1/32"), >> - dst_prefix=IPv4Network("1.1.1.2/32")) >> + rule_1 = AclRule( >> + is_permit=1, >> + proto=17, >> + ports=1234, >> + src_prefix=IPv4Network("1.1.1.1/32"), >> + dst_prefix=IPv4Network("1.1.1.2/32"), >> + ) >> Here black gave you back an extra 8 characters for not triggering E501. I'm >> not an expert in black. I've been using it for a month or two on other >> things, and I don't have (or know) your workflow. > > Looks indeed a bit more readable, I agree, thanks for an example. Still not > enough to do a big white space-only commit at this time. I would not mind > having that large commit in the week before the 21.10-rc1 is done, though. > > But still this should be the same model as in C -and not an automatic format > at checkin time. To be convinced about that I would need to know that the > output of the format is always the same if the AST is the same, regardless of > the white-spacing of the original source. > > Also, the question remains how we deal with the “indent update” problem where > some “fixes” in the indenter cause massive cascading white space only > changes.... given the python folks tendency to deprecate things from under > one’s feet, this is actually yet another issue that I haven’t mentioned yet. > > And, again, considering the biggest annoyance for everyone today is E501, it > smells like we are discussing the usage of the nuclear charge for making a > backyard BBQ... > > —a > >>> —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 (#18236): https://lists.fd.io/g/vpp-dev/message/18236 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] -=-=-=-=-=-=-=-=-=-=-=-