Hi Dave,
On Fri, Jan 26, 2018 at 10:33 PM, Dave Page <[email protected]> wrote:
> Hi
>
> On Fri, Jan 26, 2018 at 1:26 PM, Murtuza Zabuawala <
> [email protected]> 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.
> - 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?
> - 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
...
> ...
> ./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
>
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 2e486f3..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-# NOTE: Any requirements with environment specifiers must be explicitly added
-# to pkg/pip/setup_pip.py (in extras_require), otherwise they will be
-# ignored when building a PIP Wheel.
-Babel==2.3.4
-beautifulsoup4==4.4.1
-blinker==1.3
-click==6.6
-extras==0.0.3
-fixtures==2.0.0
-Flask==0.11.1
-Flask-Babel==0.11.1
-Flask-Gravatar==0.4.2
-Flask-HTMLmin==1.2; python_version >= '2.7'
-Flask-Login==0.3.2
-Flask-Mail==0.9.1
-Flask-Migrate==2.0.3
-Flask-Principal==0.4.0
-Flask-Security==1.7.5
-Flask-SQLAlchemy==2.1
-Flask-WTF==0.12
-html5lib==1.0b3
-importlib==1.0.3; python_version <= '2.7'
-itsdangerous==0.24
-Jinja2==2.7.3
-linecache2==1.0.0
-MarkupSafe==0.23
-ordereddict; python_version < '2.7'
-passlib==1.6.2
-pbr==1.9.1
-psycopg2>=2.7.3.2
-pycrypto==2.6.1
-pyrsistent==0.11.13
-python-dateutil==2.5.0
-python-mimeparse==1.5.1
-pytz==2014.10
-simplejson==3.6.5
-six>=1.9.0
-speaklater==1.3
-SQLAlchemy==1.0.14
-sqlparse==0.1.19
-Werkzeug==0.9.6
-WTForms==2.0.2
-backports.csv==1.0.4; python_version <= '2.7'
-Flask-Paranoid==0.1.0
-Flask-Script==2.0.5; python_version < '2.7'
diff --git a/requirements/common.txt b/requirements/common.txt
new file mode 100644
index 0000000..2e486f3
--- /dev/null
+++ b/requirements/common.txt
@@ -0,0 +1,45 @@
+# NOTE: Any requirements with environment specifiers must be explicitly added
+# to pkg/pip/setup_pip.py (in extras_require), otherwise they will be
+# ignored when building a PIP Wheel.
+Babel==2.3.4
+beautifulsoup4==4.4.1
+blinker==1.3
+click==6.6
+extras==0.0.3
+fixtures==2.0.0
+Flask==0.11.1
+Flask-Babel==0.11.1
+Flask-Gravatar==0.4.2
+Flask-HTMLmin==1.2; python_version >= '2.7'
+Flask-Login==0.3.2
+Flask-Mail==0.9.1
+Flask-Migrate==2.0.3
+Flask-Principal==0.4.0
+Flask-Security==1.7.5
+Flask-SQLAlchemy==2.1
+Flask-WTF==0.12
+html5lib==1.0b3
+importlib==1.0.3; python_version <= '2.7'
+itsdangerous==0.24
+Jinja2==2.7.3
+linecache2==1.0.0
+MarkupSafe==0.23
+ordereddict; python_version < '2.7'
+passlib==1.6.2
+pbr==1.9.1
+psycopg2>=2.7.3.2
+pycrypto==2.6.1
+pyrsistent==0.11.13
+python-dateutil==2.5.0
+python-mimeparse==1.5.1
+pytz==2014.10
+simplejson==3.6.5
+six>=1.9.0
+speaklater==1.3
+SQLAlchemy==1.0.14
+sqlparse==0.1.19
+Werkzeug==0.9.6
+WTForms==2.0.2
+backports.csv==1.0.4; python_version <= '2.7'
+Flask-Paranoid==0.1.0
+Flask-Script==2.0.5; python_version < '2.7'
diff --git a/requirements/requirements-dev.txt
b/requirements/requirements-dev.txt
new file mode 100644
index 0000000..9e1df17
--- /dev/null
+++ b/requirements/requirements-dev.txt
@@ -0,0 +1,21 @@
+#####################################
+# Include all the common dependencies
+#####################################
+-r common.txt
+
+
+###########################################
+# Add all the development dependencies here
+###########################################
+pycodestyle==2.3.1
+pyperclip~=1.5.27
+selenium==3.3.3; python_version < '2.7'
+selenium==3.7.0; python_version >= '2.7'
+testscenarios==0.5.0
+testtools==2.0.0
+traceback2==1.4.0
+unittest2==1.1.0
+mock===2.0.0; python_version < '3.3'
+# Leave this at the end because there is a bug where the '--install-option'
+# is applied to all subsequent requirements
+chromedriver_installer==0.0.6 --install-option='--chromedriver-version=2.33'
diff --git a/requirements/requirements.txt b/requirements/requirements.txt
new file mode 100644
index 0000000..6fe25b9
--- /dev/null
+++ b/requirements/requirements.txt
@@ -0,0 +1,9 @@
+#####################################
+# Include all the common dependencies
+#####################################
+-r common.txt
+
+
+##########################################
+# Add all the production dependencies here
+##########################################
diff --git a/web/.pycodestyle b/web/.pycodestyle
new file mode 100644
index 0000000..ec01c1a
--- /dev/null
+++ b/web/.pycodestyle
@@ -0,0 +1,9 @@
+[pycodestyle]
+ignore = E402
+max-line-length = 79
+statistics = True
+show-source = False
+show-pep8 = False
+count = True
+format = pylint
+exclude = migrations,node_modules
diff --git a/web/package.json b/web/package.json
index 43f96ca..8542797 100644
--- a/web/package.json
+++ b/web/package.json
@@ -95,6 +95,7 @@
"test:karma-once": "yarn run linter && yarn run karma start --single-run",
"test:karma": "yarn run linter && yarn run karma start",
"test:feature": "yarn run bundle && python regression/runtests.py --pkg
feature_tests",
- "test": "yarn run test:karma-once && yarn run bundle && python
regression/runtests.py"
+ "test": "yarn run test:karma-once && yarn run bundle && python
regression/runtests.py",
+ "pep8": "pycodestyle --config=.pycodestyle ."
}
}
diff --git a/web/regression/requirements.txt b/web/regression/requirements.txt
deleted file mode 100644
index 69f4a27..0000000
--- a/web/regression/requirements.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-pyperclip~=1.5.27
-selenium==3.3.3; python_version < '2.7'
-selenium==3.7.0; python_version >= '2.7'
-testscenarios==0.5.0
-testtools==2.0.0
-traceback2==1.4.0
-unittest2==1.1.0
-mock===2.0.0; python_version < '3.3'
-
-# Leave this at the end because there is a bug where the '--install-option' is
applied to all subsequent requirements
-chromedriver_installer==0.0.6 --install-option='--chromedriver-version=2.33'