I agree with the other folks. I'm personally not a fan of pre commit hooks, but if people like it, they can enable it.
Cheers, Fokko Op di 23 jul. 2019 om 20:13 schreef Kaxil Naik <kaxiln...@gmail.com> > It is fully-optional so I don't think we need an AIP there. > > > > On Tue, Jul 23, 2019 at 11:36 PM Beau Barker <beauinmelbou...@gmail.com> > wrote: > > > Just add a .pre-commit-config.yaml to the project, no need for an AIP. > > > > > On 24 Jul 2019, at 2:42 am, Jarek Potiuk <jarek.pot...@polidea.com> > > wrote: > > > > > > Any more comments on it? > > > Should I make an AIP for that :)? Or should I just ask a vote/propose > a > > PR > > > ? Anyone has a strong opinion? > > > I think it changes the dev workflow quite a bit on one hand, but it is > > > fully optional on the other hand. > > > > > > On Thu, Jul 4, 2019 at 9:23 AM Kamil Breguła < > kamil.breg...@polidea.com> > > > wrote: > > > > > >> +1 At first I was skeptical about this tool. I prefer to run it by > > >> hand, but I am more and more convinced that using it as a pre-commit > > >> makes sense. > > >> > > >> On Wed, Jul 3, 2019 at 10:58 PM Felix Uellendall > <felue...@pm.me.invalid > > > > > >> wrote: > > >>> > > >>> +1 (non-binding), I love that. I use a git pre-commit bash script > but I > > >> think the framework looks even better. :) > > >>> > > >>> -feluelle > > >>> > > >>> -------- Original Message -------- > > >>>> On Jul 2, 2019, 19:48, Maxime Beauchemin wrote: > > >>>> > > >>>> +1 > > >>>> > > >>>> On Mon, Jul 1, [2019](tel:2019) at 11:20 PM Kaxil Naik < > > >> kaxiln...@gmail.com> wrote: > > >>>> > > >>>>> +1 We have been using this on some of our Astronomer repositories > as > > >> well > > >>>>> and have been happy with it. > > >>>>> > > >>>>> Regards, > > >>>>> Kaxil > > >>>>> > > >>>>> On Tue, Jul 2, [2019](tel:2019), 11:46 Jarek Potiuk < > > >> jarek.pot...@polidea.com> wrote: > > >>>>> > > >>>>>> TL;DR: I would like to make a proposal to add (easily managed) > > >>>>> pre-commit > > >>>>>> hooks with various lint checkers part of recommended (and > > >> encouraged) > > >>>>>> development workflow for Airflow. This will help with speeding-up > > >> local > > >>>>>> development cycle and decrease pressure on Travis CI. > > >>>>>> > > >>>>>> Over the last few months in our other oozie-to-airflow > > >>>>>> <https://github.com/GoogleCloudPlatform/oozie-to-airflow> project > > >> we've > > >>>>>> been running pre-commit hooks - we've integrated the fantastic > > >>>>>> https://pre-commit.com/ framework and we never looked back. The > > >> upcoming > > >>>>>> changes to docker images (AIP-10) makes it easy to standardise > > >>>>> pylint/mypy > > >>>>>> and other checks to be the same for every developer (using docker > > >> images) > > >>>>>> so it also makes possible to have consistent pre-commit > environment > > >> for > > >>>>>> static checks for everyone. > > >>>>>> > > >>>>>> Pre-commit framework has a number of cool features you would > expect > > >> from > > >>>>>> such tool: > > >>>>>> > > >>>>>> - it is super easy to install and manage the checks ('pre-commit > > >>>>> install') > > >>>>>> - all the checks are managed in single .pre-commit-config.yaml > file > > >> (in > > >>>>>> repo) > > >>>>>> - it allows to run various checks only on the changes you are > > >> committing > > >>>>>> - it has nice and simple UI to run checks individually or skip > some > > >>>>> checks, > > >>>>>> or run on all files > > >>>>>> - it automatically uses all processors on your machine (it will > > >>>>> distribute > > >>>>>> changed files evenly) > > >>>>>> - it has great UI for reporting what's going on > > >>>>>> - it has a number of pre-defined checks that are super-useful > > >>>>>> - check if you have not left debug instructions (Ash :) - no more > > >>>>>> problems with that!) > > >>>>>> - check if you resolved merge conflicts > > >>>>>> - check if you have not submitted a private key > > >>>>>> - check correctness of various files (shell, yaml, xml, whether > > >>>>> shebangs > > >>>>>> are added correctly etc.) > > >>>>>> - .... > > >>>>>> - it can even correct some of the problems found (it leaves > > >> corrected > > >>>>> files > > >>>>>> for you to commit): > > >>>>>> - automatically adding missing licences > > >>>>>> - automatically add python-encoding pragma > > >>>>>> - add Table of Contents for markdown files > > >>>>>> - and many more > > >>>>>> - it can be integrated in CI to run the very same checks but on > all > > >> files > > >>>>>> during CI. > > >>>>>> - you can use --no-verify switch to skip pre-commit > > >>>>>> > > >>>>>> There are multiple advantages of using pre-commit hooks. It not > only > > >>>>> speeds > > >>>>>> up local development (no more waiting for Travis) but if most > > >> people will > > >>>>>> start using it - it will also decrease the pressure on Travis - > less > > >>>>> people > > >>>>>> will be submitting PRs just to check if they pass all the checks. > I > > >> think > > >>>>>> that might be single biggest thing that we can do to have far less > > >> CPU > > >>>>> used > > >>>>>> by Airflow builds. > > >>>>>> > > >>>>>> There is one disadvantage I noticed - when you have unstaged > > >> changes, > > >>>>>> pre-commit stashes them before running checks and sometimes (if > you > > >>>>> Ctrl^C > > >>>>>> very quickly) it will not stash them back - but it is recoverable > > >> it just > > >>>>>> needs one liner to recover. In normal circumstances it is really > > >> safe to > > >>>>>> run. > > >>>>>> > > >>>>>> I already made a working POC of pre-commit (not intended for merge > > >> - it > > >>>>> has > > >>>>>> many more unrelated changes that I am going to submit as separate > > >> PRs). > > >>>>> It > > >>>>>> takes less than [20-30](tel:2030) seconds to run all the checks in > > >> a small commit > > >>>>>> (including pylint/mypy and other checks) so IMHO it is perfectly > OK > > >> to > > >>>>> run > > >>>>>> on every commit. You can see the Job in CI here: > > >>>>>> https://travis-ci.org/PolideaInternal/airflow/jobs/552862055 and > a > > >> short > > >>>>>> documentation I wrote on using pre-commits here: > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > https://github.com/PolideaInternal/airflow/blob/pre-commit-hooks/CONTRIBUTING.md#pre-commit-hooks > > >>>>>> > > >>>>>> Here are the checks I managed to get running for Airflow (pylint > is > > >>>>> skipped > > >>>>>> for now until we finish it but it can be tested in separate job - > I > > >> also > > >>>>>> did it in the same build): > > >>>>>> > > >>>>>> Docker build - might take longer on setup.py change (see > > >>>>>> ./.build/cache dir for logs).......................Passed > > >>>>>> Add licence for all XML, md > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > files...........................................................................Passed > > >>>>>> Add licence for all JS > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > files................................................................................Passed > > >>>>>> Add licence for all SQL > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > files...............................................................................Passed > > >>>>>> Add licence for all JINJA template > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > files....................................................................Passed > > >>>>>> Add licence for all other > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > files.............................................................................Passed > > >>>>>> No-tabs > > >>>>>> > > >>>>> > > >> > > > checker.............................................................................................Passed > > >>>>>> Check yaml files with > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > yamllint..............................................................................Passed > > >>>>>> Check that executables have > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > shebangs........................................................................Passed > > >>>>>> Check for merge > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > conflicts...................................................................................Passed > > >>>>>> Check > > >>>>>> > > >>>>> > > >> > > > Xml...................................................................................................Passed > > >>>>>> Debug Statements > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > (Python)...................................................................................Passed > > >>>>>> Detect Private > > >>>>>> > > >>>>> > > >> > > > Key..........................................................................................Passed > > >>>>>> Fix python encoding > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > pragma..................................................................................Passed > > >>>>>> Fix End of > > >>>>>> > > >>>>> > > >> > > > Files............................................................................................Passed > > >>>>>> Mixed line > > >>>>>> > > >>>>> > > >> > > > ending...........................................................................................Passed > > >>>>>> Check hooks apply to the > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > repository.........................................................................Passed > > >>>>>> Add TOC to markdown > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > documents...............................................................................Passed > > >>>>>> Check Shell scripts syntax > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > corectness.......................................................................Passed > > >>>>>> Lint > > >>>>>> > > >>>>> > > >> > > > dockerfile.............................................................................................Passed > > >>>>>> Run > > >>>>>> > > >>>>> > > >> > > > mypy....................................................................................................Passed > > >>>>>> Run pylint for main > > >>>>>> > > >>>>>> > > >>>>> > > >> > > > sources................................................................................Skipped > > >>>>>> Run pylint for > > >>>>>> > > >>>>> > > >> > > > tests.......................................................................................Skipped > > >>>>>> Run > > >>>>>> > > >>>>> > > >> > > > flake8..................................................................................................Passed > > >>>>>> > > >>>>>> > > >>>>>> J. > > >>>>>> > > >>>>>> J. > > >>>>>> > > >>>>>> -- > > >>>>>> > > >>>>>> Jarek Potiuk > > >>>>>> Polidea <https://www.polidea.com/> | Principal Software Engineer > > >>>>>> > > >>>>>> M: [+48 660 796 129](tel:+48660796129) > > >> <[+48660796129](tel:+48660796129)> > > >>>>>> [image: Polidea] <https://www.polidea.com/> > > >>>>>> > > >>>>> > > >> > > > > > > > > > -- > > > > > > Jarek Potiuk > > > Polidea <https://www.polidea.com/> | Principal Software Engineer > > > > > > M: +48 660 796 129 <+48660796129> > > > [image: Polidea] <https://www.polidea.com/> > > > > > -- > *Kaxil Naik* > *Big Data Consultant | DevOps Data Engineer* > *Certified *Google Cloud Data Engineer | *Certified* Apache Spark & Neo4j > Developer > *LinkedIn*: https://www.linkedin.com/in/kaxil >