Merge pull request #26643 from edx/jenkins/upgrade-python-requirements-5906bde
Python Requirements Update
This commit is contained in:
@@ -1332,7 +1332,7 @@ def create_xblock_info(xblock, data=None, metadata=None, include_ancestor_info=F
|
||||
xblock_info['staff_only_message'] = True
|
||||
elif child_info and child_info['children']:
|
||||
xblock_info['staff_only_message'] = all(
|
||||
[child['staff_only_message'] for child in child_info['children']]
|
||||
child['staff_only_message'] for child in child_info['children']
|
||||
)
|
||||
else:
|
||||
xblock_info['staff_only_message'] = False
|
||||
|
||||
@@ -177,7 +177,7 @@ def _course_team_user(request, course_key, email):
|
||||
role_added = True
|
||||
else:
|
||||
return permissions_error_response
|
||||
elif role.has_user(user, check_user_activation=False):
|
||||
elif role.has_user(user, check_user_activation=False): # pylint: disable=no-value-for-parameter
|
||||
# Remove the user from this old role:
|
||||
old_roles.add(role)
|
||||
|
||||
|
||||
@@ -72,6 +72,6 @@ def should_send_proctoring_requirements_email(username, course_id):
|
||||
settings={'is_time_limited': True}
|
||||
)
|
||||
|
||||
has_proctored_exam = any([exam.is_proctored_exam for exam in timed_exams])
|
||||
has_proctored_exam = any(exam.is_proctored_exam for exam in timed_exams)
|
||||
|
||||
return has_proctored_exam
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# lint-amnesty, pylint: disable=missing-module-docstring
|
||||
|
||||
import unittest
|
||||
import pytest
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
import pytest
|
||||
import six
|
||||
from django.conf import settings
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
@@ -13,13 +13,11 @@ from testfixtures import LogCapture
|
||||
|
||||
from common.djangoapps.course_modes.models import CourseMode
|
||||
from common.djangoapps.course_modes.tests.factories import CourseModeFactory
|
||||
from common.djangoapps.student.models import CourseEnrollment
|
||||
from common.djangoapps.student.models import BulkChangeEnrollmentConfiguration, CourseEnrollment
|
||||
from common.djangoapps.student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
from common.djangoapps.student.models import BulkChangeEnrollmentConfiguration
|
||||
|
||||
LOGGER_NAME = 'common.djangoapps.student.management.commands.bulk_change_enrollment_csv'
|
||||
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ class JwtHasTpaProviderFilterForRequestedProvider(BasePermission):
|
||||
# TODO: Remove ApiKeyHeaderPermission. Check deprecated_api_key_header custom attribute for active usage.
|
||||
_NOT_JWT_RESTRICTED_TPA_PERMISSIONS = (
|
||||
C(NotJwtRestrictedApplication) &
|
||||
(C(IsSuperuser) | ApiKeyHeaderPermission | C(IsStaff))
|
||||
(C(IsSuperuser) | ApiKeyHeaderPermission | C(IsStaff)) # pylint: disable=unsupported-binary-operation
|
||||
)
|
||||
_JWT_RESTRICTED_TPA_PERMISSIONS = (
|
||||
C(JwtRestrictedApplication) &
|
||||
|
||||
@@ -100,21 +100,21 @@ class TransactionManagersTestCase(TransactionTestCase):
|
||||
if connection.vendor != 'mysql':
|
||||
raise unittest.SkipTest('Only works on MySQL.')
|
||||
|
||||
outer_atomic()(do_nothing)()
|
||||
outer_atomic()(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with atomic():
|
||||
atomic()(do_nothing)()
|
||||
atomic()(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with outer_atomic():
|
||||
atomic()(do_nothing)()
|
||||
atomic()(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with atomic():
|
||||
outer_atomic()(do_nothing)()
|
||||
outer_atomic()(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with outer_atomic():
|
||||
outer_atomic()(do_nothing)()
|
||||
outer_atomic()(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
def test_named_outer_atomic_nesting(self):
|
||||
"""
|
||||
@@ -124,44 +124,44 @@ class TransactionManagersTestCase(TransactionTestCase):
|
||||
if connection.vendor != 'mysql':
|
||||
raise unittest.SkipTest('Only works on MySQL.')
|
||||
|
||||
outer_atomic(name='abc')(do_nothing)()
|
||||
outer_atomic(name='abc')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with atomic():
|
||||
outer_atomic(name='abc')(do_nothing)()
|
||||
outer_atomic(name='abc')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with enable_named_outer_atomic('abc'):
|
||||
|
||||
outer_atomic(name='abc')(do_nothing)() # Not nested.
|
||||
outer_atomic(name='abc')(do_nothing)() # pylint: disable=not-callable # Not nested.
|
||||
|
||||
with atomic():
|
||||
outer_atomic(name='pqr')(do_nothing)() # Not enabled.
|
||||
outer_atomic(name='pqr')(do_nothing)() # pylint: disable=not-callable # Not enabled.
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with atomic():
|
||||
outer_atomic(name='abc')(do_nothing)()
|
||||
outer_atomic(name='abc')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with enable_named_outer_atomic('abc', 'def'):
|
||||
|
||||
outer_atomic(name='def')(do_nothing)() # Not nested.
|
||||
outer_atomic(name='def')(do_nothing)() # pylint: disable=not-callable # Not nested.
|
||||
|
||||
with atomic():
|
||||
outer_atomic(name='pqr')(do_nothing)() # Not enabled.
|
||||
outer_atomic(name='pqr')(do_nothing)() # pylint: disable=not-callable # Not enabled.
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with atomic():
|
||||
outer_atomic(name='def')(do_nothing)()
|
||||
outer_atomic(name='def')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with outer_atomic():
|
||||
outer_atomic(name='def')(do_nothing)()
|
||||
outer_atomic(name='def')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with atomic():
|
||||
outer_atomic(name='abc')(do_nothing)()
|
||||
outer_atomic(name='abc')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
with self.assertRaisesRegex(TransactionManagementError, 'Cannot be inside an atomic block.'):
|
||||
with outer_atomic():
|
||||
outer_atomic(name='abc')(do_nothing)()
|
||||
outer_atomic(name='abc')(do_nothing)() # pylint: disable=not-callable
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
|
||||
@@ -9,7 +9,6 @@ from datetime import datetime
|
||||
from io import StringIO
|
||||
import pytest
|
||||
import ddt
|
||||
import six
|
||||
from django.core import exceptions
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.http import HttpRequest
|
||||
|
||||
@@ -1284,7 +1284,7 @@ class ChoiceResponseTest(ResponseTest): # pylint: disable=missing-class-docstri
|
||||
ok0 = c % 2 == 0 # check remainder modulo 2
|
||||
ok1 = c % 3 == 0 # check remainder modulo 3
|
||||
ok2 = c % 5 == 0 # check remainder modulo 5
|
||||
ok3 = not any([ok0, ok1, ok2])
|
||||
ok3 = not any((ok0, ok1, ok2))
|
||||
""")
|
||||
choices = ["$ok0", "$ok1", "$ok2", "$ok3"]
|
||||
problem = self.build_problem(script=script,
|
||||
|
||||
@@ -228,7 +228,7 @@ class LibraryContentBlock(
|
||||
raise NotImplementedError("Unsupported mode.")
|
||||
selected_keys |= added_block_keys
|
||||
|
||||
if any([invalid_block_keys, overlimit_block_keys, added_block_keys]):
|
||||
if any((invalid_block_keys, overlimit_block_keys, added_block_keys)):
|
||||
selected = list(selected_keys)
|
||||
random.shuffle(selected)
|
||||
|
||||
|
||||
@@ -725,7 +725,7 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo
|
||||
results_by_url[location_url].setdefault('definition', {})['children'] = set(total_children)
|
||||
else:
|
||||
results_by_url[location_url] = result
|
||||
if location.block_type == 'course':
|
||||
if location.block_type == 'course': # pylint: disable=no-member
|
||||
root = location_url
|
||||
|
||||
# now traverse the tree and compute down the inherited metadata
|
||||
|
||||
@@ -679,7 +679,7 @@ class DraftModuleStore(MongoModuleStore):
|
||||
# fix a bug where dangling pointers should imply a change
|
||||
if len(xblock.children) > len(xblock.get_children()):
|
||||
return True
|
||||
return any([self.has_changes(child) for child in xblock.get_children()])
|
||||
return any(self.has_changes(child) for child in xblock.get_children())
|
||||
# otherwise there are no changes
|
||||
else:
|
||||
return False
|
||||
|
||||
@@ -361,7 +361,7 @@ class DraftVersioningModuleStore(SplitMongoModuleStore, ModuleStoreDraftAndPubli
|
||||
# check the children in the draft
|
||||
if 'children' in draft_block.fields:
|
||||
return any(
|
||||
[has_changes_subtree(child_block_id) for child_block_id in draft_block.fields['children']]
|
||||
has_changes_subtree(child_block_id) for child_block_id in draft_block.fields['children']
|
||||
)
|
||||
|
||||
return False
|
||||
|
||||
@@ -626,7 +626,7 @@ def mongo_uses_error_check(store):
|
||||
Does mongo use the error check as a separate message?
|
||||
"""
|
||||
if hasattr(store, 'modulestores'):
|
||||
return any([mongo_uses_error_check(substore) for substore in store.modulestores])
|
||||
return any(mongo_uses_error_check(substore) for substore in store.modulestores)
|
||||
return False
|
||||
|
||||
|
||||
|
||||
@@ -214,9 +214,9 @@ class DirectOnlyCategorySemantics(PureModulestoreTestCase):
|
||||
def verify_course_summery_fields(course_summary):
|
||||
""" Verify that every `course_summary` object has all the required fields """
|
||||
expected_fields = CourseSummary.course_info_fields + ['id', 'location', 'has_ended']
|
||||
return all([hasattr(course_summary, field) for field in expected_fields])
|
||||
return all(hasattr(course_summary, field) for field in expected_fields)
|
||||
|
||||
assert all((verify_course_summery_fields(course_summary) for course_summary in course_summaries))
|
||||
assert all(verify_course_summery_fields(course_summary) for course_summary in course_summaries)
|
||||
|
||||
def is_detached(self, block_type):
|
||||
"""
|
||||
@@ -236,7 +236,7 @@ class DirectOnlyCategorySemantics(PureModulestoreTestCase):
|
||||
field_data = KvsFieldData(key_store)
|
||||
|
||||
aside = AsideTest(scope_ids=scope_ids, runtime=TestRuntime(services={'field-data': field_data}))
|
||||
aside.fields[self.ASIDE_DATA_FIELD.field_name].write_to(aside, self.ASIDE_DATA_FIELD.initial)
|
||||
aside.fields[self.ASIDE_DATA_FIELD.field_name].write_to(aside, self.ASIDE_DATA_FIELD.initial) # pylint: disable=unsubscriptable-object
|
||||
return [aside]
|
||||
|
||||
def _get_aside(self, block):
|
||||
|
||||
@@ -180,7 +180,7 @@ class ConditionalBlockBasicTest(unittest.TestCase):
|
||||
ajax = json.loads(modules['cond_module'].handle_ajax('', ''))
|
||||
print("ajax: ", ajax)
|
||||
fragments = ajax['fragments']
|
||||
assert not any([('This is a secret' in item['content']) for item in fragments])
|
||||
assert not any(('This is a secret' in item['content']) for item in fragments)
|
||||
|
||||
# now change state of the capa problem to make it completed
|
||||
modules['source_module'].is_attempted = "true"
|
||||
@@ -188,7 +188,7 @@ class ConditionalBlockBasicTest(unittest.TestCase):
|
||||
modules['cond_module'].save()
|
||||
print("post-attempt ajax: ", ajax)
|
||||
fragments = ajax['fragments']
|
||||
assert any([('This is a secret' in item['content']) for item in fragments])
|
||||
assert any(('This is a secret' in item['content']) for item in fragments)
|
||||
|
||||
def test_error_as_source(self):
|
||||
'''
|
||||
@@ -199,7 +199,7 @@ class ConditionalBlockBasicTest(unittest.TestCase):
|
||||
modules['cond_module'].save()
|
||||
ajax = json.loads(modules['cond_module'].handle_ajax('', ''))
|
||||
fragments = ajax['fragments']
|
||||
assert not any([('This is a secret' in item['content']) for item in fragments])
|
||||
assert not any(('This is a secret' in item['content']) for item in fragments)
|
||||
|
||||
@patch('xmodule.conditional_module.log')
|
||||
def test_conditional_with_staff_only_source_module(self, mock_log):
|
||||
@@ -294,7 +294,7 @@ class ConditionalBlockXmlTest(unittest.TestCase):
|
||||
module.save()
|
||||
print("ajax: ", ajax)
|
||||
fragments = ajax['fragments']
|
||||
assert not any([('This is a secret' in item['content']) for item in fragments])
|
||||
assert not any(('This is a secret' in item['content']) for item in fragments)
|
||||
|
||||
# Now change state of the capa problem to make it completed
|
||||
inner_module = inner_get_module(location.replace(category="problem", name='choiceprob'))
|
||||
@@ -306,7 +306,7 @@ class ConditionalBlockXmlTest(unittest.TestCase):
|
||||
module.save()
|
||||
print("post-attempt ajax: ", ajax)
|
||||
fragments = ajax['fragments']
|
||||
assert any([('This is a secret' in item['content']) for item in fragments])
|
||||
assert any(('This is a secret' in item['content']) for item in fragments)
|
||||
|
||||
maxDiff = None
|
||||
|
||||
|
||||
@@ -18,10 +18,7 @@ class PaginatedMixin(object):
|
||||
|
||||
To specify a specific arrow, pass an iterable with a single element, 'next' or 'previous'.
|
||||
"""
|
||||
return all([
|
||||
self.q(css=u'nav.%s * .%s-page-link.is-disabled' % (position, arrow))
|
||||
for arrow in arrows
|
||||
])
|
||||
return all(self.q(css=u'nav.%s * .%s-page-link.is-disabled' % (position, arrow)) for arrow in arrows)
|
||||
|
||||
def move_back(self, position):
|
||||
"""
|
||||
|
||||
@@ -56,7 +56,7 @@ def set_input_value_and_save(page, css, value):
|
||||
page.wait_for_ajax()
|
||||
|
||||
|
||||
def verify_ordering(test_class, page, expected_orderings):
|
||||
def verify_ordering(test_class, page, expected_orderings): # pylint: disable=unused-argument
|
||||
"""
|
||||
Verifies the expected ordering of xblocks on the page.
|
||||
"""
|
||||
|
||||
@@ -159,7 +159,7 @@ class CertificatesListView(APIView):
|
||||
permissions.JwtHasUserFilterForRequestedUser
|
||||
)
|
||||
),
|
||||
(C(permissions.IsStaff) | IsOwnerOrPublicCertificates),
|
||||
(C(permissions.IsStaff) | IsOwnerOrPublicCertificates), # pylint: disable=unsupported-binary-operation
|
||||
)
|
||||
|
||||
required_scopes = ['certificates:read']
|
||||
|
||||
@@ -491,11 +491,11 @@ class CertificateAvailableDate(DateSummary):
|
||||
|
||||
@property
|
||||
def has_certificate_modes(self):
|
||||
return any([
|
||||
return any(
|
||||
mode.slug for mode in CourseMode.modes_for_course(
|
||||
course_id=self.course.id, include_expired=True
|
||||
) if mode.slug != CourseMode.AUDIT
|
||||
])
|
||||
)
|
||||
|
||||
def register_alerts(self, request, course):
|
||||
"""
|
||||
|
||||
@@ -103,7 +103,7 @@ def _get_course(course_key, user):
|
||||
# Raise course not found if the user cannot access the course
|
||||
# since it doesn't make sense to redirect an API.
|
||||
raise CourseNotFoundError("Course not found.") # lint-amnesty, pylint: disable=raise-missing-from
|
||||
if not any([tab.type == 'discussion' and tab.is_enabled(course, user) for tab in course.tabs]):
|
||||
if not any(tab.type == 'discussion' and tab.is_enabled(course, user) for tab in course.tabs):
|
||||
raise DiscussionDisabledError("Discussion is disabled for the course.")
|
||||
return course
|
||||
|
||||
|
||||
@@ -293,10 +293,10 @@ class PartialDictMatcher: # lint-amnesty, pylint: disable=missing-class-docstri
|
||||
self.expected_values = expected_values
|
||||
|
||||
def __eq__(self, other):
|
||||
return all([
|
||||
return all(
|
||||
key in other and other[key] == value
|
||||
for key, value in self.expected_values.items()
|
||||
])
|
||||
)
|
||||
|
||||
|
||||
@patch('requests.request', autospec=True)
|
||||
|
||||
@@ -9,7 +9,6 @@ from django.conf import settings
|
||||
from django.db.models import BooleanField, IntegerField, TextField
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from opaque_keys.edx.django.models import CourseKeyField
|
||||
from six import text_type
|
||||
|
||||
from openedx.core.lib.cache_utils import request_cached
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class CourseData:
|
||||
cache during its lifecycle.
|
||||
"""
|
||||
def __init__(self, user, course=None, collected_block_structure=None, structure=None, course_key=None):
|
||||
if not any([course, collected_block_structure, structure, course_key]):
|
||||
if not any((course, collected_block_structure, structure, course_key)):
|
||||
raise ValueError(
|
||||
"You must specify one of course, collected_block_structure, structure, or course_key to this method."
|
||||
)
|
||||
|
||||
@@ -19,7 +19,6 @@ from rest_framework import status
|
||||
from rest_framework.generics import GenericAPIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from six import text_type
|
||||
|
||||
from common.djangoapps.student.auth import has_course_author_access
|
||||
from common.djangoapps.student.models import CourseEnrollment
|
||||
|
||||
@@ -17,7 +17,6 @@ from opaque_keys.edx.locator import BlockUsageLocator
|
||||
from pytz import UTC
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase
|
||||
from six import text_type
|
||||
|
||||
from common.djangoapps.course_modes.models import CourseMode
|
||||
from common.djangoapps.student.tests.factories import CourseEnrollmentFactory, UserFactory
|
||||
|
||||
@@ -5,8 +5,6 @@ import json
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
import mock
|
||||
import six
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from opaque_keys import InvalidKeyError
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@ import unittest
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
import mock
|
||||
import six
|
||||
from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
|
||||
from django.core.exceptions import MultipleObjectsReturned
|
||||
from django.test import TestCase
|
||||
|
||||
@@ -120,7 +120,7 @@ def get_task_completion_info(instructor_task): # lint-amnesty, pylint: disable=
|
||||
if instructor_task.task_state in [FAILURE, REVOKED]:
|
||||
return (succeeded, task_output.get('message', _('No message provided')))
|
||||
|
||||
if any([key not in task_output for key in ['action_name', 'attempted', 'total']]):
|
||||
if any(key not in task_output for key in ['action_name', 'attempted', 'total']):
|
||||
fmt = _("Invalid task_output information found for instructor_task {0}: {1}")
|
||||
log.warning(fmt.format(instructor_task.task_id, instructor_task.task_output))
|
||||
return (succeeded, _("No progress status information available"))
|
||||
|
||||
@@ -43,9 +43,7 @@ class AppVersionConfig(models.Model):
|
||||
|
||||
.. no_pii:
|
||||
"""
|
||||
PLATFORM_CHOICES = tuple(
|
||||
[(platform, platform) for platform in sorted(PLATFORM_CLASSES.keys())]
|
||||
)
|
||||
PLATFORM_CHOICES = tuple((platform, platform) for platform in sorted(PLATFORM_CLASSES.keys()))
|
||||
|
||||
platform = models.CharField(max_length=50, choices=PLATFORM_CHOICES, blank=False)
|
||||
version = models.CharField(
|
||||
|
||||
@@ -159,7 +159,7 @@ class TeamsDashboardView(GenericAPIView):
|
||||
'organization_protection_status': organization_protection_status
|
||||
},
|
||||
)
|
||||
topics_data["sort_order"] = sort_order
|
||||
topics_data["sort_order"] = sort_order # pylint: disable=unsupported-assignment-operation
|
||||
|
||||
filter_query = {
|
||||
'membership__user': user,
|
||||
|
||||
@@ -69,7 +69,7 @@ class TestGenerateCourseBlocks(ModuleStoreTestCase):
|
||||
"""
|
||||
Asserts that the logger was called with the given message.
|
||||
"""
|
||||
message_present = any([message in call_args[0][0] for call_args in mock_log.warning.call_args_list])
|
||||
message_present = any(message in call_args[0][0] for call_args in mock_log.warning.call_args_list)
|
||||
if expected_presence:
|
||||
assert message_present
|
||||
else:
|
||||
|
||||
@@ -227,7 +227,7 @@ class DarkLangMiddlewareTests(CacheIsolationTestCase):
|
||||
|
||||
self.assertAcceptEquals(
|
||||
'es-419;q=1.0',
|
||||
self.process_middleware_request(accept=b'{};q=1.0, pt;q=0.5'.format(latin_america_code))
|
||||
self.process_middleware_request(accept=b'{};q=1.0, pt;q=0.5'.format(latin_america_code)) # pylint:disable=no-member
|
||||
)
|
||||
|
||||
def assert_session_lang_equals(self, value, session):
|
||||
|
||||
@@ -173,7 +173,7 @@ class DiscussionsConfigurationModelTest(TestCase):
|
||||
assert not configuration.enabled
|
||||
assert configuration.lti_configuration is None
|
||||
actual_url = configuration.plugin_configuration.get('url')
|
||||
expected_url = self.configuration_with_values.plugin_configuration.get('url')
|
||||
expected_url = self.configuration_with_values.plugin_configuration.get('url') # pylint: disable=no-member
|
||||
assert actual_url == expected_url
|
||||
assert configuration.provider_type == self.configuration_with_values.provider_type
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ def permission_blacked_out(course, role_names, permission_name):
|
||||
return (
|
||||
not course.forum_posts_allowed and
|
||||
role_names == {FORUM_ROLE_STUDENT} and
|
||||
any([permission_name.startswith(prefix) for prefix in ['edit', 'update', 'create']])
|
||||
any(permission_name.startswith(prefix) for prefix in ['edit', 'update', 'create'])
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ def check_comprehensive_theme_settings(app_configs, **kwargs): # lint-amnesty,
|
||||
id='openedx.core.djangoapps.theming.E004',
|
||||
)
|
||||
)
|
||||
if not all([isinstance(theme_dir, six.string_types) for theme_dir in theme_dirs]):
|
||||
if not all(isinstance(theme_dir, six.string_types) for theme_dir in theme_dirs):
|
||||
errors.append(
|
||||
Error(
|
||||
"COMPREHENSIVE_THEME_DIRS must contain only strings.",
|
||||
@@ -63,7 +63,7 @@ def check_comprehensive_theme_settings(app_configs, **kwargs): # lint-amnesty,
|
||||
id='openedx.core.djangoapps.theming.E005',
|
||||
)
|
||||
)
|
||||
if not all([theme_dir.startswith("/") for theme_dir in theme_dirs]):
|
||||
if not all(theme_dir.startswith("/") for theme_dir in theme_dirs):
|
||||
errors.append(
|
||||
Error(
|
||||
"COMPREHENSIVE_THEME_DIRS must contain only absolute paths to themes dirs.",
|
||||
@@ -71,7 +71,7 @@ def check_comprehensive_theme_settings(app_configs, **kwargs): # lint-amnesty,
|
||||
id='openedx.core.djangoapps.theming.E006',
|
||||
)
|
||||
)
|
||||
if not all([os.path.isdir(theme_dir) for theme_dir in theme_dirs]):
|
||||
if not all(os.path.isdir(theme_dir) for theme_dir in theme_dirs):
|
||||
errors.append(
|
||||
Error(
|
||||
"COMPREHENSIVE_THEME_DIRS must contain valid paths.",
|
||||
|
||||
@@ -164,7 +164,7 @@ class UserMessageCollection():
|
||||
"""
|
||||
Returns the user message type associated with a level.
|
||||
"""
|
||||
for __, type in UserMessageType.__members__.items(): # lint-amnesty, pylint: disable=redefined-builtin
|
||||
for __, type in UserMessageType.__members__.items(): # lint-amnesty, pylint: disable=redefined-builtin, no-member
|
||||
if type.value is level:
|
||||
return type
|
||||
raise Exception(u'Unable to find UserMessageType for level {level}'.format(level=level))
|
||||
|
||||
@@ -160,7 +160,7 @@ class DiscussionXBlockImportExportTests(TestCase):
|
||||
target_node = etree.Element('dummy')
|
||||
|
||||
block = DiscussionXBlock(self.runtime_mock, scope_ids=self.keys, field_data=DictFieldData({}))
|
||||
discussion_id_field = block.fields['discussion_id']
|
||||
discussion_id_field = block.fields['discussion_id'] # pylint: disable=unsubscriptable-object
|
||||
|
||||
# precondition checks - discussion_id does not have a value and uses UNIQUE_ID
|
||||
self.assertEqual(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
""" # lint-amnesty, pylint: disable=django-not-configured
|
||||
# lint-amnesty, pylint: disable=django-not-configured
|
||||
"""
|
||||
Script to process pytest warnings output by pytest-json-report plugin and output it as a html
|
||||
"""
|
||||
|
||||
@@ -10,9 +11,7 @@ import os
|
||||
import re
|
||||
from collections import Counter
|
||||
|
||||
from write_to_html import (
|
||||
HtmlOutlineWriter,
|
||||
) # noqa pylint: disable=import-error,useless-suppression
|
||||
from write_to_html import HtmlOutlineWriter # noqa pylint: disable=import-error,useless-suppression
|
||||
|
||||
columns = [
|
||||
"message",
|
||||
|
||||
@@ -141,7 +141,7 @@ def get_course_outline_block_tree(request, course_id, user=None, allow_start_dat
|
||||
is_scored = block.get('has_score', False) and block.get('weight', 1) > 0
|
||||
# Use a list comprehension to force the recursion over all children, rather than just stopping
|
||||
# at the first child that is scored.
|
||||
children_scored = any([recurse_mark_scored(child) for child in block.get('children', [])])
|
||||
children_scored = any(recurse_mark_scored(child) for child in block.get('children', []))
|
||||
if is_scored or children_scored:
|
||||
block['scored'] = True
|
||||
return True
|
||||
|
||||
@@ -40,9 +40,9 @@ class TestPaverPIICheck(unittest.TestCase):
|
||||
call_task('pavelib.quality.run_pii_check', options={"report_dir": str(self.report_dir)})
|
||||
mock_calls = [str(call) for call in mock_paver_sh.mock_calls]
|
||||
assert len(mock_calls) == 2
|
||||
assert any(['lms.envs.test' in call for call in mock_calls])
|
||||
assert any(['cms.envs.test' in call for call in mock_calls])
|
||||
assert all([str(self.report_dir) in call for call in mock_calls])
|
||||
assert any('lms.envs.test' in call for call in mock_calls)
|
||||
assert any('cms.envs.test' in call for call in mock_calls)
|
||||
assert all(str(self.report_dir) in call for call in mock_calls)
|
||||
metrics_file = Env.METRICS_DIR / 'pii'
|
||||
assert open(metrics_file, 'r').read() == 'Number of PII Annotation violations: 66\n'
|
||||
|
||||
@@ -67,8 +67,8 @@ class TestPaverPIICheck(unittest.TestCase):
|
||||
self.assertRaises(BuildFailure)
|
||||
mock_calls = [str(call) for call in mock_paver_sh.mock_calls]
|
||||
assert len(mock_calls) == 2
|
||||
assert any(['lms.envs.test' in call for call in mock_calls])
|
||||
assert any(['cms.envs.test' in call for call in mock_calls])
|
||||
assert all([str(self.report_dir) in call for call in mock_calls])
|
||||
assert any('lms.envs.test' in call for call in mock_calls)
|
||||
assert any('cms.envs.test' in call for call in mock_calls)
|
||||
assert all(str(self.report_dir) in call for call in mock_calls)
|
||||
metrics_file = Env.METRICS_DIR / 'pii'
|
||||
assert open(metrics_file, 'r').read() == 'Number of PII Annotation violations: 66\n'
|
||||
|
||||
@@ -123,3 +123,6 @@ edx-bulk-grades<0.8.5
|
||||
|
||||
# python3-saml==1.10.0 version started breaking a11y tests
|
||||
python3-saml<1.10.0
|
||||
|
||||
# edx-proctoring>3.5.0 causes test failures
|
||||
edx-proctoring==3.5.0
|
||||
|
||||
@@ -20,7 +20,7 @@ matplotlib==2.2.4 # via -c requirements/edx-sandbox/../constraints.txt,
|
||||
mpmath==1.2.1 # via sympy
|
||||
networkx==2.2 # via -r requirements/edx-sandbox/py35.in
|
||||
nltk==3.5 # via -r requirements/edx-sandbox/shared.txt, chem
|
||||
numpy==1.16.5 # via -r requirements/edx-sandbox/py35.in, chem, matplotlib, openedx-calc
|
||||
numpy==1.16.5 # via -r requirements/edx-sandbox/py35.in, chem, matplotlib, openedx-calc, scipy
|
||||
openedx-calc==1.0.9 # via -r requirements/edx-sandbox/py35.in
|
||||
pycparser==2.20 # via -r requirements/edx-sandbox/shared.txt, cffi
|
||||
pyparsing==2.2.0 # via -r requirements/edx-sandbox/py35.in, chem, matplotlib, openedx-calc
|
||||
|
||||
@@ -81,7 +81,7 @@ django-storages==1.8 # via -c requirements/edx/../constraints.txt, -r requi
|
||||
django-user-tasks==1.3.2 # via -r requirements/edx/base.in
|
||||
django-waffle==2.1.0 # via -r requirements/edx/base.in, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-proctoring, edx-toggles
|
||||
django-webpack-loader==0.7.0 # via -r requirements/edx/base.in, edx-proctoring
|
||||
django==2.2.18 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, -r requirements/edx/base.in, code-annotations, django-appconf, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-ses, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, djangorestframework, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-event-routing-backends, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-toggles, edx-when, edxval, enmerkar, enmerkar-underscore, event-tracking, help-tokens, jsonfield2, lti-consumer-xblock, ora2, rest-condition, super-csv, xss-utils
|
||||
django==2.2.19 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, -r requirements/edx/base.in, code-annotations, django-appconf, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-ses, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, djangorestframework, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-event-routing-backends, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-toggles, edx-when, edxval, enmerkar, enmerkar-underscore, event-tracking, help-tokens, jsonfield2, lti-consumer-xblock, ora2, rest-condition, super-csv, xss-utils
|
||||
djangorestframework-xml==2.0.0 # via edx-enterprise
|
||||
djangorestframework==3.12.2 # via -r requirements/edx/base.in, django-config-models, django-user-tasks, drf-jwt, drf-yasg, edx-api-doc-tools, edx-completion, edx-drf-extensions, edx-enterprise, edx-organizations, edx-proctoring, edx-submissions, ora2, rest-condition, super-csv
|
||||
docopt==0.6.2 # via xmodule
|
||||
@@ -163,7 +163,7 @@ nltk==3.5 # via -r requirements/edx/../edx-sandbox/shared.txt, c
|
||||
nodeenv==1.5.0 # via -r requirements/edx/base.in
|
||||
numpy==1.20.1 # via chem, openedx-calc, scipy
|
||||
oauthlib==3.0.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.in, django-oauth-toolkit, lti-consumer-xblock, requests-oauthlib, social-auth-core
|
||||
openedx-calc==2.0.0 # via -r requirements/edx/base.in
|
||||
openedx-calc==2.0.1 # via -r requirements/edx/base.in
|
||||
ora2==3.1.3 # via -r requirements/edx/base.in
|
||||
packaging==20.9 # via bleach, drf-yasg
|
||||
path.py==12.5.0 # via edx-enterprise, edx-i18n-tools, ora2, staff-graded-xblock, xmodule
|
||||
@@ -208,7 +208,7 @@ ruamel.yaml==0.16.12 # via drf-yasg
|
||||
rules==2.2 # via -r requirements/edx/base.in, edx-enterprise, edx-proctoring
|
||||
s3transfer==0.1.13 # via boto3
|
||||
sailthru-client==2.2.3 # via -r requirements/edx/base.in, edx-ace
|
||||
scipy==1.6.0 # via chem, openedx-calc
|
||||
scipy==1.6.1 # via chem, openedx-calc
|
||||
semantic-version==2.8.5 # via edx-drf-extensions
|
||||
shapely==1.7.1 # via -r requirements/edx/base.in
|
||||
simplejson==3.17.2 # via -r requirements/edx/base.in, sailthru-client, super-csv, xblock-utils
|
||||
|
||||
@@ -24,7 +24,7 @@ analytics-python==1.2.9 # via -r requirements/edx/testing.txt
|
||||
aniso8601==9.0.0 # via -r requirements/edx/testing.txt, edx-tincan-py35, tincan
|
||||
apipkg==1.5 # via -r requirements/edx/testing.txt, execnet
|
||||
appdirs==1.4.4 # via -r requirements/edx/testing.txt, fs, virtualenv
|
||||
astroid==2.4.2 # via -r requirements/edx/testing.txt, pylint, pylint-celery
|
||||
astroid==2.5 # via -r requirements/edx/testing.txt, pylint, pylint-celery
|
||||
attrs==20.3.0 # via -r requirements/edx/testing.txt, edx-ace, jsonschema, pytest
|
||||
babel==2.9.0 # via -r requirements/edx/testing.txt, enmerkar, enmerkar-underscore, sphinx
|
||||
beautifulsoup4==4.9.3 # via -r requirements/edx/testing.txt, pynliner
|
||||
@@ -92,7 +92,7 @@ django-storages==1.8 # via -c requirements/edx/../constraints.txt, -r requi
|
||||
django-user-tasks==1.3.2 # via -r requirements/edx/testing.txt
|
||||
django-waffle==2.1.0 # via -r requirements/edx/testing.txt, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-proctoring, edx-toggles
|
||||
django-webpack-loader==0.7.0 # via -r requirements/edx/testing.txt, edx-proctoring
|
||||
django==2.2.18 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, -r requirements/edx/testing.txt, code-annotations, django-appconf, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-debug-toolbar, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-ses, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, djangorestframework, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-event-routing-backends, edx-i18n-tools, edx-lint, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-toggles, edx-when, edxval, enmerkar, enmerkar-underscore, event-tracking, help-tokens, jsonfield2, lti-consumer-xblock, ora2, rest-condition, super-csv, xss-utils
|
||||
django==2.2.19 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, -r requirements/edx/testing.txt, code-annotations, django-appconf, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-debug-toolbar, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-ses, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, djangorestframework, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-event-routing-backends, edx-i18n-tools, edx-lint, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-toggles, edx-when, edxval, enmerkar, enmerkar-underscore, event-tracking, help-tokens, jsonfield2, lti-consumer-xblock, ora2, rest-condition, super-csv, xss-utils
|
||||
djangorestframework-xml==2.0.0 # via -r requirements/edx/testing.txt, edx-enterprise
|
||||
djangorestframework==3.12.2 # via -r requirements/edx/testing.txt, django-config-models, django-user-tasks, drf-jwt, drf-yasg, edx-api-doc-tools, edx-completion, edx-drf-extensions, edx-enterprise, edx-organizations, edx-proctoring, edx-submissions, ora2, rest-condition, super-csv
|
||||
docopt==0.6.2 # via -r requirements/edx/testing.txt, xmodule
|
||||
@@ -136,7 +136,7 @@ enmerkar==0.7.1 # via -r requirements/edx/testing.txt, enmerkar-unders
|
||||
event-tracking==1.0.4 # via -r requirements/edx/testing.txt, edx-event-routing-backends, edx-proctoring, edx-search
|
||||
execnet==1.8.0 # via -r requirements/edx/testing.txt, pytest-xdist
|
||||
factory-boy==2.8.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt
|
||||
faker==6.3.0 # via -r requirements/edx/testing.txt, factory-boy
|
||||
faker==6.4.1 # via -r requirements/edx/testing.txt, factory-boy
|
||||
filelock==3.0.12 # via -r requirements/edx/testing.txt, tox, virtualenv
|
||||
freezegun==0.3.12 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt
|
||||
fs-s3fs==0.1.8 # via -r requirements/edx/testing.txt, django-pyfs
|
||||
@@ -170,7 +170,7 @@ jsonfield2==3.0.3 # via -c requirements/edx/../constraints.txt, -r requi
|
||||
jsonschema==3.2.0 # via sphinxcontrib-openapi
|
||||
kombu==4.6.11 # via -r requirements/edx/testing.txt, celery
|
||||
laboratory==1.0.2 # via -r requirements/edx/testing.txt
|
||||
lazy-object-proxy==1.4.3 # via -r requirements/edx/testing.txt, astroid
|
||||
lazy-object-proxy==1.5.2 # via -r requirements/edx/testing.txt, astroid
|
||||
lazy==1.4 # via -r requirements/edx/testing.txt, acid-xblock, bok-choy, lti-consumer-xblock, ora2
|
||||
libsass==0.10.0 # via -r requirements/edx/testing.txt, ora2
|
||||
loremipsum==1.0.5 # via -r requirements/edx/testing.txt, ora2
|
||||
@@ -196,7 +196,7 @@ nltk==3.5 # via -r requirements/edx/testing.txt, chem
|
||||
nodeenv==1.5.0 # via -r requirements/edx/testing.txt
|
||||
numpy==1.20.1 # via -r requirements/edx/testing.txt, chem, openedx-calc, scipy
|
||||
oauthlib==3.0.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, django-oauth-toolkit, lti-consumer-xblock, requests-oauthlib, social-auth-core
|
||||
openedx-calc==2.0.0 # via -r requirements/edx/testing.txt
|
||||
openedx-calc==2.0.1 # via -r requirements/edx/testing.txt
|
||||
ora2==3.1.3 # via -r requirements/edx/testing.txt
|
||||
packaging==20.9 # via -r requirements/edx/testing.txt, bleach, drf-yasg, pytest, sphinx, tox
|
||||
path.py==12.5.0 # via -r requirements/edx/testing.txt, edx-enterprise, edx-i18n-tools, ora2, staff-graded-xblock, xmodule
|
||||
@@ -222,7 +222,7 @@ pyjwt[crypto]==1.7.1 # via -r requirements/edx/testing.txt, drf-jwt, edx-re
|
||||
pylint-celery==0.3 # via -r requirements/edx/testing.txt, edx-lint
|
||||
pylint-django==2.4.2 # via -r requirements/edx/testing.txt, edx-lint
|
||||
pylint-plugin-utils==0.6 # via -r requirements/edx/testing.txt, pylint-celery, pylint-django
|
||||
pylint==2.6.2 # via -r requirements/edx/testing.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
|
||||
pylint==2.7.0 # via -r requirements/edx/testing.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
|
||||
pymongo==3.10.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, edx-opaque-keys, event-tracking, mongodbproxy, mongoengine
|
||||
pynliner==0.8.0 # via -r requirements/edx/testing.txt
|
||||
pyparsing==2.4.7 # via -r requirements/edx/testing.txt, chem, openedx-calc, packaging, pycontracts
|
||||
@@ -261,13 +261,13 @@ ruamel.yaml==0.16.12 # via -r requirements/edx/testing.txt, drf-yasg
|
||||
rules==2.2 # via -r requirements/edx/testing.txt, edx-enterprise, edx-proctoring
|
||||
s3transfer==0.1.13 # via -r requirements/edx/testing.txt, boto3
|
||||
sailthru-client==2.2.3 # via -r requirements/edx/testing.txt, edx-ace
|
||||
scipy==1.6.0 # via -r requirements/edx/testing.txt, chem, openedx-calc
|
||||
scipy==1.6.1 # via -r requirements/edx/testing.txt, chem, openedx-calc
|
||||
selenium==3.141.0 # via -r requirements/edx/testing.txt, bok-choy
|
||||
semantic-version==2.8.5 # via -r requirements/edx/testing.txt, edx-drf-extensions
|
||||
shapely==1.7.1 # via -r requirements/edx/testing.txt
|
||||
simplejson==3.17.2 # 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.15.0 # via -r requirements/edx/pip-tools.txt, -r requirements/edx/testing.txt, analytics-python, astroid, bleach, bok-choy, chem, codejail, crowdsourcehinter-xblock, cryptography, django-countries, django-simple-history, edx-ace, edx-bulk-grades, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-rbac, edx-sphinx-theme, event-tracking, freezegun, fs, fs-s3fs, html5lib, httpretty, isodate, jsonschema, libsass, mock, paver, pip-tools, pycontracts, pyjwkest, python-dateutil, python-memcached, python-swiftclient, singledispatch, social-auth-app-django, social-auth-core, sphinxcontrib-httpdomain, stevedore, tox, transifex-client, virtualenv, xblock
|
||||
singledispatch==3.6.0 # via -r requirements/edx/testing.txt
|
||||
six==1.15.0 # via -r requirements/edx/pip-tools.txt, -r requirements/edx/testing.txt, analytics-python, bleach, bok-choy, chem, codejail, crowdsourcehinter-xblock, cryptography, django-countries, django-simple-history, edx-ace, edx-bulk-grades, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-rbac, edx-sphinx-theme, event-tracking, freezegun, fs, fs-s3fs, html5lib, httpretty, isodate, jsonschema, libsass, mock, paver, pip-tools, pycontracts, pyjwkest, 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
|
||||
smmap==3.0.5 # via -r requirements/edx/testing.txt, gitdb
|
||||
snowballstemmer==2.1.0 # via sphinx
|
||||
|
||||
@@ -1 +1 @@
|
||||
django==2.2.18 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, -r requirements/edx/base.in, code-annotations, django-appconf, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-ses, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, djangorestframework, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-event-routing-backends, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-toggles, edx-when, edxval, enmerkar, enmerkar-underscore, event-tracking, help-tokens, jsonfield2, lti-consumer-xblock, ora2, rest-condition, super-csv, xss-utils
|
||||
django==2.2.19 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, -r requirements/edx/base.in, code-annotations, django-appconf, django-classy-tags, django-config-models, django-cors-headers, django-crum, django-fernet-fields, django-filter, django-method-override, django-model-utils, django-mptt, django-multi-email-field, django-mysql, django-oauth-toolkit, django-pyfs, django-ratelimit-backend, django-sekizai, django-ses, django-splash, django-statici18n, django-storages, django-user-tasks, django-wiki, djangorestframework, drf-jwt, drf-yasg, edx-ace, edx-api-doc-tools, edx-bulk-grades, edx-celeryutils, edx-completion, edx-django-release-util, edx-django-sites-extensions, edx-django-utils, edx-drf-extensions, edx-enterprise, edx-event-routing-backends, edx-i18n-tools, edx-milestones, edx-opaque-keys, edx-organizations, edx-proctoring, edx-rbac, edx-search, edx-submissions, edx-toggles, edx-when, edxval, enmerkar, enmerkar-underscore, event-tracking, help-tokens, jsonfield2, lti-consumer-xblock, ora2, rest-condition, super-csv, xss-utils
|
||||
|
||||
@@ -10,7 +10,7 @@ certifi==2020.12.5 # via requests
|
||||
chardet==4.0.0 # via requests
|
||||
click==7.1.2 # via code-annotations
|
||||
code-annotations==1.1.0 # via -r requirements/edx/doc.in
|
||||
django==2.2.18 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, code-annotations
|
||||
django==2.2.19 # via -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt, code-annotations
|
||||
docutils==0.16 # via sphinx
|
||||
edx-sphinx-theme==2.0.0 # via -r requirements/edx/doc.in
|
||||
gitdb==4.0.5 # via gitpython
|
||||
|
||||
@@ -23,7 +23,7 @@ analytics-python==1.2.9 # via -r requirements/edx/base.txt
|
||||
aniso8601==9.0.0 # via -r requirements/edx/base.txt, edx-tincan-py35, tincan
|
||||
apipkg==1.5 # via execnet
|
||||
appdirs==1.4.4 # via -r requirements/edx/base.txt, fs, virtualenv
|
||||
astroid==2.4.2 # via pylint, pylint-celery
|
||||
astroid==2.5 # via pylint, pylint-celery
|
||||
attrs==20.3.0 # via -r requirements/edx/base.txt, edx-ace, pytest
|
||||
babel==2.9.0 # via -r requirements/edx/base.txt, enmerkar, enmerkar-underscore
|
||||
beautifulsoup4==4.9.3 # via -r requirements/edx/base.txt, -r requirements/edx/testing.in, pynliner
|
||||
@@ -132,7 +132,7 @@ enmerkar==0.7.1 # via -r requirements/edx/base.txt, enmerkar-underscor
|
||||
event-tracking==1.0.4 # via -r requirements/edx/base.txt, edx-event-routing-backends, edx-proctoring, edx-search
|
||||
execnet==1.8.0 # via pytest-xdist
|
||||
factory-boy==2.8.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.in
|
||||
faker==6.3.0 # via factory-boy
|
||||
faker==6.4.1 # via factory-boy
|
||||
filelock==3.0.12 # via tox, virtualenv
|
||||
freezegun==0.3.12 # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.in
|
||||
fs-s3fs==0.1.8 # via -r requirements/edx/base.txt, django-pyfs
|
||||
@@ -164,7 +164,7 @@ jsondiff==1.2.0 # via -r requirements/edx/base.txt, edx-enterprise
|
||||
jsonfield2==3.0.3 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, edx-celeryutils, edx-enterprise, edx-event-routing-backends, edx-proctoring, edx-submissions, lti-consumer-xblock, ora2
|
||||
kombu==4.6.11 # via -r requirements/edx/base.txt, celery
|
||||
laboratory==1.0.2 # via -r requirements/edx/base.txt
|
||||
lazy-object-proxy==1.4.3 # via astroid
|
||||
lazy-object-proxy==1.5.2 # via astroid
|
||||
lazy==1.4 # via -r requirements/edx/base.txt, acid-xblock, bok-choy, lti-consumer-xblock, ora2
|
||||
libsass==0.10.0 # via -r requirements/edx/base.txt, ora2
|
||||
loremipsum==1.0.5 # via -r requirements/edx/base.txt, ora2
|
||||
@@ -188,7 +188,7 @@ nltk==3.5 # via -r requirements/edx/base.txt, chem
|
||||
nodeenv==1.5.0 # via -r requirements/edx/base.txt
|
||||
numpy==1.20.1 # via -r requirements/edx/base.txt, chem, openedx-calc, scipy
|
||||
oauthlib==3.0.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, django-oauth-toolkit, lti-consumer-xblock, requests-oauthlib, social-auth-core
|
||||
openedx-calc==2.0.0 # via -r requirements/edx/base.txt
|
||||
openedx-calc==2.0.1 # via -r requirements/edx/base.txt
|
||||
ora2==3.1.3 # via -r requirements/edx/base.txt
|
||||
packaging==20.9 # via -r requirements/edx/base.txt, bleach, drf-yasg, pytest, tox
|
||||
path.py==12.5.0 # via -r requirements/edx/base.txt, edx-enterprise, edx-i18n-tools, ora2, staff-graded-xblock, xmodule
|
||||
@@ -213,7 +213,7 @@ pyjwt[crypto]==1.7.1 # via -r requirements/edx/base.txt, drf-jwt, edx-rest-
|
||||
pylint-celery==0.3 # via edx-lint
|
||||
pylint-django==2.4.2 # via edx-lint
|
||||
pylint-plugin-utils==0.6 # via pylint-celery, pylint-django
|
||||
pylint==2.6.2 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
|
||||
pylint==2.7.0 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils
|
||||
pymongo==3.10.1 # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, edx-opaque-keys, event-tracking, mongodbproxy, mongoengine
|
||||
pynliner==0.8.0 # via -r requirements/edx/base.txt
|
||||
pyparsing==2.4.7 # via -r requirements/edx/base.txt, chem, openedx-calc, packaging, pycontracts
|
||||
@@ -250,13 +250,13 @@ ruamel.yaml==0.16.12 # via -r requirements/edx/base.txt, drf-yasg
|
||||
rules==2.2 # via -r requirements/edx/base.txt, edx-enterprise, edx-proctoring
|
||||
s3transfer==0.1.13 # via -r requirements/edx/base.txt, boto3
|
||||
sailthru-client==2.2.3 # via -r requirements/edx/base.txt, edx-ace
|
||||
scipy==1.6.0 # via -r requirements/edx/base.txt, chem, openedx-calc
|
||||
scipy==1.6.1 # via -r requirements/edx/base.txt, chem, openedx-calc
|
||||
selenium==3.141.0 # via -r requirements/edx/testing.in, bok-choy
|
||||
semantic-version==2.8.5 # via -r requirements/edx/base.txt, edx-drf-extensions
|
||||
shapely==1.7.1 # via -r requirements/edx/base.txt
|
||||
simplejson==3.17.2 # 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.15.0 # via -r requirements/edx/base.txt, analytics-python, astroid, bleach, bok-choy, chem, codejail, crowdsourcehinter-xblock, cryptography, django-countries, django-simple-history, edx-ace, edx-bulk-grades, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-rbac, event-tracking, freezegun, fs, fs-s3fs, html5lib, httpretty, isodate, libsass, mock, paver, pycontracts, pyjwkest, python-dateutil, python-memcached, python-swiftclient, singledispatch, social-auth-app-django, social-auth-core, stevedore, tox, transifex-client, virtualenv, xblock
|
||||
singledispatch==3.6.0 # via -r requirements/edx/testing.in
|
||||
six==1.15.0 # via -r requirements/edx/base.txt, analytics-python, bleach, bok-choy, chem, codejail, crowdsourcehinter-xblock, cryptography, django-countries, django-simple-history, edx-ace, edx-bulk-grades, edx-ccx-keys, edx-django-release-util, edx-drf-extensions, edx-enterprise, edx-i18n-tools, edx-lint, edx-milestones, edx-rbac, event-tracking, freezegun, fs, fs-s3fs, html5lib, httpretty, isodate, libsass, mock, paver, pycontracts, pyjwkest, 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
|
||||
smmap==3.0.5 # via gitdb
|
||||
social-auth-app-django==4.0.0 # via -r requirements/edx/base.txt
|
||||
|
||||
Reference in New Issue
Block a user