From c135fddd5555d0b43b5cd5b5f9b48d9a24ecf16f Mon Sep 17 00:00:00 2001
From: Eemaan Amir <57627710+eemaanamir@users.noreply.github.com>
Date: Fri, 2 Aug 2024 12:22:34 +0500
Subject: [PATCH 01/13] fix: removed extra space and colon from ORA
notification content (#35206)
---
openedx/core/djangoapps/notifications/base_notification.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openedx/core/djangoapps/notifications/base_notification.py b/openedx/core/djangoapps/notifications/base_notification.py
index 0287d8f73c19..302d77328765 100644
--- a/openedx/core/djangoapps/notifications/base_notification.py
+++ b/openedx/core/djangoapps/notifications/base_notification.py
@@ -197,7 +197,7 @@
'push': False,
'email_cadence': EmailCadence.DAILY,
'non_editable': [],
- 'content_template': _('<{p}>You have a new open response submission awaiting for review for : '
+ 'content_template': _('<{p}>You have a new open response submission awaiting for review for '
'<{strong}>{ora_name}{strong}>{p}>'),
'content_context': {
'ora_name': 'Name of ORA in course',
From 5aa69589c4c931ed601f91145c4c704cb6b0618d Mon Sep 17 00:00:00 2001
From: Muhammad Adeel Tajamul
<77053848+muhammadadeeltajamul@users.noreply.github.com>
Date: Mon, 5 Aug 2024 06:08:19 +0500
Subject: [PATCH 02/13] feat: added truncate and alert in notification (#35214)
---
.../templates/notifications/digest_content.html | 2 +-
.../email_digest_preference_update.html | 13 +++++++++++++
openedx/core/djangoapps/notifications/views.py | 8 +++++---
3 files changed, 19 insertions(+), 4 deletions(-)
create mode 100644 openedx/core/djangoapps/notifications/templates/notifications/email_digest_preference_update.html
diff --git a/openedx/core/djangoapps/notifications/templates/notifications/digest_content.html b/openedx/core/djangoapps/notifications/templates/notifications/digest_content.html
index 1da86f48f0b1..13ac89d4ec29 100644
--- a/openedx/core/djangoapps/notifications/templates/notifications/digest_content.html
+++ b/openedx/core/djangoapps/notifications/templates/notifications/digest_content.html
@@ -33,7 +33,7 @@
- {{ notification.content | safe }}
+ {{ notification.content | truncatechars_html:600 | safe }}
diff --git a/openedx/core/djangoapps/notifications/templates/notifications/email_digest_preference_update.html b/openedx/core/djangoapps/notifications/templates/notifications/email_digest_preference_update.html
new file mode 100644
index 000000000000..79e88012f313
--- /dev/null
+++ b/openedx/core/djangoapps/notifications/templates/notifications/email_digest_preference_update.html
@@ -0,0 +1,13 @@
+
+
+
+
+ {{ _("Email Digest Preferences Updated") }}
+
+
+
+
+
diff --git a/openedx/core/djangoapps/notifications/views.py b/openedx/core/djangoapps/notifications/views.py
index 858f5da9f5fc..ee5e282d905e 100644
--- a/openedx/core/djangoapps/notifications/views.py
+++ b/openedx/core/djangoapps/notifications/views.py
@@ -5,8 +5,7 @@
from django.conf import settings
from django.db.models import Count
-from django.http import HttpResponse
-from django.shortcuts import get_object_or_404
+from django.shortcuts import get_object_or_404, render
from django.utils.translation import gettext as _
from opaque_keys.edx.keys import CourseKey
from pytz import UTC
@@ -442,4 +441,7 @@ def preference_update_from_encrypted_username_view(request, username, patch):
username and patch must be string
"""
update_user_preferences_from_patch(username, patch)
- return HttpResponse("Success", status=status.HTTP_200_OK)
+ context = {
+ "notification_preferences_url": f"{settings.ACCOUNT_MICROFRONTEND_URL}/notifications"
+ }
+ return render(request, "notifications/email_digest_preference_update.html", context=context)
From 28ce713e9fb4cb40b9981a7590a5b7bb4c1a2314 Mon Sep 17 00:00:00 2001
From: Muhammad Anas <88967643+Anas12091101@users.noreply.github.com>
Date: Mon, 5 Aug 2024 16:23:50 +0500
Subject: [PATCH 03/13] feat: added custom setting attribute for gradebook
freeze timedelta (#35189)
* feat: added custom setting attribute for gradebook freeze timedelta
---
lms/djangoapps/grades/grade_utils.py | 3 ++-
lms/envs/common.py | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/lms/djangoapps/grades/grade_utils.py b/lms/djangoapps/grades/grade_utils.py
index 0344cf6c20d1..05d2058f37ba 100644
--- a/lms/djangoapps/grades/grade_utils.py
+++ b/lms/djangoapps/grades/grade_utils.py
@@ -7,6 +7,7 @@
from datetime import timedelta
from django.utils import timezone
+from django.conf import settings
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
@@ -22,7 +23,7 @@ def are_grades_frozen(course_key):
if ENFORCE_FREEZE_GRADE_AFTER_COURSE_END.is_enabled(course_key):
course = CourseOverview.get_from_id(course_key)
if course.end:
- freeze_grade_date = course.end + timedelta(30)
+ freeze_grade_date = course.end + timedelta(settings.GRADEBOOK_FREEZE_DAYS)
now = timezone.now()
return now > freeze_grade_date
return False
diff --git a/lms/envs/common.py b/lms/envs/common.py
index 9f9004976e0c..d0d2eeae765c 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -1101,6 +1101,11 @@
# If this is true, random scores will be generated for the purpose of debugging the profile graphs
GENERATE_PROFILE_SCORES = False
+# .. setting_name: GRADEBOOK_FREEZE_DAYS
+# .. setting_default: 30
+# .. setting_description: Sets the number of days after which the gradebook will freeze following the course's end.
+GRADEBOOK_FREEZE_DAYS = 30
+
# Used with XQueue
XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds
XQUEUE_INTERFACE = {
From 500516832ba60b6d98ff8cf8b6848e62d80bbc99 Mon Sep 17 00:00:00 2001
From: Eemaan Amir <57627710+eemaanamir@users.noreply.github.com>
Date: Mon, 5 Aug 2024 18:35:20 +0500
Subject: [PATCH 04/13] chore: update ora2 version in requirements (#35222)
---
requirements/edx/base.txt | 2 +-
requirements/edx/development.txt | 2 +-
requirements/edx/doc.txt | 2 +-
requirements/edx/testing.txt | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index b08d4ad2f59d..45d33a16ce26 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -773,7 +773,7 @@ optimizely-sdk==4.1.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/bundled.in
-ora2==6.11.1
+ora2==6.11.2
# via -r requirements/edx/bundled.in
packaging==24.1
# via
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index f3fb5d9b630d..656895c6aba8 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -1317,7 +1317,7 @@ optimizely-sdk==4.1.1
# -c requirements/edx/../constraints.txt
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-ora2==6.11.1
+ora2==6.11.2
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt
index 9dc1fbbde2f6..0e6235d3bfc9 100644
--- a/requirements/edx/doc.txt
+++ b/requirements/edx/doc.txt
@@ -901,7 +901,7 @@ optimizely-sdk==4.1.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
-ora2==6.11.1
+ora2==6.11.2
# via -r requirements/edx/base.txt
packaging==24.1
# via
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index 7a83f38f2c13..0c7b2d33b8c0 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -980,7 +980,7 @@ optimizely-sdk==4.1.1
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
-ora2==6.11.1
+ora2==6.11.2
# via -r requirements/edx/base.txt
packaging==24.1
# via
From 05bf82c6552defcc0904e35a1f1894e9a7597166 Mon Sep 17 00:00:00 2001
From: Prashant Makwana
Date: Mon, 5 Aug 2024 16:50:43 +0000
Subject: [PATCH 05/13] chore: bumping enteprise version to 4.22.4
---
requirements/constraints.txt | 2 +-
requirements/edx/base.txt | 2 +-
requirements/edx/development.txt | 2 +-
requirements/edx/doc.txt | 2 +-
requirements/edx/testing.txt | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index 1e2953c7d760..89f265931dc4 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -20,7 +20,7 @@ celery>=5.2.2,<6.0.0
# The team that owns this package will manually bump this package rather than having it pulled in automatically.
# This is to allow them to better control its deployment and to do it in a process that works better
# for them.
-edx-enterprise==4.22.2
+edx-enterprise==4.22.4
# Stay on LTS version, remove once this is added to common constraint
Django<5.0
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 45d33a16ce26..5ce0de2aaf76 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -456,7 +456,7 @@ edx-drf-extensions==10.3.0
# edx-when
# edxval
# openedx-learning
-edx-enterprise==4.22.2
+edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/kernel.in
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index 656895c6aba8..cfadac2df694 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -727,7 +727,7 @@ edx-drf-extensions==10.3.0
# edx-when
# edxval
# openedx-learning
-edx-enterprise==4.22.2
+edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/doc.txt
diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt
index 0e6235d3bfc9..120986d6f386 100644
--- a/requirements/edx/doc.txt
+++ b/requirements/edx/doc.txt
@@ -528,7 +528,7 @@ edx-drf-extensions==10.3.0
# edx-when
# edxval
# openedx-learning
-edx-enterprise==4.22.2
+edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index 0c7b2d33b8c0..3f948fa7351c 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -559,7 +559,7 @@ edx-drf-extensions==10.3.0
# edx-when
# edxval
# openedx-learning
-edx-enterprise==4.22.2
+edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
From 8aac664e6758e63122a1537d1d31f2f6fada167b Mon Sep 17 00:00:00 2001
From: Braden MacDonald
Date: Mon, 5 Aug 2024 12:00:14 -0700
Subject: [PATCH 06/13] fix: error when saving changes to a v2 library block
(#35217)
---
openedx/core/djangoapps/xblock/rest_api/views.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openedx/core/djangoapps/xblock/rest_api/views.py b/openedx/core/djangoapps/xblock/rest_api/views.py
index 501386efba38..8c2d16839a67 100644
--- a/openedx/core/djangoapps/xblock/rest_api/views.py
+++ b/openedx/core/djangoapps/xblock/rest_api/views.py
@@ -257,7 +257,7 @@ def post(self, request, usage_key_str):
# Signal that we've modified this block
context_impl = get_learning_context_impl(usage_key)
- context_impl.send_updated_event(usage_key)
+ context_impl.send_block_updated_event(usage_key)
return Response({
"id": str(block.location),
From 48c5856a3f3bfbd25265b40761fa887b931bf53d Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 6 Aug 2024 07:39:42 +0000
Subject: [PATCH 07/13] fix(deps): update dependency requirejs to v2.3.7
[security]
---
package-lock.json | 9 +++++----
package.json | 2 +-
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 04728ccaab91..02dde6f701bc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -59,7 +59,7 @@
"react-slick": "0.29.0",
"redux": "3.7.2",
"redux-thunk": "2.2.0",
- "requirejs": "2.3.6",
+ "requirejs": "2.3.7",
"rtlcss": "2.6.2",
"sass": "^1.54.8",
"sass-loader": "^14.1.1",
@@ -20862,9 +20862,10 @@
}
},
"node_modules/requirejs": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
- "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz",
+ "integrity": "sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw==",
+ "license": "MIT",
"bin": {
"r_js": "bin/r.js",
"r.js": "bin/r.js"
diff --git a/package.json b/package.json
index d182d83d3151..49ab2820d11a 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"react-slick": "0.29.0",
"redux": "3.7.2",
"redux-thunk": "2.2.0",
- "requirejs": "2.3.6",
+ "requirejs": "2.3.7",
"rtlcss": "2.6.2",
"sass": "^1.54.8",
"sass-loader": "^14.1.1",
From 0a067ffa829c4fd89a67b59ece907c43ac46e280 Mon Sep 17 00:00:00 2001
From: Awais Qureshi
Date: Tue, 6 Aug 2024 15:25:24 +0500
Subject: [PATCH 08/13] feat: upgrading simple api to drf compatible (4th api )
(#35135)
* feat: upgrading simple api to drf compatible.
---
lms/djangoapps/instructor/views/api.py | 75 +++++++++++----------
lms/djangoapps/instructor/views/api_urls.py | 2 +-
2 files changed, 41 insertions(+), 36 deletions(-)
diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py
index e7a82496456e..a58762d0f3ad 100644
--- a/lms/djangoapps/instructor/views/api.py
+++ b/lms/djangoapps/instructor/views/api.py
@@ -2366,46 +2366,51 @@ def _list_instructor_tasks(request, course_id):
return JsonResponse(response_payload)
-@require_POST
-@ensure_csrf_cookie
-@cache_control(no_cache=True, no_store=True, must_revalidate=True)
-@require_course_permission(permissions.SHOW_TASKS)
-def list_entrance_exam_instructor_tasks(request, course_id):
+@method_decorator(cache_control(no_cache=True, no_store=True, must_revalidate=True), name='dispatch')
+class ListEntranceExamInstructorTasks(APIView):
"""
List entrance exam related instructor tasks.
-
- Takes either of the following query parameters
- - unique_student_identifier is an email or username
- - all_students is a boolean
"""
- course_id = CourseKey.from_string(course_id)
- course = get_course_by_id(course_id)
- student = request.POST.get('unique_student_identifier', None)
- if student is not None:
- student = get_student_from_identifier(student)
+ permission_classes = (IsAuthenticated, permissions.InstructorPermission)
+ permission_name = permissions.SHOW_TASKS
- try:
- entrance_exam_key = UsageKey.from_string(course.entrance_exam_id).map_into_course(course_id)
- except InvalidKeyError:
- return HttpResponseBadRequest(_("Course has no valid entrance exam section."))
- if student:
- # Specifying for a single student's entrance exam history
- tasks = task_api.get_entrance_exam_instructor_task_history(
- course_id,
- entrance_exam_key,
- student
- )
- else:
- # Specifying for all student's entrance exam history
- tasks = task_api.get_entrance_exam_instructor_task_history(
- course_id,
- entrance_exam_key
- )
+ @method_decorator(ensure_csrf_cookie)
+ def post(self, request, course_id):
+ """
+ List entrance exam related instructor tasks.
- response_payload = {
- 'tasks': list(map(extract_task_features, tasks)),
- }
- return JsonResponse(response_payload)
+ Takes either of the following query parameters
+ - unique_student_identifier is an email or username
+ - all_students is a boolean
+ """
+ course_id = CourseKey.from_string(course_id)
+ course = get_course_by_id(course_id)
+ student = request.POST.get('unique_student_identifier', None)
+ if student is not None:
+ student = get_student_from_identifier(student)
+
+ try:
+ entrance_exam_key = UsageKey.from_string(course.entrance_exam_id).map_into_course(course_id)
+ except InvalidKeyError:
+ return HttpResponseBadRequest(_("Course has no valid entrance exam section."))
+ if student:
+ # Specifying for a single student's entrance exam history
+ tasks = task_api.get_entrance_exam_instructor_task_history(
+ course_id,
+ entrance_exam_key,
+ student
+ )
+ else:
+ # Specifying for all student's entrance exam history
+ tasks = task_api.get_entrance_exam_instructor_task_history(
+ course_id,
+ entrance_exam_key
+ )
+
+ response_payload = {
+ 'tasks': list(map(extract_task_features, tasks)),
+ }
+ return JsonResponse(response_payload)
class ReportDownloadSerializer(serializers.Serializer): # pylint: disable=abstract-method
diff --git a/lms/djangoapps/instructor/views/api_urls.py b/lms/djangoapps/instructor/views/api_urls.py
index 6b072ef0c12e..7f94a369ff47 100644
--- a/lms/djangoapps/instructor/views/api_urls.py
+++ b/lms/djangoapps/instructor/views/api_urls.py
@@ -40,7 +40,7 @@
path('reset_student_attempts_for_entrance_exam', api.reset_student_attempts_for_entrance_exam,
name='reset_student_attempts_for_entrance_exam'),
path('rescore_entrance_exam', api.rescore_entrance_exam, name='rescore_entrance_exam'),
- path('list_entrance_exam_instructor_tasks', api.list_entrance_exam_instructor_tasks,
+ path('list_entrance_exam_instructor_tasks', api.ListEntranceExamInstructorTasks.as_view(),
name='list_entrance_exam_instructor_tasks'),
path('mark_student_can_skip_entrance_exam', api.mark_student_can_skip_entrance_exam,
name='mark_student_can_skip_entrance_exam'),
From 3c64b747e5c6f1bc0c12296c825ce5610425a1d9 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 6 Aug 2024 10:25:00 -0400
Subject: [PATCH 09/13] feat: Upgrade Python dependency edx-django-utils
(#35235)
Update to latest version with updates to function trace functionality.
Commit generated by workflow `openedx/edx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master`
Co-authored-by: dianakhuang <2952947+dianakhuang@users.noreply.github.com>
---
requirements/edx/base.txt | 2 +-
requirements/edx/development.txt | 2 +-
requirements/edx/doc.txt | 2 +-
requirements/edx/testing.txt | 2 +-
scripts/user_retirement/requirements/base.txt | 2 +-
scripts/user_retirement/requirements/testing.txt | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 5ce0de2aaf76..cb8799b700a4 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -427,7 +427,7 @@ edx-django-release-util==1.4.0
# edxval
edx-django-sites-extensions==4.2.0
# via -r requirements/edx/kernel.in
-edx-django-utils==5.14.2
+edx-django-utils==5.15.0
# via
# -r requirements/edx/kernel.in
# django-config-models
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index cfadac2df694..7683bf6dd26c 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -696,7 +696,7 @@ edx-django-sites-extensions==4.2.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-edx-django-utils==5.14.2
+edx-django-utils==5.15.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt
index 120986d6f386..39c1b8d668f9 100644
--- a/requirements/edx/doc.txt
+++ b/requirements/edx/doc.txt
@@ -499,7 +499,7 @@ edx-django-release-util==1.4.0
# edxval
edx-django-sites-extensions==4.2.0
# via -r requirements/edx/base.txt
-edx-django-utils==5.14.2
+edx-django-utils==5.15.0
# via
# -r requirements/edx/base.txt
# django-config-models
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index 3f948fa7351c..278423303c9e 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -530,7 +530,7 @@ edx-django-release-util==1.4.0
# edxval
edx-django-sites-extensions==4.2.0
# via -r requirements/edx/base.txt
-edx-django-utils==5.14.2
+edx-django-utils==5.15.0
# via
# -r requirements/edx/base.txt
# django-config-models
diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt
index 30d5df674f2e..98972d24c494 100644
--- a/scripts/user_retirement/requirements/base.txt
+++ b/scripts/user_retirement/requirements/base.txt
@@ -46,7 +46,7 @@ django-crum==0.7.9
# via edx-django-utils
django-waffle==4.1.0
# via edx-django-utils
-edx-django-utils==5.14.2
+edx-django-utils==5.15.0
# via edx-rest-api-client
edx-rest-api-client==5.7.1
# via -r scripts/user_retirement/requirements/base.in
diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt
index c10b36f0de60..c0c8d5abba9e 100644
--- a/scripts/user_retirement/requirements/testing.txt
+++ b/scripts/user_retirement/requirements/testing.txt
@@ -66,7 +66,7 @@ django-waffle==4.1.0
# via
# -r scripts/user_retirement/requirements/base.txt
# edx-django-utils
-edx-django-utils==5.14.2
+edx-django-utils==5.15.0
# via
# -r scripts/user_retirement/requirements/base.txt
# edx-rest-api-client
From 94f4c488a601bb435b2479fde872468b7a2e515d Mon Sep 17 00:00:00 2001
From: Diana Huang
Date: Tue, 6 Aug 2024 14:09:25 -0400
Subject: [PATCH 10/13] build: Pin social-auth-app-django as a requirement.
(#35237)
There are a few migrations going into this library
which cause operational headaches for operators.
We would like to pin until the migrations settle down
and then we can unpin this again.
---
requirements/constraints.txt | 6 ++++++
requirements/edx/base.txt | 1 +
requirements/edx/development.txt | 1 +
requirements/edx/doc.txt | 1 +
requirements/edx/testing.txt | 1 +
5 files changed, 10 insertions(+)
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index 89f265931dc4..0bdb5ad2285c 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -130,3 +130,9 @@ numpy<2.0.0
# Two lines were added in 1.14.4 that make file_exists_in_storage function always return False,
# as the default value of AWS_S3_FILE_OVERWRITE is True
django-storages<1.14.4
+
+# social-auth-app-django 5.4.2 introduces a new migration that will not play nicely with large installations. This will touch
+# user tables, which are quite large, especially on instances like edx.org.
+# We are pinning this until after all the smaller migrations get handled and then we can migrate this all at once.
+# Ticket to unpin: https://github.com/edx/edx-arch-experiments/issues/760
+social-auth-app-django<=5.4.1
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index cb8799b700a4..fcfe7548a013 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -1065,6 +1065,7 @@ snowflake-connector-python==3.11.0
# via edx-enterprise
social-auth-app-django==5.4.1
# via
+ # -c requirements/edx/../constraints.txt
# -r requirements/edx/kernel.in
# edx-auth-backends
social-auth-core==4.5.4
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index 7683bf6dd26c..d6487d2ffa98 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -1884,6 +1884,7 @@ snowflake-connector-python==3.11.0
# edx-enterprise
social-auth-app-django==5.4.1
# via
+ # -c requirements/edx/../constraints.txt
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# edx-auth-backends
diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt
index 39c1b8d668f9..c90be697606c 100644
--- a/requirements/edx/doc.txt
+++ b/requirements/edx/doc.txt
@@ -1255,6 +1255,7 @@ snowflake-connector-python==3.11.0
# edx-enterprise
social-auth-app-django==5.4.1
# via
+ # -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# edx-auth-backends
social-auth-core==4.5.4
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index 278423303c9e..a679ac373e18 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -1416,6 +1416,7 @@ snowflake-connector-python==3.11.0
# edx-enterprise
social-auth-app-django==5.4.1
# via
+ # -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# edx-auth-backends
social-auth-core==4.5.4
From 834dc3107388ac08248fe2aac6d3884153187c84 Mon Sep 17 00:00:00 2001
From: edX requirements bot
<49161187+edx-requirements-bot@users.noreply.github.com>
Date: Tue, 6 Aug 2024 15:18:33 -0400
Subject: [PATCH 11/13] chore: Upgrade Python requirements (#35241)
---
requirements/edx-sandbox/base.txt | 12 +-
requirements/edx/base.txt | 134 ++++++--
requirements/edx/coverage.txt | 4 +-
requirements/edx/development.txt | 310 +++++++++++-------
requirements/edx/doc.txt | 186 +++++++++--
requirements/edx/semgrep.txt | 6 +-
requirements/edx/testing.txt | 250 ++++++++------
requirements/pip-tools.txt | 2 +-
requirements/pip.txt | 6 +-
.../requirements/testing.txt | 2 +-
scripts/user_retirement/requirements/base.txt | 18 +-
.../user_retirement/requirements/testing.txt | 20 +-
12 files changed, 640 insertions(+), 310 deletions(-)
diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt
index 241deba480cf..8942bc7dd9cb 100644
--- a/requirements/edx-sandbox/base.txt
+++ b/requirements/edx-sandbox/base.txt
@@ -4,7 +4,7 @@
#
# make upgrade
#
-cffi==1.16.0
+cffi==1.17.0
# via cryptography
chem==1.3.0
# via -r requirements/edx-sandbox/base.in
@@ -16,7 +16,7 @@ codejail-includes==1.0.0
# via -r requirements/edx-sandbox/base.in
contourpy==1.2.1
# via matplotlib
-cryptography==42.0.8
+cryptography==43.0.0
# via -r requirements/edx-sandbox/base.in
cycler==0.12.1
# via matplotlib
@@ -35,7 +35,7 @@ markupsafe==2.1.5
# via
# chem
# openedx-calc
-matplotlib==3.9.1
+matplotlib==3.9.0
# via -r requirements/edx-sandbox/base.in
mpmath==1.3.0
# via sympy
@@ -71,7 +71,7 @@ python-dateutil==2.9.0.post0
# via matplotlib
random2==1.0.2
# via -r requirements/edx-sandbox/base.in
-regex==2024.5.15
+regex==2024.7.24
# via nltk
scipy==1.14.0
# via
@@ -82,9 +82,9 @@ six==1.16.0
# via
# codejail-includes
# python-dateutil
-sympy==1.13.0
+sympy==1.13.1
# via
# -r requirements/edx-sandbox/base.in
# openedx-calc
-tqdm==4.66.4
+tqdm==4.66.5
# via nltk
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index fcfe7548a013..c0c4c5b32cc6 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -8,7 +8,9 @@
# via -r requirements/edx/github.in
acid-xblock==0.3.1
# via -r requirements/edx/kernel.in
-aiohttp==3.9.5
+aiohappyeyeballs==2.3.4
+ # via aiohttp
+aiohttp==3.10.1
# via
# geoip2
# openai
@@ -33,7 +35,7 @@ asgiref==3.8.1
# django-countries
asn1crypto==1.5.1
# via snowflake-connector-python
-attrs==23.2.0
+attrs==24.2.0
# via
# -r requirements/edx/kernel.in
# aiohttp
@@ -50,7 +52,7 @@ babel==2.15.0
# enmerkar-underscore
backoff==1.10.0
# via analytics-python
-bcrypt==4.1.3
+bcrypt==4.2.0
# via paramiko
beautifulsoup4==4.12.3
# via pynliner
@@ -66,19 +68,23 @@ bleach[css]==6.1.0
# xblock-poll
boto==2.49.0
# via -r requirements/edx/kernel.in
-boto3==1.34.144
+boto3==1.34.154
# via
# -r requirements/edx/kernel.in
# django-ses
# fs-s3fs
# ora2
-botocore==1.34.144
+botocore==1.34.154
# via
# -r requirements/edx/kernel.in
# boto3
# s3transfer
bridgekeeper==0.9
# via -r requirements/edx/kernel.in
+cachecontrol==0.14.0
+ # via firebase-admin
+cachetools==5.4.0
+ # via google-auth
camel-converter[pydantic]==3.1.2
# via meilisearch
celery==5.4.0
@@ -98,7 +104,7 @@ certifi==2024.7.4
# py2neo
# requests
# snowflake-connector-python
-cffi==1.16.0
+cffi==1.17.0
# via
# cryptography
# pynacl
@@ -160,7 +166,7 @@ defusedxml==0.7.1
# ora2
# python3-openid
# social-auth-core
-django==4.2.14
+django==4.2.15
# via
# -c requirements/edx/../common_constraints.txt
# -c requirements/edx/../constraints.txt
@@ -179,6 +185,7 @@ django==4.2.14
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
+ # django-push-notifications
# django-sekizai
# django-ses
# django-statici18n
@@ -262,7 +269,7 @@ django-crum==0.7.9
# super-csv
django-fernet-fields-v2==0.9
# via edx-enterprise
-django-filter==24.2
+django-filter==24.3
# via
# -r requirements/edx/kernel.in
# edx-enterprise
@@ -311,6 +318,8 @@ django-object-actions==4.2.0
# via edx-enterprise
django-pipeline==3.1.0
# via -r requirements/edx/kernel.in
+django-push-notifications==3.1.0
+ # via edx-ace
django-ratelimit==4.1.0
# via -r requirements/edx/kernel.in
django-sekizai==4.1.0
@@ -390,7 +399,7 @@ drf-yasg==1.21.7
# via
# django-user-tasks
# edx-api-doc-tools
-edx-ace==1.9.1
+edx-ace==1.11.0
# via -r requirements/edx/kernel.in
edx-api-doc-tools==1.8.0
# via
@@ -418,7 +427,7 @@ edx-celeryutils==1.3.0
# super-csv
edx-codejail==3.4.1
# via -r requirements/edx/kernel.in
-edx-completion==4.6.6
+edx-completion==4.6.7
# via -r requirements/edx/kernel.in
edx-django-release-util==1.4.0
# via
@@ -460,7 +469,7 @@ edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/kernel.in
-edx-event-bus-kafka==5.7.0
+edx-event-bus-kafka==5.8.1
# via -r requirements/edx/kernel.in
edx-event-bus-redis==0.5.0
# via -r requirements/edx/kernel.in
@@ -502,11 +511,11 @@ edx-rest-api-client==5.7.1
# -r requirements/edx/kernel.in
# edx-enterprise
# edx-proctoring
-edx-search==3.9.1
+edx-search==4.0.0
# via -r requirements/edx/kernel.in
edx-sga==0.25.0
# via -r requirements/edx/bundled.in
-edx-submissions==3.7.5
+edx-submissions==3.7.6
# via
# -r requirements/edx/kernel.in
# ora2
@@ -551,6 +560,8 @@ fastavro==1.9.5
# via openedx-events
filelock==3.15.4
# via snowflake-connector-python
+firebase-admin==6.5.0
+ # via edx-ace
frozenlist==1.4.1
# via
# aiohttp
@@ -571,6 +582,49 @@ geoip2==4.8.0
# via -r requirements/edx/kernel.in
glob2==0.7
# via -r requirements/edx/kernel.in
+google-api-core[grpc]==2.19.1
+ # via
+ # firebase-admin
+ # google-api-python-client
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-api-python-client==2.139.0
+ # via firebase-admin
+google-auth==2.32.0
+ # via
+ # google-api-core
+ # google-api-python-client
+ # google-auth-httplib2
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-auth-httplib2==0.2.0
+ # via google-api-python-client
+google-cloud-core==2.4.1
+ # via
+ # google-cloud-firestore
+ # google-cloud-storage
+google-cloud-firestore==2.17.0
+ # via firebase-admin
+google-cloud-storage==2.18.0
+ # via firebase-admin
+google-crc32c==1.5.0
+ # via
+ # google-cloud-storage
+ # google-resumable-media
+google-resumable-media==2.7.1
+ # via google-cloud-storage
+googleapis-common-protos==1.63.2
+ # via
+ # google-api-core
+ # grpcio-status
+grpcio==1.65.4
+ # via
+ # google-api-core
+ # grpcio-status
+grpcio-status==1.62.3
+ # via google-api-core
gunicorn==22.0.0
# via -r requirements/edx/kernel.in
help-tokens==2.4.0
@@ -579,6 +633,10 @@ html5lib==1.1
# via
# -r requirements/edx/kernel.in
# ora2
+httplib2==0.22.0
+ # via
+ # google-api-python-client
+ # google-auth-httplib2
icalendar==5.0.13
# via -r requirements/edx/kernel.in
idna==3.7
@@ -610,7 +668,7 @@ jmespath==1.0.1
# botocore
joblib==1.4.2
# via nltk
-jsondiff==2.1.2
+jsondiff==2.2.0
# via edx-enterprise
jsonfield==3.1.0
# via
@@ -631,7 +689,7 @@ jwcrypto==1.5.6
# via
# django-oauth-toolkit
# pylti1p3
-kombu==5.3.7
+kombu==5.4.0
# via celery
laboratory==1.0.2
# via -r requirements/edx/kernel.in
@@ -703,6 +761,8 @@ more-itertools==10.3.0
# via cssutils
mpmath==1.3.0
# via sympy
+msgpack==1.0.8
+ # via cachecontrol
multidict==6.0.5
# via
# aiohttp
@@ -819,6 +879,17 @@ polib==1.2.0
# via edx-i18n-tools
prompt-toolkit==3.0.47
# via click-repl
+proto-plus==1.24.0
+ # via
+ # google-api-core
+ # google-cloud-firestore
+protobuf==4.25.4
+ # via
+ # google-api-core
+ # google-cloud-firestore
+ # googleapis-common-protos
+ # grpcio-status
+ # proto-plus
psutil==6.0.0
# via
# -r requirements/edx/paver.txt
@@ -828,7 +899,12 @@ py2neo @ https://github.com/overhangio/py2neo/releases/download/2021.2.3/py2neo-
# -c requirements/edx/../constraints.txt
# -r requirements/edx/bundled.in
pyasn1==0.6.0
- # via pgpy
+ # via
+ # pgpy
+ # pyasn1-modules
+ # rsa
+pyasn1-modules==0.4.0
+ # via google-auth
pycountry==24.6.1
# via -r requirements/edx/kernel.in
pycparser==2.22
@@ -852,7 +928,7 @@ pyjwkest==1.4.2
# -r requirements/edx/kernel.in
# edx-token-utils
# lti-consumer-xblock
-pyjwt[crypto]==2.8.0
+pyjwt[crypto]==2.9.0
# via
# -r requirements/edx/kernel.in
# drf-jwt
@@ -860,6 +936,7 @@ pyjwt[crypto]==2.8.0
# edx-drf-extensions
# edx-proctoring
# edx-rest-api-client
+ # firebase-admin
# pylti1p3
# snowflake-connector-python
# social-auth-core
@@ -884,13 +961,14 @@ pynacl==1.5.0
# paramiko
pynliner==0.8.0
# via -r requirements/edx/kernel.in
-pyopenssl==24.1.0
+pyopenssl==24.2.1
# via
# optimizely-sdk
# snowflake-connector-python
pyparsing==3.1.2
# via
# chem
+ # httplib2
# openedx-calc
pyrsistent==0.20.0
# via optimizely-sdk
@@ -960,7 +1038,7 @@ random2==1.0.2
# via -r requirements/edx/kernel.in
recommender-xblock==2.2.0
# via -r requirements/edx/bundled.in
-redis==5.0.7
+redis==5.0.8
# via
# -r requirements/edx/kernel.in
# walrus
@@ -968,19 +1046,22 @@ referencing==0.35.1
# via
# jsonschema
# jsonschema-specifications
-regex==2024.5.15
+regex==2024.7.24
# via nltk
requests==2.32.3
# via
# -r requirements/edx/paver.txt
# algoliasearch
# analytics-python
+ # cachecontrol
# django-oauth-toolkit
# edx-bulk-grades
# edx-drf-extensions
# edx-enterprise
# edx-rest-api-client
# geoip2
+ # google-api-core
+ # google-cloud-storage
# mailsnake
# meilisearch
# openai
@@ -998,10 +1079,12 @@ requests-oauthlib==2.0.0
# via
# -r requirements/edx/kernel.in
# social-auth-core
-rpds-py==0.19.0
+rpds-py==0.20.0
# via
# jsonschema
# referencing
+rsa==4.9
+ # via google-auth
rules==3.4
# via
# -r requirements/edx/kernel.in
@@ -1061,7 +1144,7 @@ slumber==0.7.1
# edx-bulk-grades
# edx-enterprise
# edx-rest-api-client
-snowflake-connector-python==3.11.0
+snowflake-connector-python==3.12.0
# via edx-enterprise
social-auth-app-django==5.4.1
# via
@@ -1098,7 +1181,7 @@ stevedore==5.2.0
# edx-opaque-keys
super-csv==3.2.0
# via edx-bulk-grades
-sympy==1.13.0
+sympy==1.13.1
# via openedx-calc
testfixtures==8.3.0
# via edx-enterprise
@@ -1108,7 +1191,7 @@ tinycss2==1.2.1
# via bleach
tomlkit==0.13.0
# via snowflake-connector-python
-tqdm==4.66.4
+tqdm==4.66.5
# via
# nltk
# openai
@@ -1132,6 +1215,7 @@ uritemplate==4.1.1
# via
# drf-spectacular
# drf-yasg
+ # google-api-python-client
urllib3==1.26.19
# via
# -c requirements/edx/../constraints.txt
@@ -1174,7 +1258,7 @@ webob==1.8.7
# xblock
wrapt==1.16.0
# via -r requirements/edx/paver.txt
-xblock[django]==4.0.1
+xblock[django]==5.0.0
# via
# -r requirements/edx/kernel.in
# acid-xblock
diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt
index 8c3b834163d2..a004eeeb9ffa 100644
--- a/requirements/edx/coverage.txt
+++ b/requirements/edx/coverage.txt
@@ -6,9 +6,9 @@
#
chardet==5.2.0
# via diff-cover
-coverage==7.6.0
+coverage==7.6.1
# via -r requirements/edx/coverage.in
-diff-cover==9.1.0
+diff-cover==9.1.1
# via -r requirements/edx/coverage.in
jinja2==3.1.4
# via diff-cover
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index d6487d2ffa98..cf8b8da20fda 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -16,7 +16,12 @@ acid-xblock==0.3.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-aiohttp==3.9.5
+aiohappyeyeballs==2.3.4
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # aiohttp
+aiohttp==3.10.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -27,7 +32,7 @@ aiosignal==1.3.1
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# aiohttp
-alabaster==0.7.16
+alabaster==1.0.0
# via
# -r requirements/edx/doc.txt
# sphinx
@@ -57,9 +62,7 @@ annotated-types==0.7.0
anyio==4.4.0
# via
# -r requirements/edx/testing.txt
- # httpcore
# starlette
- # watchfiles
appdirs==1.4.4
# via
# -r requirements/edx/doc.txt
@@ -82,7 +85,7 @@ astroid==2.13.5
# -r requirements/edx/testing.txt
# pylint
# pylint-celery
-attrs==23.2.0
+attrs==24.2.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -106,7 +109,7 @@ backoff==1.10.0
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# analytics-python
-bcrypt==4.1.3
+bcrypt==4.2.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -136,14 +139,14 @@ boto==2.49.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-boto3==1.34.144
+boto3==1.34.154
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# django-ses
# fs-s3fs
# ora2
-botocore==1.34.144
+botocore==1.34.154
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -157,9 +160,16 @@ build==1.2.1
# via
# -r requirements/edx/../pip-tools.txt
# pip-tools
+cachecontrol==0.14.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # firebase-admin
cachetools==5.4.0
# via
+ # -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
+ # google-auth
# tox
camel-converter[pydantic]==3.1.2
# via
@@ -182,16 +192,15 @@ certifi==2024.7.4
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# elasticsearch
- # httpcore
- # httpx
# py2neo
# requests
# snowflake-connector-python
-cffi==1.16.0
+cffi==1.17.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# cryptography
+ # pact-python
# pynacl
# snowflake-connector-python
chardet==5.2.0
@@ -232,7 +241,6 @@ click==8.1.6
# nltk
# pact-python
# pip-tools
- # typer
# user-util
# uvicorn
click-didyoumean==0.3.1
@@ -269,7 +277,7 @@ colorama==0.4.6
# via
# -r requirements/edx/testing.txt
# tox
-coverage[toml]==7.6.0
+coverage[toml]==7.6.1
# via
# -r requirements/edx/testing.txt
# pytest-cov
@@ -314,7 +322,7 @@ defusedxml==0.7.1
# ora2
# python3-openid
# social-auth-core
-diff-cover==9.1.0
+diff-cover==9.1.1
# via -r requirements/edx/testing.txt
dill==0.3.8
# via
@@ -324,7 +332,7 @@ distlib==0.3.8
# via
# -r requirements/edx/testing.txt
# virtualenv
-django==4.2.14
+django==4.2.15
# via
# -c requirements/edx/../common_constraints.txt
# -c requirements/edx/../constraints.txt
@@ -345,6 +353,7 @@ django==4.2.14
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
+ # django-push-notifications
# django-sekizai
# django-ses
# django-statici18n
@@ -451,7 +460,7 @@ django-fernet-fields-v2==0.9
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# edx-enterprise
-django-filter==24.2
+django-filter==24.3
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -520,6 +529,11 @@ django-pipeline==3.1.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
+django-push-notifications==3.1.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # edx-ace
django-ratelimit==4.1.0
# via
# -r requirements/edx/doc.txt
@@ -561,7 +575,7 @@ django-stubs==1.16.0
# -c requirements/edx/../constraints.txt
# -r requirements/edx/development.in
# djangorestframework-stubs
-django-stubs-ext==5.0.2
+django-stubs-ext==5.0.4
# via django-stubs
django-user-tasks==3.2.0
# via
@@ -616,7 +630,6 @@ dnspython==2.6.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
- # email-validator
# pymongo
docutils==0.21.2
# via
@@ -643,7 +656,7 @@ drf-yasg==1.21.7
# -r requirements/edx/testing.txt
# django-user-tasks
# edx-api-doc-tools
-edx-ace==1.9.1
+edx-ace==1.11.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -682,7 +695,7 @@ edx-codejail==3.4.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-edx-completion==4.6.6
+edx-completion==4.6.7
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -732,7 +745,7 @@ edx-enterprise==4.22.4
# -c requirements/edx/../constraints.txt
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-edx-event-bus-kafka==5.7.0
+edx-event-bus-kafka==5.8.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -792,7 +805,7 @@ edx-rest-api-client==5.7.1
# -r requirements/edx/testing.txt
# edx-enterprise
# edx-proctoring
-edx-search==3.9.1
+edx-search==4.0.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -800,7 +813,7 @@ edx-sga==0.25.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-edx-submissions==3.7.5
+edx-submissions==3.7.6
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -842,10 +855,6 @@ elasticsearch==7.13.4
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# edx-search
-email-validator==2.2.0
- # via
- # -r requirements/edx/testing.txt
- # fastapi
enmerkar==0.7.1
# via
# -r requirements/edx/doc.txt
@@ -869,18 +878,14 @@ execnet==2.1.1
# pytest-xdist
factory-boy==3.3.0
# via -r requirements/edx/testing.txt
-faker==26.0.0
+faker==26.2.0
# via
# -r requirements/edx/testing.txt
# factory-boy
-fastapi==0.111.1
+fastapi==0.112.0
# via
# -r requirements/edx/testing.txt
# pact-python
-fastapi-cli==0.0.4
- # via
- # -r requirements/edx/testing.txt
- # fastapi
fastavro==1.9.5
# via
# -r requirements/edx/doc.txt
@@ -893,6 +898,11 @@ filelock==3.15.4
# snowflake-connector-python
# tox
# virtualenv
+firebase-admin==6.5.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # edx-ace
freezegun==1.5.1
# via -r requirements/edx/testing.txt
frozenlist==1.4.1
@@ -932,10 +942,83 @@ glob2==0.7
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
+google-api-core[grpc]==2.19.1
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # firebase-admin
+ # google-api-python-client
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-api-python-client==2.139.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # firebase-admin
+google-auth==2.32.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-core
+ # google-api-python-client
+ # google-auth-httplib2
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-auth-httplib2==0.2.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-python-client
+google-cloud-core==2.4.1
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-cloud-firestore
+ # google-cloud-storage
+google-cloud-firestore==2.17.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # firebase-admin
+google-cloud-storage==2.18.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # firebase-admin
+google-crc32c==1.5.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-cloud-storage
+ # google-resumable-media
+google-resumable-media==2.7.1
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-cloud-storage
+googleapis-common-protos==1.63.2
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-core
+ # grpcio-status
grimp==3.4.1
# via
# -r requirements/edx/testing.txt
# import-linter
+grpcio==1.65.4
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-core
+ # grpcio-status
+grpcio-status==1.62.3
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-core
gunicorn==22.0.0
# via
# -r requirements/edx/doc.txt
@@ -943,7 +1026,6 @@ gunicorn==22.0.0
h11==0.14.0
# via
# -r requirements/edx/testing.txt
- # httpcore
# uvicorn
help-tokens==2.4.0
# via
@@ -954,21 +1036,14 @@ html5lib==1.1
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# ora2
-httpcore==0.16.3
+httplib2==0.22.0
# via
+ # -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
- # httpx
+ # google-api-python-client
+ # google-auth-httplib2
httpretty==1.1.4
# via -r requirements/edx/testing.txt
-httptools==0.6.1
- # via
- # -r requirements/edx/testing.txt
- # uvicorn
-httpx==0.23.3
- # via
- # -r requirements/edx/testing.txt
- # fastapi
- # pact-python
icalendar==5.0.13
# via
# -r requirements/edx/doc.txt
@@ -978,10 +1053,8 @@ idna==3.7
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# anyio
- # email-validator
# optimizely-sdk
# requests
- # rfc3986
# snowflake-connector-python
# yarl
imagesize==1.4.1
@@ -1029,7 +1102,6 @@ jinja2==3.1.4
# -r requirements/edx/testing.txt
# code-annotations
# diff-cover
- # fastapi
# sphinx
jmespath==1.0.1
# via
@@ -1042,7 +1114,7 @@ joblib==1.4.2
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# nltk
-jsondiff==2.1.2
+jsondiff==2.2.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1075,7 +1147,7 @@ jwcrypto==1.5.6
# -r requirements/edx/testing.txt
# django-oauth-toolkit
# pylti1p3
-kombu==5.3.7
+kombu==5.4.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1146,10 +1218,6 @@ markdown==3.3.7
# openedx-django-wiki
# staff-graded-xblock
# xblock-poll
-markdown-it-py==3.0.0
- # via
- # -r requirements/edx/testing.txt
- # rich
markupsafe==2.1.5
# via
# -r requirements/edx/doc.txt
@@ -1168,10 +1236,6 @@ mccabe==0.7.0
# via
# -r requirements/edx/testing.txt
# pylint
-mdurl==0.1.2
- # via
- # -r requirements/edx/testing.txt
- # markdown-it-py
meilisearch==0.31.4
# via
# -r requirements/edx/doc.txt
@@ -1204,13 +1268,18 @@ mpmath==1.3.0
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# sympy
+msgpack==1.0.8
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # cachecontrol
multidict==6.0.5
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# aiohttp
# yarl
-mypy==1.10.1
+mypy==1.11.1
# via
# -r requirements/edx/development.in
# django-stubs
@@ -1336,7 +1405,7 @@ packaging==24.1
# snowflake-connector-python
# sphinx
# tox
-pact-python==2.0.1
+pact-python==2.2.1
# via -r requirements/edx/testing.txt
pansi==2020.7.3
# via
@@ -1417,6 +1486,21 @@ prompt-toolkit==3.0.47
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# click-repl
+proto-plus==1.24.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-core
+ # google-cloud-firestore
+protobuf==4.25.4
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-api-core
+ # google-cloud-firestore
+ # googleapis-common-protos
+ # grpcio-status
+ # proto-plus
psutil==6.0.0
# via
# -r requirements/edx/doc.txt
@@ -1436,6 +1520,13 @@ pyasn1==0.6.0
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# pgpy
+ # pyasn1-modules
+ # rsa
+pyasn1-modules==0.4.0
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-auth
pycodestyle==2.8.0
# via
# -c requirements/edx/../constraints.txt
@@ -1479,7 +1570,6 @@ pygments==2.18.0
# diff-cover
# py2neo
# pydata-sphinx-theme
- # rich
# sphinx
# sphinx-mdinclude
pyjwkest==1.4.2
@@ -1488,7 +1578,7 @@ pyjwkest==1.4.2
# -r requirements/edx/testing.txt
# edx-token-utils
# lti-consumer-xblock
-pyjwt[crypto]==2.8.0
+pyjwt[crypto]==2.9.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1497,6 +1587,7 @@ pyjwt[crypto]==2.8.0
# edx-drf-extensions
# edx-proctoring
# edx-rest-api-client
+ # firebase-admin
# pylti1p3
# snowflake-connector-python
# social-auth-core
@@ -1556,7 +1647,7 @@ pynliner==0.8.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-pyopenssl==24.1.0
+pyopenssl==24.2.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1567,6 +1658,7 @@ pyparsing==3.1.2
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# chem
+ # httplib2
# openedx-calc
pyproject-api==1.7.1
# via
@@ -1589,7 +1681,7 @@ pysrt==1.1.2
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# edxval
-pytest==8.2.2
+pytest==8.3.2
# via
# -r requirements/edx/testing.txt
# pylint-pytest
@@ -1632,10 +1724,6 @@ python-dateutil==2.9.0.post0
# olxcleaner
# ora2
# xblock
-python-dotenv==1.0.1
- # via
- # -r requirements/edx/testing.txt
- # uvicorn
python-ipware==3.0.0
# via
# -r requirements/edx/doc.txt
@@ -1645,10 +1733,6 @@ python-memcached==1.62
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-python-multipart==0.0.9
- # via
- # -r requirements/edx/testing.txt
- # fastapi
python-slugify==8.0.4
# via
# -r requirements/edx/doc.txt
@@ -1705,7 +1789,6 @@ pyyaml==6.0.1
# edx-i18n-tools
# jsondiff
# sphinxcontrib-openapi
- # uvicorn
# xblock
random2==1.0.2
# via
@@ -1715,7 +1798,7 @@ recommender-xblock==2.2.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-redis==5.0.7
+redis==5.0.8
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1726,7 +1809,7 @@ referencing==0.35.1
# -r requirements/edx/testing.txt
# jsonschema
# jsonschema-specifications
-regex==2024.5.15
+regex==2024.7.24
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1737,6 +1820,7 @@ requests==2.32.3
# -r requirements/edx/testing.txt
# algoliasearch
# analytics-python
+ # cachecontrol
# django-oauth-toolkit
# djangorestframework-stubs
# edx-bulk-grades
@@ -1744,6 +1828,8 @@ requests==2.32.3
# edx-enterprise
# edx-rest-api-client
# geoip2
+ # google-api-core
+ # google-cloud-storage
# mailsnake
# meilisearch
# openai
@@ -1764,20 +1850,17 @@ requests-oauthlib==2.0.0
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# social-auth-core
-rfc3986[idna2008]==1.5.0
- # via
- # -r requirements/edx/testing.txt
- # httpx
-rich==13.7.1
- # via
- # -r requirements/edx/testing.txt
- # typer
-rpds-py==0.19.0
+rpds-py==0.20.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# jsonschema
# referencing
+rsa==4.9
+ # via
+ # -r requirements/edx/doc.txt
+ # -r requirements/edx/testing.txt
+ # google-auth
rules==3.4
# via
# -r requirements/edx/doc.txt
@@ -1810,10 +1893,6 @@ shapely==2.0.5
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-shellingham==1.5.4
- # via
- # -r requirements/edx/testing.txt
- # typer
simplejson==3.19.2
# via
# -r requirements/edx/doc.txt
@@ -1871,13 +1950,11 @@ sniffio==1.3.1
# via
# -r requirements/edx/testing.txt
# anyio
- # httpcore
- # httpx
snowballstemmer==2.2.0
# via
# -r requirements/edx/doc.txt
# sphinx
-snowflake-connector-python==3.11.0
+snowflake-connector-python==3.12.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1909,7 +1986,7 @@ soupsieve==2.5
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# beautifulsoup4
-sphinx==7.4.4
+sphinx==8.0.2
# via
# -r requirements/edx/doc.txt
# pydata-sphinx-theme
@@ -1922,23 +1999,23 @@ sphinx==7.4.4
# sphinxext-rediraffe
sphinx-book-theme==1.1.3
# via -r requirements/edx/doc.txt
-sphinx-design==0.6.0
+sphinx-design==0.6.1
# via -r requirements/edx/doc.txt
-sphinx-mdinclude==0.6.1
+sphinx-mdinclude==0.6.2
# via
# -r requirements/edx/doc.txt
# sphinxcontrib-openapi
sphinx-reredirects==0.1.5
# via -r requirements/edx/doc.txt
-sphinxcontrib-applehelp==1.0.8
+sphinxcontrib-applehelp==2.0.0
# via
# -r requirements/edx/doc.txt
# sphinx
-sphinxcontrib-devhelp==1.0.6
+sphinxcontrib-devhelp==2.0.0
# via
# -r requirements/edx/doc.txt
# sphinx
-sphinxcontrib-htmlhelp==2.0.5
+sphinxcontrib-htmlhelp==2.1.0
# via
# -r requirements/edx/doc.txt
# sphinx
@@ -1952,11 +2029,11 @@ sphinxcontrib-jsmath==1.0.1
# sphinx
sphinxcontrib-openapi[markdown]==0.8.4
# via -r requirements/edx/doc.txt
-sphinxcontrib-qthelp==1.0.7
+sphinxcontrib-qthelp==2.0.0
# via
# -r requirements/edx/doc.txt
# sphinx
-sphinxcontrib-serializinghtml==1.1.10
+sphinxcontrib-serializinghtml==2.0.0
# via
# -r requirements/edx/doc.txt
# sphinx
@@ -1990,7 +2067,7 @@ super-csv==3.2.0
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# edx-bulk-grades
-sympy==1.13.0
+sympy==1.13.1
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -2018,21 +2095,17 @@ tomlkit==0.13.0
# -r requirements/edx/testing.txt
# pylint
# snowflake-connector-python
-tox==4.16.0
+tox==4.17.0
# via -r requirements/edx/testing.txt
-tqdm==4.66.4
+tqdm==4.66.5
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# nltk
# openai
-typer==0.12.3
- # via
- # -r requirements/edx/testing.txt
- # fastapi-cli
types-pytz==2024.1.0.20240417
# via django-stubs
-types-pyyaml==6.0.12.20240311
+types-pyyaml==6.0.12.20240724
# via
# django-stubs
# djangorestframework-stubs
@@ -2059,7 +2132,6 @@ typing-extensions==4.12.2
# pydata-sphinx-theme
# pylti1p3
# snowflake-connector-python
- # typer
tzdata==2024.1
# via
# -r requirements/edx/doc.txt
@@ -2078,6 +2150,7 @@ uritemplate==4.1.1
# -r requirements/edx/testing.txt
# drf-spectacular
# drf-yasg
+ # google-api-python-client
urllib3==1.26.19
# via
# -c requirements/edx/../constraints.txt
@@ -2085,22 +2158,16 @@ urllib3==1.26.19
# -r requirements/edx/testing.txt
# botocore
# elasticsearch
- # pact-python
# py2neo
# requests
user-util==1.1.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-uvicorn[standard]==0.30.1
+uvicorn==0.30.5
# via
# -r requirements/edx/testing.txt
- # fastapi
# pact-python
-uvloop==0.19.0
- # via
- # -r requirements/edx/testing.txt
- # uvicorn
vine==5.1.0
# via
# -r requirements/edx/doc.txt
@@ -2129,10 +2196,6 @@ watchdog==4.0.1
# -r requirements/edx/development.in
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-watchfiles==0.22.0
- # via
- # -r requirements/edx/testing.txt
- # uvicorn
wcwidth==0.2.13
# via
# -r requirements/edx/doc.txt
@@ -2159,11 +2222,7 @@ webob==1.8.7
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# xblock
-websockets==12.0
- # via
- # -r requirements/edx/testing.txt
- # uvicorn
-wheel==0.43.0
+wheel==0.44.0
# via
# -r requirements/edx/../pip-tools.txt
# pip-tools
@@ -2172,7 +2231,7 @@ wrapt==1.16.0
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# astroid
-xblock[django]==4.0.1
+xblock[django]==5.0.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -2221,6 +2280,7 @@ yarl==1.9.4
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# aiohttp
+ # pact-python
zipp==3.19.2
# via
# -r requirements/edx/doc.txt
diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt
index c90be697606c..33cf7edaecf4 100644
--- a/requirements/edx/doc.txt
+++ b/requirements/edx/doc.txt
@@ -10,7 +10,11 @@ accessible-pygments==0.0.5
# via pydata-sphinx-theme
acid-xblock==0.3.1
# via -r requirements/edx/base.txt
-aiohttp==3.9.5
+aiohappyeyeballs==2.3.4
+ # via
+ # -r requirements/edx/base.txt
+ # aiohttp
+aiohttp==3.10.1
# via
# -r requirements/edx/base.txt
# geoip2
@@ -19,7 +23,7 @@ aiosignal==1.3.1
# via
# -r requirements/edx/base.txt
# aiohttp
-alabaster==0.7.16
+alabaster==1.0.0
# via sphinx
algoliasearch==3.0.0
# via -r requirements/edx/base.txt
@@ -51,7 +55,7 @@ asn1crypto==1.5.1
# via
# -r requirements/edx/base.txt
# snowflake-connector-python
-attrs==23.2.0
+attrs==24.2.0
# via
# -r requirements/edx/base.txt
# aiohttp
@@ -72,7 +76,7 @@ backoff==1.10.0
# via
# -r requirements/edx/base.txt
# analytics-python
-bcrypt==4.1.3
+bcrypt==4.2.0
# via
# -r requirements/edx/base.txt
# paramiko
@@ -96,19 +100,27 @@ bleach[css]==6.1.0
# xblock-poll
boto==2.49.0
# via -r requirements/edx/base.txt
-boto3==1.34.144
+boto3==1.34.154
# via
# -r requirements/edx/base.txt
# django-ses
# fs-s3fs
# ora2
-botocore==1.34.144
+botocore==1.34.154
# via
# -r requirements/edx/base.txt
# boto3
# s3transfer
bridgekeeper==0.9
# via -r requirements/edx/base.txt
+cachecontrol==0.14.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+cachetools==5.4.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-auth
camel-converter[pydantic]==3.1.2
# via
# -r requirements/edx/base.txt
@@ -130,7 +142,7 @@ certifi==2024.7.4
# py2neo
# requests
# snowflake-connector-python
-cffi==1.16.0
+cffi==1.17.0
# via
# -r requirements/edx/base.txt
# cryptography
@@ -208,7 +220,7 @@ defusedxml==0.7.1
# ora2
# python3-openid
# social-auth-core
-django==4.2.14
+django==4.2.15
# via
# -c requirements/edx/../common_constraints.txt
# -c requirements/edx/../constraints.txt
@@ -227,6 +239,7 @@ django==4.2.14
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
+ # django-push-notifications
# django-sekizai
# django-ses
# django-statici18n
@@ -318,7 +331,7 @@ django-fernet-fields-v2==0.9
# via
# -r requirements/edx/base.txt
# edx-enterprise
-django-filter==24.2
+django-filter==24.3
# via
# -r requirements/edx/base.txt
# edx-enterprise
@@ -373,6 +386,10 @@ django-object-actions==4.2.0
# edx-enterprise
django-pipeline==3.1.0
# via -r requirements/edx/base.txt
+django-push-notifications==3.1.0
+ # via
+ # -r requirements/edx/base.txt
+ # edx-ace
django-ratelimit==4.1.0
# via -r requirements/edx/base.txt
django-sekizai==4.1.0
@@ -462,7 +479,7 @@ drf-yasg==1.21.7
# -r requirements/edx/base.txt
# django-user-tasks
# edx-api-doc-tools
-edx-ace==1.9.1
+edx-ace==1.11.0
# via -r requirements/edx/base.txt
edx-api-doc-tools==1.8.0
# via
@@ -490,7 +507,7 @@ edx-celeryutils==1.3.0
# super-csv
edx-codejail==3.4.1
# via -r requirements/edx/base.txt
-edx-completion==4.6.6
+edx-completion==4.6.7
# via -r requirements/edx/base.txt
edx-django-release-util==1.4.0
# via
@@ -532,7 +549,7 @@ edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
-edx-event-bus-kafka==5.7.0
+edx-event-bus-kafka==5.8.1
# via -r requirements/edx/base.txt
edx-event-bus-redis==0.5.0
# via -r requirements/edx/base.txt
@@ -575,11 +592,11 @@ edx-rest-api-client==5.7.1
# -r requirements/edx/base.txt
# edx-enterprise
# edx-proctoring
-edx-search==3.9.1
+edx-search==4.0.0
# via -r requirements/edx/base.txt
edx-sga==0.25.0
# via -r requirements/edx/base.txt
-edx-submissions==3.7.5
+edx-submissions==3.7.6
# via
# -r requirements/edx/base.txt
# ora2
@@ -633,6 +650,10 @@ filelock==3.15.4
# via
# -r requirements/edx/base.txt
# snowflake-connector-python
+firebase-admin==6.5.0
+ # via
+ # -r requirements/edx/base.txt
+ # edx-ace
frozenlist==1.4.1
# via
# -r requirements/edx/base.txt
@@ -660,6 +681,67 @@ gitpython==3.1.43
# via -r requirements/edx/doc.in
glob2==0.7
# via -r requirements/edx/base.txt
+google-api-core[grpc]==2.19.1
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+ # google-api-python-client
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-api-python-client==2.139.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+google-auth==2.32.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # google-api-python-client
+ # google-auth-httplib2
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-auth-httplib2==0.2.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-python-client
+google-cloud-core==2.4.1
+ # via
+ # -r requirements/edx/base.txt
+ # google-cloud-firestore
+ # google-cloud-storage
+google-cloud-firestore==2.17.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+google-cloud-storage==2.18.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+google-crc32c==1.5.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-cloud-storage
+ # google-resumable-media
+google-resumable-media==2.7.1
+ # via
+ # -r requirements/edx/base.txt
+ # google-cloud-storage
+googleapis-common-protos==1.63.2
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # grpcio-status
+grpcio==1.65.4
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # grpcio-status
+grpcio-status==1.62.3
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
gunicorn==22.0.0
# via -r requirements/edx/base.txt
help-tokens==2.4.0
@@ -668,6 +750,11 @@ html5lib==1.1
# via
# -r requirements/edx/base.txt
# ora2
+httplib2==0.22.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-python-client
+ # google-auth-httplib2
icalendar==5.0.13
# via -r requirements/edx/base.txt
idna==3.7
@@ -712,7 +799,7 @@ joblib==1.4.2
# via
# -r requirements/edx/base.txt
# nltk
-jsondiff==2.1.2
+jsondiff==2.2.0
# via
# -r requirements/edx/base.txt
# edx-enterprise
@@ -740,7 +827,7 @@ jwcrypto==1.5.6
# -r requirements/edx/base.txt
# django-oauth-toolkit
# pylti1p3
-kombu==5.3.7
+kombu==5.4.0
# via
# -r requirements/edx/base.txt
# celery
@@ -825,6 +912,10 @@ mpmath==1.3.0
# via
# -r requirements/edx/base.txt
# sympy
+msgpack==1.0.8
+ # via
+ # -r requirements/edx/base.txt
+ # cachecontrol
multidict==6.0.5
# via
# -r requirements/edx/base.txt
@@ -964,6 +1055,19 @@ prompt-toolkit==3.0.47
# via
# -r requirements/edx/base.txt
# click-repl
+proto-plus==1.24.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # google-cloud-firestore
+protobuf==4.25.4
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # google-cloud-firestore
+ # googleapis-common-protos
+ # grpcio-status
+ # proto-plus
psutil==6.0.0
# via
# -r requirements/edx/base.txt
@@ -976,6 +1080,12 @@ pyasn1==0.6.0
# via
# -r requirements/edx/base.txt
# pgpy
+ # pyasn1-modules
+ # rsa
+pyasn1-modules==0.4.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-auth
pycountry==24.6.1
# via -r requirements/edx/base.txt
pycparser==2.22
@@ -1011,7 +1121,7 @@ pyjwkest==1.4.2
# -r requirements/edx/base.txt
# edx-token-utils
# lti-consumer-xblock
-pyjwt[crypto]==2.8.0
+pyjwt[crypto]==2.9.0
# via
# -r requirements/edx/base.txt
# drf-jwt
@@ -1019,6 +1129,7 @@ pyjwt[crypto]==2.8.0
# edx-drf-extensions
# edx-proctoring
# edx-rest-api-client
+ # firebase-admin
# pylti1p3
# snowflake-connector-python
# social-auth-core
@@ -1045,7 +1156,7 @@ pynacl==1.5.0
# paramiko
pynliner==0.8.0
# via -r requirements/edx/base.txt
-pyopenssl==24.1.0
+pyopenssl==24.2.1
# via
# -r requirements/edx/base.txt
# optimizely-sdk
@@ -1054,6 +1165,7 @@ pyparsing==3.1.2
# via
# -r requirements/edx/base.txt
# chem
+ # httplib2
# openedx-calc
pyrsistent==0.20.0
# via
@@ -1132,7 +1244,7 @@ random2==1.0.2
# via -r requirements/edx/base.txt
recommender-xblock==2.2.0
# via -r requirements/edx/base.txt
-redis==5.0.7
+redis==5.0.8
# via
# -r requirements/edx/base.txt
# walrus
@@ -1141,7 +1253,7 @@ referencing==0.35.1
# -r requirements/edx/base.txt
# jsonschema
# jsonschema-specifications
-regex==2024.5.15
+regex==2024.7.24
# via
# -r requirements/edx/base.txt
# nltk
@@ -1150,12 +1262,15 @@ requests==2.32.3
# -r requirements/edx/base.txt
# algoliasearch
# analytics-python
+ # cachecontrol
# django-oauth-toolkit
# edx-bulk-grades
# edx-drf-extensions
# edx-enterprise
# edx-rest-api-client
# geoip2
+ # google-api-core
+ # google-cloud-storage
# mailsnake
# meilisearch
# openai
@@ -1174,11 +1289,15 @@ requests-oauthlib==2.0.0
# via
# -r requirements/edx/base.txt
# social-auth-core
-rpds-py==0.19.0
+rpds-py==0.20.0
# via
# -r requirements/edx/base.txt
# jsonschema
# referencing
+rsa==4.9
+ # via
+ # -r requirements/edx/base.txt
+ # google-auth
rules==3.4
# via
# -r requirements/edx/base.txt
@@ -1249,7 +1368,7 @@ smmap==5.0.1
# via gitdb
snowballstemmer==2.2.0
# via sphinx
-snowflake-connector-python==3.11.0
+snowflake-connector-python==3.12.0
# via
# -r requirements/edx/base.txt
# edx-enterprise
@@ -1275,7 +1394,7 @@ soupsieve==2.5
# via
# -r requirements/edx/base.txt
# beautifulsoup4
-sphinx==7.4.4
+sphinx==8.0.2
# via
# -r requirements/edx/doc.in
# pydata-sphinx-theme
@@ -1288,17 +1407,17 @@ sphinx==7.4.4
# sphinxext-rediraffe
sphinx-book-theme==1.1.3
# via -r requirements/edx/doc.in
-sphinx-design==0.6.0
+sphinx-design==0.6.1
# via -r requirements/edx/doc.in
-sphinx-mdinclude==0.6.1
+sphinx-mdinclude==0.6.2
# via sphinxcontrib-openapi
sphinx-reredirects==0.1.5
# via -r requirements/edx/doc.in
-sphinxcontrib-applehelp==1.0.8
+sphinxcontrib-applehelp==2.0.0
# via sphinx
-sphinxcontrib-devhelp==1.0.6
+sphinxcontrib-devhelp==2.0.0
# via sphinx
-sphinxcontrib-htmlhelp==2.0.5
+sphinxcontrib-htmlhelp==2.1.0
# via sphinx
sphinxcontrib-httpdomain==1.8.1
# via sphinxcontrib-openapi
@@ -1306,9 +1425,9 @@ sphinxcontrib-jsmath==1.0.1
# via sphinx
sphinxcontrib-openapi[markdown]==0.8.4
# via -r requirements/edx/doc.in
-sphinxcontrib-qthelp==1.0.7
+sphinxcontrib-qthelp==2.0.0
# via sphinx
-sphinxcontrib-serializinghtml==1.1.10
+sphinxcontrib-serializinghtml==2.0.0
# via sphinx
sphinxext-rediraffe==0.2.7
# via -r requirements/edx/doc.in
@@ -1330,7 +1449,7 @@ super-csv==3.2.0
# via
# -r requirements/edx/base.txt
# edx-bulk-grades
-sympy==1.13.0
+sympy==1.13.1
# via
# -r requirements/edx/base.txt
# openedx-calc
@@ -1350,7 +1469,7 @@ tomlkit==0.13.0
# via
# -r requirements/edx/base.txt
# snowflake-connector-python
-tqdm==4.66.4
+tqdm==4.66.5
# via
# -r requirements/edx/base.txt
# nltk
@@ -1379,6 +1498,7 @@ uritemplate==4.1.1
# -r requirements/edx/base.txt
# drf-spectacular
# drf-yasg
+ # google-api-python-client
urllib3==1.26.19
# via
# -c requirements/edx/../constraints.txt
@@ -1429,7 +1549,7 @@ webob==1.8.7
# xblock
wrapt==1.16.0
# via -r requirements/edx/base.txt
-xblock[django]==4.0.1
+xblock[django]==5.0.0
# via
# -r requirements/edx/base.txt
# acid-xblock
diff --git a/requirements/edx/semgrep.txt b/requirements/edx/semgrep.txt
index 5c3ec421aa32..292f1319048d 100644
--- a/requirements/edx/semgrep.txt
+++ b/requirements/edx/semgrep.txt
@@ -4,7 +4,7 @@
#
# make upgrade
#
-attrs==23.2.0
+attrs==24.2.0
# via
# glom
# jsonschema
@@ -15,7 +15,7 @@ boltons==21.0.0
# face
# glom
# semgrep
-bracex==2.4
+bracex==2.5
# via wcmatch
certifi==2024.7.4
# via requests
@@ -62,7 +62,7 @@ requests==2.32.3
# via semgrep
rich==13.7.1
# via semgrep
-rpds-py==0.19.0
+rpds-py==0.20.0
# via
# jsonschema
# referencing
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index a679ac373e18..5cca40a4eabc 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -8,7 +8,11 @@
# via -r requirements/edx/base.txt
acid-xblock==0.3.1
# via -r requirements/edx/base.txt
-aiohttp==3.9.5
+aiohappyeyeballs==2.3.4
+ # via
+ # -r requirements/edx/base.txt
+ # aiohttp
+aiohttp==3.10.1
# via
# -r requirements/edx/base.txt
# geoip2
@@ -34,10 +38,7 @@ annotated-types==0.7.0
# -r requirements/edx/base.txt
# pydantic
anyio==4.4.0
- # via
- # httpcore
- # starlette
- # watchfiles
+ # via starlette
appdirs==1.4.4
# via
# -r requirements/edx/base.txt
@@ -56,7 +57,7 @@ astroid==2.13.5
# via
# pylint
# pylint-celery
-attrs==23.2.0
+attrs==24.2.0
# via
# -r requirements/edx/base.txt
# aiohttp
@@ -75,7 +76,7 @@ backoff==1.10.0
# via
# -r requirements/edx/base.txt
# analytics-python
-bcrypt==4.1.3
+bcrypt==4.2.0
# via
# -r requirements/edx/base.txt
# paramiko
@@ -99,21 +100,28 @@ bleach[css]==6.1.0
# xblock-poll
boto==2.49.0
# via -r requirements/edx/base.txt
-boto3==1.34.144
+boto3==1.34.154
# via
# -r requirements/edx/base.txt
# django-ses
# fs-s3fs
# ora2
-botocore==1.34.144
+botocore==1.34.154
# via
# -r requirements/edx/base.txt
# boto3
# s3transfer
bridgekeeper==0.9
# via -r requirements/edx/base.txt
+cachecontrol==0.14.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
cachetools==5.4.0
- # via tox
+ # via
+ # -r requirements/edx/base.txt
+ # google-auth
+ # tox
camel-converter[pydantic]==3.1.2
# via
# -r requirements/edx/base.txt
@@ -132,15 +140,14 @@ certifi==2024.7.4
# via
# -r requirements/edx/base.txt
# elasticsearch
- # httpcore
- # httpx
# py2neo
# requests
# snowflake-connector-python
-cffi==1.16.0
+cffi==1.17.0
# via
# -r requirements/edx/base.txt
# cryptography
+ # pact-python
# pynacl
# snowflake-connector-python
chardet==5.2.0
@@ -173,7 +180,6 @@ click==8.1.6
# import-linter
# nltk
# pact-python
- # typer
# user-util
# uvicorn
click-didyoumean==0.3.1
@@ -201,7 +207,7 @@ codejail-includes==1.0.0
# via -r requirements/edx/base.txt
colorama==0.4.6
# via tox
-coverage[toml]==7.6.0
+coverage[toml]==7.6.1
# via
# -r requirements/edx/coverage.txt
# pytest-cov
@@ -237,13 +243,13 @@ defusedxml==0.7.1
# ora2
# python3-openid
# social-auth-core
-diff-cover==9.1.0
+diff-cover==9.1.1
# via -r requirements/edx/coverage.txt
dill==0.3.8
# via pylint
distlib==0.3.8
# via virtualenv
-django==4.2.14
+django==4.2.15
# via
# -c requirements/edx/../common_constraints.txt
# -c requirements/edx/../constraints.txt
@@ -262,6 +268,7 @@ django==4.2.14
# django-multi-email-field
# django-mysql
# django-oauth-toolkit
+ # django-push-notifications
# django-sekizai
# django-ses
# django-statici18n
@@ -353,7 +360,7 @@ django-fernet-fields-v2==0.9
# via
# -r requirements/edx/base.txt
# edx-enterprise
-django-filter==24.2
+django-filter==24.3
# via
# -r requirements/edx/base.txt
# edx-enterprise
@@ -408,6 +415,10 @@ django-object-actions==4.2.0
# edx-enterprise
django-pipeline==3.1.0
# via -r requirements/edx/base.txt
+django-push-notifications==3.1.0
+ # via
+ # -r requirements/edx/base.txt
+ # edx-ace
django-ratelimit==4.1.0
# via -r requirements/edx/base.txt
django-sekizai==4.1.0
@@ -478,7 +489,6 @@ djangorestframework-xml==2.0.0
dnspython==2.6.1
# via
# -r requirements/edx/base.txt
- # email-validator
# pymongo
done-xblock==2.3.0
# via -r requirements/edx/base.txt
@@ -493,7 +503,7 @@ drf-yasg==1.21.7
# -r requirements/edx/base.txt
# django-user-tasks
# edx-api-doc-tools
-edx-ace==1.9.1
+edx-ace==1.11.0
# via -r requirements/edx/base.txt
edx-api-doc-tools==1.8.0
# via
@@ -521,7 +531,7 @@ edx-celeryutils==1.3.0
# super-csv
edx-codejail==3.4.1
# via -r requirements/edx/base.txt
-edx-completion==4.6.6
+edx-completion==4.6.7
# via -r requirements/edx/base.txt
edx-django-release-util==1.4.0
# via
@@ -563,7 +573,7 @@ edx-enterprise==4.22.4
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
-edx-event-bus-kafka==5.7.0
+edx-event-bus-kafka==5.8.1
# via -r requirements/edx/base.txt
edx-event-bus-redis==0.5.0
# via -r requirements/edx/base.txt
@@ -608,11 +618,11 @@ edx-rest-api-client==5.7.1
# -r requirements/edx/base.txt
# edx-enterprise
# edx-proctoring
-edx-search==3.9.1
+edx-search==4.0.0
# via -r requirements/edx/base.txt
edx-sga==0.25.0
# via -r requirements/edx/base.txt
-edx-submissions==3.7.5
+edx-submissions==3.7.6
# via
# -r requirements/edx/base.txt
# ora2
@@ -645,8 +655,6 @@ elasticsearch==7.13.4
# -c requirements/edx/../common_constraints.txt
# -r requirements/edx/base.txt
# edx-search
-email-validator==2.2.0
- # via fastapi
enmerkar==0.7.1
# via
# -r requirements/edx/base.txt
@@ -664,12 +672,10 @@ execnet==2.1.1
# via pytest-xdist
factory-boy==3.3.0
# via -r requirements/edx/testing.in
-faker==26.0.0
+faker==26.2.0
# via factory-boy
-fastapi==0.111.1
+fastapi==0.112.0
# via pact-python
-fastapi-cli==0.0.4
- # via fastapi
fastavro==1.9.5
# via
# -r requirements/edx/base.txt
@@ -680,6 +686,10 @@ filelock==3.15.4
# snowflake-connector-python
# tox
# virtualenv
+firebase-admin==6.5.0
+ # via
+ # -r requirements/edx/base.txt
+ # edx-ace
freezegun==1.5.1
# via -r requirements/edx/testing.in
frozenlist==1.4.1
@@ -705,40 +715,94 @@ geoip2==4.8.0
# via -r requirements/edx/base.txt
glob2==0.7
# via -r requirements/edx/base.txt
+google-api-core[grpc]==2.19.1
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+ # google-api-python-client
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-api-python-client==2.139.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+google-auth==2.32.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # google-api-python-client
+ # google-auth-httplib2
+ # google-cloud-core
+ # google-cloud-firestore
+ # google-cloud-storage
+google-auth-httplib2==0.2.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-python-client
+google-cloud-core==2.4.1
+ # via
+ # -r requirements/edx/base.txt
+ # google-cloud-firestore
+ # google-cloud-storage
+google-cloud-firestore==2.17.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+google-cloud-storage==2.18.0
+ # via
+ # -r requirements/edx/base.txt
+ # firebase-admin
+google-crc32c==1.5.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-cloud-storage
+ # google-resumable-media
+google-resumable-media==2.7.1
+ # via
+ # -r requirements/edx/base.txt
+ # google-cloud-storage
+googleapis-common-protos==1.63.2
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # grpcio-status
grimp==3.4.1
# via import-linter
+grpcio==1.65.4
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # grpcio-status
+grpcio-status==1.62.3
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
gunicorn==22.0.0
# via -r requirements/edx/base.txt
h11==0.14.0
- # via
- # httpcore
- # uvicorn
+ # via uvicorn
help-tokens==2.4.0
# via -r requirements/edx/base.txt
html5lib==1.1
# via
# -r requirements/edx/base.txt
# ora2
-httpcore==0.16.3
- # via httpx
+httplib2==0.22.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-python-client
+ # google-auth-httplib2
httpretty==1.1.4
# via -r requirements/edx/testing.in
-httptools==0.6.1
- # via uvicorn
-httpx==0.23.3
- # via
- # fastapi
- # pact-python
icalendar==5.0.13
# via -r requirements/edx/base.txt
idna==3.7
# via
# -r requirements/edx/base.txt
# anyio
- # email-validator
# optimizely-sdk
# requests
- # rfc3986
# snowflake-connector-python
# yarl
import-linter==2.0
@@ -774,7 +838,6 @@ jinja2==3.1.4
# -r requirements/edx/coverage.txt
# code-annotations
# diff-cover
- # fastapi
jmespath==1.0.1
# via
# -r requirements/edx/base.txt
@@ -784,7 +847,7 @@ joblib==1.4.2
# via
# -r requirements/edx/base.txt
# nltk
-jsondiff==2.1.2
+jsondiff==2.2.0
# via
# -r requirements/edx/base.txt
# edx-enterprise
@@ -811,7 +874,7 @@ jwcrypto==1.5.6
# -r requirements/edx/base.txt
# django-oauth-toolkit
# pylti1p3
-kombu==5.3.7
+kombu==5.4.0
# via
# -r requirements/edx/base.txt
# celery
@@ -866,8 +929,6 @@ markdown==3.3.7
# openedx-django-wiki
# staff-graded-xblock
# xblock-poll
-markdown-it-py==3.0.0
- # via rich
markupsafe==2.1.5
# via
# -r requirements/edx/base.txt
@@ -883,8 +944,6 @@ maxminddb==2.6.2
# geoip2
mccabe==0.7.0
# via pylint
-mdurl==0.1.2
- # via markdown-it-py
meilisearch==0.31.4
# via -r requirements/edx/base.txt
mock==5.1.0
@@ -904,6 +963,10 @@ mpmath==1.3.0
# via
# -r requirements/edx/base.txt
# sympy
+msgpack==1.0.8
+ # via
+ # -r requirements/edx/base.txt
+ # cachecontrol
multidict==6.0.5
# via
# -r requirements/edx/base.txt
@@ -992,7 +1055,7 @@ packaging==24.1
# pytest
# snowflake-connector-python
# tox
-pact-python==2.0.1
+pact-python==2.2.1
# via -r requirements/edx/testing.in
pansi==2020.7.3
# via
@@ -1054,6 +1117,19 @@ prompt-toolkit==3.0.47
# via
# -r requirements/edx/base.txt
# click-repl
+proto-plus==1.24.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # google-cloud-firestore
+protobuf==4.25.4
+ # via
+ # -r requirements/edx/base.txt
+ # google-api-core
+ # google-cloud-firestore
+ # googleapis-common-protos
+ # grpcio-status
+ # proto-plus
psutil==6.0.0
# via
# -r requirements/edx/base.txt
@@ -1070,6 +1146,12 @@ pyasn1==0.6.0
# via
# -r requirements/edx/base.txt
# pgpy
+ # pyasn1-modules
+ # rsa
+pyasn1-modules==0.4.0
+ # via
+ # -r requirements/edx/base.txt
+ # google-auth
pycodestyle==2.8.0
# via
# -c requirements/edx/../constraints.txt
@@ -1101,13 +1183,12 @@ pygments==2.18.0
# -r requirements/edx/coverage.txt
# diff-cover
# py2neo
- # rich
pyjwkest==1.4.2
# via
# -r requirements/edx/base.txt
# edx-token-utils
# lti-consumer-xblock
-pyjwt[crypto]==2.8.0
+pyjwt[crypto]==2.9.0
# via
# -r requirements/edx/base.txt
# drf-jwt
@@ -1115,6 +1196,7 @@ pyjwt[crypto]==2.8.0
# edx-drf-extensions
# edx-proctoring
# edx-rest-api-client
+ # firebase-admin
# pylti1p3
# snowflake-connector-python
# social-auth-core
@@ -1159,7 +1241,7 @@ pynacl==1.5.0
# paramiko
pynliner==0.8.0
# via -r requirements/edx/base.txt
-pyopenssl==24.1.0
+pyopenssl==24.2.1
# via
# -r requirements/edx/base.txt
# optimizely-sdk
@@ -1168,6 +1250,7 @@ pyparsing==3.1.2
# via
# -r requirements/edx/base.txt
# chem
+ # httplib2
# openedx-calc
pyproject-api==1.7.1
# via tox
@@ -1181,7 +1264,7 @@ pysrt==1.1.2
# via
# -r requirements/edx/base.txt
# edxval
-pytest==8.2.2
+pytest==8.3.2
# via
# -r requirements/edx/testing.in
# pylint-pytest
@@ -1223,16 +1306,12 @@ python-dateutil==2.9.0.post0
# olxcleaner
# ora2
# xblock
-python-dotenv==1.0.1
- # via uvicorn
python-ipware==3.0.0
# via
# -r requirements/edx/base.txt
# django-ipware
python-memcached==1.62
# via -r requirements/edx/base.txt
-python-multipart==0.0.9
- # via fastapi
python-slugify==8.0.4
# via
# -r requirements/edx/base.txt
@@ -1277,13 +1356,12 @@ pyyaml==6.0.1
# edx-django-release-util
# edx-i18n-tools
# jsondiff
- # uvicorn
# xblock
random2==1.0.2
# via -r requirements/edx/base.txt
recommender-xblock==2.2.0
# via -r requirements/edx/base.txt
-redis==5.0.7
+redis==5.0.8
# via
# -r requirements/edx/base.txt
# walrus
@@ -1292,7 +1370,7 @@ referencing==0.35.1
# -r requirements/edx/base.txt
# jsonschema
# jsonschema-specifications
-regex==2024.5.15
+regex==2024.7.24
# via
# -r requirements/edx/base.txt
# nltk
@@ -1301,12 +1379,15 @@ requests==2.32.3
# -r requirements/edx/base.txt
# algoliasearch
# analytics-python
+ # cachecontrol
# django-oauth-toolkit
# edx-bulk-grades
# edx-drf-extensions
# edx-enterprise
# edx-rest-api-client
# geoip2
+ # google-api-core
+ # google-cloud-storage
# mailsnake
# meilisearch
# openai
@@ -1325,15 +1406,15 @@ requests-oauthlib==2.0.0
# via
# -r requirements/edx/base.txt
# social-auth-core
-rfc3986[idna2008]==1.5.0
- # via httpx
-rich==13.7.1
- # via typer
-rpds-py==0.19.0
+rpds-py==0.20.0
# via
# -r requirements/edx/base.txt
# jsonschema
# referencing
+rsa==4.9
+ # via
+ # -r requirements/edx/base.txt
+ # google-auth
rules==3.4
# via
# -r requirements/edx/base.txt
@@ -1359,8 +1440,6 @@ semantic-version==2.10.0
# edx-drf-extensions
shapely==2.0.5
# via -r requirements/edx/base.txt
-shellingham==1.5.4
- # via typer
simplejson==3.19.2
# via
# -r requirements/edx/base.txt
@@ -1406,11 +1485,8 @@ slumber==0.7.1
# edx-enterprise
# edx-rest-api-client
sniffio==1.3.1
- # via
- # anyio
- # httpcore
- # httpx
-snowflake-connector-python==3.11.0
+ # via anyio
+snowflake-connector-python==3.12.0
# via
# -r requirements/edx/base.txt
# edx-enterprise
@@ -1456,7 +1532,7 @@ super-csv==3.2.0
# via
# -r requirements/edx/base.txt
# edx-bulk-grades
-sympy==1.13.0
+sympy==1.13.1
# via
# -r requirements/edx/base.txt
# openedx-calc
@@ -1478,15 +1554,13 @@ tomlkit==0.13.0
# -r requirements/edx/base.txt
# pylint
# snowflake-connector-python
-tox==4.16.0
+tox==4.17.0
# via -r requirements/edx/testing.in
-tqdm==4.66.4
+tqdm==4.66.5
# via
# -r requirements/edx/base.txt
# nltk
# openai
-typer==0.12.3
- # via fastapi-cli
typing-extensions==4.12.2
# via
# -r requirements/edx/base.txt
@@ -1500,7 +1574,6 @@ typing-extensions==4.12.2
# pydantic-core
# pylti1p3
# snowflake-connector-python
- # typer
tzdata==2024.1
# via
# -r requirements/edx/base.txt
@@ -1516,23 +1589,19 @@ uritemplate==4.1.1
# -r requirements/edx/base.txt
# drf-spectacular
# drf-yasg
+ # google-api-python-client
urllib3==1.26.19
# via
# -c requirements/edx/../constraints.txt
# -r requirements/edx/base.txt
# botocore
# elasticsearch
- # pact-python
# py2neo
# requests
user-util==1.1.0
# via -r requirements/edx/base.txt
-uvicorn[standard]==0.30.1
- # via
- # fastapi
- # pact-python
-uvloop==0.19.0
- # via uvicorn
+uvicorn==0.30.5
+ # via pact-python
vine==5.1.0
# via
# -r requirements/edx/base.txt
@@ -1551,8 +1620,6 @@ walrus==0.9.4
# edx-event-bus-redis
watchdog==4.0.1
# via -r requirements/edx/base.txt
-watchfiles==0.22.0
- # via uvicorn
wcwidth==0.2.13
# via
# -r requirements/edx/base.txt
@@ -1575,13 +1642,11 @@ webob==1.8.7
# via
# -r requirements/edx/base.txt
# xblock
-websockets==12.0
- # via uvicorn
wrapt==1.16.0
# via
# -r requirements/edx/base.txt
# astroid
-xblock[django]==4.0.1
+xblock[django]==5.0.0
# via
# -r requirements/edx/base.txt
# acid-xblock
@@ -1618,6 +1683,7 @@ yarl==1.9.4
# via
# -r requirements/edx/base.txt
# aiohttp
+ # pact-python
zipp==3.19.2
# via
# -r requirements/edx/base.txt
diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt
index 3630835e943d..f7b35489c353 100644
--- a/requirements/pip-tools.txt
+++ b/requirements/pip-tools.txt
@@ -18,7 +18,7 @@ pyproject-hooks==1.1.0
# via
# build
# pip-tools
-wheel==0.43.0
+wheel==0.44.0
# via pip-tools
# The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/pip.txt b/requirements/pip.txt
index df29e61c6017..7a6ada8e0a92 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -4,11 +4,11 @@
#
# make upgrade
#
-wheel==0.43.0
+wheel==0.44.0
# via -r requirements/pip.in
# The following packages are considered to be unsafe in a requirements file:
-pip==24.1.2
+pip==24.2
# via -r requirements/pip.in
-setuptools==70.3.0
+setuptools==72.1.0
# via -r requirements/pip.in
diff --git a/scripts/structures_pruning/requirements/testing.txt b/scripts/structures_pruning/requirements/testing.txt
index d74b204fad5c..47648d50fddb 100644
--- a/scripts/structures_pruning/requirements/testing.txt
+++ b/scripts/structures_pruning/requirements/testing.txt
@@ -32,7 +32,7 @@ pymongo==4.4.0
# via
# -r scripts/structures_pruning/requirements/base.txt
# edx-opaque-keys
-pytest==8.2.2
+pytest==8.3.2
# via -r scripts/structures_pruning/requirements/testing.in
stevedore==5.2.0
# via
diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt
index 98972d24c494..47e6e79c2240 100644
--- a/scripts/user_retirement/requirements/base.txt
+++ b/scripts/user_retirement/requirements/base.txt
@@ -6,13 +6,13 @@
#
asgiref==3.8.1
# via django
-attrs==23.2.0
+attrs==24.2.0
# via zeep
backoff==2.2.1
# via -r scripts/user_retirement/requirements/base.in
-boto3==1.34.144
+boto3==1.34.154
# via -r scripts/user_retirement/requirements/base.in
-botocore==1.34.144
+botocore==1.34.154
# via
# boto3
# s3transfer
@@ -20,7 +20,7 @@ cachetools==5.4.0
# via google-auth
certifi==2024.7.4
# via requests
-cffi==1.16.0
+cffi==1.17.0
# via
# cryptography
# pynacl
@@ -33,9 +33,9 @@ click==8.1.6
# -c scripts/user_retirement/requirements/../../../requirements/constraints.txt
# -r scripts/user_retirement/requirements/base.in
# edx-django-utils
-cryptography==42.0.8
+cryptography==43.0.0
# via pyjwt
-django==4.2.14
+django==4.2.15
# via
# -c scripts/user_retirement/requirements/../../../requirements/common_constraints.txt
# -c scripts/user_retirement/requirements/../../../requirements/constraints.txt
@@ -52,7 +52,7 @@ edx-rest-api-client==5.7.1
# via -r scripts/user_retirement/requirements/base.in
google-api-core==2.19.1
# via google-api-python-client
-google-api-python-client==2.137.0
+google-api-python-client==2.139.0
# via -r scripts/user_retirement/requirements/base.in
google-auth==2.32.0
# via
@@ -91,7 +91,7 @@ platformdirs==4.2.2
# via zeep
proto-plus==1.24.0
# via google-api-core
-protobuf==5.27.2
+protobuf==5.27.3
# via
# google-api-core
# googleapis-common-protos
@@ -106,7 +106,7 @@ pyasn1-modules==0.4.0
# via google-auth
pycparser==2.22
# via cffi
-pyjwt[crypto]==2.8.0
+pyjwt[crypto]==2.9.0
# via
# edx-rest-api-client
# simple-salesforce
diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt
index c0c8d5abba9e..006eabeef436 100644
--- a/scripts/user_retirement/requirements/testing.txt
+++ b/scripts/user_retirement/requirements/testing.txt
@@ -8,17 +8,17 @@ asgiref==3.8.1
# via
# -r scripts/user_retirement/requirements/base.txt
# django
-attrs==23.2.0
+attrs==24.2.0
# via
# -r scripts/user_retirement/requirements/base.txt
# zeep
backoff==2.2.1
# via -r scripts/user_retirement/requirements/base.txt
-boto3==1.34.144
+boto3==1.34.154
# via
# -r scripts/user_retirement/requirements/base.txt
# moto
-botocore==1.34.144
+botocore==1.34.154
# via
# -r scripts/user_retirement/requirements/base.txt
# boto3
@@ -32,7 +32,7 @@ certifi==2024.7.4
# via
# -r scripts/user_retirement/requirements/base.txt
# requests
-cffi==1.16.0
+cffi==1.17.0
# via
# -r scripts/user_retirement/requirements/base.txt
# cryptography
@@ -45,14 +45,14 @@ click==8.1.6
# via
# -r scripts/user_retirement/requirements/base.txt
# edx-django-utils
-cryptography==42.0.8
+cryptography==43.0.0
# via
# -r scripts/user_retirement/requirements/base.txt
# moto
# pyjwt
ddt==1.7.2
# via -r scripts/user_retirement/requirements/testing.in
-django==4.2.14
+django==4.2.15
# via
# -r scripts/user_retirement/requirements/base.txt
# django-crum
@@ -76,7 +76,7 @@ google-api-core==2.19.1
# via
# -r scripts/user_retirement/requirements/base.txt
# google-api-python-client
-google-api-python-client==2.137.0
+google-api-python-client==2.139.0
# via -r scripts/user_retirement/requirements/base.txt
google-auth==2.32.0
# via
@@ -152,7 +152,7 @@ proto-plus==1.24.0
# via
# -r scripts/user_retirement/requirements/base.txt
# google-api-core
-protobuf==5.27.2
+protobuf==5.27.3
# via
# -r scripts/user_retirement/requirements/base.txt
# google-api-core
@@ -175,7 +175,7 @@ pycparser==2.22
# via
# -r scripts/user_retirement/requirements/base.txt
# cffi
-pyjwt[crypto]==2.8.0
+pyjwt[crypto]==2.9.0
# via
# -r scripts/user_retirement/requirements/base.txt
# edx-rest-api-client
@@ -188,7 +188,7 @@ pyparsing==3.1.2
# via
# -r scripts/user_retirement/requirements/base.txt
# httplib2
-pytest==8.2.2
+pytest==8.3.2
# via -r scripts/user_retirement/requirements/testing.in
python-dateutil==2.9.0.post0
# via
From 9bd692413ad207877e87fd3a796698a308275f1e Mon Sep 17 00:00:00 2001
From: Ahtisham Shahid
Date: Wed, 7 Aug 2024 14:55:02 +0500
Subject: [PATCH 12/13] fix: make course update email pref false (#35224)
fix: updated unit tests
fix: updated unit tests
---
cms/djangoapps/contentstore/utils.py | 2 +-
openedx/core/djangoapps/notifications/base_notification.py | 6 +++---
.../core/djangoapps/notifications/email/tests/test_utils.py | 4 ++--
openedx/core/djangoapps/notifications/models.py | 2 +-
openedx/core/djangoapps/notifications/tests/test_tasks.py | 2 +-
openedx/core/djangoapps/notifications/tests/test_views.py | 4 ++--
6 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/cms/djangoapps/contentstore/utils.py b/cms/djangoapps/contentstore/utils.py
index b268bd6fcb5d..631ceeb270b6 100644
--- a/cms/djangoapps/contentstore/utils.py
+++ b/cms/djangoapps/contentstore/utils.py
@@ -2255,7 +2255,7 @@ def send_course_update_notification(course_key, content, user):
"course_update_content": text_content if len(text_content.strip()) < 10 else "Click here to view",
**extra_context,
},
- notification_type="course_update",
+ notification_type="course_updates",
content_url=f"{settings.LMS_ROOT_URL}/courses/{str(course_key)}/course/updates",
app_name="updates",
audience_filters={},
diff --git a/openedx/core/djangoapps/notifications/base_notification.py b/openedx/core/djangoapps/notifications/base_notification.py
index 302d77328765..2813002fdb77 100644
--- a/openedx/core/djangoapps/notifications/base_notification.py
+++ b/openedx/core/djangoapps/notifications/base_notification.py
@@ -169,13 +169,13 @@
'email_template': '',
'filters': [FILTER_AUDIT_EXPIRED_USERS_WITH_NO_ROLE]
},
- 'course_update': {
+ 'course_updates': {
'notification_app': 'updates',
- 'name': 'course_update',
+ 'name': 'course_updates',
'is_core': False,
'info': '',
'web': True,
- 'email': True,
+ 'email': False,
'push': True,
'email_cadence': EmailCadence.DAILY,
'non_editable': [],
diff --git a/openedx/core/djangoapps/notifications/email/tests/test_utils.py b/openedx/core/djangoapps/notifications/email/tests/test_utils.py
index 8d72ffd748b5..6e79c497a4fe 100644
--- a/openedx/core/djangoapps/notifications/email/tests/test_utils.py
+++ b/openedx/core/djangoapps/notifications/email/tests/test_utils.py
@@ -70,7 +70,7 @@ def test_create_app_notifications_dict(self):
"""
Notification.objects.all().delete()
create_notification(self.user, self.course.id, app_name='discussion', notification_type='new_comment')
- create_notification(self.user, self.course.id, app_name='updates', notification_type='course_update')
+ create_notification(self.user, self.course.id, app_name='updates', notification_type='course_updates')
app_dict = create_app_notifications_dict(Notification.objects.all())
assert len(app_dict.keys()) == 2
for key in ['discussion', 'updates']:
@@ -130,7 +130,7 @@ def test_email_digest_context(self, digest_frequency):
discussion_notification = create_notification(self.user, self.course.id, app_name='discussion',
notification_type='new_comment')
update_notification = create_notification(self.user, self.course.id, app_name='updates',
- notification_type='course_update')
+ notification_type='course_updates')
app_dict = create_app_notifications_dict(Notification.objects.all())
end_date = datetime.datetime(2024, 3, 24, 12, 0)
params = {
diff --git a/openedx/core/djangoapps/notifications/models.py b/openedx/core/djangoapps/notifications/models.py
index 8bf19edce56e..e1bdf94acc33 100644
--- a/openedx/core/djangoapps/notifications/models.py
+++ b/openedx/core/djangoapps/notifications/models.py
@@ -23,7 +23,7 @@
ADDITIONAL_NOTIFICATION_CHANNEL_SETTINGS = ['email_cadence']
# Update this version when there is a change to any course specific notification type or app.
-COURSE_NOTIFICATION_CONFIG_VERSION = 10
+COURSE_NOTIFICATION_CONFIG_VERSION = 11
def get_course_notification_preference_config():
diff --git a/openedx/core/djangoapps/notifications/tests/test_tasks.py b/openedx/core/djangoapps/notifications/tests/test_tasks.py
index 5058c0f492c3..706ae2989842 100644
--- a/openedx/core/djangoapps/notifications/tests/test_tasks.py
+++ b/openedx/core/djangoapps/notifications/tests/test_tasks.py
@@ -390,7 +390,7 @@ def test_app_name_param(self):
"""
assert not Notification.objects.all()
create_notification(self.user, self.course_1.id, app_name='discussion', notification_type='new_comment')
- create_notification(self.user, self.course_1.id, app_name='updates', notification_type='course_update')
+ create_notification(self.user, self.course_1.id, app_name='updates', notification_type='course_updates')
delete_notifications({'app_name': 'discussion'})
assert not Notification.objects.filter(app_name='discussion')
assert Notification.objects.filter(app_name='updates')
diff --git a/openedx/core/djangoapps/notifications/tests/test_views.py b/openedx/core/djangoapps/notifications/tests/test_views.py
index 389c9e7e06c9..d2968749efab 100644
--- a/openedx/core/djangoapps/notifications/tests/test_views.py
+++ b/openedx/core/djangoapps/notifications/tests/test_views.py
@@ -275,9 +275,9 @@ def _expected_api_response(self, course=None):
'enabled': True,
'core_notification_types': [],
'notification_types': {
- 'course_update': {
+ 'course_updates': {
'web': True,
- 'email': True,
+ 'email': False,
'push': True,
'email_cadence': 'Daily',
'info': ''
From 99760f80f0f7d8c16f77fd1741ebb2346d740b4c Mon Sep 17 00:00:00 2001
From: Awais Qureshi
Date: Wed, 7 Aug 2024 16:40:27 +0500
Subject: [PATCH 13/13] feat: Upgrading api list_course_role_members ( 2nd api
) (#35105)
* feat: upgrading simple api to drf compatible.
---
lms/djangoapps/instructor/views/api.py | 63 ++++++++++---------
lms/djangoapps/instructor/views/api_urls.py | 2 +-
lms/djangoapps/instructor/views/serializer.py | 30 +++++++++
3 files changed, 65 insertions(+), 30 deletions(-)
create mode 100644 lms/djangoapps/instructor/views/serializer.py
diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py
index a58762d0f3ad..6abfc81e75dd 100644
--- a/lms/djangoapps/instructor/views/api.py
+++ b/lms/djangoapps/instructor/views/api.py
@@ -105,6 +105,7 @@
from lms.djangoapps.instructor_task.api_helper import AlreadyRunningError, QueueConnectionError
from lms.djangoapps.instructor_task.data import InstructorTaskTypes
from lms.djangoapps.instructor_task.models import ReportStore
+from lms.djangoapps.instructor.views.serializer import RoleNameSerializer, UserSerializer
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from openedx.core.djangoapps.course_groups.cohorts import add_user_to_cohort, is_course_cohorted
from openedx.core.djangoapps.course_groups.models import CourseUserGroup
@@ -1064,15 +1065,11 @@ def modify_access(request, course_id):
return JsonResponse(response_payload)
-@require_POST
-@ensure_csrf_cookie
-@cache_control(no_cache=True, no_store=True, must_revalidate=True)
-@require_course_permission(permissions.EDIT_COURSE_ACCESS)
-@require_post_params(rolename="'instructor', 'staff', or 'beta'")
-def list_course_role_members(request, course_id):
+@method_decorator(cache_control(no_cache=True, no_store=True, must_revalidate=True), name='dispatch')
+class ListCourseRoleMembersView(APIView):
"""
- List instructors and staff.
- Requires instructor access.
+ View to list instructors and staff for a specific course.
+ Requires the user to have instructor access.
rolename is one of ['instructor', 'staff', 'beta', 'ccx_coach']
@@ -1088,33 +1085,41 @@ def list_course_role_members(request, course_id):
]
}
"""
- course_id = CourseKey.from_string(course_id)
- course = get_course_with_access(
- request.user, 'instructor', course_id, depth=None
- )
+ permission_classes = (IsAuthenticated, permissions.InstructorPermission)
+ permission_name = permissions.EDIT_COURSE_ACCESS
- rolename = request.POST.get('rolename')
+ @method_decorator(ensure_csrf_cookie)
+ def post(self, request, course_id):
+ """
+ Handles POST request to list instructors and staff.
- if rolename not in ROLES:
- return HttpResponseBadRequest()
+ Args:
+ request (HttpRequest): The request object containing user data.
+ course_id (str): The ID of the course to list instructors and staff for.
- def extract_user_info(user):
- """ convert user into dicts for json view """
+ Returns:
+ Response: A Response object containing the list of instructors and staff or an error message.
- return {
- 'username': user.username,
- 'email': user.email,
- 'first_name': user.first_name,
- 'last_name': user.last_name,
+ Raises:
+ Http404: If the course does not exist.
+ """
+ course_id = CourseKey.from_string(course_id)
+ course = get_course_with_access(
+ request.user, 'instructor', course_id, depth=None
+ )
+ role_serializer = RoleNameSerializer(data=request.data)
+ role_serializer.is_valid(raise_exception=True)
+ rolename = role_serializer.data['rolename']
+
+ users = list_with_level(course.id, rolename)
+ serializer = UserSerializer(users, many=True)
+
+ response_payload = {
+ 'course_id': str(course_id),
+ rolename: serializer.data,
}
- response_payload = {
- 'course_id': str(course_id),
- rolename: list(map(extract_user_info, list_with_level(
- course.id, rolename
- ))),
- }
- return JsonResponse(response_payload)
+ return Response(response_payload, status=status.HTTP_200_OK)
class ProblemResponseReportPostParamsSerializer(serializers.Serializer): # pylint: disable=abstract-method
diff --git a/lms/djangoapps/instructor/views/api_urls.py b/lms/djangoapps/instructor/views/api_urls.py
index 7f94a369ff47..fc9d5a342773 100644
--- a/lms/djangoapps/instructor/views/api_urls.py
+++ b/lms/djangoapps/instructor/views/api_urls.py
@@ -23,7 +23,7 @@
urlpatterns = [
path('students_update_enrollment', api.students_update_enrollment, name='students_update_enrollment'),
path('register_and_enroll_students', api.register_and_enroll_students, name='register_and_enroll_students'),
- path('list_course_role_members', api.list_course_role_members, name='list_course_role_members'),
+ path('list_course_role_members', api.ListCourseRoleMembersView.as_view(), name='list_course_role_members'),
path('modify_access', api.modify_access, name='modify_access'),
path('bulk_beta_modify_access', api.bulk_beta_modify_access, name='bulk_beta_modify_access'),
path('get_problem_responses', api.get_problem_responses, name='get_problem_responses'),
diff --git a/lms/djangoapps/instructor/views/serializer.py b/lms/djangoapps/instructor/views/serializer.py
new file mode 100644
index 000000000000..b4f6f7626013
--- /dev/null
+++ b/lms/djangoapps/instructor/views/serializer.py
@@ -0,0 +1,30 @@
+""" Instructor apis serializers. """
+
+from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
+from django.core.exceptions import ValidationError
+from django.utils.translation import gettext as _
+from rest_framework import serializers
+
+from lms.djangoapps.instructor.access import ROLES
+
+
+class RoleNameSerializer(serializers.Serializer): # pylint: disable=abstract-method
+ """
+ Serializer that describes the response of the problem response report generation API.
+ """
+
+ rolename = serializers.CharField(help_text=_("Role name"))
+
+ def validate_rolename(self, value):
+ """
+ Check that the rolename is valid.
+ """
+ if value not in ROLES:
+ raise ValidationError(_("Invalid role name."))
+ return value
+
+
+class UserSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = User
+ fields = ['username', 'email', 'first_name', 'last_name']