From fc6703e9023ef8b70f1155968522cb19b94da231 Mon Sep 17 00:00:00 2001 From: Vaibhav Gulati Date: Fri, 17 Apr 2026 10:40:08 +0000 Subject: [PATCH 1/2] fix: Devstack provision test fails for analyticsapi+insights+lms --- analyticsdataserver/settings/base.py | 4 +- requirements/base.in | 1 - requirements/base.txt | 75 +++++++++------------- requirements/dev.txt | 77 +++++++++------------- requirements/django.txt | 2 +- requirements/doc.txt | 92 ++++++++++++--------------- requirements/pip.txt | 6 +- requirements/pip_tools.txt | 14 ++-- requirements/production.txt | 87 +++++++++++-------------- requirements/test.txt | 95 ++++++++++++---------------- requirements/tox.txt | 22 ++++--- 11 files changed, 206 insertions(+), 269 deletions(-) diff --git a/analyticsdataserver/settings/base.py b/analyticsdataserver/settings/base.py index 947d7d29..cf426db1 100644 --- a/analyticsdataserver/settings/base.py +++ b/analyticsdataserver/settings/base.py @@ -330,8 +330,8 @@ 'edx_rest_framework_extensions.auth.jwt.authentication.JwtAuthentication', ), - # TODO: Move to OpenAPI https://www.django-rest-framework.org/community/3.10-announcement/#continuing-to-use-coreapi - 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', + # Using OpenAPI schema generation (replaces deprecated coreapi) + 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.openapi.AutoSchema', 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', diff --git a/requirements/base.in b/requirements/base.in index 01c9a557..eb4b8ed6 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -5,7 +5,6 @@ edx-api-doc-tools boto # MIT boto3 -coreapi Django # BSD License django-countries # MIT python-memcached # Python Software Foundation License v2 diff --git a/requirements/base.txt b/requirements/base.txt index 39cfb556..8fafa4cf 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,38 +4,34 @@ # # make upgrade # -asgiref==3.11.0 +asgiref==3.11.1 # via # django # django-cors-headers # django-countries boto==2.49.0 # via -r requirements/base.in -boto3==1.42.4 +boto3==1.42.90 # via -r requirements/base.in -botocore==1.42.4 +botocore==1.42.90 # via # boto3 # s3transfer -certifi==2025.11.12 +certifi==2026.2.25 # via requests cffi==2.0.0 # via # cryptography # pynacl -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.1 +click==8.3.2 # via edx-django-utils -coreapi==2.3.3 - # via -r requirements/base.in -coreschema==0.0.4 - # via coreapi -cryptography==46.0.3 +cryptography==46.0.7 # via # django-fernet-fields-v2 # pyjwt -django==4.2.27 +django==4.2.30 # via # -c requirements/constraints.txt # -r requirements/base.in @@ -79,7 +75,7 @@ django-waffle==5.0.0 # via # edx-django-utils # edx-drf-extensions -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.in # djangorestframework-csv @@ -97,9 +93,9 @@ dnspython==2.6.1 # pymongo drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.in edx-ccx-keys==2.0.2 # via -r requirements/base.in @@ -116,23 +112,23 @@ edx-drf-extensions==10.6.0 # -r requirements/base.in # edx-enterprise-data # edx-rbac -edx-enterprise-data==10.21.16 +edx-enterprise-data==10.22.0 # via -r requirements/base.in -edx-opaque-keys==3.0.0 +edx-opaque-keys==4.0.0 # via # -r requirements/base.in # edx-ccx-keys # edx-drf-extensions # edx-enterprise-data -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via edx-enterprise-data -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/base.in # edx-enterprise-data factory-boy==3.3.3 # via edx-enterprise-data -faker==38.2.0 +faker==40.13.0 # via factory-boy html5lib==1.1 # via -r requirements/base.in @@ -140,52 +136,45 @@ idna==3.11 # via requests inflection==0.5.1 # via drf-yasg -itypes==1.2.0 - # via coreapi -jinja2==3.1.6 - # via coreschema -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore -markdown==3.10 +markdown==3.10.2 # via -r requirements/base.in -markupsafe==3.0.3 - # via jinja2 mysql-connector-python==9.5.0 # via edx-enterprise-data ordered-set==4.1.0 # via -r requirements/base.in -packaging==25.0 +packaging==26.1 # via drf-yasg -psutil==7.1.3 +psutil==7.2.2 # via edx-django-utils -pycparser==2.23 +pycparser==3.0 # via cffi -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # drf-jwt # edx-drf-extensions # edx-rest-api-client pymemcache==4.0.0 # via -r requirements/base.in -pymongo==4.15.5 +pymongo==4.16.0 # via edx-opaque-keys -pynacl==1.6.1 +pynacl==1.6.2 # via edx-django-utils python-dateutil==2.9.0.post0 # via botocore python-memcached==1.62 # via -r requirements/base.in -pytz==2025.2 +pytz==2026.1.post1 # via drf-yasg pyyaml==6.0.3 # via # drf-yasg # edx-django-release-util -requests==2.32.5 +requests==2.33.1 # via - # coreapi # edx-drf-extensions # edx-enterprise-data # edx-rest-api-client @@ -202,24 +191,20 @@ six==1.17.0 # edx-rbac # html5lib # python-dateutil -sqlparse==0.5.4 +sqlparse==0.5.5 # via django -stevedore==5.6.0 +stevedore==5.7.0 # via # edx-django-utils # edx-opaque-keys -tqdm==4.67.1 +tqdm==4.67.3 # via -r requirements/base.in typing-extensions==4.15.0 # via # django-countries # edx-opaque-keys -tzdata==2025.2 - # via faker uritemplate==4.2.0 - # via - # coreapi - # drf-yasg + # via drf-yasg urllib3==1.26.20 # via # -c requirements/constraints.txt diff --git a/requirements/dev.txt b/requirements/dev.txt index 585d0846..31741fcb 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,38 +4,34 @@ # # make upgrade # -asgiref==3.11.0 +asgiref==3.11.1 # via # django # django-cors-headers # django-countries boto==2.49.0 # via -r requirements/base.in -boto3==1.42.4 +boto3==1.42.90 # via -r requirements/base.in -botocore==1.42.4 +botocore==1.42.90 # via # boto3 # s3transfer -certifi==2025.11.12 +certifi==2026.2.25 # via requests cffi==2.0.0 # via # cryptography # pynacl -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.1 +click==8.3.2 # via edx-django-utils -coreapi==2.3.3 - # via -r requirements/base.in -coreschema==0.0.4 - # via coreapi -cryptography==46.0.3 +cryptography==46.0.7 # via # django-fernet-fields-v2 # pyjwt -django==4.2.27 +django==4.2.30 # via # -c requirements/constraints.txt # -r requirements/base.in @@ -79,7 +75,7 @@ django-waffle==5.0.0 # via # edx-django-utils # edx-drf-extensions -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.in # djangorestframework-csv @@ -97,9 +93,9 @@ dnspython==2.6.1 # pymongo drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.in edx-ccx-keys==2.0.2 # via -r requirements/base.in @@ -116,23 +112,23 @@ edx-drf-extensions==10.6.0 # -r requirements/base.in # edx-enterprise-data # edx-rbac -edx-enterprise-data==10.21.16 +edx-enterprise-data==10.22.0 # via -r requirements/base.in -edx-opaque-keys==3.0.0 +edx-opaque-keys==4.0.0 # via # -r requirements/base.in # edx-ccx-keys # edx-drf-extensions # edx-enterprise-data -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via edx-enterprise-data -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/base.in # edx-enterprise-data factory-boy==3.3.3 # via edx-enterprise-data -faker==38.2.0 +faker==40.13.0 # via factory-boy html5lib==1.1 # via -r requirements/base.in @@ -140,54 +136,47 @@ idna==3.11 # via requests inflection==0.5.1 # via drf-yasg -itypes==1.2.0 - # via coreapi -jinja2==3.1.6 - # via coreschema -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore -markdown==3.10 +markdown==3.10.2 # via -r requirements/base.in -markupsafe==3.0.3 - # via jinja2 mysql-connector-python==9.5.0 # via edx-enterprise-data -mysqlclient==2.2.7 +mysqlclient==2.2.8 # via -r requirements/dev.in ordered-set==4.1.0 # via -r requirements/base.in -packaging==25.0 +packaging==26.1 # via drf-yasg -psutil==7.1.3 +psutil==7.2.2 # via edx-django-utils -pycparser==2.23 +pycparser==3.0 # via cffi -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # drf-jwt # edx-drf-extensions # edx-rest-api-client pymemcache==4.0.0 # via -r requirements/base.in -pymongo==4.15.5 +pymongo==4.16.0 # via edx-opaque-keys -pynacl==1.6.1 +pynacl==1.6.2 # via edx-django-utils python-dateutil==2.9.0.post0 # via botocore python-memcached==1.62 # via -r requirements/base.in -pytz==2025.2 +pytz==2026.1.post1 # via drf-yasg pyyaml==6.0.3 # via # drf-yasg # edx-django-release-util -requests==2.32.5 +requests==2.33.1 # via - # coreapi # edx-drf-extensions # edx-enterprise-data # edx-rest-api-client @@ -204,24 +193,20 @@ six==1.17.0 # edx-rbac # html5lib # python-dateutil -sqlparse==0.5.4 +sqlparse==0.5.5 # via django -stevedore==5.6.0 +stevedore==5.7.0 # via # edx-django-utils # edx-opaque-keys -tqdm==4.67.1 +tqdm==4.67.3 # via -r requirements/base.in typing-extensions==4.15.0 # via # django-countries # edx-opaque-keys -tzdata==2025.2 - # via faker uritemplate==4.2.0 - # via - # coreapi - # drf-yasg + # via drf-yasg urllib3==1.26.20 # via # -c requirements/constraints.txt diff --git a/requirements/django.txt b/requirements/django.txt index 36d06b29..abdda20d 100644 --- a/requirements/django.txt +++ b/requirements/django.txt @@ -1 +1 @@ -django==4.2.27 +django==4.2.30 diff --git a/requirements/doc.txt b/requirements/doc.txt index c2ce7f8a..6f8e76d3 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -8,12 +8,12 @@ accessible-pygments==0.0.5 # via pydata-sphinx-theme alabaster==1.0.0 # via sphinx -asgiref==3.11.0 +asgiref==3.11.1 # via # django # django-cors-headers # django-countries -babel==2.17.0 +babel==2.18.0 # via # pydata-sphinx-theme # sphinx @@ -21,31 +21,27 @@ beautifulsoup4==4.14.3 # via pydata-sphinx-theme boto==2.49.0 # via -r requirements/base.in -boto3==1.42.4 +boto3==1.42.90 # via -r requirements/base.in -botocore==1.42.4 +botocore==1.42.90 # via # boto3 # s3transfer -certifi==2025.11.12 +certifi==2026.2.25 # via requests cffi==2.0.0 # via # cryptography # pynacl -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.1 +click==8.3.2 # via edx-django-utils -coreapi==2.3.3 - # via -r requirements/base.in -coreschema==0.0.4 - # via coreapi -cryptography==46.0.3 +cryptography==46.0.7 # via # django-fernet-fields-v2 # pyjwt -django==4.2.27 +django==4.2.30 # via # -c requirements/constraints.txt # -r requirements/base.in @@ -89,7 +85,7 @@ django-waffle==5.0.0 # via # edx-django-utils # edx-drf-extensions -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.in # djangorestframework-csv @@ -105,15 +101,15 @@ dnspython==2.6.1 # via # -c requirements/constraints.txt # pymongo -docutils==0.22.3 +docutils==0.22.4 # via # pydata-sphinx-theme # sphinx drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.in edx-ccx-keys==2.0.2 # via -r requirements/base.in @@ -130,43 +126,39 @@ edx-drf-extensions==10.6.0 # -r requirements/base.in # edx-enterprise-data # edx-rbac -edx-enterprise-data==10.21.16 +edx-enterprise-data==10.22.0 # via -r requirements/base.in -edx-opaque-keys==3.0.0 +edx-opaque-keys==4.0.0 # via # -r requirements/base.in # edx-ccx-keys # edx-drf-extensions # edx-enterprise-data -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via edx-enterprise-data -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/base.in # edx-enterprise-data factory-boy==3.3.3 # via edx-enterprise-data -faker==38.2.0 +faker==40.13.0 # via factory-boy html5lib==1.1 # via -r requirements/base.in idna==3.11 # via requests -imagesize==1.4.1 +imagesize==2.0.0 # via sphinx inflection==0.5.1 # via drf-yasg -itypes==1.2.0 - # via coreapi jinja2==3.1.6 - # via - # coreschema - # sphinx -jmespath==1.0.1 + # via sphinx +jmespath==1.1.0 # via # boto3 # botocore -markdown==3.10 +markdown==3.10.2 # via -r requirements/base.in markupsafe==3.0.3 # via jinja2 @@ -174,55 +166,53 @@ mysql-connector-python==9.5.0 # via edx-enterprise-data ordered-set==4.1.0 # via -r requirements/base.in -packaging==25.0 +packaging==26.1 # via # drf-yasg - # pydata-sphinx-theme # sphinx path==16.14.0 # via # -c requirements/constraints.txt # -r requirements/doc.in -psutil==7.1.3 +psutil==7.2.2 # via edx-django-utils -pycparser==2.23 +pycparser==3.0 # via cffi -pydata-sphinx-theme==0.15.4 +pydata-sphinx-theme==0.16.1 # via sphinx-book-theme -pygments==2.19.2 +pygments==2.20.0 # via # accessible-pygments # pydata-sphinx-theme # sphinx -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # drf-jwt # edx-drf-extensions # edx-rest-api-client pymemcache==4.0.0 # via -r requirements/base.in -pymongo==4.15.5 +pymongo==4.16.0 # via edx-opaque-keys -pynacl==1.6.1 +pynacl==1.6.2 # via edx-django-utils python-dateutil==2.9.0.post0 # via botocore python-memcached==1.62 # via -r requirements/base.in -pytz==2025.2 +pytz==2026.1.post1 # via drf-yasg pyyaml==6.0.3 # via # drf-yasg # edx-django-release-util -requests==2.32.5 +requests==2.33.1 # via - # coreapi # edx-drf-extensions # edx-enterprise-data # edx-rest-api-client # sphinx -roman-numerals==3.1.0 +roman-numerals==4.1.0 # via sphinx rules==3.5 # via edx-enterprise-data @@ -239,14 +229,14 @@ six==1.17.0 # python-dateutil snowballstemmer==3.0.1 # via sphinx -soupsieve==2.8 +soupsieve==2.8.3 # via beautifulsoup4 sphinx==9.0.4 # via # -r requirements/doc.in # pydata-sphinx-theme # sphinx-book-theme -sphinx-book-theme==1.1.4 +sphinx-book-theme==1.2.0 # via -r requirements/doc.in sphinxcontrib-applehelp==2.0.0 # via sphinx @@ -260,13 +250,13 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlparse==0.5.4 +sqlparse==0.5.5 # via django -stevedore==5.6.0 +stevedore==5.7.0 # via # edx-django-utils # edx-opaque-keys -tqdm==4.67.1 +tqdm==4.67.3 # via -r requirements/base.in typing-extensions==4.15.0 # via @@ -274,12 +264,8 @@ typing-extensions==4.15.0 # django-countries # edx-opaque-keys # pydata-sphinx-theme -tzdata==2025.2 - # via faker uritemplate==4.2.0 - # via - # coreapi - # drf-yasg + # via drf-yasg urllib3==1.26.20 # via # -c requirements/constraints.txt diff --git a/requirements/pip.txt b/requirements/pip.txt index 24903b33..66b0e5e3 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,7 +4,9 @@ # # pip-compile --allow-unsafe --output-file=requirements/pip.txt requirements/pip.in # -wheel==0.45.1 +packaging==26.1 + # via wheel +wheel==0.46.3 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: @@ -12,5 +14,5 @@ pip==24.2 # via # -c requirements/constraints.txt # -r requirements/pip.in -setuptools==80.9.0 +setuptools==82.0.1 # via -r requirements/pip.in diff --git a/requirements/pip_tools.txt b/requirements/pip_tools.txt index 31d363b6..1a286184 100644 --- a/requirements/pip_tools.txt +++ b/requirements/pip_tools.txt @@ -4,13 +4,15 @@ # # make upgrade # -build==1.3.0 +build==1.4.3 # via pip-tools -click==8.3.1 +click==8.3.2 # via pip-tools -packaging==25.0 - # via build -pip-tools==7.5.2 +packaging==26.1 + # via + # build + # wheel +pip-tools==7.5.3 # via -r requirements/pip_tools.in pyproject-hooks==1.2.0 # via @@ -18,7 +20,7 @@ pyproject-hooks==1.2.0 # pip-tools six==1.17.0 # via -r requirements/pip_tools.in -wheel==0.45.1 +wheel==0.46.3 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/production.txt b/requirements/production.txt index c2b9896e..b4c4f652 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -4,38 +4,34 @@ # # make upgrade # -asgiref==3.11.0 +asgiref==3.11.1 # via # django # django-cors-headers # django-countries boto==2.49.0 # via -r requirements/base.in -boto3==1.42.4 +boto3==1.42.90 # via -r requirements/base.in -botocore==1.42.4 +botocore==1.42.90 # via # boto3 # s3transfer -certifi==2025.11.12 +certifi==2026.2.25 # via requests cffi==2.0.0 # via # cryptography # pynacl -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.1 +click==8.3.2 # via edx-django-utils -coreapi==2.3.3 - # via -r requirements/base.in -coreschema==0.0.4 - # via coreapi -cryptography==46.0.3 +cryptography==46.0.7 # via # django-fernet-fields-v2 # pyjwt -django==4.2.27 +django==4.2.30 # via # -c requirements/constraints.txt # -r requirements/base.in @@ -79,7 +75,7 @@ django-waffle==5.0.0 # via # edx-django-utils # edx-drf-extensions -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.in # djangorestframework-csv @@ -97,9 +93,9 @@ dnspython==2.6.1 # pymongo drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.in edx-ccx-keys==2.0.2 # via -r requirements/base.in @@ -116,29 +112,29 @@ edx-drf-extensions==10.6.0 # -r requirements/base.in # edx-enterprise-data # edx-rbac -edx-enterprise-data==10.21.16 +edx-enterprise-data==10.22.0 # via -r requirements/base.in -edx-opaque-keys==3.0.0 +edx-opaque-keys==4.0.0 # via # -r requirements/base.in # edx-ccx-keys # edx-drf-extensions # edx-enterprise-data -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via edx-enterprise-data -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/base.in # edx-enterprise-data factory-boy==3.3.3 # via edx-enterprise-data -faker==38.2.0 +faker==40.13.0 # via factory-boy -gevent==25.9.1 +gevent==26.4.0 # via -r requirements/production.in -greenlet==3.3.0 +greenlet==3.4.0 # via gevent -gunicorn==23.0.0 +gunicorn==25.3.0 # via -r requirements/production.in html5lib==1.1 # via -r requirements/base.in @@ -146,61 +142,54 @@ idna==3.11 # via requests inflection==0.5.1 # via drf-yasg -itypes==1.2.0 - # via coreapi -jinja2==3.1.6 - # via coreschema -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore -markdown==3.10 +markdown==3.10.2 # via -r requirements/base.in -markupsafe==3.0.3 - # via jinja2 mysql-connector-python==9.5.0 # via edx-enterprise-data -mysqlclient==2.2.7 +mysqlclient==2.2.8 # via -r requirements/production.in -newrelic==11.1.0 +newrelic==12.1.0 # via -r requirements/production.in ordered-set==4.1.0 # via -r requirements/base.in -packaging==25.0 +packaging==26.1 # via # drf-yasg # gunicorn path-py==8.2.1 # via -r requirements/production.in -psutil==7.1.3 +psutil==7.2.2 # via edx-django-utils -pycparser==2.23 +pycparser==3.0 # via cffi -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # drf-jwt # edx-drf-extensions # edx-rest-api-client pymemcache==4.0.0 # via -r requirements/base.in -pymongo==4.15.5 +pymongo==4.16.0 # via edx-opaque-keys -pynacl==1.6.1 +pynacl==1.6.2 # via edx-django-utils python-dateutil==2.9.0.post0 # via botocore python-memcached==1.62 # via -r requirements/base.in -pytz==2025.2 +pytz==2026.1.post1 # via drf-yasg pyyaml==6.0.3 # via # -r requirements/production.in # drf-yasg # edx-django-release-util -requests==2.32.5 +requests==2.33.1 # via - # coreapi # edx-drf-extensions # edx-enterprise-data # edx-rest-api-client @@ -217,24 +206,20 @@ six==1.17.0 # edx-rbac # html5lib # python-dateutil -sqlparse==0.5.4 +sqlparse==0.5.5 # via django -stevedore==5.6.0 +stevedore==5.7.0 # via # edx-django-utils # edx-opaque-keys -tqdm==4.67.1 +tqdm==4.67.3 # via -r requirements/base.in typing-extensions==4.15.0 # via # django-countries # edx-opaque-keys -tzdata==2025.2 - # via faker uritemplate==4.2.0 - # via - # coreapi - # drf-yasg + # via drf-yasg urllib3==1.26.20 # via # -c requirements/constraints.txt @@ -245,7 +230,7 @@ webencodings==0.5.1 # via html5lib zope-event==6.1 # via gevent -zope-interface==8.1.1 +zope-interface==8.3 # via gevent # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/test.txt b/requirements/test.txt index c1ec0a6b..47197d24 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,7 +4,7 @@ # # make upgrade # -asgiref==3.11.0 +asgiref==3.11.1 # via # django # django-cors-headers @@ -13,41 +13,37 @@ astroid==3.3.11 # via pylint boto==2.49.0 # via -r requirements/base.in -boto3==1.42.4 +boto3==1.42.90 # via -r requirements/base.in -botocore==1.42.4 +botocore==1.42.90 # via # boto3 # s3transfer -certifi==2025.11.12 +certifi==2026.2.25 # via requests cffi==2.0.0 # via # cryptography # pynacl -chardet==5.2.0 +chardet==7.4.3 # via diff-cover -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.1 +click==8.3.2 # via edx-django-utils -coreapi==2.3.3 - # via -r requirements/base.in -coreschema==0.0.4 - # via coreapi -coverage[toml]==7.12.0 +coverage[toml]==7.13.5 # via # -r requirements/test.in # pytest-cov -cryptography==46.0.3 +cryptography==46.0.7 # via # django-fernet-fields-v2 # pyjwt ddt==1.7.2 # via -r requirements/test.in -diff-cover==9.7.2 +diff-cover==10.2.0 # via -r requirements/test.in -dill==0.4.0 +dill==0.4.1 # via pylint # via # -c requirements/constraints.txt @@ -94,7 +90,7 @@ django-waffle==5.0.0 # via # edx-django-utils # edx-drf-extensions -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.in # djangorestframework-csv @@ -112,9 +108,9 @@ dnspython==2.6.1 # pymongo drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.in edx-ccx-keys==2.0.2 # via -r requirements/base.in @@ -131,23 +127,23 @@ edx-drf-extensions==10.6.0 # -r requirements/base.in # edx-enterprise-data # edx-rbac -edx-enterprise-data==10.21.16 +edx-enterprise-data==10.22.0 # via -r requirements/base.in -edx-opaque-keys==3.0.0 +edx-opaque-keys==4.0.0 # via # -r requirements/base.in # edx-ccx-keys # edx-drf-extensions # edx-enterprise-data -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via edx-enterprise-data -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/base.in # edx-enterprise-data factory-boy==3.3.3 # via edx-enterprise-data -faker==38.2.0 +faker==40.13.0 # via factory-boy freezegun==1.5.5 # via -r requirements/test.in @@ -161,17 +157,13 @@ iniconfig==2.3.0 # via pytest isort==6.1.0 # via pylint -itypes==1.2.0 - # via coreapi jinja2==3.1.6 - # via - # coreschema - # diff-cover -jmespath==1.0.1 + # via diff-cover +jmespath==1.1.0 # via # boto3 # botocore -markdown==3.10 +markdown==3.10.2 # via -r requirements/base.in markupsafe==3.0.3 # via jinja2 @@ -181,30 +173,30 @@ mysql-connector-python==9.5.0 # via edx-enterprise-data ordered-set==4.1.0 # via -r requirements/base.in -packaging==25.0 +packaging==26.1 # via # drf-yasg # pytest -platformdirs==4.5.1 +platformdirs==4.9.6 # via pylint pluggy==1.6.0 # via # diff-cover # pytest # pytest-cov -psutil==7.1.3 +psutil==7.2.2 # via edx-django-utils pycodestyle==2.14.0 # via -r requirements/test.in -pycparser==2.23 +pycparser==3.0 # via cffi pydocstyle==6.3.0 # via -r requirements/test.in -pygments==2.19.2 +pygments==2.20.0 # via # diff-cover # pytest -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # drf-jwt # edx-drf-extensions @@ -215,17 +207,17 @@ pylint==3.3.8 # -r requirements/test.in pymemcache==4.0.0 # via -r requirements/base.in -pymongo==4.15.5 +pymongo==4.16.0 # via edx-opaque-keys -pynacl==1.6.1 +pynacl==1.6.2 # via edx-django-utils -pytest==9.0.2 +pytest==9.0.3 # via # pytest-cov # pytest-django -pytest-cov==7.0.0 +pytest-cov==7.1.0 # via -r requirements/test.in -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via @@ -233,7 +225,7 @@ python-dateutil==2.9.0.post0 # freezegun python-memcached==1.62 # via -r requirements/base.in -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/test.in # drf-yasg @@ -242,14 +234,13 @@ pyyaml==6.0.3 # drf-yasg # edx-django-release-util # responses -requests==2.32.5 +requests==2.33.1 # via - # coreapi # edx-drf-extensions # edx-enterprise-data # edx-rest-api-client # responses -responses==0.25.8 +responses==0.26.0 # via -r requirements/test.in rules==3.5 # via edx-enterprise-data @@ -266,26 +257,22 @@ six==1.17.0 # python-dateutil snowballstemmer==3.0.1 # via pydocstyle -sqlparse==0.5.4 +sqlparse==0.5.5 # via django -stevedore==5.6.0 +stevedore==5.7.0 # via # edx-django-utils # edx-opaque-keys -tomlkit==0.13.3 +tomlkit==0.14.0 # via pylint -tqdm==4.67.1 +tqdm==4.67.3 # via -r requirements/base.in typing-extensions==4.15.0 # via # django-countries # edx-opaque-keys -tzdata==2025.2 - # via faker uritemplate==4.2.0 - # via - # coreapi - # drf-yasg + # via drf-yasg urllib3==1.26.20 # via # -c requirements/constraints.txt diff --git a/requirements/tox.txt b/requirements/tox.txt index 8a502cf9..a83660e1 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -4,31 +4,37 @@ # # make upgrade # -cachetools==6.2.2 - # via tox -chardet==5.2.0 +cachetools==7.0.5 # via tox colorama==0.4.6 # via tox distlib==0.4.0 # via virtualenv -filelock==3.20.0 +filelock==3.28.0 # via + # python-discovery # tox # virtualenv -packaging==25.0 +packaging==26.1 # via # pyproject-api # tox -platformdirs==4.5.1 +platformdirs==4.9.6 # via + # python-discovery # tox # virtualenv pluggy==1.6.0 # via tox pyproject-api==1.10.0 # via tox -tox==4.32.0 +python-discovery==1.2.2 + # via + # tox + # virtualenv +tomli-w==1.2.0 + # via tox +tox==4.53.0 # via -r requirements/tox.in -virtualenv==20.35.4 +virtualenv==21.2.4 # via tox From a42e9e03e114da5f3e7bd3e710c72f79a829c6eb Mon Sep 17 00:00:00 2001 From: Vaibhav Gulati Date: Fri, 17 Apr 2026 19:55:48 +0000 Subject: [PATCH 2/2] fix: Devstack provision test fails for analyticsapi+insights+lms --- analytics_data_api/management/commands/generate_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics_data_api/management/commands/generate_data.py b/analytics_data_api/management/commands/generate_data.py index 9d1ce43c..2aa0e570 100644 --- a/analytics_data_api/management/commands/generate_data.py +++ b/analytics_data_api/management/commands/generate_data.py @@ -239,7 +239,7 @@ def generate_learner_engagement_data(course_id, username, start_date, end_date, num_events = random.randint(0, max_value) if num_events: for _ in range(num_events): - count = random.randint(0, max_value / 20) + count = random.randint(0, max_value // 20) entity_type = metric.split('_', 1)[0] event = metric.split('_', 1)[1] entity_id = f'an-id-{entity_type}-{event}'