From 513db6e30f8618a2ce0a26e3f9854e9d2233ca32 Mon Sep 17 00:00:00 2001 From: edX requirements bot <49161187+edx-requirements-bot@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:41:09 -0400 Subject: [PATCH 1/6] chore: Upgrade Python requirements (#307) Co-authored-by: Isaac Lee <124631592+ilee2u@users.noreply.github.com> --- requirements/base.txt | 30 ++++++------- requirements/ci.txt | 6 +-- requirements/common_constraints.txt | 9 ---- requirements/dev.txt | 67 ++++++++++++++--------------- requirements/django.txt | 2 +- requirements/doc.txt | 59 +++++++++++++------------ requirements/pip-tools.txt | 10 ++--- requirements/pip.txt | 4 +- requirements/production.txt | 34 +++++++-------- requirements/quality.txt | 59 +++++++++++++------------ requirements/test.txt | 40 ++++++++--------- requirements/validation.txt | 58 ++++++++++++------------- 12 files changed, 181 insertions(+), 197 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 8c6f1b3d..ed648a1e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -12,7 +12,7 @@ asgiref==3.8.1 # django-cors-headers async-timeout==4.0.3 # via redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/base.in # lti-consumer-xblock @@ -23,15 +23,15 @@ backports-zoneinfo==0.2.1 # djangorestframework bleach==6.1.0 # via lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # boto3 # s3transfer certifi==2024.7.4 # via requests -cffi==1.16.0 +cffi==1.17.0 # via # cryptography # pynacl @@ -57,7 +57,7 @@ defusedxml==0.8.0rc2 # via # python3-openid # social-auth-core -django==4.2.14 +django==4.2.15 # via # -c requirements/common_constraints.txt # -r requirements/base.in @@ -101,7 +101,7 @@ django-crum==0.7.9 # edx-toggles django-extensions==3.2.3 # via -r requirements/base.in -django-filter==24.2 +django-filter==24.3 # via lti-consumer-xblock django-model-utils==4.5.1 # via -r requirements/base.in @@ -142,7 +142,7 @@ edx-ccx-keys==1.3.0 # openedx-events edx-django-release-util==1.4.0 # via -r requirements/base.in -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/base.in # django-config-models @@ -154,7 +154,7 @@ edx-django-utils==5.14.2 # openedx-events edx-drf-extensions==10.3.0 # via -r requirements/base.in -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via -r requirements/base.in edx-event-bus-redis==0.5.0 # via -r requirements/base.in @@ -204,7 +204,7 @@ lazy==1.6 # via lti-consumer-xblock lti-consumer-xblock==9.11.3 # via -r requirements/base.in -lxml==5.2.2 +lxml==5.3.0 # via # lti-consumer-xblock # xblock @@ -219,7 +219,7 @@ markupsafe==2.1.5 # xblock mysqlclient==2.2.4 # via -r requirements/base.in -newrelic==9.12.0 +newrelic==9.13.0 # via edx-django-utils oauthlib==3.2.2 # via @@ -253,7 +253,7 @@ pyjwkest==1.4.2 # via # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # drf-jwt # edx-auth-backends @@ -279,7 +279,7 @@ pytz==2024.1 # -r requirements/base.in # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # code-annotations # drf-yasg @@ -302,7 +302,7 @@ s3transfer==0.10.2 # via boto3 semantic-version==2.10.0 # via edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # django-rest-swagger # xblock @@ -351,9 +351,9 @@ web-fragments==2.2.0 # via xblock webencodings==0.5.1 # via bleach -webob==1.8.7 +webob==1.8.8 # via xblock -xblock==5.0.0 +xblock==5.1.0 # via lti-consumer-xblock # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/ci.txt b/requirements/ci.txt index 4757e860..ed50b3a0 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,13 +4,13 @@ # # make upgrade # -cachetools==5.4.0 +cachetools==5.5.0 # via tox chardet==5.2.0 # via tox colorama==0.4.6 # via tox -coverage==7.6.0 +coverage==7.6.1 # via -r requirements/ci.in distlib==0.3.8 # via virtualenv @@ -34,7 +34,7 @@ tomli==2.0.1 # via # pyproject-api # tox -tox==4.16.0 +tox==4.18.0 # via -r requirements/ci.in virtualenv==20.26.3 # via tox diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt index 16b6bd8a..fc95227a 100644 --- a/requirements/common_constraints.txt +++ b/requirements/common_constraints.txt @@ -24,15 +24,6 @@ elasticsearch<7.14.0 # django-simple-history>3.0.0 adds indexing and causes a lot of migrations to be affected -# opentelemetry requires version 6.x at the moment: -# https://github.com/open-telemetry/opentelemetry-python/issues/3570 -# Normally this could be added as a constraint in edx-django-utils, where we're -# adding the opentelemetry dependency. However, when we compile pip-tools.txt, -# that uses version 7.x, and then there's no undoing that when compiling base.txt. -# So we need to pin it globally, for now. -# Ticket for unpinning: https://github.com/openedx/edx-lint/issues/407 -importlib-metadata<7 - # Cause: https://github.com/openedx/event-tracking/pull/290 # event-tracking 2.4.1 upgrades to pymongo 4.4.0 which is not supported on edx-platform. # We will pin event-tracking to do not break existing installations diff --git a/requirements/dev.txt b/requirements/dev.txt index 316d3c74..aedde017 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -22,7 +22,7 @@ async-timeout==4.0.3 # via # -r requirements/validation.txt # redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/validation.txt # lti-consumer-xblock @@ -40,11 +40,11 @@ bleach==6.1.0 # via # -r requirements/validation.txt # lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via # -r requirements/validation.txt # fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # -r requirements/validation.txt # boto3 @@ -53,7 +53,7 @@ build==1.2.1 # via # -r requirements/pip-tools.txt # pip-tools -cachetools==5.4.0 +cachetools==5.5.0 # via # -r requirements/validation.txt # tox @@ -61,7 +61,7 @@ certifi==2024.7.4 # via # -r requirements/validation.txt # requests -cffi==1.16.0 +cffi==1.17.0 # via # -r requirements/validation.txt # cryptography @@ -106,7 +106,7 @@ coreschema==0.0.4 # via # -r requirements/validation.txt # coreapi -coverage[toml]==7.6.0 +coverage[toml]==7.6.1 # via # -r requirements/validation.txt # pytest-cov @@ -133,7 +133,7 @@ distlib==0.3.8 # via # -r requirements/validation.txt # virtualenv -django==4.2.14 +django==4.2.15 # via # -r requirements/validation.txt # django-appconf @@ -187,7 +187,7 @@ django-dynamic-fixture==4.0.1 # via -r requirements/validation.txt django-extensions==3.2.3 # via -r requirements/validation.txt -django-filter==24.2 +django-filter==24.3 # via # -r requirements/validation.txt # lti-consumer-xblock @@ -243,7 +243,7 @@ edx-ccx-keys==1.3.0 # openedx-events edx-django-release-util==1.4.0 # via -r requirements/validation.txt -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/validation.txt # django-config-models @@ -255,11 +255,11 @@ edx-django-utils==5.14.2 # openedx-events edx-drf-extensions==10.3.0 # via -r requirements/validation.txt -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via -r requirements/validation.txt edx-event-bus-redis==0.5.0 # via -r requirements/validation.txt -edx-i18n-tools==1.6.1 +edx-i18n-tools==1.6.2 # via -r requirements/dev.in edx-lint==5.3.7 # via -r requirements/validation.txt @@ -283,9 +283,9 @@ exceptiongroup==1.2.2 # via # -r requirements/validation.txt # pytest -factory-boy==3.3.0 +factory-boy==3.3.1 # via -r requirements/validation.txt -faker==26.0.0 +faker==27.0.0 # via # -r requirements/validation.txt # factory-boy @@ -318,14 +318,14 @@ idna==3.7 # via # -r requirements/validation.txt # requests -importlib-metadata==6.11.0 +importlib-metadata==8.3.0 # via # -r requirements/pip-tools.txt # -r requirements/validation.txt # build # keyring # twine -importlib-resources==6.4.0 +importlib-resources==6.4.3 # via # -r requirements/validation.txt # keyring @@ -349,11 +349,11 @@ jaraco-classes==3.4.0 # via # -r requirements/validation.txt # keyring -jaraco-context==5.3.0 +jaraco-context==6.0.1 # via # -r requirements/validation.txt # keyring -jaraco-functools==4.0.1 +jaraco-functools==4.0.2 # via # -r requirements/validation.txt # keyring @@ -377,7 +377,7 @@ jsonfield==3.1.0 # via # -r requirements/validation.txt # lti-consumer-xblock -keyring==25.2.1 +keyring==25.3.0 # via # -r requirements/validation.txt # twine @@ -387,15 +387,12 @@ lazy==1.6 # lti-consumer-xblock lti-consumer-xblock==9.11.3 # via -r requirements/validation.txt -lxml[html-clean]==5.2.2 +lxml==5.3.0 # via # -r requirements/validation.txt # edx-i18n-tools # lti-consumer-xblock - # lxml-html-clean # xblock -lxml-html-clean==0.2.0 - # via lxml mako==1.3.5 # via # -r requirements/validation.txt @@ -421,14 +418,14 @@ mdurl==0.1.2 # markdown-it-py mock==5.1.0 # via -r requirements/validation.txt -more-itertools==10.3.0 +more-itertools==10.4.0 # via # -r requirements/validation.txt # jaraco-classes # jaraco-functools mysqlclient==2.2.4 # via -r requirements/validation.txt -newrelic==9.12.0 +newrelic==9.13.0 # via # -r requirements/validation.txt # edx-django-utils @@ -468,7 +465,7 @@ packaging==24.1 # pyproject-api # pytest # tox -path==17.0.0 +path==16.16.0 # via edx-i18n-tools pbr==6.0.0 # via @@ -498,7 +495,7 @@ psutil==6.0.0 # via # -r requirements/validation.txt # edx-django-utils -pycodestyle==2.12.0 +pycodestyle==2.12.1 # via -r requirements/validation.txt pycparser==2.22 # via @@ -522,7 +519,7 @@ pyjwkest==1.4.2 # -r requirements/validation.txt # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # -r requirements/validation.txt # drf-jwt @@ -598,7 +595,7 @@ pytz==2024.1 # -r requirements/validation.txt # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/validation.txt # code-annotations @@ -658,7 +655,7 @@ semantic-version==2.10.0 # via # -r requirements/validation.txt # edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # -r requirements/validation.txt # django-rest-swagger @@ -718,11 +715,11 @@ tomli==2.0.1 # pyproject-api # pytest # tox -tomlkit==0.13.0 +tomlkit==0.13.2 # via # -r requirements/validation.txt # pylint -tox==4.16.0 +tox==4.18.0 # via -r requirements/validation.txt twine==5.1.1 # via -r requirements/validation.txt @@ -762,19 +759,19 @@ webencodings==0.5.1 # via # -r requirements/validation.txt # bleach -webob==1.8.7 +webob==1.8.8 # via # -r requirements/validation.txt # xblock -wheel==0.43.0 +wheel==0.44.0 # via # -r requirements/pip-tools.txt # pip-tools -xblock==5.0.0 +xblock==5.1.0 # via # -r requirements/validation.txt # lti-consumer-xblock -zipp==3.19.2 +zipp==3.20.0 # via # -r requirements/pip-tools.txt # -r requirements/validation.txt diff --git a/requirements/django.txt b/requirements/django.txt index 549c1f8b..16bc98be 100644 --- a/requirements/django.txt +++ b/requirements/django.txt @@ -1 +1 @@ -django==4.2.14 +django==4.2.15 diff --git a/requirements/doc.txt b/requirements/doc.txt index 030725ff..8d49cfb1 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -24,12 +24,12 @@ async-timeout==4.0.3 # via # -r requirements/test.txt # redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/test.txt # lti-consumer-xblock # openedx-events -babel==2.15.0 +babel==2.16.0 # via sphinx backports-tarfile==1.2.0 # via jaraco-context @@ -42,18 +42,18 @@ bleach==6.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via # -r requirements/test.txt # fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # -r requirements/test.txt # boto3 # s3transfer build==1.2.1 # via -r requirements/doc.in -cachetools==5.4.0 +cachetools==5.5.0 # via # -r requirements/test.txt # tox @@ -61,7 +61,7 @@ certifi==2024.7.4 # via # -r requirements/test.txt # requests -cffi==1.16.0 +cffi==1.17.0 # via # -r requirements/test.txt # cryptography @@ -103,7 +103,7 @@ coreschema==0.0.4 # via # -r requirements/test.txt # coreapi -coverage[toml]==7.6.0 +coverage[toml]==7.6.1 # via # -r requirements/test.txt # pytest-cov @@ -128,7 +128,7 @@ distlib==0.3.8 # via # -r requirements/test.txt # virtualenv -django==4.2.14 +django==4.2.15 # via # -c requirements/common_constraints.txt # -r requirements/test.txt @@ -179,7 +179,7 @@ django-dynamic-fixture==4.0.1 # via -r requirements/test.txt django-extensions==3.2.3 # via -r requirements/test.txt -django-filter==24.2 +django-filter==24.3 # via # -r requirements/test.txt # lti-consumer-xblock @@ -239,7 +239,7 @@ edx-ccx-keys==1.3.0 # openedx-events edx-django-release-util==1.4.0 # via -r requirements/test.txt -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/test.txt # django-config-models @@ -251,7 +251,7 @@ edx-django-utils==5.14.2 # openedx-events edx-drf-extensions==10.3.0 # via -r requirements/test.txt -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via -r requirements/test.txt edx-event-bus-redis==0.5.0 # via -r requirements/test.txt @@ -279,9 +279,9 @@ exceptiongroup==1.2.2 # via # -r requirements/test.txt # pytest -factory-boy==3.3.0 +factory-boy==3.3.1 # via -r requirements/test.txt -faker==26.0.0 +faker==27.0.0 # via # -r requirements/test.txt # factory-boy @@ -316,14 +316,13 @@ idna==3.7 # requests imagesize==1.4.1 # via sphinx -importlib-metadata==6.11.0 +importlib-metadata==8.3.0 # via - # -c requirements/common_constraints.txt # build # keyring # sphinx # twine -importlib-resources==6.4.0 +importlib-resources==6.4.3 # via keyring inflection==0.5.1 # via @@ -343,9 +342,9 @@ itypes==1.2.0 # coreapi jaraco-classes==3.4.0 # via keyring -jaraco-context==5.3.0 +jaraco-context==6.0.1 # via keyring -jaraco-functools==4.0.1 +jaraco-functools==4.0.2 # via keyring jeepney==0.8.0 # via @@ -366,7 +365,7 @@ jsonfield==3.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -keyring==25.2.1 +keyring==25.3.0 # via twine lazy==1.6 # via @@ -374,7 +373,7 @@ lazy==1.6 # lti-consumer-xblock lti-consumer-xblock==9.11.3 # via -r requirements/test.txt -lxml==5.2.2 +lxml==5.3.0 # via # -r requirements/test.txt # lti-consumer-xblock @@ -400,13 +399,13 @@ mdurl==0.1.2 # via markdown-it-py mock==5.1.0 # via -r requirements/test.txt -more-itertools==10.3.0 +more-itertools==10.4.0 # via # jaraco-classes # jaraco-functools mysqlclient==2.2.4 # via -r requirements/test.txt -newrelic==9.12.0 +newrelic==9.13.0 # via # -r requirements/test.txt # edx-django-utils @@ -485,7 +484,7 @@ pyjwkest==1.4.2 # -r requirements/test.txt # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # -r requirements/test.txt # drf-jwt @@ -559,7 +558,7 @@ pytz==2024.1 # babel # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/test.txt # code-annotations @@ -611,7 +610,7 @@ semantic-version==2.10.0 # via # -r requirements/test.txt # edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # -r requirements/test.txt # django-rest-swagger @@ -685,11 +684,11 @@ tomli==2.0.1 # pyproject-api # pytest # tox -tomlkit==0.13.0 +tomlkit==0.13.2 # via # -r requirements/test.txt # pylint -tox==4.16.0 +tox==4.18.0 # via -r requirements/test.txt twine==5.1.1 # via -r requirements/doc.in @@ -729,15 +728,15 @@ webencodings==0.5.1 # via # -r requirements/test.txt # bleach -webob==1.8.7 +webob==1.8.8 # via # -r requirements/test.txt # xblock -xblock==5.0.0 +xblock==5.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -zipp==3.19.2 +zipp==3.20.0 # via # importlib-metadata # importlib-resources diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index f577da4d..e6c77872 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -8,10 +8,8 @@ build==1.2.1 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==6.11.0 - # via - # -c requirements/common_constraints.txt - # build +importlib-metadata==8.3.0 + # via build packaging==24.1 # via build pip-tools==7.4.1 @@ -24,9 +22,9 @@ tomli==2.0.1 # via # build # pip-tools -wheel==0.43.0 +wheel==0.44.0 # via pip-tools -zipp==3.19.2 +zipp==3.20.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index 7b187b8d..de0f8b8d 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.2 # via -r requirements/pip.in -setuptools==72.1.0 +setuptools==73.0.0 # via -r requirements/pip.in diff --git a/requirements/production.txt b/requirements/production.txt index 7ade83ee..eb590dbb 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -17,7 +17,7 @@ async-timeout==4.0.3 # via # -r requirements/base.txt # redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/base.txt # lti-consumer-xblock @@ -31,12 +31,12 @@ bleach==6.1.0 # via # -r requirements/base.txt # lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via # -r requirements/base.txt # django-ses # fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # -r requirements/base.txt # boto3 @@ -45,7 +45,7 @@ certifi==2024.7.4 # via # -r requirements/base.txt # requests -cffi==1.16.0 +cffi==1.17.0 # via # -r requirements/base.txt # cryptography @@ -82,7 +82,7 @@ defusedxml==0.8.0rc2 # -r requirements/base.txt # python3-openid # social-auth-core -django==4.2.14 +django==4.2.15 # via # -r requirements/base.txt # django-appconf @@ -131,7 +131,7 @@ django-crum==0.7.9 # edx-toggles django-extensions==3.2.3 # via -r requirements/base.txt -django-filter==24.2 +django-filter==24.3 # via # -r requirements/base.txt # lti-consumer-xblock @@ -185,7 +185,7 @@ edx-ccx-keys==1.3.0 # openedx-events edx-django-release-util==1.4.0 # via -r requirements/base.txt -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/base.txt # django-config-models @@ -197,7 +197,7 @@ edx-django-utils==5.14.2 # openedx-events edx-drf-extensions==10.3.0 # via -r requirements/base.txt -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via -r requirements/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/base.txt @@ -239,7 +239,7 @@ gevent==24.2.1 # via -r requirements/production.in greenlet==3.0.3 # via gevent -gunicorn==22.0.0 +gunicorn==23.0.0 # via -r requirements/production.in idna==3.7 # via @@ -273,7 +273,7 @@ lazy==1.6 # lti-consumer-xblock lti-consumer-xblock==9.11.3 # via -r requirements/base.txt -lxml==5.2.2 +lxml==5.3.0 # via # -r requirements/base.txt # lti-consumer-xblock @@ -293,7 +293,7 @@ mysqlclient==2.2.4 # via # -r requirements/base.txt # -r requirements/production.in -newrelic==9.12.0 +newrelic==9.13.0 # via # -r requirements/base.txt # edx-django-utils @@ -347,7 +347,7 @@ pyjwkest==1.4.2 # -r requirements/base.txt # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # -r requirements/base.txt # drf-jwt @@ -386,7 +386,7 @@ pytz==2024.1 # django-ses # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/base.txt # -r requirements/production.in @@ -420,7 +420,7 @@ semantic-version==2.10.0 # via # -r requirements/base.txt # edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # -r requirements/base.txt # django-rest-swagger @@ -490,17 +490,17 @@ webencodings==0.5.1 # via # -r requirements/base.txt # bleach -webob==1.8.7 +webob==1.8.8 # via # -r requirements/base.txt # xblock -xblock==5.0.0 +xblock==5.1.0 # via # -r requirements/base.txt # lti-consumer-xblock zope-event==5.0 # via gevent -zope-interface==6.4.post2 +zope-interface==7.0.1 # via gevent # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/quality.txt b/requirements/quality.txt index 90b80ae0..8c125da8 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -22,7 +22,7 @@ async-timeout==4.0.3 # via # -r requirements/test.txt # redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/test.txt # lti-consumer-xblock @@ -38,16 +38,16 @@ bleach==6.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via # -r requirements/test.txt # fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # -r requirements/test.txt # boto3 # s3transfer -cachetools==5.4.0 +cachetools==5.5.0 # via # -r requirements/test.txt # tox @@ -55,7 +55,7 @@ certifi==2024.7.4 # via # -r requirements/test.txt # requests -cffi==1.16.0 +cffi==1.17.0 # via # -r requirements/test.txt # cryptography @@ -97,7 +97,7 @@ coreschema==0.0.4 # via # -r requirements/test.txt # coreapi -coverage[toml]==7.6.0 +coverage[toml]==7.6.1 # via # -r requirements/test.txt # pytest-cov @@ -122,7 +122,7 @@ distlib==0.3.8 # via # -r requirements/test.txt # virtualenv -django==4.2.14 +django==4.2.15 # via # -c requirements/common_constraints.txt # -r requirements/test.txt @@ -173,7 +173,7 @@ django-dynamic-fixture==4.0.1 # via -r requirements/test.txt django-extensions==3.2.3 # via -r requirements/test.txt -django-filter==24.2 +django-filter==24.3 # via # -r requirements/test.txt # lti-consumer-xblock @@ -227,7 +227,7 @@ edx-ccx-keys==1.3.0 # openedx-events edx-django-release-util==1.4.0 # via -r requirements/test.txt -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/test.txt # django-config-models @@ -239,7 +239,7 @@ edx-django-utils==5.14.2 # openedx-events edx-drf-extensions==10.3.0 # via -r requirements/test.txt -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via -r requirements/test.txt edx-event-bus-redis==0.5.0 # via -r requirements/test.txt @@ -267,9 +267,9 @@ exceptiongroup==1.2.2 # via # -r requirements/test.txt # pytest -factory-boy==3.3.0 +factory-boy==3.3.1 # via -r requirements/test.txt -faker==26.0.0 +faker==27.0.0 # via # -r requirements/test.txt # factory-boy @@ -302,12 +302,11 @@ idna==3.7 # via # -r requirements/test.txt # requests -importlib-metadata==6.11.0 +importlib-metadata==8.3.0 # via - # -c requirements/common_constraints.txt # keyring # twine -importlib-resources==6.4.0 +importlib-resources==6.4.3 # via keyring inflection==0.5.1 # via @@ -328,9 +327,9 @@ itypes==1.2.0 # coreapi jaraco-classes==3.4.0 # via keyring -jaraco-context==5.3.0 +jaraco-context==6.0.1 # via keyring -jaraco-functools==4.0.1 +jaraco-functools==4.0.2 # via keyring jeepney==0.8.0 # via @@ -350,7 +349,7 @@ jsonfield==3.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -keyring==25.2.1 +keyring==25.3.0 # via twine lazy==1.6 # via @@ -358,7 +357,7 @@ lazy==1.6 # lti-consumer-xblock lti-consumer-xblock==9.11.3 # via -r requirements/test.txt -lxml==5.2.2 +lxml==5.3.0 # via # -r requirements/test.txt # lti-consumer-xblock @@ -384,13 +383,13 @@ mdurl==0.1.2 # via markdown-it-py mock==5.1.0 # via -r requirements/test.txt -more-itertools==10.3.0 +more-itertools==10.4.0 # via # jaraco-classes # jaraco-functools mysqlclient==2.2.4 # via -r requirements/test.txt -newrelic==9.12.0 +newrelic==9.13.0 # via # -r requirements/test.txt # edx-django-utils @@ -447,7 +446,7 @@ psutil==6.0.0 # via # -r requirements/test.txt # edx-django-utils -pycodestyle==2.12.0 +pycodestyle==2.12.1 # via -r requirements/quality.in pycparser==2.22 # via @@ -469,7 +468,7 @@ pyjwkest==1.4.2 # -r requirements/test.txt # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # -r requirements/test.txt # drf-jwt @@ -540,7 +539,7 @@ pytz==2024.1 # -r requirements/test.txt # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/test.txt # code-annotations @@ -589,7 +588,7 @@ semantic-version==2.10.0 # via # -r requirements/test.txt # edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # -r requirements/test.txt # django-rest-swagger @@ -643,11 +642,11 @@ tomli==2.0.1 # pyproject-api # pytest # tox -tomlkit==0.13.0 +tomlkit==0.13.2 # via # -r requirements/test.txt # pylint -tox==4.16.0 +tox==4.18.0 # via -r requirements/test.txt twine==5.1.1 # via -r requirements/quality.in @@ -687,15 +686,15 @@ webencodings==0.5.1 # via # -r requirements/test.txt # bleach -webob==1.8.7 +webob==1.8.8 # via # -r requirements/test.txt # xblock -xblock==5.0.0 +xblock==5.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -zipp==3.19.2 +zipp==3.20.0 # via # importlib-metadata # importlib-resources diff --git a/requirements/test.txt b/requirements/test.txt index c96e83f9..7bfce1b4 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -21,7 +21,7 @@ async-timeout==4.0.3 # via # -r requirements/base.txt # redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/base.txt # lti-consumer-xblock @@ -35,22 +35,22 @@ bleach==6.1.0 # via # -r requirements/base.txt # lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via # -r requirements/base.txt # fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # -r requirements/base.txt # boto3 # s3transfer -cachetools==5.4.0 +cachetools==5.5.0 # via tox certifi==2024.7.4 # via # -r requirements/base.txt # requests -cffi==1.16.0 +cffi==1.17.0 # via # -r requirements/base.txt # cryptography @@ -87,7 +87,7 @@ coreschema==0.0.4 # via # -r requirements/base.txt # coreapi -coverage[toml]==7.6.0 +coverage[toml]==7.6.1 # via # -r requirements/test.in # pytest-cov @@ -157,7 +157,7 @@ django-dynamic-fixture==4.0.1 # via -r requirements/test.in django-extensions==3.2.3 # via -r requirements/base.txt -django-filter==24.2 +django-filter==24.3 # via # -r requirements/base.txt # lti-consumer-xblock @@ -209,7 +209,7 @@ edx-ccx-keys==1.3.0 # openedx-events edx-django-release-util==1.4.0 # via -r requirements/base.txt -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/base.txt # django-config-models @@ -221,7 +221,7 @@ edx-django-utils==5.14.2 # openedx-events edx-drf-extensions==10.3.0 # via -r requirements/base.txt -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via -r requirements/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/base.txt @@ -245,9 +245,9 @@ edx-token-utils==0.2.1 # via -r requirements/base.txt exceptiongroup==1.2.2 # via pytest -factory-boy==3.3.0 +factory-boy==3.3.1 # via -r requirements/test.in -faker==26.0.0 +faker==27.0.0 # via factory-boy fastavro==1.9.5 # via @@ -309,7 +309,7 @@ lazy==1.6 # lti-consumer-xblock lti-consumer-xblock==9.11.3 # via -r requirements/base.txt -lxml==5.2.2 +lxml==5.3.0 # via # -r requirements/base.txt # lti-consumer-xblock @@ -331,7 +331,7 @@ mock==5.1.0 # via -r requirements/test.in mysqlclient==2.2.4 # via -r requirements/base.txt -newrelic==9.12.0 +newrelic==9.13.0 # via # -r requirements/base.txt # edx-django-utils @@ -396,7 +396,7 @@ pyjwkest==1.4.2 # -r requirements/base.txt # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # -r requirements/base.txt # drf-jwt @@ -458,7 +458,7 @@ pytz==2024.1 # -r requirements/base.txt # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/base.txt # code-annotations @@ -495,7 +495,7 @@ semantic-version==2.10.0 # via # -r requirements/base.txt # edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # -r requirements/base.txt # django-rest-swagger @@ -546,9 +546,9 @@ tomli==2.0.1 # pyproject-api # pytest # tox -tomlkit==0.13.0 +tomlkit==0.13.2 # via pylint -tox==4.16.0 +tox==4.18.0 # via -r requirements/test.in typing-extensions==4.12.2 # via @@ -582,11 +582,11 @@ webencodings==0.5.1 # via # -r requirements/base.txt # bleach -webob==1.8.7 +webob==1.8.8 # via # -r requirements/base.txt # xblock -xblock==5.0.0 +xblock==5.1.0 # via # -r requirements/base.txt # lti-consumer-xblock diff --git a/requirements/validation.txt b/requirements/validation.txt index f5d37b8a..056f4b85 100644 --- a/requirements/validation.txt +++ b/requirements/validation.txt @@ -26,7 +26,7 @@ async-timeout==4.0.3 # -r requirements/quality.txt # -r requirements/test.txt # redis -attrs==23.2.0 +attrs==24.2.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -47,18 +47,18 @@ bleach==6.1.0 # -r requirements/quality.txt # -r requirements/test.txt # lti-consumer-xblock -boto3==1.34.150 +boto3==1.35.1 # via # -r requirements/quality.txt # -r requirements/test.txt # fs-s3fs -botocore==1.34.150 +botocore==1.35.1 # via # -r requirements/quality.txt # -r requirements/test.txt # boto3 # s3transfer -cachetools==5.4.0 +cachetools==5.5.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -68,7 +68,7 @@ certifi==2024.7.4 # -r requirements/quality.txt # -r requirements/test.txt # requests -cffi==1.16.0 +cffi==1.17.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -119,7 +119,7 @@ coreschema==0.0.4 # -r requirements/quality.txt # -r requirements/test.txt # coreapi -coverage[toml]==7.6.0 +coverage[toml]==7.6.1 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -151,7 +151,7 @@ distlib==0.3.8 # -r requirements/quality.txt # -r requirements/test.txt # virtualenv -django==4.2.14 +django==4.2.15 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -211,7 +211,7 @@ django-extensions==3.2.3 # via # -r requirements/quality.txt # -r requirements/test.txt -django-filter==24.2 +django-filter==24.3 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -287,7 +287,7 @@ edx-django-release-util==1.4.0 # via # -r requirements/quality.txt # -r requirements/test.txt -edx-django-utils==5.14.2 +edx-django-utils==5.15.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -302,7 +302,7 @@ edx-drf-extensions==10.3.0 # via # -r requirements/quality.txt # -r requirements/test.txt -edx-event-bus-kafka==5.7.0 +edx-event-bus-kafka==5.8.1 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -341,11 +341,11 @@ exceptiongroup==1.2.2 # -r requirements/quality.txt # -r requirements/test.txt # pytest -factory-boy==3.3.0 +factory-boy==3.3.1 # via # -r requirements/quality.txt # -r requirements/test.txt -faker==26.0.0 +faker==27.0.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -387,12 +387,12 @@ idna==3.7 # -r requirements/quality.txt # -r requirements/test.txt # requests -importlib-metadata==6.11.0 +importlib-metadata==8.3.0 # via # -r requirements/quality.txt # keyring # twine -importlib-resources==6.4.0 +importlib-resources==6.4.3 # via # -r requirements/quality.txt # keyring @@ -420,11 +420,11 @@ jaraco-classes==3.4.0 # via # -r requirements/quality.txt # keyring -jaraco-context==5.3.0 +jaraco-context==6.0.1 # via # -r requirements/quality.txt # keyring -jaraco-functools==4.0.1 +jaraco-functools==4.0.2 # via # -r requirements/quality.txt # keyring @@ -450,7 +450,7 @@ jsonfield==3.1.0 # -r requirements/quality.txt # -r requirements/test.txt # lti-consumer-xblock -keyring==25.2.1 +keyring==25.3.0 # via # -r requirements/quality.txt # twine @@ -463,7 +463,7 @@ lti-consumer-xblock==9.11.3 # via # -r requirements/quality.txt # -r requirements/test.txt -lxml==5.2.2 +lxml==5.3.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -499,7 +499,7 @@ mock==5.1.0 # via # -r requirements/quality.txt # -r requirements/test.txt -more-itertools==10.3.0 +more-itertools==10.4.0 # via # -r requirements/quality.txt # jaraco-classes @@ -508,7 +508,7 @@ mysqlclient==2.2.4 # via # -r requirements/quality.txt # -r requirements/test.txt -newrelic==9.12.0 +newrelic==9.13.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -580,7 +580,7 @@ psutil==6.0.0 # -r requirements/quality.txt # -r requirements/test.txt # edx-django-utils -pycodestyle==2.12.0 +pycodestyle==2.12.1 # via -r requirements/quality.txt pycparser==2.22 # via @@ -606,7 +606,7 @@ pyjwkest==1.4.2 # -r requirements/test.txt # edx-token-utils # lti-consumer-xblock -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.9.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -696,7 +696,7 @@ pytz==2024.1 # -r requirements/test.txt # drf-yasg # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -763,7 +763,7 @@ semantic-version==2.10.0 # -r requirements/quality.txt # -r requirements/test.txt # edx-drf-extensions -simplejson==3.19.2 +simplejson==3.19.3 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -828,12 +828,12 @@ tomli==2.0.1 # pyproject-api # pytest # tox -tomlkit==0.13.0 +tomlkit==0.13.2 # via # -r requirements/quality.txt # -r requirements/test.txt # pylint -tox==4.16.0 +tox==4.18.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -882,17 +882,17 @@ webencodings==0.5.1 # -r requirements/quality.txt # -r requirements/test.txt # bleach -webob==1.8.7 +webob==1.8.8 # via # -r requirements/quality.txt # -r requirements/test.txt # xblock -xblock==5.0.0 +xblock==5.1.0 # via # -r requirements/quality.txt # -r requirements/test.txt # lti-consumer-xblock -zipp==3.19.2 +zipp==3.20.0 # via # -r requirements/quality.txt # importlib-metadata From dafdc1a8a08cb4a3034b4295637a203787dafbee Mon Sep 17 00:00:00 2001 From: Varsha Menon Date: Tue, 6 Aug 2024 10:12:36 -0400 Subject: [PATCH 2/6] fix: bulk create course staff mgmt command --- .../commands/bulk_add_course_staff.py | 53 +++++++++---------- .../test/test_bulk_add_course_staff.py | 14 ++--- 2 files changed, 32 insertions(+), 35 deletions(-) diff --git a/edx_exams/apps/core/management/commands/bulk_add_course_staff.py b/edx_exams/apps/core/management/commands/bulk_add_course_staff.py index 8edc1778..f6960832 100644 --- a/edx_exams/apps/core/management/commands/bulk_add_course_staff.py +++ b/edx_exams/apps/core/management/commands/bulk_add_course_staff.py @@ -4,7 +4,7 @@ import time from django.core.management.base import BaseCommand -from django.db import transaction +from django.db import IntegrityError, transaction from edx_exams.apps.core.models import CourseStaffRole, User @@ -63,34 +63,31 @@ def add_course_staff_from_csv(self, csv_file, batch_size, batch_delay): Add the given set of course staff provided in csv """ reader = list(csv.DictReader(csv_file)) + users = {} - # bulk create users for i in range(0, len(reader), batch_size): - User.objects.bulk_create( - (User( - username=row.get('username'), - email=row.get('email'), - ) for row in reader[i:i + batch_size]), - ignore_conflicts=True, - ) - CourseStaffRole.objects.bulk_create( - (CourseStaffRole( - user=User.objects.get(username=row.get('username')), - course_id=row.get('course_id'), - role=row.get('role'), - ) for row in reader[i:i + batch_size]), - ignore_conflicts=True, - ) + users_list = [] + for row in reader[i:i + batch_size]: + username = row.get('username') + email = row.get('email') + try: + users_list.append(User.objects.get_or_create(username=row.get('username'), email=row.get('email'))) + except IntegrityError: + logger.warning( + f'User with username={username} and email={email} was not created due to an existing duplicate ' + f'user with username.' + ) + continue + users_dict = {(u.username, u) for (u, c) in users_list} + users.update(users_dict) time.sleep(batch_delay) - # bulk create course staff - # for i in range(0, len(reader), batch_size): - # CourseStaffRole.objects.bulk_create( - # (CourseStaffRole( - # user=User.objects.get(username=row.get('username')), - # course_id=row.get('course_id'), - # role=row.get('role'), - # ) for row in reader[i:i + batch_size]), - # ignore_conflicts=True, - # ) - # time.sleep(batch_delay) + CourseStaffRole.objects.bulk_create( + (CourseStaffRole( + user=users.get(row.get('username')), + course_id=row.get('course_id'), + role=row.get('role'), + ) for row in reader), + ignore_conflicts=True, + batch_size=batch_size, + ) diff --git a/edx_exams/apps/core/management/commands/test/test_bulk_add_course_staff.py b/edx_exams/apps/core/management/commands/test/test_bulk_add_course_staff.py index 023974df..edf3b8b5 100644 --- a/edx_exams/apps/core/management/commands/test/test_bulk_add_course_staff.py +++ b/edx_exams/apps/core/management/commands/test/test_bulk_add_course_staff.py @@ -90,7 +90,7 @@ def test_add_course_staff_with_not_default_batch_size(self): 'sam,sam@pond.com,staff,course-v1:edx+test+f20\n'] with NamedTemporaryFile() as csv: csv = self._write_test_csv(csv, lines) - with self.assertNumQueries(8): + with self.assertNumQueries(12): call_command(self.command, f'--csv_path={csv.name}', '--batch_size=1') def test_add_course_staff_with_batch_size_larger_than_list(self): @@ -99,7 +99,7 @@ def test_add_course_staff_with_batch_size_larger_than_list(self): 'sam,sam@pond.com,staff,course-v1:edx+test+f20\n'] with NamedTemporaryFile() as csv: csv = self._write_test_csv(csv, lines) - with self.assertNumQueries(6): + with self.assertNumQueries(11): call_command(self.command, f'--csv_path={csv.name}', '--batch_size=3') def test_add_course_staff_with_batch_size_smaller_than_list(self): @@ -109,7 +109,7 @@ def test_add_course_staff_with_batch_size_smaller_than_list(self): 'tam,tam@pond.com,staff,course-v1:edx+test+f20\n'] with NamedTemporaryFile() as csv: csv = self._write_test_csv(csv, lines) - with self.assertNumQueries(9): + with self.assertNumQueries(16): call_command(self.command, f'--csv_path={csv.name}', '--batch_size=2') def test_add_course_staff_with_not_default_batch_delay(self): @@ -125,16 +125,16 @@ def test_add_course_staff_with_not_default_batch_delay(self): def test_num_queries_correct(self): """ - Assert the number of queries to be 4 + 1 * number of lines: + Assert the number of queries to be 2 + 1 * number of lines: 2 for savepoint/release savepoint - 1 to bulk create users, 1 to bulk create course role - 1 for each user (to get user) + 1 to bulk create course role + 4 for each user (to get user, and savepoints) """ num_lines = 20 lines = [f'pam{i},pam{i}@pond.com,staff,course-v1:edx+test+f20\n' for i in range(num_lines)] with NamedTemporaryFile() as csv: csv = self._write_test_csv(csv, lines) - with self.assertNumQueries(4 + num_lines): + with self.assertNumQueries(3 + 4 * num_lines): call_command(self.command, f'--csv_path={csv.name}') def test_dupe_user_csv(self): From 077e7fc16f02bb709e46937c4c67769bcc5507a8 Mon Sep 17 00:00:00 2001 From: Robert Raposa Date: Thu, 29 Aug 2024 10:31:46 -0400 Subject: [PATCH 3/6] feat: DEPR USE-JWT-COOKIE header (#312) This repo is no longer using USE-JWT-COOKIE header, since it has the required edx-drf-extensions>10.2.0, where it was fully removed. This is final clean-up for this repo. See "[DEPR]: USE-JWT-COOKIE header" for more details: - https://github.com/openedx/edx-drf-extensions/issues/371 --- edx_exams/settings/base.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/edx_exams/settings/base.py b/edx_exams/settings/base.py index 49b5b70e..75b5532a 100644 --- a/edx_exams/settings/base.py +++ b/edx_exams/settings/base.py @@ -86,9 +86,7 @@ def root(*path_fragments): # Enable CORS CORS_ALLOW_CREDENTIALS = True -CORS_ALLOW_HEADERS = corsheaders_default_headers + ( - 'use-jwt-cookie', -) +CORS_ALLOW_HEADERS = corsheaders_default_headers CORS_ORIGIN_WHITELIST = [] ROOT_URLCONF = 'edx_exams.urls' From 4aeb55baa7c14a11271a7fc0e8d2ab3549dac8c9 Mon Sep 17 00:00:00 2001 From: Robert Raposa Date: Thu, 29 Aug 2024 10:55:47 -0400 Subject: [PATCH 4/6] Revert "feat: DEPR USE-JWT-COOKIE header (#312)" This reverts commit 077e7fc16f02bb709e46937c4c67769bcc5507a8. --- edx_exams/settings/base.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/edx_exams/settings/base.py b/edx_exams/settings/base.py index 75b5532a..49b5b70e 100644 --- a/edx_exams/settings/base.py +++ b/edx_exams/settings/base.py @@ -86,7 +86,9 @@ def root(*path_fragments): # Enable CORS CORS_ALLOW_CREDENTIALS = True -CORS_ALLOW_HEADERS = corsheaders_default_headers +CORS_ALLOW_HEADERS = corsheaders_default_headers + ( + 'use-jwt-cookie', +) CORS_ORIGIN_WHITELIST = [] ROOT_URLCONF = 'edx_exams.urls' From 01b8d56a5e3e00d3452ec5ff8ced2f9146c46c67 Mon Sep 17 00:00:00 2001 From: edX requirements bot <49161187+edx-requirements-bot@users.noreply.github.com> Date: Fri, 30 Aug 2024 10:27:48 -0400 Subject: [PATCH 5/6] chore: Upgrade Python requirements (#311) * chore: Upgrade Python requirements * fix: try running quality with 3.9 --------- Co-authored-by: Alison Langston <46360176+alangsto@users.noreply.github.com> Co-authored-by: Alie Langston --- .github/workflows/ci.yml | 4 +-- requirements/base.txt | 24 ++++++-------- requirements/ci.txt | 2 +- requirements/dev.txt | 55 ++++++++++---------------------- requirements/doc.txt | 62 +++++++++++++------------------------ requirements/pip-tools.txt | 6 ++-- requirements/pip.txt | 4 +-- requirements/production.txt | 30 +++++++----------- requirements/quality.txt | 53 +++++++++++-------------------- requirements/test.txt | 29 +++++++---------- requirements/validation.txt | 56 ++++++++++----------------------- 11 files changed, 116 insertions(+), 209 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 665cf17e..f54c9413 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-20.04] - python-version: ['3.8'] + python-version: ['3.11'] toxenv: [django42, quality, pii_check] steps: @@ -38,7 +38,7 @@ jobs: run: tox - name: Run coverage - if: matrix.python-version == '3.8' && matrix.toxenv == 'django42' + if: matrix.python-version == '3.11' && matrix.toxenv == 'django42' uses: py-cov-action/python-coverage-comment-action@v3 with: GITHUB_TOKEN: ${{ github.token }} diff --git a/requirements/base.txt b/requirements/base.txt index ed648a1e..0701bca8 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -17,19 +17,15 @@ attrs==24.2.0 # -r requirements/base.in # lti-consumer-xblock # openedx-events -backports-zoneinfo==0.2.1 - # via - # django - # djangorestframework bleach==6.1.0 # via lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # boto3 # s3transfer -certifi==2024.7.4 +certifi==2024.8.30 # via requests cffi==1.17.0 # via @@ -184,7 +180,7 @@ fs-s3fs==1.1.1 # via openedx-django-pyfs future==1.0.0 # via pyjwkest -idna==3.7 +idna==3.8 # via requests inflection==0.5.1 # via drf-yasg @@ -228,9 +224,9 @@ oauthlib==3.2.2 # social-auth-core openapi-codec==1.3.2 # via django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/base.in # edx-event-bus-kafka @@ -239,7 +235,7 @@ openedx-filters==1.9.0 # via lti-consumer-xblock packaging==24.1 # via drf-yasg -pbr==6.0.0 +pbr==6.1.0 # via stevedore psutil==6.0.0 # via edx-django-utils @@ -326,7 +322,7 @@ social-auth-core==4.5.4 # social-auth-app-django sqlparse==0.5.1 # via django -stevedore==5.2.0 +stevedore==5.3.0 # via # code-annotations # edx-django-utils @@ -341,7 +337,7 @@ uritemplate==4.1.1 # via # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # botocore # requests diff --git a/requirements/ci.txt b/requirements/ci.txt index ed50b3a0..f6ce7251 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade diff --git a/requirements/dev.txt b/requirements/dev.txt index aedde017..93a2b56f 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -31,20 +31,15 @@ backports-tarfile==1.2.0 # via # -r requirements/validation.txt # jaraco-context -backports-zoneinfo==0.2.1 - # via - # -r requirements/validation.txt - # django - # djangorestframework bleach==6.1.0 # via # -r requirements/validation.txt # lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via # -r requirements/validation.txt # fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # -r requirements/validation.txt # boto3 @@ -57,7 +52,7 @@ cachetools==5.5.0 # via # -r requirements/validation.txt # tox -certifi==2024.7.4 +certifi==2024.8.30 # via # -r requirements/validation.txt # requests @@ -114,7 +109,6 @@ cryptography==43.0.0 # via # -r requirements/validation.txt # pyjwt - # secretstorage # social-auth-core ddt==1.7.2 # via -r requirements/validation.txt @@ -220,7 +214,7 @@ dnspython==2.6.1 # via # -r requirements/validation.txt # pymongo -docutils==0.20.1 +docutils==0.21.2 # via # -r requirements/validation.txt # readme-renderer @@ -261,7 +255,7 @@ edx-event-bus-redis==0.5.0 # via -r requirements/validation.txt edx-i18n-tools==1.6.2 # via -r requirements/dev.in -edx-lint==5.3.7 +edx-lint==5.4.0 # via -r requirements/validation.txt edx-opaque-keys[django]==2.10.0 # via @@ -285,7 +279,7 @@ exceptiongroup==1.2.2 # pytest factory-boy==3.3.1 # via -r requirements/validation.txt -faker==27.0.0 +faker==28.0.0 # via # -r requirements/validation.txt # factory-boy @@ -314,21 +308,17 @@ future==1.0.0 # via # -r requirements/validation.txt # pyjwkest -idna==3.7 +idna==3.8 # via # -r requirements/validation.txt # requests -importlib-metadata==8.3.0 +importlib-metadata==8.4.0 # via # -r requirements/pip-tools.txt # -r requirements/validation.txt # build # keyring # twine -importlib-resources==6.4.3 - # via - # -r requirements/validation.txt - # keyring inflection==0.5.1 # via # -r requirements/validation.txt @@ -357,11 +347,6 @@ jaraco-functools==4.0.2 # via # -r requirements/validation.txt # keyring -jeepney==0.8.0 - # via - # -r requirements/validation.txt - # keyring - # secretstorage jinja2==3.1.4 # via # -r requirements/validation.txt @@ -443,11 +428,11 @@ openapi-codec==1.3.2 # via # -r requirements/validation.txt # django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via # -r requirements/validation.txt # lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/validation.txt # edx-event-bus-kafka @@ -467,7 +452,7 @@ packaging==24.1 # tox path==16.16.0 # via edx-i18n-tools -pbr==6.0.0 +pbr==6.1.0 # via # -r requirements/validation.txt # stevedore @@ -604,7 +589,7 @@ pyyaml==6.0.2 # edx-i18n-tools # responses # xblock -readme-renderer==43.0 +readme-renderer==44.0 # via # -r requirements/validation.txt # twine @@ -639,7 +624,7 @@ rfc3986==2.0.0 # via # -r requirements/validation.txt # twine -rich==13.7.1 +rich==13.8.0 # via # -r requirements/validation.txt # twine @@ -647,10 +632,6 @@ s3transfer==0.10.2 # via # -r requirements/validation.txt # boto3 -secretstorage==3.3.3 - # via - # -r requirements/validation.txt - # keyring semantic-version==2.10.0 # via # -r requirements/validation.txt @@ -694,7 +675,7 @@ sqlparse==0.5.1 # -r requirements/validation.txt # django # django-debug-toolbar -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/validation.txt # code-annotations @@ -730,13 +711,12 @@ typing-extensions==4.12.2 # astroid # edx-opaque-keys # pylint - # rich uritemplate==4.1.1 # via # -r requirements/validation.txt # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # -r requirements/validation.txt # botocore @@ -771,12 +751,11 @@ xblock==5.1.0 # via # -r requirements/validation.txt # lti-consumer-xblock -zipp==3.20.0 +zipp==3.20.1 # via # -r requirements/pip-tools.txt # -r requirements/validation.txt # importlib-metadata - # importlib-resources # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/doc.txt b/requirements/doc.txt index 8d49cfb1..699995a0 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,10 +1,10 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade # -alabaster==0.7.13 +alabaster==0.7.16 # via sphinx appdirs==1.4.4 # via @@ -33,20 +33,15 @@ babel==2.16.0 # via sphinx backports-tarfile==1.2.0 # via jaraco-context -backports-zoneinfo==0.2.1 - # via - # -r requirements/test.txt - # django - # djangorestframework bleach==6.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via # -r requirements/test.txt # fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # -r requirements/test.txt # boto3 @@ -57,7 +52,7 @@ cachetools==5.5.0 # via # -r requirements/test.txt # tox -certifi==2024.7.4 +certifi==2024.8.30 # via # -r requirements/test.txt # requests @@ -111,7 +106,6 @@ cryptography==43.0.0 # via # -r requirements/test.txt # pyjwt - # secretstorage # social-auth-core ddt==1.7.2 # via -r requirements/test.txt @@ -255,7 +249,7 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/test.txt edx-event-bus-redis==0.5.0 # via -r requirements/test.txt -edx-lint==5.3.7 +edx-lint==5.4.0 # via -r requirements/test.txt edx-opaque-keys[django]==2.10.0 # via @@ -281,7 +275,7 @@ exceptiongroup==1.2.2 # pytest factory-boy==3.3.1 # via -r requirements/test.txt -faker==27.0.0 +faker==28.0.0 # via # -r requirements/test.txt # factory-boy @@ -310,20 +304,18 @@ future==1.0.0 # via # -r requirements/test.txt # pyjwkest -idna==3.7 +idna==3.8 # via # -r requirements/test.txt # requests imagesize==1.4.1 # via sphinx -importlib-metadata==8.3.0 +importlib-metadata==8.4.0 # via # build # keyring # sphinx # twine -importlib-resources==6.4.3 - # via keyring inflection==0.5.1 # via # -r requirements/test.txt @@ -346,10 +338,6 @@ jaraco-context==6.0.1 # via keyring jaraco-functools==4.0.2 # via keyring -jeepney==0.8.0 - # via - # keyring - # secretstorage jinja2==3.1.4 # via # -r requirements/test.txt @@ -421,11 +409,11 @@ openapi-codec==1.3.2 # via # -r requirements/test.txt # django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via # -r requirements/test.txt # lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/test.txt # edx-event-bus-kafka @@ -443,7 +431,7 @@ packaging==24.1 # pytest # sphinx # tox -pbr==6.0.0 +pbr==6.1.0 # via # -r requirements/test.txt # stevedore @@ -555,7 +543,6 @@ python3-openid==3.2.0 pytz==2024.1 # via # -r requirements/test.txt - # babel # drf-yasg # xblock pyyaml==6.0.2 @@ -598,14 +585,12 @@ restructuredtext-lint==1.4.0 # via doc8 rfc3986==2.0.0 # via twine -rich==13.7.1 +rich==13.8.0 # via twine s3transfer==0.10.2 # via # -r requirements/test.txt # boto3 -secretstorage==3.3.3 - # via keyring semantic-version==2.10.0 # via # -r requirements/test.txt @@ -647,23 +632,23 @@ sphinx==5.3.0 # via # -r requirements/doc.in # edx-sphinx-theme -sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-applehelp==2.0.0 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==2.0.0 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.1.0 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==2.0.0 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==2.0.0 # via sphinx sqlparse==0.5.1 # via # -r requirements/test.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/test.txt # code-annotations @@ -699,13 +684,12 @@ typing-extensions==4.12.2 # astroid # edx-opaque-keys # pylint - # rich uritemplate==4.1.1 # via # -r requirements/test.txt # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # -r requirements/test.txt # botocore @@ -736,10 +720,8 @@ xblock==5.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -zipp==3.20.0 - # via - # importlib-metadata - # importlib-resources +zipp==3.20.1 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index e6c77872..b2f2a43c 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -8,7 +8,7 @@ build==1.2.1 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==8.3.0 +importlib-metadata==8.4.0 # via build packaging==24.1 # via build @@ -24,7 +24,7 @@ tomli==2.0.1 # pip-tools wheel==0.44.0 # via pip-tools -zipp==3.20.0 +zipp==3.20.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index de0f8b8d..a10b0987 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -10,5 +10,5 @@ wheel==0.44.0 # The following packages are considered to be unsafe in a requirements file: pip==24.2 # via -r requirements/pip.in -setuptools==73.0.0 +setuptools==74.0.0 # via -r requirements/pip.in diff --git a/requirements/production.txt b/requirements/production.txt index eb590dbb..a5fb5ce2 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -22,26 +22,21 @@ attrs==24.2.0 # -r requirements/base.txt # lti-consumer-xblock # openedx-events -backports-zoneinfo==0.2.1 - # via - # -r requirements/base.txt - # django - # djangorestframework bleach==6.1.0 # via # -r requirements/base.txt # lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via # -r requirements/base.txt # django-ses # fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # -r requirements/base.txt # boto3 # s3transfer -certifi==2024.7.4 +certifi==2024.8.30 # via # -r requirements/base.txt # requests @@ -139,7 +134,7 @@ django-model-utils==4.5.1 # via -r requirements/base.txt django-rest-swagger==2.2.0 # via -r requirements/base.txt -django-ses==4.1.0 +django-ses==4.1.1 # via -r requirements/production.in django-simple-history==3.7.0 # via -r requirements/base.txt @@ -241,7 +236,7 @@ greenlet==3.0.3 # via gevent gunicorn==23.0.0 # via -r requirements/production.in -idna==3.7 +idna==3.8 # via # -r requirements/base.txt # requests @@ -307,11 +302,11 @@ openapi-codec==1.3.2 # via # -r requirements/base.txt # django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via # -r requirements/base.txt # lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/base.txt # edx-event-bus-kafka @@ -325,7 +320,7 @@ packaging==24.1 # -r requirements/base.txt # drf-yasg # gunicorn -pbr==6.0.0 +pbr==6.1.0 # via # -r requirements/base.txt # stevedore @@ -383,7 +378,6 @@ python3-openid==3.2.0 pytz==2024.1 # via # -r requirements/base.txt - # django-ses # drf-yasg # xblock pyyaml==6.0.2 @@ -453,7 +447,7 @@ sqlparse==0.5.1 # via # -r requirements/base.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/base.txt # code-annotations @@ -473,7 +467,7 @@ uritemplate==4.1.1 # -r requirements/base.txt # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # -r requirements/base.txt # botocore @@ -500,7 +494,7 @@ xblock==5.1.0 # lti-consumer-xblock zope-event==5.0 # via gevent -zope-interface==7.0.1 +zope-interface==7.0.3 # via gevent # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/quality.txt b/requirements/quality.txt index 8c125da8..44bc5de8 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -29,20 +29,15 @@ attrs==24.2.0 # openedx-events backports-tarfile==1.2.0 # via jaraco-context -backports-zoneinfo==0.2.1 - # via - # -r requirements/test.txt - # django - # djangorestframework bleach==6.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via # -r requirements/test.txt # fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # -r requirements/test.txt # boto3 @@ -51,7 +46,7 @@ cachetools==5.5.0 # via # -r requirements/test.txt # tox -certifi==2024.7.4 +certifi==2024.8.30 # via # -r requirements/test.txt # requests @@ -105,7 +100,6 @@ cryptography==43.0.0 # via # -r requirements/test.txt # pyjwt - # secretstorage # social-auth-core ddt==1.7.2 # via -r requirements/test.txt @@ -206,7 +200,7 @@ dnspython==2.6.1 # via # -r requirements/test.txt # pymongo -docutils==0.20.1 +docutils==0.21.2 # via readme-renderer drf-jwt==1.19.2 # via @@ -243,7 +237,7 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/test.txt edx-event-bus-redis==0.5.0 # via -r requirements/test.txt -edx-lint==5.3.7 +edx-lint==5.4.0 # via # -r requirements/quality.in # -r requirements/test.txt @@ -269,7 +263,7 @@ exceptiongroup==1.2.2 # pytest factory-boy==3.3.1 # via -r requirements/test.txt -faker==27.0.0 +faker==28.0.0 # via # -r requirements/test.txt # factory-boy @@ -298,16 +292,14 @@ future==1.0.0 # via # -r requirements/test.txt # pyjwkest -idna==3.7 +idna==3.8 # via # -r requirements/test.txt # requests -importlib-metadata==8.3.0 +importlib-metadata==8.4.0 # via # keyring # twine -importlib-resources==6.4.3 - # via keyring inflection==0.5.1 # via # -r requirements/test.txt @@ -331,10 +323,6 @@ jaraco-context==6.0.1 # via keyring jaraco-functools==4.0.2 # via keyring -jeepney==0.8.0 - # via - # keyring - # secretstorage jinja2==3.1.4 # via # -r requirements/test.txt @@ -405,11 +393,11 @@ openapi-codec==1.3.2 # via # -r requirements/test.txt # django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via # -r requirements/test.txt # lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/test.txt # edx-event-bus-kafka @@ -425,7 +413,7 @@ packaging==24.1 # pyproject-api # pytest # tox -pbr==6.0.0 +pbr==6.1.0 # via # -r requirements/test.txt # stevedore @@ -547,7 +535,7 @@ pyyaml==6.0.2 # edx-django-release-util # responses # xblock -readme-renderer==43.0 +readme-renderer==44.0 # via twine redis==5.0.8 # via @@ -576,14 +564,12 @@ responses==0.25.3 # via -r requirements/test.txt rfc3986==2.0.0 # via twine -rich==13.7.1 +rich==13.8.0 # via twine s3transfer==0.10.2 # via # -r requirements/test.txt # boto3 -secretstorage==3.3.3 - # via keyring semantic-version==2.10.0 # via # -r requirements/test.txt @@ -624,7 +610,7 @@ sqlparse==0.5.1 # via # -r requirements/test.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/test.txt # code-annotations @@ -657,13 +643,12 @@ typing-extensions==4.12.2 # astroid # edx-opaque-keys # pylint - # rich uritemplate==4.1.1 # via # -r requirements/test.txt # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # -r requirements/test.txt # botocore @@ -694,10 +679,8 @@ xblock==5.1.0 # via # -r requirements/test.txt # lti-consumer-xblock -zipp==3.20.0 - # via - # importlib-metadata - # importlib-resources +zipp==3.20.1 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements/test.txt b/requirements/test.txt index 7bfce1b4..93660e45 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -26,27 +26,22 @@ attrs==24.2.0 # -r requirements/base.txt # lti-consumer-xblock # openedx-events -backports-zoneinfo==0.2.1 - # via - # -r requirements/base.txt - # django - # djangorestframework bleach==6.1.0 # via # -r requirements/base.txt # lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via # -r requirements/base.txt # fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # -r requirements/base.txt # boto3 # s3transfer cachetools==5.5.0 # via tox -certifi==2024.7.4 +certifi==2024.8.30 # via # -r requirements/base.txt # requests @@ -225,7 +220,7 @@ edx-event-bus-kafka==5.8.1 # via -r requirements/base.txt edx-event-bus-redis==0.5.0 # via -r requirements/base.txt -edx-lint==5.3.7 +edx-lint==5.4.0 # via -r requirements/test.in edx-opaque-keys[django]==2.10.0 # via @@ -247,7 +242,7 @@ exceptiongroup==1.2.2 # via pytest factory-boy==3.3.1 # via -r requirements/test.in -faker==27.0.0 +faker==28.0.0 # via factory-boy fastavro==1.9.5 # via @@ -273,7 +268,7 @@ future==1.0.0 # via # -r requirements/base.txt # pyjwkest -idna==3.7 +idna==3.8 # via # -r requirements/base.txt # requests @@ -345,11 +340,11 @@ openapi-codec==1.3.2 # via # -r requirements/base.txt # django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via # -r requirements/base.txt # lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/base.txt # edx-event-bus-kafka @@ -365,7 +360,7 @@ packaging==24.1 # pyproject-api # pytest # tox -pbr==6.0.0 +pbr==6.1.0 # via # -r requirements/base.txt # stevedore @@ -529,7 +524,7 @@ sqlparse==0.5.1 # via # -r requirements/base.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/base.txt # code-annotations @@ -562,7 +557,7 @@ uritemplate==4.1.1 # -r requirements/base.txt # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # -r requirements/base.txt # botocore diff --git a/requirements/validation.txt b/requirements/validation.txt index 056f4b85..d6522824 100644 --- a/requirements/validation.txt +++ b/requirements/validation.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # # make upgrade @@ -36,23 +36,17 @@ backports-tarfile==1.2.0 # via # -r requirements/quality.txt # jaraco-context -backports-zoneinfo==0.2.1 - # via - # -r requirements/quality.txt - # -r requirements/test.txt - # django - # djangorestframework bleach==6.1.0 # via # -r requirements/quality.txt # -r requirements/test.txt # lti-consumer-xblock -boto3==1.35.1 +boto3==1.35.9 # via # -r requirements/quality.txt # -r requirements/test.txt # fs-s3fs -botocore==1.35.1 +botocore==1.35.9 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -63,7 +57,7 @@ cachetools==5.5.0 # -r requirements/quality.txt # -r requirements/test.txt # tox -certifi==2024.7.4 +certifi==2024.8.30 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -129,7 +123,6 @@ cryptography==43.0.0 # -r requirements/quality.txt # -r requirements/test.txt # pyjwt - # secretstorage # social-auth-core ddt==1.7.2 # via @@ -255,7 +248,7 @@ dnspython==2.6.1 # -r requirements/quality.txt # -r requirements/test.txt # pymongo -docutils==0.20.1 +docutils==0.21.2 # via # -r requirements/quality.txt # readme-renderer @@ -310,7 +303,7 @@ edx-event-bus-redis==0.5.0 # via # -r requirements/quality.txt # -r requirements/test.txt -edx-lint==5.3.7 +edx-lint==5.4.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -345,7 +338,7 @@ factory-boy==3.3.1 # via # -r requirements/quality.txt # -r requirements/test.txt -faker==27.0.0 +faker==28.0.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -382,20 +375,16 @@ future==1.0.0 # -r requirements/quality.txt # -r requirements/test.txt # pyjwkest -idna==3.7 +idna==3.8 # via # -r requirements/quality.txt # -r requirements/test.txt # requests -importlib-metadata==8.3.0 +importlib-metadata==8.4.0 # via # -r requirements/quality.txt # keyring # twine -importlib-resources==6.4.3 - # via - # -r requirements/quality.txt - # keyring inflection==0.5.1 # via # -r requirements/quality.txt @@ -428,11 +417,6 @@ jaraco-functools==4.0.2 # via # -r requirements/quality.txt # keyring -jeepney==0.8.0 - # via - # -r requirements/quality.txt - # keyring - # secretstorage jinja2==3.1.4 # via # -r requirements/quality.txt @@ -529,12 +513,12 @@ openapi-codec==1.3.2 # -r requirements/quality.txt # -r requirements/test.txt # django-rest-swagger -openedx-django-pyfs==3.6.0 +openedx-django-pyfs==3.7.0 # via # -r requirements/quality.txt # -r requirements/test.txt # lti-consumer-xblock -openedx-events==9.11.0 +openedx-events==9.12.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -553,7 +537,7 @@ packaging==24.1 # pyproject-api # pytest # tox -pbr==6.0.0 +pbr==6.1.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -705,7 +689,7 @@ pyyaml==6.0.2 # edx-django-release-util # responses # xblock -readme-renderer==43.0 +readme-renderer==44.0 # via # -r requirements/quality.txt # twine @@ -745,7 +729,7 @@ rfc3986==2.0.0 # via # -r requirements/quality.txt # twine -rich==13.7.1 +rich==13.8.0 # via # -r requirements/quality.txt # twine @@ -754,10 +738,6 @@ s3transfer==0.10.2 # -r requirements/quality.txt # -r requirements/test.txt # boto3 -secretstorage==3.3.3 - # via - # -r requirements/quality.txt - # keyring semantic-version==2.10.0 # via # -r requirements/quality.txt @@ -807,7 +787,7 @@ sqlparse==0.5.1 # -r requirements/quality.txt # -r requirements/test.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -847,14 +827,13 @@ typing-extensions==4.12.2 # astroid # edx-opaque-keys # pylint - # rich uritemplate==4.1.1 # via # -r requirements/quality.txt # -r requirements/test.txt # coreapi # drf-yasg -urllib3==1.26.19 +urllib3==1.26.20 # via # -r requirements/quality.txt # -r requirements/test.txt @@ -892,11 +871,10 @@ xblock==5.1.0 # -r requirements/quality.txt # -r requirements/test.txt # lti-consumer-xblock -zipp==3.20.0 +zipp==3.20.1 # via # -r requirements/quality.txt # importlib-metadata - # importlib-resources # The following packages are considered to be unsafe in a requirements file: # setuptools From 908be84a46c53725a7c2896e7651f44c5c4dfcfa Mon Sep 17 00:00:00 2001 From: Zachary Hancock Date: Tue, 3 Sep 2024 11:30:57 -0400 Subject: [PATCH 6/6] fix: exam start time reset (#314) --- edx_exams/apps/core/api.py | 7 +++++-- edx_exams/apps/core/tests/test_api.py | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/edx_exams/apps/core/api.py b/edx_exams/apps/core/api.py index d5c98791..11aac2ab 100644 --- a/edx_exams/apps/core/api.py +++ b/edx_exams/apps/core/api.py @@ -99,8 +99,11 @@ def update_attempt_status(attempt_id, to_status): if not allowed_to_start: raise ExamIllegalStatusTransition(error_msg) - attempt_obj.start_time = datetime.now(pytz.UTC) - attempt_obj.allowed_time_limit_mins = _calculate_allowed_mins(attempt_obj.user, attempt_obj.exam) + # Once start time, and end time by extension, has been set further transitions to started + # must not update this value + if not attempt_obj.start_time: + attempt_obj.start_time = datetime.now(pytz.UTC) + attempt_obj.allowed_time_limit_mins = _calculate_allowed_mins(attempt_obj.user, attempt_obj.exam) course_key = CourseKey.from_string(attempt_obj.exam.course_id) usage_key = UsageKey.from_string(attempt_obj.exam.content_id) diff --git a/edx_exams/apps/core/tests/test_api.py b/edx_exams/apps/core/tests/test_api.py index 718247ea..299697f7 100644 --- a/edx_exams/apps/core/tests/test_api.py +++ b/edx_exams/apps/core/tests/test_api.py @@ -407,6 +407,21 @@ def test_cannot_start_if_other_attempts_active(self): update_attempt_status(self.exam_attempt.id, ExamAttemptStatus.started) self.assertIn('another exam attempt is currently active!', str(exc.exception)) + def test_ready_to_submit_to_started(self): + """ + Test transition to started after initial start time has been set. This should not + alter the existing start time. + """ + with freeze_time(timezone.now()): + self.exam_attempt.status = ExamAttemptStatus.ready_to_submit + self.exam_attempt.start_time = timezone.now()-timedelta(minutes=10) + self.exam_attempt.allowed_time_limit_mins = 30 + self.exam_attempt.save() + + update_attempt_status(self.exam_attempt.id, ExamAttemptStatus.started) + self.exam_attempt.refresh_from_db() + self.assertEqual(self.exam_attempt.start_time, timezone.now()-timedelta(minutes=10)) + class TestGetAttemptById(ExamsAPITestCase): """