Python Requirements Update (#29516)

* chore: Updating Python Requirements

* fix: fix pylint issues

Co-authored-by: Mohammad Ahtasham ul Hassan <mohammad.ahtasham@arbisoft.com>
This commit is contained in:
edX requirements bot
2021-12-08 04:13:27 -05:00
committed by GitHub
parent 5d5a11fc16
commit bb20b17428
37 changed files with 100 additions and 100 deletions

View File

@@ -82,7 +82,7 @@ class CourseRunTeamSerializerMixin(serializers.Serializer): # lint-amnesty, pyl
def image_is_jpeg_or_png(value):
content_type = value.content_type
if content_type not in list(IMAGE_TYPES.keys()):
if content_type not in list(IMAGE_TYPES.keys()): # lint-amnesty, pylint: disable=consider-iterating-dictionary
raise serializers.ValidationError(
f'Only JPEG and PNG image types are supported. {content_type} is not valid')

View File

@@ -72,7 +72,7 @@ def validate_transcript_credentials(provider, **credentials):
must_have_props = ['api_key', 'username']
missing = [
must_have_prop for must_have_prop in must_have_props if must_have_prop not in list(credentials.keys())
must_have_prop for must_have_prop in must_have_props if must_have_prop not in list(credentials.keys()) # lint-amnesty, pylint: disable=consider-iterating-dictionary
]
if missing:
error_message = '{missing} must be specified.'.format(missing=' and '.join(missing))

View File

@@ -285,7 +285,7 @@ def validate_transcript_preferences(provider, cielo24_fidelity, cielo24_turnarou
# validate transcription providers
transcription_plans = get_3rd_party_transcription_plans()
if provider in list(transcription_plans.keys()):
if provider in list(transcription_plans.keys()): # lint-amnesty, pylint: disable=consider-iterating-dictionary
# Further validations for providers
if provider == TranscriptProvider.CIELO24:

View File

@@ -117,7 +117,7 @@ class TestCourseListing(ModuleStoreTestCase, MilestonesTestCaseMixin):
CourseOverview.objects.filter(id=course_key).delete()
courses_list = list(get_course_enrollments(self.student, None, []))
assert courses_list == []
assert not courses_list
def test_course_listing_errored_deleted_courses(self):
"""

View File

@@ -68,4 +68,4 @@ class StubYouTubeServiceTest(unittest.TestCase): # lint-amnesty, pylint: disabl
assert response.status_code == 200
# ensure that server config dict is empty after successful reset
assert self.server.config == {}
assert not self.server.config

View File

@@ -82,7 +82,7 @@ class GetProviderUserStatesTestCase(TestCase):
def test_returns_empty_list_if_no_enabled_providers(self):
assert not provider.Registry.enabled()
assert [] == pipeline.get_provider_user_states(self.user)
assert not pipeline.get_provider_user_states(self.user)
def test_state_not_returned_for_disabled_provider(self):
disabled_provider = self.configure_google_provider(enabled=False)
@@ -130,7 +130,7 @@ class GetProviderUserStatesTestCase(TestCase):
states = pipeline.get_provider_user_states(self.user)
assert [] == list(social_models.DjangoStorage.user.objects.all())
assert not list(social_models.DjangoStorage.user.objects.all())
assert 2 == len(states)
google_state = [state for state in states if state.provider.provider_id == google_provider.provider_id][0]

View File

@@ -224,4 +224,4 @@ class RegistryTest(testutil.TestCase):
def test_get_enabled_by_backend_name_returns_none_if_provider_not_enabled(self):
google_provider = self.configure_google_provider(enabled=False)
found = list(provider.Registry.get_enabled_by_backend_name(google_provider.backend_name))
assert found == []
assert not found

View File

@@ -142,7 +142,7 @@ class MilestonesHelpersTestCase(ModuleStoreTestCase):
course = CourseFactory()
required_content = milestones_helpers.get_required_content(course.id, AnonymousUser())
assert required_content == []
assert not required_content
# NOTE (CCB): The initial version of anonymous courseware access is very simple. We avoid accidentally
# exposing locked content by simply avoiding anonymous access altogether for courses runs with milestones.

View File

@@ -605,7 +605,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase):
enrollment = CourseEnrollmentFactory(course_id=self.course.id)
student = enrollment.user
outbox = self.get_outbox()
assert outbox == []
assert not outbox
url = reverse(
view_name,
@@ -687,7 +687,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase):
enrollment = CourseEnrollmentFactory(course_id=course_key)
student = enrollment.user
outbox = self.get_outbox()
assert outbox == []
assert not outbox
url = reverse(
view_name,
@@ -729,7 +729,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase):
ccx = self.make_ccx()
course_key = CCXLocator.from_course_locator(self.course.id, ccx.id)
outbox = self.get_outbox()
assert outbox == []
assert not outbox
url = reverse(
view_name,
@@ -777,7 +777,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase):
course_key = CCXLocator.from_course_locator(course.id, ccx.id)
outbox = self.get_outbox()
CourseEnrollmentAllowed(course_id=course_key, email=identifier)
assert outbox == []
assert not outbox
url = reverse(
view_name,

View File

@@ -515,7 +515,7 @@ class CertificateGetTests(SharedModuleStoreTestCase):
"""
Test the case when there are no certificates for a user.
"""
assert get_certificates_for_user(self.student_no_cert.username) == []
assert not get_certificates_for_user(self.student_no_cert.username)
@patch.dict(settings.FEATURES, {'CERTIFICATES_HTML_VIEW': True})
def test_get_web_certificate_url(self):

View File

@@ -79,7 +79,7 @@ class mock_ecommerce_api_endpoint:
if self.expect_called is None:
called_if_expected = True
else:
called_if_expected = self.expect_called == (httpretty.last_request().headers != {})
called_if_expected = self.expect_called == (bool(httpretty.last_request().headers))
httpretty.disable()
if self.reset_on_exit:

View File

@@ -139,7 +139,7 @@ class CoursesTest(ModuleStoreTestCase):
# Request filtering for an org distinct from the designated org.
no_courses = get_courses(user, org=primary)
assert list(no_courses) == []
assert not list(no_courses)
# Request filtering for an org matching the designated org.
site_courses = get_courses(user, org=alternate)

View File

@@ -173,7 +173,7 @@ def preprocess_collection(user, course, collection):
model.update(update)
usage_id = model["usage_id"]
if usage_id in list(cache.keys()):
if usage_id in list(cache.keys()): # lint-amnesty, pylint: disable=consider-iterating-dictionary
model.update(cache[usage_id])
filtered_collection.append(model)
continue
@@ -202,7 +202,7 @@ def preprocess_collection(user, course, collection):
if not section:
log.debug("Section not found: %s", usage_key)
continue
if section.location in list(cache.keys()):
if section.location in list(cache.keys()): # lint-amnesty, pylint: disable=consider-iterating-dictionary
usage_context = cache[section.location]
usage_context.update({
"unit": get_module_context(course, unit),
@@ -216,7 +216,7 @@ def preprocess_collection(user, course, collection):
if not chapter:
log.debug("Chapter not found: %s", usage_key)
continue
if chapter.location in list(cache.keys()):
if chapter.location in list(cache.keys()): # lint-amnesty, pylint: disable=consider-iterating-dictionary
usage_context = cache[chapter.location]
usage_context.update({
"unit": get_module_context(course, unit),
@@ -349,7 +349,7 @@ def get_notes(request, course, page=DEFAULT_PAGE, page_size=DEFAULT_PAGE_SIZE, t
# Verify response dict structure
expected_keys = ['total', 'rows', 'num_pages', 'start', 'next', 'previous', 'current_page']
keys = list(collection.keys())
keys = list(collection.keys()) # lint-amnesty, pylint: disable=consider-iterating-dictionary
if not keys or not all(key in expected_keys for key in keys):
log.error("Incorrect data received from notes api: collection_data=%s", str(collection))
raise EdxNotesParseError(_("Incorrect data received from notes api."))

View File

@@ -63,7 +63,7 @@ class ExperimentUtilsTests(ModuleStoreTestCase, TestCase):
def test_unenrolled_courses_for_empty_courses(self):
unenrolled_courses = get_unenrolled_courses([], [])
assert [] == unenrolled_courses
assert not unenrolled_courses
def test_unenrolled_courses_for_single_course(self):
course = {'key': 'UQx+ENGY1x'}

View File

@@ -279,7 +279,7 @@ class TestGradeIteration(SharedModuleStoreTestCase):
iterator, but it shouldn't error.
"""
grade_results = list(CourseGradeFactory().iter([], self.course))
assert grade_results == []
assert not grade_results
def test_all_empty_grades(self):
"""

View File

@@ -70,8 +70,8 @@ class TestAnalyticsFormatDictlist(TestCase):
def test_format_dictlist_empty(self):
header, datarows = format_dictlist([], [])
assert header == []
assert datarows == []
assert not header
assert not datarows
def test_create_csv_response(self):
header = ['Name', 'Email']

View File

@@ -314,7 +314,7 @@ class TestLinkProgramEnrollments(TestLinkProgramEnrollmentsMixin, TestCase):
}
)
assert errors == {}
assert not errors
self._assert_program_enrollment(self.user_2, self.program, '0001')
self._assert_no_program_enrollment(self.user_1, self.program)
# assert that all of user_1's course enrollments as part of the program

View File

@@ -77,7 +77,7 @@ def validate_and_link_program_enrollments(program_uuid_string, linkage_text):
(item.get('external_key') or '').strip(): (item['username'] or '').strip()
for item in reader
}
if not (all(ext_key_to_username.keys()) and all(ext_key_to_username.values())):
if not (all(ext_key_to_username.keys()) and all(ext_key_to_username.values())): # lint-amnesty, pylint: disable=consider-iterating-dictionary
return [], [
"All linking lines must be in the format 'external_user_key,lms_username'"
]
@@ -87,7 +87,7 @@ def validate_and_link_program_enrollments(program_uuid_string, linkage_text):
successes = [
str(item)
for item in ext_key_to_username.items()
if item[0] not in link_errors.keys()
if item[0] not in link_errors.keys() # lint-amnesty, pylint: disable=consider-iterating-dictionary
]
errors = [message for message in link_errors.values()] # lint-amnesty, pylint: disable=unnecessary-comprehension
return successes, errors

View File

@@ -906,7 +906,7 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase, XssTestMixin, Tes
# ensure the mock api call was made. NOTE: the following line
# approximates the check - if the headers were empty it means
# there was no last request.
assert httpretty.last_request().headers != {}
assert httpretty.last_request().headers
return response
def _assert_displayed_mode(self, response, expected_mode):

View File

@@ -409,7 +409,7 @@ class BookmarkModelTests(BookmarksTestsBase):
# Block does not exist
usage_key = UsageKey.from_string('i4x://edX/apis/html/interactive')
usage_key.replace(course_key=self.course.id)
assert Bookmark.get_path(usage_key) == []
assert not Bookmark.get_path(usage_key)
# Block is an orphan
self.other_sequential_1.children = []

View File

@@ -663,7 +663,7 @@ class TestSessionEntitlement(CatalogIntegrationMixin, TestCase):
)
session_entitlements = get_visible_sessions_for_entitlement(entitlement)
assert session_entitlements == []
assert not session_entitlements
@skip_unless_lms
@@ -780,10 +780,10 @@ class TestProgramCourseRunCrawling(TestCase):
program = {
'title': 'notice that I do not have a curriculum',
}
assert [] == child_programs(program)
assert not child_programs(program)
def test_child_programs_no_children(self):
assert [] == child_programs(self.empty_program)
assert not child_programs(self.empty_program)
def test_child_programs_one_child(self):
assert [self.grandchild_1] == child_programs(self.simple_program)

View File

@@ -126,7 +126,7 @@ class TestSimulatePublish(SharedModuleStoreTestCase):
assert self.course_key_1 in self.received_1
assert self.course_key_2 in self.received_1
assert self.course_key_3 in self.received_1
assert self.received_2 == []
assert not self.received_2
def test_course_overviews(self):
"""Integration test with CourseOverviews."""
@@ -140,8 +140,8 @@ class TestSimulatePublish(SharedModuleStoreTestCase):
)
)
assert CourseOverview.objects.all().count() == 3
assert self.received_1 == []
assert self.received_2 == []
assert not self.received_1
assert not self.received_2
def sample_receiver_1(self, sender, course_key, **kwargs): # pylint: disable=unused-argument
"""Custom receiver for testing."""

View File

@@ -488,7 +488,7 @@ class TestCohorts(ModuleStoreTestCase):
"""
course = modulestore().get_course(self.toy_course_key)
config_course_cohorts(course, is_cohorted=True)
assert [] == cohorts.get_course_cohorts(course)
assert not cohorts.get_course_cohorts(course)
def test_get_course_cohorts(self):
"""

View File

@@ -747,7 +747,7 @@ class CreditRequirementApiTests(CreditApiTestBase):
# Since the requirement hasn't been published yet, it won't show
# up in the list of requirements.
req_status = api.get_credit_requirement_status(self.course_key, username, namespace="grade", name="grade")
assert req_status == []
assert not req_status
# Now add the requirements, simulating what happens when a course is published.
requirements = [

View File

@@ -212,7 +212,7 @@ class TestUserPreferenceMiddleware(CacheIsolationTestCase):
result = self.middleware.process_response(self.request, response)
assert result is response
assert response.mock_calls == []
assert not response.mock_calls
def test_preference_update_noop(self):
self.request.COOKIES[settings.LANGUAGE_COOKIE_NAME] = 'es'

View File

@@ -105,9 +105,9 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
meter = ProgramProgressMeter(self.site, self.user)
assert meter.engaged_programs == []
assert not meter.engaged_programs
self._assert_progress(meter)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
def test_enrollments_but_no_programs(self, mock_get_programs):
"""Verify behavior when enrollments exist, but no matching programs do."""
@@ -117,9 +117,9 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
self._create_enrollments(course_run_id)
meter = ProgramProgressMeter(self.site, self.user)
assert meter.engaged_programs == []
assert not meter.engaged_programs
self._assert_progress(meter)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
def test_entitlements_but_no_programs(self, mock_get_programs):
""" Verify engaged_programs is empty when entitlements exist, but no matching programs do. """
@@ -128,7 +128,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
self._create_entitlements(uuid.uuid4())
meter = ProgramProgressMeter(self.site, self.user)
assert meter.engaged_programs == []
assert not meter.engaged_programs
def test_single_program_enrollment(self, mock_get_programs):
"""
@@ -158,7 +158,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
meter,
ProgressFactory(uuid=program['uuid'], in_progress=1)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
def test_single_program_entitlement(self, mock_get_programs):
"""
@@ -375,7 +375,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
meter,
*(ProgressFactory(uuid=program['uuid'], in_progress=1) for program in programs)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
def test_multiple_program_entitlement(self, mock_get_programs):
"""
@@ -443,7 +443,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
meter,
*(ProgressFactory(uuid=program['uuid'], in_progress=1) for program in programs)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
def test_shared_entitlement_engagement(self, mock_get_programs):
"""
@@ -522,7 +522,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
# No enrollments, no programs in progress.
meter = ProgramProgressMeter(self.site, self.user)
self._assert_progress(meter)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# One enrollment, one program in progress.
self._create_enrollments(first_course_run_key)
@@ -532,7 +532,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
meter,
ProgressFactory(uuid=program_uuid, in_progress=1, not_started=2)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# 3 enrollments, 3 courses in progress.
self._create_enrollments(second_course_run_key)
@@ -545,7 +545,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
in_progress=3,
)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# One valid certificate earned, one course complete.
self._create_certificates(first_course_run_key, mode=MODES.verified)
@@ -558,7 +558,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
in_progress=2,
)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# Invalid certificate earned, still one course to complete. (invalid because mode doesn't match the course)
second_cert = self._create_certificates(second_course_run_key, mode=MODES.honor)[0]
@@ -572,7 +572,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
in_progress=2,
)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# Second valid certificate obtained, 2 courses complete.
second_cert.mode = MODES.verified
@@ -586,7 +586,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
in_progress=1,
)
)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# 3 certs, 1 unavailable, Program available in the future
self._create_certificates(third_course_run_key, mode=MODES.verified)
@@ -770,7 +770,7 @@ class TestProgramProgressMeter(ModuleStoreTestCase):
# Verify that the test program is not complete.
meter = ProgramProgressMeter(self.site, self.user)
assert list(meter.completed_programs_with_available_dates.keys()) == []
assert not list(meter.completed_programs_with_available_dates.keys())
# Grant a 'no-id-professional' certificate for one of the course runs,
# thereby completing the program.

View File

@@ -211,8 +211,8 @@ class TestDeactivateLogout(RetirementTestCase):
updated_user = User.objects.get(id=self.test_user.id)
assert get_retired_email_by_email(self.test_user.email) == updated_user.email
assert not updated_user.has_usable_password()
assert list(UserSocialAuth.objects.filter(user=self.test_user)) == []
assert list(Registration.objects.filter(user=self.test_user)) == []
assert not list(UserSocialAuth.objects.filter(user=self.test_user))
assert not list(Registration.objects.filter(user=self.test_user))
assert len(UserRetirementStatus.objects.filter(user_id=self.test_user.id)) == 1
# these retirement utils are tested elsewhere; just make sure we called them
mock_retire_dot.assert_called_with(self.test_user)

View File

@@ -197,7 +197,7 @@ class AccountSettingsViewTest(ThirdPartyAuthTestMixin, SiteMixin, ProgramsApiCon
with mock_get_orders(exception=exceptions.HttpNotFoundError):
order_detail = get_user_orders(self.user)
assert order_detail == []
assert not order_detail
def test_incomplete_order_detail(self):
response = {
@@ -215,7 +215,7 @@ class AccountSettingsViewTest(ThirdPartyAuthTestMixin, SiteMixin, ProgramsApiCon
with mock_get_orders(response=response):
order_detail = get_user_orders(self.user)
assert order_detail == []
assert not order_detail
def test_order_history_with_no_product(self):
response = {

View File

@@ -395,7 +395,7 @@ class TestEnterpriseApi(EnterpriseServiceMockMixin, CacheIsolationTestCase):
assert request_mock.session['enterprise_customer']['uuid'] == str(enterprise_customer_uuid)
def test_get_enterprise_learner_data_from_db_no_data(self):
assert [] == get_enterprise_learner_data_from_db(self.user)
assert not get_enterprise_learner_data_from_db(self.user)
def test_get_enterprise_learner_data_from_db(self):
enterprise_customer_user = EnterpriseCustomerUserFactory(user_id=self.user.id) # lint-amnesty, pylint: disable=unused-variable

View File

@@ -73,7 +73,7 @@ random2==1.0.1
# via -r requirements/edx-sandbox/py38.in
regex==2021.11.10
# via nltk
scipy==1.7.2
scipy==1.7.3
# via
# -r requirements/edx-sandbox/py38.in
# chem

View File

@@ -112,7 +112,7 @@ cffi==1.15.0
# via cryptography
chardet==4.0.0
# via pysrt
charset-normalizer==2.0.7
charset-normalizer==2.0.9
# via
# -r requirements/edx/paver.txt
# aiohttp
@@ -246,7 +246,7 @@ django-config-models==2.2.0
# edx-enterprise
# edx-name-affirmation
# lti-consumer-xblock
django-cors-headers==3.10.0
django-cors-headers==3.10.1
# via -r requirements/edx/base.in
django-countries==7.2.1
# via
@@ -743,7 +743,7 @@ pycountry==20.7.3
# via -r requirements/edx/base.in
pycparser==2.21
# via cffi
pycryptodomex==3.11.0
pycryptodomex==3.12.0
# via
# -r requirements/edx/base.in
# edx-proctoring
@@ -770,7 +770,7 @@ pyjwt[crypto]==2.3.0
# social-auth-core
pylatexenc==2.10
# via olxcleaner
pylti1p3==1.9.1
pylti1p3==1.10.0
# via -r requirements/edx/base.in
pymongo==3.10.1
# via
@@ -814,7 +814,7 @@ python-slugify==4.0.1
# via
# -c requirements/edx/../constraints.txt
# code-annotations
python-swiftclient==3.12.0
python-swiftclient==3.13.0
# via ora2
python3-openid==3.2.0 ; python_version >= "3"
# via
@@ -897,7 +897,7 @@ s3transfer==0.1.13
# via boto3
sailthru-client==2.2.3
# via edx-ace
scipy==1.7.2
scipy==1.7.3
# via
# chem
# openedx-calc
@@ -996,7 +996,7 @@ text-unidecode==1.3
# via python-slugify
tqdm==4.62.3
# via nltk
typing-extensions==4.0.0
typing-extensions==4.0.1
# via async-timeout
unicodecsv==0.14.1
# via

View File

@@ -4,7 +4,7 @@
#
# make upgrade
#
coverage==6.1.2
coverage==6.2
# via -r requirements/edx/coverage.in
diff-cover==4.0.0
# via

View File

@@ -67,7 +67,7 @@ asgiref==3.4.1
# -r requirements/edx/testing.txt
# django
# uvicorn
astroid==2.8.6
astroid==2.9.0
# via
# -r requirements/edx/testing.txt
# pylint
@@ -157,7 +157,7 @@ chardet==4.0.0
# via
# -r requirements/edx/testing.txt
# pysrt
charset-normalizer==2.0.7
charset-normalizer==2.0.9
# via
# -r requirements/edx/testing.txt
# aiohttp
@@ -199,7 +199,7 @@ coreschema==0.0.4
# -r requirements/edx/testing.txt
# coreapi
# drf-yasg
coverage[toml]==6.1.2
coverage[toml]==6.2
# via
# -r requirements/edx/testing.txt
# pytest-cov
@@ -333,7 +333,7 @@ django-config-models==2.2.0
# edx-enterprise
# edx-name-affirmation
# lti-consumer-xblock
django-cors-headers==3.10.0
django-cors-headers==3.10.1
# via -r requirements/edx/testing.txt
django-countries==7.2.1
# via
@@ -644,7 +644,7 @@ execnet==1.9.0
# pytest-xdist
factory-boy==3.2.1
# via -r requirements/edx/testing.txt
faker==9.8.3
faker==9.9.0
# via
# -r requirements/edx/testing.txt
# factory-boy
@@ -873,7 +873,7 @@ mccabe==0.6.1
# via
# -r requirements/edx/testing.txt
# pylint
mistune==0.8.4
mistune==2.0.0
# via m2r
mock==4.0.3
# via
@@ -1019,7 +1019,7 @@ pycparser==2.21
# via
# -r requirements/edx/testing.txt
# cffi
pycryptodomex==3.11.0
pycryptodomex==3.12.0
# via
# -r requirements/edx/testing.txt
# edx-proctoring
@@ -1054,7 +1054,7 @@ pylatexenc==2.10
# via
# -r requirements/edx/testing.txt
# olxcleaner
pylint==2.11.1
pylint==2.12.2
# via
# -r requirements/edx/testing.txt
# edx-lint
@@ -1077,7 +1077,7 @@ pylint-plugin-utils==0.6
# pylint-django
pylint-pytest==0.3.0
# via -r requirements/edx/testing.txt
pylti1p3==1.9.1
pylti1p3==1.10.0
# via -r requirements/edx/testing.txt
pymongo==3.10.1
# via
@@ -1119,7 +1119,7 @@ pytest-attrib==0.1.3
# via -r requirements/edx/testing.txt
pytest-cov==3.0.0
# via -r requirements/edx/testing.txt
pytest-django==4.4.0
pytest-django==4.5.1
# via -r requirements/edx/testing.txt
pytest-forked==1.3.0
# via
@@ -1131,7 +1131,7 @@ pytest-metadata==1.8.0
# via
# -r requirements/edx/testing.txt
# pytest-json-report
pytest-randomly==3.10.2
pytest-randomly==3.10.3
# via -r requirements/edx/testing.txt
pytest-xdist[psutil]==2.4.0
# via -r requirements/edx/testing.txt
@@ -1161,7 +1161,7 @@ python-slugify==4.0.1
# -r requirements/edx/testing.txt
# code-annotations
# transifex-client
python-swiftclient==3.12.0
python-swiftclient==3.13.0
# via
# -r requirements/edx/testing.txt
# ora2
@@ -1262,7 +1262,7 @@ sailthru-client==2.2.3
# via
# -r requirements/edx/testing.txt
# edx-ace
scipy==1.7.2
scipy==1.7.3
# via
# -r requirements/edx/testing.txt
# chem
@@ -1362,7 +1362,7 @@ soupsieve==2.3.1
# via
# -r requirements/edx/testing.txt
# beautifulsoup4
sphinx==4.3.0
sphinx==4.3.1
# via
# edx-sphinx-theme
# sphinxcontrib-httpdomain
@@ -1449,7 +1449,7 @@ tqdm==4.62.3
# nltk
transifex-client==0.14.3
# via -r requirements/edx/testing.txt
typing-extensions==4.0.0
typing-extensions==4.0.1
# via
# -r requirements/edx/testing.txt
# astroid

View File

@@ -10,7 +10,7 @@ babel==2.9.1
# via sphinx
certifi==2021.10.8
# via requests
charset-normalizer==2.0.7
charset-normalizer==2.0.9
# via requests
click==7.1.2
# via
@@ -62,7 +62,7 @@ smmap==5.0.0
# via gitdb
snowballstemmer==2.2.0
# via sphinx
sphinx==4.3.0
sphinx==4.3.1
# via
# -r requirements/edx/doc.in
# edx-sphinx-theme
@@ -82,7 +82,7 @@ stevedore==3.5.0
# via code-annotations
text-unidecode==1.3
# via python-slugify
typing-extensions==4.0.0
typing-extensions==4.0.1
# via gitpython
urllib3==1.26.7
# via requests

View File

@@ -6,7 +6,7 @@
#
certifi==2021.10.8
# via requests
charset-normalizer==2.0.7
charset-normalizer==2.0.9
# via requests
edx-opaque-keys==2.2.2
# via -r requirements/edx/paver.in

View File

@@ -63,7 +63,7 @@ asgiref==3.4.1
# -r requirements/edx/base.txt
# django
# uvicorn
astroid==2.8.6
astroid==2.9.0
# via
# pylint
# pylint-celery
@@ -150,7 +150,7 @@ chardet==4.0.0
# via
# -r requirements/edx/base.txt
# pysrt
charset-normalizer==2.0.7
charset-normalizer==2.0.9
# via
# -r requirements/edx/base.txt
# aiohttp
@@ -188,7 +188,7 @@ coreschema==0.0.4
# -r requirements/edx/base.txt
# coreapi
# drf-yasg
coverage[toml]==6.1.2
coverage[toml]==6.2
# via
# -r requirements/edx/coverage.txt
# pytest-cov
@@ -319,7 +319,7 @@ django-config-models==2.2.0
# edx-enterprise
# edx-name-affirmation
# lti-consumer-xblock
django-cors-headers==3.10.0
django-cors-headers==3.10.1
# via -r requirements/edx/base.txt
django-countries==7.2.1
# via
@@ -623,7 +623,7 @@ execnet==1.9.0
# via pytest-xdist
factory-boy==3.2.1
# via -r requirements/edx/testing.in
faker==9.8.3
faker==9.9.0
# via factory-boy
fastapi==0.70.0
# via pact-python
@@ -960,7 +960,7 @@ pycparser==2.21
# via
# -r requirements/edx/base.txt
# cffi
pycryptodomex==3.11.0
pycryptodomex==3.12.0
# via
# -r requirements/edx/base.txt
# edx-proctoring
@@ -993,7 +993,7 @@ pylatexenc==2.10
# via
# -r requirements/edx/base.txt
# olxcleaner
pylint==2.11.1
pylint==2.12.2
# via
# edx-lint
# pylint-celery
@@ -1010,7 +1010,7 @@ pylint-plugin-utils==0.6
# pylint-django
pylint-pytest==0.3.0
# via -r requirements/edx/testing.in
pylti1p3==1.9.1
pylti1p3==1.10.0
# via -r requirements/edx/base.txt
pymongo==3.10.1
# via
@@ -1050,7 +1050,7 @@ pytest-attrib==0.1.3
# via -r requirements/edx/testing.in
pytest-cov==3.0.0
# via -r requirements/edx/testing.in
pytest-django==4.4.0
pytest-django==4.5.1
# via -r requirements/edx/testing.in
pytest-forked==1.3.0
# via pytest-xdist
@@ -1060,7 +1060,7 @@ pytest-metadata==1.8.0
# via
# -r requirements/edx/testing.in
# pytest-json-report
pytest-randomly==3.10.2
pytest-randomly==3.10.3
# via -r requirements/edx/testing.in
pytest-xdist[psutil]==2.4.0
# via -r requirements/edx/testing.in
@@ -1090,7 +1090,7 @@ python-slugify==4.0.1
# -r requirements/edx/base.txt
# code-annotations
# transifex-client
python-swiftclient==3.12.0
python-swiftclient==3.13.0
# via
# -r requirements/edx/base.txt
# ora2
@@ -1187,7 +1187,7 @@ sailthru-client==2.2.3
# via
# -r requirements/edx/base.txt
# edx-ace
scipy==1.7.2
scipy==1.7.3
# via
# -r requirements/edx/base.txt
# chem
@@ -1337,7 +1337,7 @@ tqdm==4.62.3
# nltk
transifex-client==0.14.3
# via -r requirements/edx/testing.in
typing-extensions==4.0.0
typing-extensions==4.0.1
# via
# -r requirements/edx/base.txt
# astroid

View File

@@ -6,7 +6,7 @@
#
certifi==2021.10.8
# via requests
charset-normalizer==2.0.7
charset-normalizer==2.0.9
# via requests
idna==3.3
# via requests