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 <[email protected]> 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 <[email protected]> > 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 <[email protected]> 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 <[email protected]> >> wrote: >> >> >> >> The PR is looking good. Should we call a vote? >> >> >> >> On Mon, Jan 27, 2020 at 11:03 AM Robert Bradshaw <[email protected]> >> 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 <[email protected]> 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 <[email protected]> >> 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 < >> [email protected]> 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 < >> [email protected]> 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 >> >> > >>>> <[email protected]> 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 < >> [email protected]> 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 <[email protected]> >> wrote: >> >> > >>>> >>> >> >> > >>>> >>> Sorry, backing off on this due to time constraints. >> >> > >>>> >>> >> >> > >>>> >>> On Wed, Jan 22, 2020 at 3:39 PM Udi Meiri <[email protected]> >> 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 <[email protected]> >> wrote: >> >> > >>>> >>>>> >> >> > >>>> >>>>> +1 to autoformatting >> >> > >>>> >>>>> >> >> > >>>> >>>>> On Wed, Jan 22, 2020 at 9:57 AM Luke Cwik < >> [email protected]> 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 < >> [email protected]> 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 < >> [email protected]> 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 < >> [email protected]> 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 < >> [email protected]> 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 < >> [email protected]> 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 < >> [email protected]> 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 <[email protected]> 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 >> <[email protected]> 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 < >> [email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 >> >> > >>>> >> E: [email protected] >> >> > >>>> >> >> >> > >>>> >> Unique Tech >> >> > >>>> >> Check out our projects! >> > -- Michał Walenia Polidea <https://www.polidea.com/> | Software Engineer M: +48 791 432 002 <+48791432002> E: [email protected] Unique Tech Check out our projects! <https://www.polidea.com/our-work>
