Skip to content

Commit

Permalink
Upgrade edx-lint BOM-1298 (#23227)
Browse files Browse the repository at this point in the history
The last time we tried this upgrade we encountered timeouts on the quality job, which it now appears were due to the worker running pylint common running out of memory and killing the Jenkins process. Switching to a different worker type with double the RAM (8 GB vs. 4 GB) seems to have fixed this; about 5.5 GB was used. Upstream is aware of the high memory usage on large projects, it's apparently due primarily to a cache of parsed modules: pylint-dev/pylint#1495 .

Even after disabling some of the new checks that have been added, the new version of pylint found about twice as much to complain about. Just bumping the threshold for now to unblock the Django upgrade, we can try automated utilities like pyupgrade to fix some of these later.
  • Loading branch information
jmbowman authored Mar 2, 2020
1 parent 6330dd1 commit 45644a3
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 19 deletions.
7 changes: 6 additions & 1 deletion pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,11 @@ disable =
xrange-builtin,
zip-builtin-not-iterating,
native-string,
import-outside-toplevel,
inconsistent-return-statements,
no-else-break,
no-else-continue,
useless-object-inheritance,

[REPORTS]
output-format = text
Expand Down Expand Up @@ -455,4 +460,4 @@ int-import-graph =
[EXCEPTIONS]
overgeneral-exceptions = Exception

# 40eae2f3b3491a12ea2f2c98c632d7cb43904d56
# e89c3d2722e0389b5f94fdaba1c1501a3f855af9
8 changes: 7 additions & 1 deletion pylintrc_tweaks
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ ignore+ = ,.git,.tox,migrations,node_modules,.pycharm_helpers
init-hook="import sys; sys.path.extend(['lms/djangoapps', 'cms/djangoapps', 'common/djangoapps'])"

[MESSAGES CONTROL]
# Disable unicode-format-string until we can agree to turn it on.
disable+ =
# Disable unicode-format-string until we can agree to turn it on.
native-string,
# Disable new refactoring suggestions for now, we have more important things to fix first
import-outside-toplevel,
inconsistent-return-statements,
no-else-break,
no-else-continue,
useless-object-inheritance,

[BASIC]
attr-rgx = [a-z_][a-z0-9_]{2,40}$
Expand Down
3 changes: 3 additions & 0 deletions requirements/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,8 @@ oauthlib==2.1.0
# https://github.com/transifex/transifex-client/issues/252
transifex-client==0.13.4

# Constraint from astroid 2.3.3
wrapt==1.11.*

# zipp 2.0.0 requires Python >= 3.6
zipp==1.0.0
2 changes: 1 addition & 1 deletion requirements/edx/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ watchdog==0.10.2 # via -r requirements/edx/paver.txt
web-fragments==0.3.1 # via -r requirements/edx/base.in, staff-graded-xblock, xblock, xblock-utils
webencodings==0.5.1 # via bleach, html5lib
webob==1.8.6 # via xblock, xmodule
wrapt==1.12.0 # via -r requirements/edx/paver.txt
wrapt==1.11.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/paver.txt
git+https://github.com/edx-solutions/[email protected]#egg=xblock-drag-and-drop-v2==2.2.8 # via -r requirements/edx/github.in
git+https://github.com/open-craft/xblock-poll@3c7dcaf6c933d914188f0740a60711603f948d26#egg=xblock-poll==1.9.1 # via -r requirements/edx/github.in
xblock-utils==1.2.4 # via -r requirements/edx/base.in, edx-sga, lti-consumer-xblock, staff-graded-xblock, xblock-drag-and-drop-v2, xblock-google-drive
Expand Down
13 changes: 7 additions & 6 deletions requirements/edx/development.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ aniso8601==8.0.0 # via -r requirements/edx/testing.txt, edx-tincan-py35
anyjson==0.3.3 # via -r requirements/edx/testing.txt, kombu
apipkg==1.5 # via -r requirements/edx/testing.txt, execnet
appdirs==1.4.3 # via -r requirements/edx/testing.txt, fs, virtualenv
astroid==1.5.3 # via -r requirements/edx/testing.txt, pylint, pylint-celery
astroid==2.3.3 # via -r requirements/edx/testing.txt, pylint, pylint-celery
attrs==19.3.0 # via -r requirements/edx/testing.txt, edx-ace, jsonschema, pytest
babel==2.8.0 # via -r requirements/edx/testing.txt, django-babel, django-babel-underscore, sphinx
beautifulsoup4==4.8.2 # via -r requirements/edx/testing.txt, pynliner
Expand Down Expand Up @@ -118,7 +118,7 @@ edx-django-utils==3.0 # via -r requirements/edx/testing.txt, django-config-m
edx-drf-extensions==2.4.6 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, edx-completion, edx-enterprise, edx-organizations, edx-proctoring, edx-rbac, edx-when, edxval
edx-enterprise==2.4.1 # via -r requirements/edx/testing.txt
edx-i18n-tools==0.5.0 # via -r requirements/edx/testing.txt, ora2
edx-lint==1.3.0 # via -r requirements/edx/testing.txt
edx-lint==1.4.1 # via -r requirements/edx/testing.txt
edx-milestones==0.2.6 # via -r requirements/edx/testing.txt
edx-oauth2-provider==1.3.1 # via -r requirements/edx/testing.txt
edx-opaque-keys[django]==2.0.1 # via -r requirements/edx/testing.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
Expand Down Expand Up @@ -234,9 +234,9 @@ pyinotify==0.9.6 # via -r requirements/edx/development.in
pyjwkest==1.3.2 # via -r requirements/edx/testing.txt, edx-drf-extensions
pyjwt==1.5.2 # via -r requirements/edx/testing.txt, djangorestframework-jwt, edx-oauth2-provider, edx-rest-api-client, social-auth-core
pylint-celery==0.3 # via -r requirements/edx/testing.txt, edx-lint
pylint-django==0.7.2 # via -r requirements/edx/testing.txt, edx-lint
pylint-django==2.0.11 # via -r requirements/edx/testing.txt, edx-lint
pylint-plugin-utils==0.6 # via -r requirements/edx/testing.txt, pylint-celery, pylint-django
pylint==1.7.6 # via -r requirements/edx/testing.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
pylint==2.4.2 # via -r requirements/edx/testing.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
pymongo==3.9.0 # via -r requirements/edx/testing.txt, edx-opaque-keys, event-tracking, mongodbproxy, mongoengine
pynliner==0.8.0 # via -r requirements/edx/testing.txt
pyparsing==2.2.0 # via -r requirements/edx/testing.txt, calc, chem, packaging, pycontracts
Expand Down Expand Up @@ -282,7 +282,7 @@ shapely==1.7.0 # via -r requirements/edx/testing.txt
shortuuid==0.5.0 # via -r requirements/edx/testing.txt, edx-django-oauth2-provider
simplejson==3.17.0 # via -r requirements/edx/testing.txt, sailthru-client, super-csv, xblock-utils
singledispatch==3.4.0.3 # via -r requirements/edx/testing.txt
six==1.14.0 # via -r requirements/edx/pip-tools.txt, -r requirements/edx/testing.txt, analytics-python, astroid, bleach, bok-choy, calc, cryptography, diff-cover, django-appconf, django-classy-tags, django-countries, django-pyfs, django-sekizai, django-simple-history, django-statici18n, drf-yasg, edx-ace, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-opaque-keys, edx-rbac, edx-search, edx-sphinx-theme, event-tracking, freezegun, fs, fs-s3fs, help-tokens, html5lib, httpretty, isodate, jsonschema, libsass, mando, mock, nltk, packaging, pathlib2, paver, pip-tools, pycontracts, pyjwkest, pylint, pytest-xdist, python-dateutil, python-memcached, python-swiftclient, singledispatch, social-auth-app-django, social-auth-core, sphinxcontrib-httpdomain, stevedore, tox, transifex-client, virtualenv, xblock
six==1.14.0 # via -r requirements/edx/pip-tools.txt, -r requirements/edx/testing.txt, analytics-python, astroid, bleach, bok-choy, calc, cryptography, diff-cover, django-appconf, django-classy-tags, django-countries, django-pyfs, django-sekizai, django-simple-history, django-statici18n, drf-yasg, edx-ace, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-opaque-keys, edx-rbac, edx-search, edx-sphinx-theme, event-tracking, freezegun, fs, fs-s3fs, help-tokens, html5lib, httpretty, isodate, jsonschema, libsass, mando, mock, nltk, packaging, pathlib2, paver, pip-tools, pycontracts, pyjwkest, pytest-xdist, python-dateutil, python-memcached, python-swiftclient, singledispatch, social-auth-app-django, social-auth-core, sphinxcontrib-httpdomain, stevedore, tox, transifex-client, virtualenv, xblock
slumber==0.7.1 # via -r requirements/edx/testing.txt, edx-bulk-grades, edx-enterprise, edx-rest-api-client
snowballstemmer==2.0.0 # via sphinx
social-auth-core==3.2.0 # via -r requirements/edx/testing.txt, social-auth-app-django
Expand All @@ -309,6 +309,7 @@ toml==0.10.0 # via -r requirements/edx/testing.txt, tox
tox-battery==0.5.2 # via -r requirements/edx/testing.txt
tox==3.14.5 # via -r requirements/edx/testing.txt, tox-battery
transifex-client==0.13.4 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt
typed-ast==1.4.1 # via -r requirements/edx/testing.txt, astroid
unicodecsv==0.14.1 # via -r requirements/edx/testing.txt, edx-enterprise
unidiff==0.5.5 # via -r requirements/edx/testing.txt, coverage-pytest-plugin
uritemplate==3.0.1 # via -r requirements/edx/testing.txt, coreapi, drf-yasg
Expand All @@ -322,7 +323,7 @@ wcwidth==0.1.8 # via -r requirements/edx/testing.txt, pytest
web-fragments==0.3.1 # via -r requirements/edx/testing.txt, staff-graded-xblock, xblock, xblock-utils
webencodings==0.5.1 # via -r requirements/edx/testing.txt, bleach, html5lib
webob==1.8.6 # via -r requirements/edx/testing.txt, xblock, xmodule
wrapt==1.12.0 # via -r requirements/edx/testing.txt, astroid
wrapt==1.11.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, astroid
git+https://github.com/edx-solutions/[email protected]#egg=xblock-drag-and-drop-v2==2.2.8 # via -r requirements/edx/testing.txt
git+https://github.com/open-craft/xblock-poll@3c7dcaf6c933d914188f0740a60711603f948d26#egg=xblock-poll==1.9.1 # via -r requirements/edx/testing.txt
xblock-utils==1.2.4 # via -r requirements/edx/testing.txt, edx-sga, lti-consumer-xblock, staff-graded-xblock, xblock-drag-and-drop-v2, xblock-google-drive
Expand Down
2 changes: 1 addition & 1 deletion requirements/edx/paver.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ six==1.14.0 # via edx-opaque-keys, libsass, mock, paver, python-me
stevedore==1.32.0 # via -r requirements/edx/paver.in, edx-opaque-keys
urllib3==1.25.8 # via requests
watchdog==0.10.2 # via -r requirements/edx/paver.in
wrapt==1.12.0 # via -r requirements/edx/paver.in
wrapt==1.11.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/paver.in
zipp==1.0.0 # via -c requirements/edx/../constraints.txt, importlib-metadata
2 changes: 1 addition & 1 deletion requirements/edx/testing.in
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ code-annotations # Perform code annotation checking, such as for PII an
cssselect # Used to extract HTML fragments via CSS selectors in 2 test cases and pyquery
ddt # Run a test case multiple times with different input; used in many, many of our tests
edx-i18n-tools>=0.4.6 # Commands for developers and translators to extract, compile and validate translations
edx-lint==1.3.0 # pylint extensions for Open edX repositories
edx-lint # pylint extensions for Open edX repositories
factory-boy # Library for creating test fixtures, used in many tests
# Pinning the freezegun version because 0.3.13 is causing failures which have also been reported on the git repo by public.
freezegun # Allows tests to mock the output of assorted datetime module functions
Expand Down
13 changes: 7 additions & 6 deletions requirements/edx/testing.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ aniso8601==8.0.0 # via -r requirements/edx/base.txt, edx-tincan-py35
anyjson==0.3.3 # via -r requirements/edx/base.txt, kombu
apipkg==1.5 # via execnet
appdirs==1.4.3 # via -r requirements/edx/base.txt, fs, virtualenv
astroid==1.5.3 # via pylint, pylint-celery
astroid==2.3.3 # via pylint, pylint-celery
attrs==19.3.0 # via -r requirements/edx/base.txt, edx-ace, pytest
babel==2.8.0 # via -r requirements/edx/base.txt, django-babel, django-babel-underscore
beautifulsoup4==4.8.2 # via -r requirements/edx/base.txt, -r requirements/edx/testing.in, pynliner
Expand Down Expand Up @@ -114,7 +114,7 @@ edx-django-utils==3.0 # via -r requirements/edx/base.txt, django-config-mode
edx-drf-extensions==2.4.6 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, edx-completion, edx-enterprise, edx-organizations, edx-proctoring, edx-rbac, edx-when, edxval
edx-enterprise==2.4.1 # via -r requirements/edx/base.txt
edx-i18n-tools==0.5.0 # via -r requirements/edx/base.txt, -r requirements/edx/testing.in, ora2
edx-lint==1.3.0 # via -r requirements/edx/testing.in
edx-lint==1.4.1 # via -r requirements/edx/testing.in
edx-milestones==0.2.6 # via -r requirements/edx/base.txt
edx-oauth2-provider==1.3.1 # via -r requirements/edx/base.txt
edx-opaque-keys[django]==2.0.1 # via -r requirements/edx/base.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
Expand Down Expand Up @@ -223,9 +223,9 @@ pygments==2.5.2 # via -r requirements/edx/base.txt, -r requirements/ed
pyjwkest==1.3.2 # via -r requirements/edx/base.txt, edx-drf-extensions
pyjwt==1.5.2 # via -r requirements/edx/base.txt, djangorestframework-jwt, edx-oauth2-provider, edx-rest-api-client, social-auth-core
pylint-celery==0.3 # via edx-lint
pylint-django==0.7.2 # via edx-lint
pylint-django==2.0.11 # via edx-lint
pylint-plugin-utils==0.6 # via pylint-celery, pylint-django
pylint==1.7.6 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
pylint==2.4.2 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
pymongo==3.9.0 # via -r requirements/edx/base.txt, edx-opaque-keys, event-tracking, mongodbproxy, mongoengine
pynliner==0.8.0 # via -r requirements/edx/base.txt
pyparsing==2.2.0 # via -r requirements/edx/base.txt, calc, chem, packaging, pycontracts
Expand Down Expand Up @@ -270,7 +270,7 @@ shapely==1.7.0 # via -r requirements/edx/base.txt
shortuuid==0.5.0 # via -r requirements/edx/base.txt, edx-django-oauth2-provider
simplejson==3.17.0 # via -r requirements/edx/base.txt, sailthru-client, super-csv, xblock-utils
singledispatch==3.4.0.3 # via -r requirements/edx/testing.in
six==1.14.0 # via -r requirements/edx/base.txt, -r requirements/edx/coverage.txt, analytics-python, astroid, bleach, bok-choy, calc, cryptography, diff-cover, django-appconf, django-classy-tags, django-countries, django-pyfs, django-sekizai, django-simple-history, django-statici18n, drf-yasg, edx-ace, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-opaque-keys, edx-rbac, edx-search, event-tracking, freezegun, fs, fs-s3fs, help-tokens, html5lib, httpretty, isodate, libsass, mando, mock, nltk, packaging, pathlib2, paver, pycontracts, pyjwkest, pylint, pytest-xdist, python-dateutil, python-memcached, python-swiftclient, singledispatch, social-auth-app-django, social-auth-core, stevedore, tox, transifex-client, virtualenv, xblock
six==1.14.0 # via -r requirements/edx/base.txt, -r requirements/edx/coverage.txt, analytics-python, astroid, bleach, bok-choy, calc, cryptography, diff-cover, django-appconf, django-classy-tags, django-countries, django-pyfs, django-sekizai, django-simple-history, django-statici18n, drf-yasg, edx-ace, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-opaque-keys, edx-rbac, edx-search, event-tracking, freezegun, fs, fs-s3fs, help-tokens, html5lib, httpretty, isodate, libsass, mando, mock, nltk, packaging, pathlib2, paver, pycontracts, pyjwkest, pytest-xdist, python-dateutil, python-memcached, python-swiftclient, singledispatch, social-auth-app-django, social-auth-core, stevedore, tox, transifex-client, virtualenv, xblock
slumber==0.7.1 # via -r requirements/edx/base.txt, edx-bulk-grades, edx-enterprise, edx-rest-api-client
social-auth-core==3.2.0 # via -r requirements/edx/base.txt, social-auth-app-django
git+https://github.com/jazzband/sorl-thumbnail.git@13bedfb7d2970809eda597e3ef79318a6fa80ac2#egg=sorl-thumbnail # via -r requirements/edx/base.txt
Expand All @@ -287,6 +287,7 @@ toml==0.10.0 # via tox
tox-battery==0.5.2 # via -r requirements/edx/testing.in
tox==3.14.5 # via -r requirements/edx/testing.in, tox-battery
transifex-client==0.13.4 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.in
typed-ast==1.4.1 # via astroid
unicodecsv==0.14.1 # via -r requirements/edx/base.txt, edx-enterprise
unidiff==0.5.5 # via -r requirements/edx/testing.in, coverage-pytest-plugin
uritemplate==3.0.1 # via -r requirements/edx/base.txt, coreapi, drf-yasg
Expand All @@ -299,7 +300,7 @@ wcwidth==0.1.8 # via pytest
web-fragments==0.3.1 # via -r requirements/edx/base.txt, staff-graded-xblock, xblock, xblock-utils
webencodings==0.5.1 # via -r requirements/edx/base.txt, bleach, html5lib
webob==1.8.6 # via -r requirements/edx/base.txt, xblock, xmodule
wrapt==1.12.0 # via -r requirements/edx/base.txt, astroid
wrapt==1.11.2 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, astroid
git+https://github.com/edx-solutions/[email protected]#egg=xblock-drag-and-drop-v2==2.2.8 # via -r requirements/edx/base.txt
git+https://github.com/open-craft/xblock-poll@3c7dcaf6c933d914188f0740a60711603f948d26#egg=xblock-poll==1.9.1 # via -r requirements/edx/base.txt
xblock-utils==1.2.4 # via -r requirements/edx/base.txt, edx-sga, lti-consumer-xblock, staff-graded-xblock, xblock-drag-and-drop-v2, xblock-google-drive
Expand Down
3 changes: 2 additions & 1 deletion scripts/Jenkinsfiles/quality
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ pipeline {
stage('Run Tests') {
parallel {
stage("commonlib pylint") {
agent { label "jenkins-worker" }
// "pylint common" requires 5.5 GB of RAM, so use js-worker (8 GB) instead of jenkins-worker (4 GB)
agent { label "js-worker" }
environment {
TEST_SUITE = "quality"
SHARD = 1
Expand Down
2 changes: 1 addition & 1 deletion scripts/thresholds.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
set -e

export LOWER_PYLINT_THRESHOLD=1000
export UPPER_PYLINT_THRESHOLD=1962
export UPPER_PYLINT_THRESHOLD=4050
export ESLINT_THRESHOLD=5530
export STYLELINT_THRESHOLD=880

0 comments on commit 45644a3

Please sign in to comment.