Chad: yes. I also noticed that it's not running on the Jenkins lint precommit job.
On Fri, Feb 7, 2020 at 12:59 PM David Yan <david...@google.com> wrote: > Thank you Robert. > > https://github.com/google/yapf/issues/530 has been open for 2 years, but > we will use `yapf: disable` and `yapf: enable` as a workaround for now. > > David > > On Fri, Feb 7, 2020 at 12:29 PM Robert Bradshaw <rober...@google.com> > wrote: > >> Yeah, that's a lot worse. This looks like >> https://github.com/google/yapf/issues/530 . In the meantime, >> https://pypi.org/project/yapf/#potentially-frequently-asked-questions >> >> On Fri, Feb 7, 2020 at 12:17 PM David Yan <david...@google.com> wrote: >> > >> > Hi, I just tried out the yapf formatter and I noticed that sometimes >> it's making the original code a lot less readable. >> > In the below example, - is the original, + is after running the yapf >> formatter. Looks like the problem is with the method chaining pattern. >> > How feasible is it to have yapf identify such a pattern and format it >> better? >> > Before this can be fixed, Is it possible to have a directive in the >> code comment to bypass yapf? >> > >> > Thanks! >> > >> > - test_stream = (TestStream() >> > - .advance_watermark_to(0) >> > - .add_elements(['a', 'b', 'c']) >> > - .advance_processing_time(1) >> > - .advance_processing_time(1) >> > - .advance_processing_time(1) >> > - .advance_processing_time(1) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(5) >> > - .add_elements(['1', '2', '3']) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(6) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(7) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(8) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(9) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(10) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(11) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(12) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(13) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(14) >> > - .advance_processing_time(1) >> > - .advance_watermark_to(15) >> > - .advance_processing_time(1) >> > - ) >> > + test_stream = ( >> > + TestStream().advance_watermark_to(0).add_elements( >> > + ['a', 'b', >> 'c']).advance_processing_time(1).advance_processing_time( >> > + >> 1).advance_processing_time(1).advance_processing_time(1). >> > + >> advance_processing_time(1).advance_watermark_to(5).add_elements( >> > + ['1', '2', >> '3']).advance_processing_time(1).advance_watermark_to( >> > + 6).advance_processing_time(1).advance_watermark_to( >> > + 7).advance_processing_time(1).advance_watermark_to( >> > + >> 8).advance_processing_time(1).advance_watermark_to(9). >> > + advance_processing_time(1).advance_watermark_to( >> > + 10).advance_processing_time(1).advance_watermark_to( >> > + 11).advance_processing_time(1).advance_watermark_to( >> > + >> 12).advance_processing_time(1).advance_watermark_to( >> > + >> 13).advance_processing_time(1).advance_watermark_to( >> > + >> 14).advance_processing_time(1).advance_watermark_to( >> > + 15).advance_processing_time(1)) >> > >> > On Thu, Feb 6, 2020 at 1:50 PM Robert Bradshaw <rober...@google.com> >> wrote: >> >> >> >> Thanks! >> >> >> >> On Thu, Feb 6, 2020 at 1:29 PM Ismaël Mejía <ieme...@gmail.com> wrote: >> >>> >> >>> Thanks Kamil and Michał for taking care of this. >> >>> Excellent job! >> >>> >> >>> On Thu, Feb 6, 2020 at 1:45 PM Kamil Wasilewski < >> kamil.wasilew...@polidea.com> wrote: >> >>>> >> >>>> Thanks to everyone involved in the discussion. >> >>>> >> >>>> I've taken a look at the first 50 recently updated Pull Requests. >> Only few of them were affected. I hope it wouldn't be too hard to fix them. >> >>>> >> >>>> In any case, here you can find instructions on how to run formatter: >> https://cwiki.apache.org/confluence/display/BEAM/Python+Tips (section >> "Formatting"). >> >>>> >> >>>> On Thu, Feb 6, 2020 at 12:42 PM Michał Walenia < >> michal.wale...@polidea.com> wrote: >> >>>>> >> >>>>> Hi, >> >>>>> the PR is merged, all checks were green :) >> >>>>> Enjoy prettier Python! >> >>>>> >> >>>>> On Thu, Feb 6, 2020 at 11:11 AM Ismaël Mejía <ieme...@gmail.com> >> wrote: >> >>>>>> >> >>>>>> Agree no need for vote for this because the consensus is clear and >> the sole >> >>>>>> impact I can think of are pending PRs that will be broken. In the >> Java case >> >>>>>> what we did was to just notice every PR that was affected by the >> change. >> >>>>>> And clearly document how to validate and autoformat the code. >> >>>>>> >> >>>>>> So the earlier the better, go go autoformat! >> >>>>>> >> >>>>>> On Thu, Feb 6, 2020 at 1:38 AM Robert Bradshaw < >> rober...@google.com> wrote: >> >>>>>>> >> >>>>>>> No, perhaps not. I agree there's consensus, just wondering what >> the >> >>>>>>> next steps should be to get this in. (The presubmits look like >> they're >> >>>>>>> all passing, with the exception of some breakage in java that >> should >> >>>>>>> be completely unrelated. Of course there's already merge >> conflicts...) >> >>>>>>> >> >>>>>>> On Wed, Feb 5, 2020 at 3:55 PM Ahmet Altay <al...@google.com> >> wrote: >> >>>>>>> > >> >>>>>>> > Do we need a formal vote? There is consensus on this thread and >> on the PR. >> >>>>>>> > >> >>>>>>> > On Wed, Feb 5, 2020 at 3:37 PM Robert Bradshaw < >> rober...@google.com> wrote: >> >>>>>>> >> >> >>>>>>> >> The PR is looking good. Should we call a vote? >> >>>>>>> >> >> >>>>>>> >> On Mon, Jan 27, 2020 at 11:03 AM Robert Bradshaw < >> rober...@google.com> wrote: >> >>>>>>> >> > >> >>>>>>> >> > Thanks. I commented on the PR. I think if we're going this >> route we >> >>>>>>> >> > should add a pre-commit, plus instructions on how to run the >> tool >> >>>>>>> >> > (similar to spotless). >> >>>>>>> >> > >> >>>>>>> >> > On Mon, Jan 27, 2020 at 10:00 AM Udi Meiri <eh...@google.com> >> wrote: >> >>>>>>> >> > > >> >>>>>>> >> > > I've done a pass on the PR on code I'm familiar with. >> >>>>>>> >> > > Please make a pass and add your suggestions on the PR. >> >>>>>>> >> > > >> >>>>>>> >> > > On Fri, Jan 24, 2020 at 7:15 AM Ismaël Mejía < >> ieme...@gmail.com> wrote: >> >>>>>>> >> > >> >> >>>>>>> >> > >> Java build fails on any unformatted code so python >> probably should be like that. >> >>>>>>> >> > >> We have to ensure however that it fails early on that. >> >>>>>>> >> > >> As Robert said time to debate the knobs :) >> >>>>>>> >> > >> >> >>>>>>> >> > >> On Fri, Jan 24, 2020 at 3:19 PM Kamil Wasilewski < >> kamil.wasilew...@polidea.com> wrote: >> >>>>>>> >> > >>> >> >>>>>>> >> > >>> PR is ready: https://github.com/apache/beam/pull/10684. >> Please share your comments ;-) I've managed to reduce the impact a bit: >> >>>>>>> >> > >>> 501 files changed, 18245 insertions(+), 19495 >> deletions(-) >> >>>>>>> >> > >>> >> >>>>>>> >> > >>> We still need to consider how to enforce the usage of >> autoformatter. Pre-commit sounds like a nice addition, but it still needs >> to be installed manually by a developer. On the other hand, Jenkins >> precommit job that fails if any unformatted code is detected looks like too >> strict. What do you think? >> >>>>>>> >> > >>> >> >>>>>>> >> > >>> On Thu, Jan 23, 2020 at 8:37 PM Robert Bradshaw < >> rober...@google.com> wrote: >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> Thanks! Now we get to debate what knobs to twiddle :-P >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> FYI, I did a simple run (just pushed to >> >>>>>>> >> > >>>> >> https://github.com/apache/beam/compare/master...robertwb:yapf) to see >> >>>>>>> >> > >>>> the impact. The diff is >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> $ git diff --stat master >> >>>>>>> >> > >>>> ... >> >>>>>>> >> > >>>> 547 files changed, 22118 insertions(+), 21129 >> deletions(-) >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> For reference >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> $ find sdks/python/apache_beam -name '*.py' | xargs >> wc >> >>>>>>> >> > >>>> ... >> >>>>>>> >> > >>>> 200424 612002 7431637 total >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> which means a little over 10% of lines get touched. I >> think there are >> >>>>>>> >> > >>>> some options, such as >> SPLIT_ALL_TOP_LEVEL_COMMA_SEPARATED_VALUES and >> >>>>>>> >> > >>>> COALESCE_BRACKETS, that will conform more to the style >> we are already >> >>>>>>> >> > >>>> (mostly) following. >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> >> >>>>>>> >> > >>>> On Thu, Jan 23, 2020 at 1:59 AM Kamil Wasilewski >> >>>>>>> >> > >>>> <kamil.wasilew...@polidea.com> wrote: >> >>>>>>> >> > >>>> > >> >>>>>>> >> > >>>> > Thank you Michał for creating the ticket. I have some >> free time and I'd like to volunteer myself for this task. >> >>>>>>> >> > >>>> > Indeed, it looks like there's consensus for `yapf`, >> so I'll try `yapf` first. >> >>>>>>> >> > >>>> > >> >>>>>>> >> > >>>> > Best, >> >>>>>>> >> > >>>> > Kamil >> >>>>>>> >> > >>>> > >> >>>>>>> >> > >>>> > >> >>>>>>> >> > >>>> > On Thu, Jan 23, 2020 at 10:37 AM Michał Walenia < >> michal.wale...@polidea.com> wrote: >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> Hi all, >> >>>>>>> >> > >>>> >> I created a JIRA issue for this and summarized the >> available tools >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> https://issues.apache.org/jira/browse/BEAM-9175 >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> Cheers, >> >>>>>>> >> > >>>> >> Michal >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> On Thu, Jan 23, 2020 at 1:49 AM Udi Meiri < >> eh...@google.com> wrote: >> >>>>>>> >> > >>>> >>> >> >>>>>>> >> > >>>> >>> Sorry, backing off on this due to time constraints. >> >>>>>>> >> > >>>> >>> >> >>>>>>> >> > >>>> >>> On Wed, Jan 22, 2020 at 3:39 PM Udi Meiri < >> eh...@google.com> wrote: >> >>>>>>> >> > >>>> >>>> >> >>>>>>> >> > >>>> >>>> It sounds like there's a consensus for yapf. I >> volunteer to take this on >> >>>>>>> >> > >>>> >>>> >> >>>>>>> >> > >>>> >>>> On Wed, Jan 22, 2020, 10:31 Udi Meiri < >> eh...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>> >> >>>>>>> >> > >>>> >>>>> +1 to autoformatting >> >>>>>>> >> > >>>> >>>>> >> >>>>>>> >> > >>>> >>>>> On Wed, Jan 22, 2020 at 9:57 AM Luke Cwik < >> lc...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>> +1 to autoformatters. Also the Beam Java SDK >> went through a one time pass to apply the spotless formatting. >> >>>>>>> >> > >>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>> On Tue, Jan 21, 2020 at 9:52 PM Ahmet Altay < >> al...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>>>> >> >>>>>>> >> > >>>> >>>>>>> +1 to autoformatters and yapf. It appears to be >> a well maintained project. I do support making a one time pass to apply >> formatting the whole code base. >> >>>>>>> >> > >>>> >>>>>>> >> >>>>>>> >> > >>>> >>>>>>> On Tue, Jan 21, 2020 at 5:38 PM Chad Dombrova < >> chad...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> It'd be good if there was a way to only apply >> to violating (or at >> >>>>>>> >> > >>>> >>>>>>>>> least changed) lines. >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>> I assumed the first thing we’d do is convert >> all of the code in one go, since it’s a very safe operation. Did you have >> something else in mind? >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>> -chad >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> On Tue, Jan 21, 2020 at 1:56 PM Chad Dombrova >> <chad...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > +1 to autoformatting >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > Let me add some nuance to that. >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > The way I see it there are 2 varieties of >> formatters: those which take the original formatting into consideration >> (autopep8) and those which disregard it (yapf, black). >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > I much prefer yapf to black, because you >> have plenty of options to tweak with yapf (enough to make the output a >> pretty close match to the current Beam style), and you can mark areas to >> preserve the original formatting, which could be very useful with Pipeline >> building with pipe operators. Please don't pick black. >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > autopep8 is more along the lines of >> spotless in Java -- it only corrects code that breaks the project's style >> rules. The big problem with Beam's current style is that it is so esoteric >> that autopep8 can't enforce it -- and I'm not just talking about 2-spaces, >> which I don't really have a problem with -- the problem is the use of >> either 2 or 4 spaces depending on context (expression start vs hanging >> indent, etc). This is my *biggest* gripe about the current style. PyCharm >> doesn't have enough control either. So, if we can choose a style that can >> be expressed by flake8 or pycodestyle then we can use autopep8 to enforce >> it. >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > I'd prefer autopep8 to yapf because I like >> having a little wiggle room to influence the style, but on a big project >> like Beam all that wiggle room ends up to minor but noticeable >> inconsistencies in style throughout the project. yapf ensures completely >> consistent style, but the tradeoff is that it's sometimes ugly, especially >> in scenarios with similar repeated entries like argparse, where yapf might >> insert line breaks in visually inconsistent and unappealing ways depending >> on the lengths of the keywords and expressions involved. >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > Either way (but especially if we choose >> yapf) I think it'd be a nice addition to setup a pre-commit [1] config so >> that people can opt in to running *lightweight* autofixers prior to >> commit. This will not only reduce dev frustration but will also reduce the >> amount of cpu cycles that Jenkins spends pointing out lint errors. >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > [1] https://pre-commit.com/ >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > -chad >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> > On Tue, Jan 21, 2020 at 12:52 PM Ismaël >> Mejía <ieme...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >> >> >>>>>>> >> > >>>> >>>>>>>>> >> Last time we discussed this there seems >> not to be much progress into autoformatting. >> >>>>>>> >> > >>>> >>>>>>>>> >> This tool looks more tweakable, so maybe >> it could be more appropriate for Beam's use case. >> >>>>>>> >> > >>>> >>>>>>>>> >> https://github.com/google/yapf/ >> >>>>>>> >> > >>>> >>>>>>>>> >> WDYT? >> >>>>>>> >> > >>>> >>>>>>>>> >> >> >>>>>>> >> > >>>> >>>>>>>>> >> >> >>>>>>> >> > >>>> >>>>>>>>> >> On Thu, May 30, 2019 at 10:50 AM Łukasz >> Gajowy <lgaj...@apache.org> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> +1 for any autoformatter for Python SDK >> that does the job. My experience is that since spotless in Java SDK I would >> never start a new Java project without it. So many great benefits not only >> for one person coding but for all community. >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> It is a GitHub UI issue that you cannot >> easily browse past the reformat. It is not actually that hard, but does >> take a couple extra clicks to get GitHub to display blame before a >> reformat. It is easier with the command line. I do a lot of code history >> digging and the global Java reformat is not really a problem. >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> It's actually one more click on Github >> but I agree it's not the best way to search the history. The most >> convenient and clear one I've found so far is in Jetbrains IDEs (Intelij) >> where you can: >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> right click on line number -> "annotate" >> -> click again -> "annotate previous revision" -> ... >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> You can also use "compare with" to see >> the diff between two revisions. >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> Łukasz >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>> czw., 30 maj 2019 o 06:15 Kenneth Knowles >> <k...@apache.org> napisał(a): >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> +1 pending good enough tooling (I can't >> quite tell - seems there are some issues?) >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> On Wed, May 29, 2019 at 2:40 PM >> Katarzyna Kucharczyk <ka.kucharc...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> What else actually we gain? My guess is >> faster PR review iteration. We will skip some of conversations about code >> style. >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> ... >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> Last but not least, new contributor may >> be less discouraged. When I started contribute I didn’t know how to format >> my code and I lost a lot of time to add pylint and adjust IntelliJ. I >> eventually failed. Currently I write code intuitively and when I don’t >> forget I rerun tox. >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> This is a huge benefit. This is why I >> supported it so much for Java. It is a community benefit. You do not have >> to be a contributor to the Python SDK to support this. That is why I am >> writing here. Just eliminate all discussion of formatting. It doesn't >> really matter what the resulting format is, if it is not crazy to read. I >> strongly oppose maintaining a non-default format. >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> Reformating 20k lines or 200k is not >> hard. The Java global reformat touched 50k lines. It does not really matter >> how big it is. Definitely do it all at once if you think the tool is good >> enough. And you should pin a version, so churn is not a problem. You can >> upgrade the version and reformat in a PR later and that is also easy. >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> It is a GitHub UI issue that you cannot >> easily browse past the reformat. It is not actually that hard, but does >> take a couple extra clicks to get GitHub to display blame before a >> reformat. It is easier with the command line. I do a lot of code history >> digging and the global Java reformat is not really a problem. >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> Kenn >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> Also everything will be formatted in a >> same way, so eventually it would be easier to read. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> Moreover, as it was mentioned in >> previous emails - a lot of Jenkins failures won’t take place, so we save >> time and resources. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> One of disadvantages is that our >> pipelines has custom syntax and after formatting they looks a little bit >> weird, but maybe extending the only configurable option in Black - lines, >> from 88 to 110 would be solution. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> Second one is that Black requires >> Python 3 to be run. I don’t know how big obstacle it would be. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> I believe there are two options how it >> would be possible to introduce Black. First: just do it, it will hurt but >> then it would be ok (same as a dentist appointment). Of course it may >> require some work to adjust linters. On the other hand we can do it >> gradually and start including sdk parts one by one - maybe it will be less >> painful? >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> As an example I can share one of >> projects [2] I know that uses Black (they use also other cool checkers and >> pre-commit [3]). This is how looks their build with all checks [4]. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> To sum up I believe that if we want >> improve our coding experience, we should improve our toolset. Black seems >> be recent and quite popular tool what makes think they won’t stop >> developing it. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> [1] >> https://stackoverflow.com/questions/4112410/git-change-styling-whitespace-without-changing-ownership-blame >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> [2] >> https://github.com/GoogleCloudPlatform/oozie-to-airflow >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> [3] https://pre-commit.com >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> [4] >> https://travis-ci.org/GoogleCloudPlatform/oozie-to-airflow/builds/538725689 >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>> On Wed, May 29, 2019 at 2:01 PM Robert >> Bradshaw <rober...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> Reformatting to 4 spaces seems a >> non-starter to me, as it would change nearly every single line in the >> codebase (and the loss of all context as well as that particular line). >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> This is probably why the 2-space fork >> exists. However, we don't conform to that either--we use 2 spaces for >> indentation, but 4 for continuation indentation. (As for the history of >> this, this goes back to Google's internal style guide, probably motivated >> by consistency with C++, Java, ... and the fact that with an indent level >> of 4 one ends up wrapping lines quite frequently (it's telling that black's >> default line length is 88)). This turns out to be an easy change to the >> codebase. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> Once we move beyond the 2 vs. 4 >> whitespace thing, I found that this tool introduces a huge amount of >> vertical whitespace (e.g. closing parentheses on their own line), e.g. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> def foo( >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> args >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> ): >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> if ( >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> long expression) >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> ): >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> func( >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> args >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> ) >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> I wrote a simple post-processor to put >> closing parentheses on the same lines, as well as omit the newline after >> "if (", and disabling formatting of strings, which reduce the churn in our >> codebase to 15k lines (adding about 4k) out of 200k total. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> https://github.com/apache/beam/pull/8712/files >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> It's still very opinionated, often in >> different ways then me, and doesn't understand the semantics of the code, >> but possibly something we could live with given the huge advantages of an >> autoformatter. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> An intermediate point would be to >> allow, but not require, autoformatting of changed lines. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> As for being beta quality, it looks >> like it's got a decent number of contributors and in my book being in the >> python github project is a strong positive signal. But, due to the above >> issues, I think we'd have to maintain a fork. (The code is pretty >> lightweight, the 2 vs. 4 space issue is a 2-line change, and the rest >> implemented as a post-processing step (for now, incomplete), so it'd be >> easy to stay in sync with upstream.) >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> On Wed, May 29, 2019 at 11:03 AM >> Ismaël Mejía <ieme...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > I think the question is if it can >> be configured in a way to fit our >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > current linter's style. I don't >> think it is feasible to reformat the >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > entire Python SDK. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > It cannot be configured to do what >> we actually do because Black is >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > configurable only to support the >> standard python codestyle guidelines >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > (PEP-8) which recommends 4 spaces >> and is what most projects in the >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > python world use. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > Reformatted lines don't allow >> quick access to the Git history. This >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > effect is still visible in the >> Java SDK. However, I have the feeling >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > that this might be less of a >> problem with Python because the linter has >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > more rules than Checkstyle had. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > Yes that’s the bad side effect but >> there are always tradeoffs we have >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > to deal with. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > On Wed, May 29, 2019 at 10:52 AM >> Maximilian Michels <m...@apache.org> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > I think the question is if it can >> be configured in a way to fit our >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > current linter's style. I don't >> think it is feasible to reformat the >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > entire Python SDK. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > Reformatted lines don't allow >> quick access to the Git history. This >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > effect is still visible in the >> Java SDK. However, I have the feeling >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > that this might be less of a >> problem with Python because the linter has >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > more rules than Checkstyle had. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > -Max >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > On 29.05.19 10:16, Ismaël Mejía >> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> My concerns are: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> - The product is clearly marked >> as beta with a big warning. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> - It looks like mostly a single >> person project. For the same reason I also strongly prefer not using a fork >> for a specific setting. Fork will only have less people looking at it. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > I suppose the project is marked >> as beta because it is recent, it was >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > presented in 2018’s pycon, and >> because some things can change since >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > auto-formatters are pretty >> tricky beasts, I think beta in that case is >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > like our own ‘@Experimental’. If >> you look at the contribution page [1] >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > you can notice that it is less >> and less a single person project, there >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > have been 93 independent >> contributions since the project became >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > public, and the fact that it is >> hosted in the python organization >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > github [2] gives some confidence >> on the project continuity. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > You are right however about the >> fact that the main author seems to be >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > the ‘benevolent’ dictator, and >> in the 2-spaces issue he can seem >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > arbitrary, but he is just >> following pep8 style guide recommendations >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > [3]. I am curious of why we >> (Beam) do not follow the 4 spaces >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > recommendation of PEP-8 or even >> Google's own Python style guide [4], >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > So, probably it should be to us >> to reconsider the current policy to >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > adapt to the standards (and the >> tool). >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > I did a quick run of black with >> python 2.7 compatibility on >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > sdks/python and got only 4 >> parsing errors which is positive given the >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > size of our code base. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > 415 files reformatted, 45 files >> left unchanged, 4 files failed to reformat. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > error: cannot format >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> /home/ismael/upstream/beam/sdks/python/apache_beam/runners/interactive/display/display_manager.py: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > Cannot parse: 47:22: >> _display_progress = print >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > error: cannot format >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> /home/ismael/upstream/beam/sdks/python/apache_beam/runners/worker/log_handler.py: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > Cannot parse: 151:18: >> file=sys.stderr) >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > error: cannot format >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> /home/ismael/upstream/beam/sdks/python/apache_beam/runners/worker/sdk_worker.py: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > Cannot parse: 160:34: >> print(traceback_string, file=sys.stderr) >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > error: cannot format >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> /home/ismael/upstream/beam/sdks/python/apache_beam/typehints/trivial_inference.py: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > Cannot parse: 335:51: >> print('-->' if pc == last_pc else ' ', >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > end=' ') >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > I still think this can be >> positive for the project but well I am >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > barely a contributor to the >> python code base so I let you the python >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > maintainers to reconsider this, >> in any case it seems like a good >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > improvement for the project. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > [1] >> https://github.com/python/black/graphs/contributors >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > [2] https://github.com/python >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > [3] >> https://www.python.org/dev/peps/pep-0008/#indentation >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > [4] >> https://github.com/google/styleguide/blob/gh-pages/pyguide.md#34-indentation >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > > On Tue, May 28, 2019 at 11:15 PM >> Ahmet Altay <al...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> I am in the same boat with >> Robert, I am in favor of autoformatters but I am not familiar with this >> one. My concerns are: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> - The product is clearly marked >> as beta with a big warning. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> - It looks like mostly a single >> person project. For the same reason I also strongly prefer not using a fork >> for a specific setting. Fork will only have less people looking at it. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> IMO, this is in an early stage >> for us. That said lint issues are real as pointed in the thread. If someone >> would like to give it a try and see how it would look like for us that >> would be interesting. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >> On Tue, May 28, 2019 at 4:44 AM >> Katarzyna Kucharczyk <ka.kucharc...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>> This sounds really good. A lot >> of Jenkins jobs failures are caused by lint problems. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>> I think it would be great to >> have something similar to Spotless in Java SDK (I heard there is problem >> with configuring Black with IntelliJ). >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>> On Mon, May 27, 2019 at 10:52 >> PM Robert Bradshaw <rober...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> I'm generally in favor of >> autoformatters, though I haven't looked at >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> how well this particular one >> works. We might have to go with >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> >> https://github.com/desbma/black-2spaces given >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> >> https://github.com/python/black/issues/378 . >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>> On Mon, May 27, 2019 at 10:43 >> PM Pablo Estrada <pabl...@google.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> This looks pretty good:) I >> know at least a couple people (myself included) who've been annoyed by >> having to take care of lint issues that maybe a code formatter could save >> us. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> Thanks for sharing Ismael. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> -P. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>> On Mon, May 27, 2019, 12:24 >> PM Ismaël Mejía <ieme...@gmail.com> wrote: >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> I stumbled by chance into >> Black [1] a python code auto formatter that >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> is becoming the 'de-facto' >> auto-formatter for python, and wanted to >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> bring to the ML Is there >> interest from the python people to get this >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> into the build? >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> The introduction of >> spotless for Java has been a good improvement and >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> maybe the python code base >> may benefit of this too. >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> WDYT? >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> >> >>>>>>> >> > >>>> >>>>>>>>> >>>>>> > > >>>>>> [1] >> https://github.com/python/black >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> -- >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> Michał Walenia >> >>>>>>> >> > >>>> >> Polidea | Software Engineer >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> M: +48 791 432 002 <+48%20791%20432%20002> >> >>>>>>> >> > >>>> >> E: michal.wale...@polidea.com >> >>>>>>> >> > >>>> >> >> >>>>>>> >> > >>>> >> Unique Tech >> >>>>>>> >> > >>>> >> Check out our projects! >> >>>>> >> >>>>> >> >>>>> >> >>>>> -- >> >>>>> >> >>>>> Michał Walenia >> >>>>> Polidea | Software Engineer >> >>>>> >> >>>>> M: +48 791 432 002 <+48%20791%20432%20002> >> >>>>> E: michal.wale...@polidea.com >> >>>>> >> >>>>> Unique Tech >> >>>>> Check out our projects! >> >>
smime.p7s
Description: S/MIME Cryptographic Signature