Skip to content

Commit

Permalink
fix: remove pylint<2.16.0 constraint, update dependencies, and fix py…
Browse files Browse the repository at this point in the history
…lint issues

fix: Resolve pylint plugin issue caused by pylint update
  • Loading branch information
mfarhan943 committed Nov 1, 2024
1 parent a112cb3 commit bfa74a9
Show file tree
Hide file tree
Showing 27 changed files with 67 additions and 89 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,5 @@ def handle(self, *args, **options):

if error_keys:
msg = 'The following courses encountered errors and were not updated:\n'
for error_key in error_keys:
msg += f' - {error_key}\n'
msg += ''.join([f' - {error_key}\n' for error_key in error_keys])
logger.info(msg)
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,15 @@ def handle(self, *args, **options):
tarball = tasks.create_export_tarball(library, library_key, {}, None)
except Exception as e:
raise CommandError(f'Failed to export "{library_key}" with "{e}"') # lint-amnesty, pylint: disable=raise-missing-from
else:
with tarball:
# Save generated archive with keyed filename
prefix, suffix, n = str(library_key).replace(':', '+'), '.tar.gz', 0
while os.path.exists(prefix + suffix):
n += 1
prefix = '{}_{}'.format(prefix.rsplit('_', 1)[0], n) if n > 1 else f'{prefix}_1'
filename = prefix + suffix
target = os.path.join(dest_path, filename)
tarball.file.seek(0)
with open(target, 'wb') as f:
shutil.copyfileobj(tarball.file, f)
print(f'Library "{library.location.library_key}" exported to "{target}"')
with tarball:
# Save generated archive with keyed filename
prefix, suffix, n = str(library_key).replace(':', '+'), '.tar.gz', 0
while os.path.exists(prefix + suffix):
n += 1
prefix = '{}_{}'.format(prefix.rsplit('_', 1)[0], n) if n > 1 else f'{prefix}_1'
filename = prefix + suffix
target = os.path.join(dest_path, filename)
tarball.file.seek(0)
with open(target, 'wb') as f:
shutil.copyfileobj(tarball.file, f)
print(f'Library "{library.location.library_key}" exported to "{target}"')
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def handle(self, *args, **options):
self.change_enrollments(csv_file)

else:
CommandError('No file is provided. File is required')
CommandError('No file is provided. File is required') # pylint: disable=pointless-exception-statement

def change_enrollments(self, csv_file):
""" change the enrollments of the learners. """
Expand Down
2 changes: 1 addition & 1 deletion common/djangoapps/student/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -1020,7 +1020,7 @@ def check_user_reset_password_threshold(cls, user):
return record.failure_count >= max_failures_allowed / 2, record.failure_count

@classmethod
def clear_lockout_counter(cls, user):
def clear_lockout_counter(cls, user): # pylint: disable=useless-return
"""
Removes the lockout counters (normally called after a successful login)
"""
Expand Down
5 changes: 2 additions & 3 deletions common/djangoapps/track/views/segmentio.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,9 +205,8 @@ def track_segmentio_event(request): # pylint: disable=too-many-statements
raise EventValidationError(ERROR_USER_NOT_EXIST) # lint-amnesty, pylint: disable=raise-missing-from
except ValueError:
raise EventValidationError(ERROR_INVALID_USER_ID) # lint-amnesty, pylint: disable=raise-missing-from
else:
context['user_id'] = user.id
context['username'] = user.username
context['user_id'] = user.id
context['username'] = user.username

# course_id is expected to be provided in the context when applicable
course_id = context.get('course_id')
Expand Down
2 changes: 1 addition & 1 deletion lms/djangoapps/discussion/rest_api/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,7 @@ def get_thread_list(
if view in ["unread", "unanswered", "unresponded"]:
query_params[view] = "true"
else:
ValidationError({
ValidationError({ # pylint: disable=pointless-exception-statement
"view": [f"Invalid value. '{view}' must be 'unread' or 'unanswered'"]
})

Expand Down
2 changes: 0 additions & 2 deletions lms/djangoapps/discussion/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,6 @@ def send_ace_message(context): # lint-amnesty, pylint: disable=missing-function
log.info('Sending forum comment notification with context %s', message_context)
ace.send(message, limit_to_channels=[ChannelType.PUSH])
_track_notification_sent(message, context)
else:
return


@shared_task(base=LoggedTask)
Expand Down
2 changes: 1 addition & 1 deletion lms/djangoapps/experiments/flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ def get_bucket(self, course_key=None, track=True):
if (
track and hasattr(request, 'session') and
session_key not in request.session and
not masquerading_as_specific_student and not anonymous
not masquerading_as_specific_student and not anonymous # pylint: disable=used-before-assignment
):
segment.track(
user_id=user.id,
Expand Down
3 changes: 1 addition & 2 deletions lms/djangoapps/static_template_view/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ def render_press_release(request, slug):
resp = render_to_response('static_templates/press_releases/' + template, {})
except TemplateDoesNotExist:
raise Http404 # lint-amnesty, pylint: disable=raise-missing-from
else:
return resp
return resp


@fix_crum_request
Expand Down
6 changes: 5 additions & 1 deletion lms/envs/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,11 @@
FACEBOOK_API_VERSION = "v2.8"

######### custom courses #########
INSTALLED_APPS += ['lms.djangoapps.ccx', 'openedx.core.djangoapps.ccxcon.apps.CCXConnectorConfig']
INSTALLED_APPS += [
'lms.djangoapps.ccx',
'openedx.core.djangoapps.ccxcon.apps.CCXConnectorConfig',
'openedx.core.djangoapps.content_staging',
]
FEATURES['CUSTOM_COURSES_EDX'] = True

# Set dummy values for profile image settings.
Expand Down
1 change: 0 additions & 1 deletion openedx/core/djangoapps/credit/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,6 @@ def remove_requirement_status(cls, username, requirement):
)
)
log.error(log_msg)
return

@classmethod
def retire_user(cls, retirement):
Expand Down
3 changes: 1 addition & 2 deletions openedx/core/djangoapps/credit/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ def update_credit_course_requirements(course_id):
except (InvalidKeyError, ItemNotFoundError, InvalidCreditRequirements) as exc:
LOGGER.error('Error on adding the requirements for course %s - %s', course_id, str(exc))
raise update_credit_course_requirements.retry(args=[course_id], exc=exc)
else:
LOGGER.info('Requirements added for course %s', course_id)
LOGGER.info('Requirements added for course %s', course_id)


def _get_course_credit_requirements(course_key):
Expand Down
3 changes: 1 addition & 2 deletions openedx/core/djangoapps/enrollments/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,8 +341,7 @@ def get_course_enrollment_info(course_id, include_expired=False):
msg = f"Requested enrollment information for unknown course {course_id}"
log.warning(msg)
raise CourseNotFoundError(msg) # lint-amnesty, pylint: disable=raise-missing-from
else:
return CourseSerializer(course, include_expired=include_expired).data
return CourseSerializer(course, include_expired=include_expired).data


def get_user_roles(username):
Expand Down
15 changes: 7 additions & 8 deletions openedx/core/djangoapps/safe_sessions/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,14 +244,13 @@ def parse(cls, safe_cookie_string):
raise SafeCookieError( # lint-amnesty, pylint: disable=raise-missing-from
f"SafeCookieData BWC parse error: {safe_cookie_string!r}."
)
else:
if safe_cookie_data.version != cls.CURRENT_VERSION:
raise SafeCookieError(
"SafeCookieData version {!r} is not supported. Current version is {}.".format(
safe_cookie_data.version,
cls.CURRENT_VERSION,
))
return safe_cookie_data
if safe_cookie_data.version != cls.CURRENT_VERSION:
raise SafeCookieError(
"SafeCookieData version {!r} is not supported. Current version is {}.".format(
safe_cookie_data.version,
cls.CURRENT_VERSION,
))
return safe_cookie_data

def __str__(self):
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,10 @@ def handle(self, *args, **options):
optout_rows[end_idx][0], optout_rows[end_idx][1],
str(err))
raise
else:
cursor.execute('COMMIT;')
log.info("Committed opt-out for rows (%s, %s) through (%s, %s).",
optout_rows[start_idx][0], optout_rows[start_idx][1],
optout_rows[end_idx][0], optout_rows[end_idx][1])
cursor.execute('COMMIT;')
log.info("Committed opt-out for rows (%s, %s) through (%s, %s).",
optout_rows[start_idx][0], optout_rows[start_idx][1],
optout_rows[end_idx][0], optout_rows[end_idx][1])
log.info("Sleeping %s seconds...", sleep_between)
time.sleep(sleep_between)
curr_row_idx += chunk_size
3 changes: 1 addition & 2 deletions openedx/core/lib/api/view_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,7 @@ def __len__(self):

def __iter__(self):
# Yield all the known data first
for item in self._data:
yield item
yield from self._data

# Capture and yield data from the underlying iterator
# until it is exhausted
Expand Down
5 changes: 2 additions & 3 deletions openedx/core/lib/celery/task_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,8 @@ def emulate_http_request(site=None, user=None, middleware_classes=None):
for middleware in reversed(middleware_instances):
_run_method_if_implemented(middleware, 'process_exception', request, exc)
raise
else:
for middleware in reversed(middleware_instances):
_run_method_if_implemented(middleware, 'process_response', request, response)
for middleware in reversed(middleware_instances):
_run_method_if_implemented(middleware, 'process_response', request, response)


def _run_method_if_implemented(instance, method_name, *args, **kwargs):
Expand Down
2 changes: 0 additions & 2 deletions pavelib/paver_tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,5 +93,3 @@ def unexpected_fail_on_npm_install(*args, **kwargs): # pylint: disable=unused-a
"""
if ["npm", "install", "--verbose"] == args[0]: # lint-amnesty, pylint: disable=no-else-raise
raise BuildFailure('Subprocess return code: 50')
else:
return
8 changes: 3 additions & 5 deletions pylint_django_settings.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from pylint_django.checkers import ForeignKeyStringsChecker
from pylint_plugin_utils import get_checker
import sys


class ArgumentCompatibilityError(Exception):
Expand Down Expand Up @@ -47,6 +46,5 @@ def load_configuration(linter):
"""
Configures the Django settings module based on the command-line arguments passed to pylint.
"""
name_checker = get_checker(linter, ForeignKeyStringsChecker)
arguments = linter.cmdline_parser.parse_args()[1]
name_checker.config.django_settings_module = _get_django_settings_module(arguments)
arguments = sys.argv[1:]
linter.config.django_settings_module = _get_django_settings_module(arguments)
8 changes: 6 additions & 2 deletions pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
# SERIOUSLY.
#
# ------------------------------
# Generated by edx-lint version: 5.3.7
# Generated by edx-lint version: 5.4.0
# ------------------------------
[MASTER]
ignore = ,.git,.tox,migrations,node_modules,.pycharm_helpers
Expand Down Expand Up @@ -314,6 +314,10 @@ disable =
c-extension-no-member,
no-name-in-module,
unnecessary-lambda-assignment,
too-many-positional-arguments,
use-dict-literal,
possibly-used-before-assignment,
superfluous-parens,

[REPORTS]
output-format = text
Expand Down Expand Up @@ -410,4 +414,4 @@ int-import-graph =
[EXCEPTIONS]
overgeneral-exceptions = builtins.Exception

# e624ea03d8124aa9cf2e577f830632344a0a07d9
# bc7021ad247d80c14dda494aae1f3ebb63758910
4 changes: 4 additions & 0 deletions pylintrc_tweaks
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ disable+ =
c-extension-no-member,
no-name-in-module,
unnecessary-lambda-assignment,
too-many-positional-arguments,
use-dict-literal,
possibly-used-before-assignment,
superfluous-parens

[BASIC]
attr-rgx = [a-z_][a-z0-9_]{2,40}$
Expand Down
4 changes: 0 additions & 4 deletions requirements/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,6 @@ path<16.12.0
# Constraint can be removed once the issue https://github.com/PyCQA/pycodestyle/issues/1090 is fixed.
pycodestyle<2.9.0

# Date: 2021-07-12
# Issue for unpinning: https://github.com/openedx/edx-platform/issues/33560
pylint<2.16.0 # greater version failing quality test. Fix them in seperate ticket.

# Date: 2021-08-25
# At the time of writing this comment, we do not know whether py2neo>=2022
# will support our currently-deployed Neo4j version (3.5).
Expand Down
14 changes: 4 additions & 10 deletions requirements/edx/development.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ asn1crypto==1.5.1
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# snowflake-connector-python
astroid==2.13.5
astroid==3.3.5
# via
# -r requirements/edx/testing.txt
# pylint
Expand Down Expand Up @@ -1164,10 +1164,6 @@ lazy==1.6
# lti-consumer-xblock
# ora2
# xblock
lazy-object-proxy==1.10.0
# via
# -r requirements/edx/testing.txt
# astroid
libsass==0.10.0
# via
# -c requirements/edx/../constraints.txt
Expand Down Expand Up @@ -1604,9 +1600,8 @@ pylatexenc==2.10
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# olxcleaner
pylint==2.15.10
pylint==3.3.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/testing.txt
# edx-lint
# pylint-celery
Expand All @@ -1617,7 +1612,7 @@ pylint-celery==0.3
# via
# -r requirements/edx/testing.txt
# edx-lint
pylint-django==2.5.5
pylint-django==2.6.1
# via
# -r requirements/edx/testing.txt
# edx-lint
Expand All @@ -1626,7 +1621,7 @@ pylint-plugin-utils==0.8.2
# -r requirements/edx/testing.txt
# pylint-celery
# pylint-django
pylint-pytest==0.3.0
pylint-pytest==1.1.7
# via -r requirements/edx/testing.txt
pylti1p3==2.0.0
# via
Expand Down Expand Up @@ -2235,7 +2230,6 @@ wrapt==1.16.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# astroid
xblock[django]==5.1.0
# via
# -r requirements/edx/doc.txt
Expand Down
2 changes: 1 addition & 1 deletion requirements/edx/testing.in
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@ singledispatch # Backport of functools.singledispatch from Python 3.4
testfixtures # Provides a LogCapture utility used by several tests
tox # virtualenv management for tests
unidiff # Required by coverage_pytest_plugin
pylint-pytest==0.3.0 # A Pylint plugin to suppress pytest-related false positives.
pylint-pytest==1.1.7 # A Pylint plugin to suppress pytest-related false positives.
pact-python # Library for contract testing
py # Needed for pytest configurations, was previously been fetched through tox
15 changes: 5 additions & 10 deletions requirements/edx/testing.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ asn1crypto==1.5.1
# via
# -r requirements/edx/base.txt
# snowflake-connector-python
astroid==2.13.5
astroid==3.3.5
# via
# pylint
# pylint-celery
Expand Down Expand Up @@ -887,8 +887,6 @@ lazy==1.6
# lti-consumer-xblock
# ora2
# xblock
lazy-object-proxy==1.10.0
# via astroid
libsass==0.10.0
# via
# -c requirements/edx/../constraints.txt
Expand Down Expand Up @@ -1212,23 +1210,22 @@ pylatexenc==2.10
# via
# -r requirements/edx/base.txt
# olxcleaner
pylint==2.15.10
pylint==3.3.1
# via
# -c requirements/edx/../constraints.txt
# edx-lint
# pylint-celery
# pylint-django
# pylint-plugin-utils
# pylint-pytest
pylint-celery==0.3
# via edx-lint
pylint-django==2.5.5
pylint-django==2.6.1
# via edx-lint
pylint-plugin-utils==0.8.2
# via
# pylint-celery
# pylint-django
pylint-pytest==0.3.0
pylint-pytest==1.1.7
# via -r requirements/edx/testing.in
pylti1p3==2.0.0
# via -r requirements/edx/base.txt
Expand Down Expand Up @@ -1649,9 +1646,7 @@ webob==1.8.9
# -r requirements/edx/base.txt
# xblock
wrapt==1.16.0
# via
# -r requirements/edx/base.txt
# astroid
# via -r requirements/edx/base.txt
xblock[django]==5.1.0
# via
# -r requirements/edx/base.txt
Expand Down
Loading

0 comments on commit bfa74a9

Please sign in to comment.