Re: [pgAdmin4][RM#3063] Add 'pycodestyle ' Python PEP-8 checker module

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Murtuza Zabuawala <murtuza(dot)zabuawala(at)enterprisedb(dot)com>
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: [pgAdmin4][RM#3063] Add 'pycodestyle ' Python PEP-8 checker module
Date: 2018-01-29 12:46:25
Message-ID: CA+OCxoyZUHs+kSC7e+yV_c2ndHdw5KQ6XiQHp8HjBK4mcs+Ldg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Thanks - applied. I added a Makefile rule for running the check (make
check-pep8), but haven't included it in "make check" yet as it's failing at
present.

On Mon, Jan 29, 2018 at 10:36 AM, Murtuza Zabuawala <
murtuza(dot)zabuawala(at)enterprisedb(dot)com> wrote:

> Hi Dave,
>
> PFA updated patch.
>
> On Mon, Jan 29, 2018 at 3:23 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>> Hi
>>
>> On Sun, Jan 28, 2018 at 4:42 AM, Murtuza Zabuawala <
>> murtuza(dot)zabuawala(at)enterprisedb(dot)com> wrote:
>>
>>> Hi Dave,
>>>
>>> On Fri, Jan 26, 2018 at 10:33 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>
>>>> Hi
>>>>
>>>> On Fri, Jan 26, 2018 at 1:26 PM, Murtuza Zabuawala <
>>>> murtuza(dot)zabuawala(at)enterprisedb(dot)com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> PFA patch to add 'pycodestyle ' (formerly called pep8) which is a
>>>>> Python PEP-8 checker module.
>>>>>
>>>>
>>>> Nice!
>>>>
>>>> A couple of thoughts:
>>>>
>>>> - I think this should go into web/regression/requirements.txt.
>>>> Otherwise, it'll end up being installed in the packages we build.
>>>>
>>>
>>> ​I have come up with new design for requirements (Patch attached).
>>>
>>> We can have layered requirement files, f
>>> or example, we
>>> ​can have all the common dependancies in one file​
>>> ​say ​
>>> requirements
>>> /​
>>> common.tx
>>> ​t, then​
>>>
>>> ​we can have ​
>>> requirements
>>> /​
>>> ​
>>> requirements
>>> ​-​
>>> dev
>>> .tx
>>> ​t which will inherit all the common dependancies from
>>> ​
>>> common.tx
>>> ​t plus it has its own development related
>>> dependancies
>>> ​, similar with ​
>>> requirements
>>> /​
>>> ​
>>> requirements.tx
>>> t
>>> which will inherit all the common dependancies from
>>> ​
>>> common.tx
>>> ​t plus it has its own production related
>>> dependancies
>>> ​(if any),
>>>
>>> Then we can use pip install -r ​
>>> requirements
>>> ​/
>>> requirements
>>> ​-​
>>> dev.txt​
>>>
>>> ​for the development ​
>>> ​and
>>> ​
>>> pip install -r ​
>>> requirements
>>> ​/requirements.txt​
>>>
>>> ​for the production ​
>>> accordingly
>>> ​ without interfering between them.​
>>>
>>
>> Can't we just add "-r ../../requirements.txt" to
>> web/regression/requirements.txt? I can't imagine any situation in which
>> we'd have a requirement for running that isn't needed for testing (or that
>> we'd care about if we did)?
>>
>
> ​Yes, we can add but I thought that it would be good if we have all the
> requirements at one place instead new developers/contributors having to go
> and search into separate directory for development/test related
> dependencies.
>
>
>>
>>
>>>
>>>
>>>> - We should probably include a new Makefile target to run it, as well
>>>> as including it in the "check" target.
>>>>
>>> ​Sorry, I didn't get you on this one, could you please throw some light
>>> on this?​
>>>
>>>
>>
>> We have targets in /Makefile for testing. We should add one for this, and
>> ensure it's also called when running "make check".
>> ​
>>
>>
>
>>
>>>
>>>
>>>> - Once we expect the output to be clean, I think we should add a runner
>>>> script to ci/ so we automate checking.
>>>>
>>> ​Yes, we should
>>> ​.
>>> ​
>>>
>>>> - Would a shorter output be more useful? In particular, it seems to be
>>>> outputting a paragraph of text every time if finds a line longer than 79
>>>> chars. Really, we just need the location of each issue, and then the
>>>> summary I think, e.g.
>>>>
>>>> ​Done.
>>> FYI you can configure it via show-source (displays faulty code) &
>>> show-pep8
>>> (displays
>>> ​corrective
>>>
>>> ​suggestions
>>> )
>>> ​ ​
>>> option
>>> ​s​
>>> in web/.pycodestyle
>>>
>>
>> Right. That definitely looks more useful now.
>>
>>
>>>
>>> ...
>>>> ...
>>>> ./pgadmin/utils/tests/test_versioned_template_loader.py:127: [E501]
>>>> line too long (104 > 79 characters)
>>>> ./pgadmin/utils/tests/test_versioned_template_loader.py:118: [E501]
>>>> line too long (89 > 79 characters)
>>>> ./pgadmin/utils/tests/test_versioned_template_loader.py:116: [E501]
>>>> line too long (89 > 79 characters)
>>>> 3 E111 indentation is not a multiple of four
>>>> 52 E121 continuation line under-indented for hanging indent
>>>> 19 E122 continuation line missing indentation or outdented
>>>> 27 E123 closing bracket does not match indentation of opening
>>>> bracket's line
>>>> 3 E124 closing bracket does not match visual indentation
>>>> 6 E125 continuation line with same indent as next logical line
>>>> 79 E126 continuation line over-indented for hanging indent
>>>> 67 E127 continuation line over-indented for visual indent
>>>> 15 E128 continuation line under-indented for visual indent
>>>> 3 E129 visually indented line with same indent as next logical
>>>> line
>>>> 11 E131 continuation line unaligned for hanging indent
>>>> 6 E203 whitespace before ','
>>>> 1 E211 whitespace before '['
>>>> 2 E221 multiple spaces before operator
>>>> 1 E222 multiple spaces after operator
>>>> 19 E225 missing whitespace around operator
>>>> 19 E226 missing whitespace around arithmetic operator
>>>> 16 E231 missing whitespace after ','
>>>> 2 E241 multiple spaces after ','
>>>> 7 E251 unexpected spaces around keyword / parameter equals
>>>> 1 E261 at least two spaces before inline comment
>>>> 1 E271
>>>> <https://maps.google.com/?q=1%C2%A0+%C2%A0+%C2%A0+%C2%A0E271&entry=gmail&source=g>
>>>> multiple spaces after keyword
>>>> 17 E302 expected 2 blank lines, found 1
>>>> 23 E303 too many blank lines (2)
>>>> 14 E305 expected 2 blank lines after class or function definition,
>>>> found 1
>>>> 1 E401 multiple imports on one line
>>>> 1176 E501 line too long (80 > 79 characters)
>>>> 15 E502 the backslash is redundant between brackets
>>>> 4 E703 statement ends with a semicolon
>>>> 8 E712
>>>> <https://maps.google.com/?q=8%C2%A0+%C2%A0+%C2%A0+%C2%A0E712&entry=gmail&source=g>
>>>> comparison to False should be 'if cond is False:' or 'if not cond:'
>>>> 3 E713 test for membership should be 'not in'
>>>> 21 E722 do not use bare except'
>>>> 1 E741 ambiguous variable name 'l'
>>>> 11 W391 blank line at end of file
>>>> 23 W503 line break before binary operator
>>>> 1677
>>>>
>>>> Thoughts?
>>>>
>>>
>>> ​Please review.
>>> ​
>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Browse pgadmin-hackers by date

  From Date Subject
Next Message pgAdmin 4 Jenkins 2018-01-29 13:16:38 Build failed in Jenkins: pgadmin4-master-python34 #451
Previous Message Dave Page 2018-01-29 12:45:37 pgAdmin 4 commit: Add tools for checking PEP8 compliance. Fixes #3063