diff --git a/html_xblock/__init__.py b/html_xblock/__init__.py
index 31e4f7e2..2ba68769 100644
--- a/html_xblock/__init__.py
+++ b/html_xblock/__init__.py
@@ -1,4 +1,4 @@
"""HTML XBlock module."""
from .html import ExcludedHTML5XBlock, HTML5XBlock
-__version__ = "2.0.0"
+__version__ = "2.0.1"
diff --git a/html_xblock/html.py b/html_xblock/html.py
index b0e5a722..49346dc3 100644
--- a/html_xblock/html.py
+++ b/html_xblock/html.py
@@ -2,7 +2,6 @@
import logging
-import pkg_resources
from django.conf import settings
from web_fragments.fragment import Fragment
from xblock.completable import XBlockCompletionMode
@@ -63,12 +62,6 @@ def get_settings(self):
return {}
- @staticmethod
- def resource_string(path):
- """Handy helper for getting resources from our kit."""
- data = pkg_resources.resource_string(__name__, path)
- return data.decode('utf8')
-
@XBlock.supports('multi_device')
def student_view(self, context=None): # pylint: disable=unused-argument
"""
@@ -77,11 +70,11 @@ def student_view(self, context=None): # pylint: disable=unused-argument
frag = Fragment()
frag.content = xblock_loader.render_django_template('static/html/lms.html', {'self': self})
- frag.add_css(self.resource_string('public/plugins/codesample/css/prism.css'))
- frag.add_javascript(self.resource_string('public/plugins/codesample/js/prism.js'))
+ frag.add_css(self.runtime.local_resource_url('public/plugins/codesample/css/prism.css'))
+ frag.add_javascript(self.runtime.local_resource_url('public/plugins/codesample/js/prism.js'))
if getattr(self.runtime, 'is_author_mode', False):
- frag.add_css(self.resource_string('static/css/html_preview.css'))
+ frag.add_css(self.runtime.local_resource_url('static/css/html_preview.css'))
return frag
@@ -160,7 +153,7 @@ def add_edit_stylesheets(self, frag):
A helper method to add all styles to the fragment necesesary for edit.
:param frag: The fragment that will hold the scripts.
"""
- frag.add_css(self.resource_string('static/css/html_edit.css'))
+ frag.add_css(self.runtime.local_resource_url('static/css/html_edit.css'))
if self.editor == 'raw':
frag.add_css_url(settings.STATIC_URL + 'js/vendor/CodeMirror/codemirror.css')
@@ -172,7 +165,7 @@ def add_edit_scripts(self, frag):
"""
frag.add_javascript_url(settings.STATIC_URL + 'js/vendor/tinymce/js/tinymce/tinymce.full.min.js')
frag.add_javascript_url(settings.STATIC_URL + 'js/vendor/tinymce/js/tinymce/themes/silver/theme.min.js')
- frag.add_javascript(self.resource_string('static/js/html_edit.js'))
+ frag.add_javascript(self.runtime.local_resource_url('static/js/html_edit.js'))
frag.add_javascript(loader.load_unicode('public/studio_edit.js'))
if self.editor == 'raw':
diff --git a/requirements/base.txt b/requirements/base.txt
index d026ab5d..60c386b8 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -6,17 +6,17 @@
#
appdirs==1.4.4
# via fs
-asgiref==3.11.0
+asgiref==3.11.1
# via django
bleach[css]==6.3.0
# via -r requirements/base.in
-boto3==1.42.34
+boto3==1.43.2
# via fs-s3fs
-botocore==1.42.34
+botocore==1.43.2
# via
# boto3
# s3transfer
-django==5.2.10
+django==5.2.13
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -r requirements/base.in
@@ -34,27 +34,27 @@ jmespath==1.1.0
# botocore
lazy==1.6
# via xblock
-lxml==6.0.2
+lxml==6.1.0
# via xblock
-mako==1.3.10
+mako==1.3.12
# via xblock
markupsafe==3.0.3
# via
# mako
# xblock
-openedx-django-pyfs==3.8.0
+openedx-django-pyfs==4.0.0
# via xblock
python-dateutil==2.9.0.post0
# via
# botocore
# xblock
-pytz==2025.2
+pytz==2026.2
# via xblock
pyyaml==6.0.3
# via xblock
-s3transfer==0.16.0
+s3transfer==0.17.0
# via boto3
-simplejson==3.20.2
+simplejson==4.1.1
# via xblock
six==1.17.0
# via
@@ -67,7 +67,7 @@ tinycss2==1.4.0
# via bleach
urllib3==2.6.3
# via botocore
-web-fragments==3.1.0
+web-fragments==4.0.0
# via xblock
webencodings==0.5.1
# via
@@ -75,7 +75,7 @@ webencodings==0.5.1
# tinycss2
webob==1.8.9
# via xblock
-xblock[django]==5.3.0
+xblock[django]==6.1.0
# via -r requirements/base.in
# The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/ci.txt b/requirements/ci.txt
index df31bab0..3cfd85ba 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -6,22 +6,28 @@
#
distlib==0.4.0
# via virtualenv
-filelock==3.20.3
+filelock==3.29.0
# via
+ # python-discovery
# tox
# virtualenv
-packaging==26.0
+packaging==26.2
# via
# pyproject-api
# tox
-platformdirs==4.5.1
+platformdirs==4.9.6
# via
+ # python-discovery
# tox
# virtualenv
pluggy==1.6.0
# via tox
py==1.11.0
# via tox
+python-discovery==1.2.2
+ # via
+ # tox
+ # virtualenv
six==1.17.0
# via tox
tox==3.28.0
@@ -30,5 +36,5 @@ tox==3.28.0
# tox-battery
tox-battery==0.6.2
# via -r requirements/ci.in
-virtualenv==20.36.1
+virtualenv==21.3.0
# via tox
diff --git a/requirements/dev.txt b/requirements/dev.txt
index ad884fb3..99261899 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -12,47 +12,43 @@ arrow==1.4.0
# via
# -r requirements/quality.txt
# cookiecutter
-asgiref==3.11.0
+asgiref==3.11.1
# via
# -r requirements/quality.txt
# django
-astroid==4.0.3
+astroid==4.0.4
# via
# -r requirements/quality.txt
# pylint
# pylint-celery
-binaryornot==0.4.4
+binaryornot==0.6.0
# via
# -r requirements/quality.txt
# cookiecutter
bleach[css]==6.3.0
# via -r requirements/quality.txt
-boto3==1.42.34
+boto3==1.43.2
# via
# -r requirements/quality.txt
# fs-s3fs
-botocore==1.42.34
+botocore==1.43.2
# via
# -r requirements/quality.txt
# boto3
# s3transfer
-build==1.4.0
+build==1.5.0
# via
# -r requirements/pip-tools.txt
# pip-tools
-certifi==2026.1.4
+certifi==2026.4.22
# via
# -r requirements/quality.txt
# requests
-chardet==5.2.0
- # via
- # -r requirements/quality.txt
- # binaryornot
-charset-normalizer==3.4.4
+charset-normalizer==3.4.7
# via
# -r requirements/quality.txt
# requests
-click==8.3.1
+click==8.3.3
# via
# -r requirements/pip-tools.txt
# -r requirements/quality.txt
@@ -65,15 +61,15 @@ click-log==0.4.0
# via
# -r requirements/quality.txt
# edx-lint
-code-annotations==2.3.0
+code-annotations==2.3.2
# via
# -r requirements/quality.txt
# edx-lint
-cookiecutter==2.6.0
+cookiecutter==2.7.1
# via
# -r requirements/quality.txt
# xblock-sdk
-coverage[toml]==7.13.2
+coverage[toml]==7.13.5
# via
# -r requirements/quality.txt
# pytest-cov
@@ -85,20 +81,21 @@ distlib==0.4.0
# via
# -r requirements/ci.txt
# virtualenv
-django==5.2.10
+django==5.2.13
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -r requirements/quality.txt
# edx-i18n-tools
# openedx-django-pyfs
# xblock-sdk
-edx-i18n-tools==1.9.0
+edx-i18n-tools==2.0.0
# via -r requirements/quality.txt
-edx-lint==5.6.0
+edx-lint==6.1.0
# via -r requirements/quality.txt
-filelock==3.20.3
+filelock==3.29.0
# via
# -r requirements/ci.txt
+ # python-discovery
# tox
# virtualenv
fs==2.4.16
@@ -112,7 +109,7 @@ fs-s3fs==1.1.1
# -r requirements/quality.txt
# openedx-django-pyfs
# xblock-sdk
-idna==3.11
+idna==3.13
# via
# -r requirements/quality.txt
# requests
@@ -120,7 +117,7 @@ iniconfig==2.3.0
# via
# -r requirements/quality.txt
# pytest
-isort==7.0.0
+isort==8.0.1
# via
# -r requirements/quality.txt
# pylint
@@ -138,18 +135,18 @@ lazy==1.6
# via
# -r requirements/quality.txt
# xblock
-lxml[html-clean]==6.0.2
+lxml[html-clean]==6.1.0
# via
# -r requirements/quality.txt
# edx-i18n-tools
# lxml-html-clean
# xblock
# xblock-sdk
-lxml-html-clean==0.4.3
+lxml-html-clean==0.4.4
# via
# -r requirements/quality.txt
# lxml
-mako==1.3.10
+mako==1.3.12
# via
# -r requirements/quality.txt
# xblock
@@ -173,11 +170,11 @@ mdurl==0.1.2
# markdown-it-py
mock==5.2.0
# via -r requirements/quality.txt
-openedx-django-pyfs==3.8.0
+openedx-django-pyfs==4.0.0
# via
# -r requirements/quality.txt
# xblock
-packaging==26.0
+packaging==26.2
# via
# -r requirements/ci.txt
# -r requirements/pip-tools.txt
@@ -190,13 +187,14 @@ path==16.16.0
# via
# -r requirements/quality.txt
# edx-i18n-tools
-pip-tools==7.5.2
+pip-tools==7.5.3
# via -r requirements/pip-tools.txt
-platformdirs==4.5.1
+platformdirs==4.9.6
# via
# -r requirements/ci.txt
# -r requirements/quality.txt
# pylint
+ # python-discovery
# virtualenv
pluggy==1.6.0
# via
@@ -217,12 +215,12 @@ pycodestyle==2.14.0
# via -r requirements/quality.txt
pydocstyle==6.3.0
# via -r requirements/quality.txt
-pygments==2.19.2
+pygments==2.20.0
# via
# -r requirements/quality.txt
# pytest
# rich
-pylint==4.0.4
+pylint==4.0.5
# via
# -r requirements/quality.txt
# edx-lint
@@ -251,14 +249,14 @@ pyproject-hooks==1.2.0
# -r requirements/pip-tools.txt
# build
# pip-tools
-pytest==9.0.2
+pytest==9.0.3
# via
# -r requirements/quality.txt
# pytest-cov
# pytest-django
-pytest-cov==7.0.0
+pytest-cov==7.1.0
# via -r requirements/quality.txt
-pytest-django==4.11.1
+pytest-django==4.12.0
# via -r requirements/quality.txt
python-dateutil==2.9.0.post0
# via
@@ -266,12 +264,16 @@ python-dateutil==2.9.0.post0
# arrow
# botocore
# xblock
+python-discovery==1.2.2
+ # via
+ # -r requirements/ci.txt
+ # virtualenv
python-slugify==8.0.4
# via
# -r requirements/quality.txt
# code-annotations
# cookiecutter
-pytz==2025.2
+pytz==2026.2
# via
# -r requirements/quality.txt
# xblock
@@ -282,20 +284,20 @@ pyyaml==6.0.3
# cookiecutter
# edx-i18n-tools
# xblock
-requests==2.32.5
+requests==2.33.1
# via
# -r requirements/quality.txt
# cookiecutter
# xblock-sdk
-rich==14.3.1
+rich==15.0.0
# via
# -r requirements/quality.txt
# cookiecutter
-s3transfer==0.16.0
+s3transfer==0.17.0
# via
# -r requirements/quality.txt
# boto3
-simplejson==3.20.2
+simplejson==4.1.1
# via
# -r requirements/quality.txt
# xblock
@@ -317,7 +319,7 @@ sqlparse==0.5.5
# via
# -r requirements/quality.txt
# django
-stevedore==5.6.0
+stevedore==5.7.0
# via
# -r requirements/quality.txt
# code-annotations
@@ -332,6 +334,7 @@ tinycss2==1.4.0
tomlkit==0.14.0
# via
# -r requirements/quality.txt
+ # edx-lint
# pylint
tox==3.28.0
# via
@@ -339,7 +342,7 @@ tox==3.28.0
# tox-battery
tox-battery==0.6.2
# via -r requirements/ci.txt
-tzdata==2025.3
+tzdata==2026.2
# via
# -r requirements/quality.txt
# arrow
@@ -348,11 +351,11 @@ urllib3==2.6.3
# -r requirements/quality.txt
# botocore
# requests
-virtualenv==20.36.1
+virtualenv==21.3.0
# via
# -r requirements/ci.txt
# tox
-web-fragments==3.1.0
+web-fragments==4.0.0
# via
# -r requirements/quality.txt
# xblock
@@ -367,15 +370,15 @@ webob==1.8.9
# -r requirements/quality.txt
# xblock
# xblock-sdk
-wheel==0.46.3
+wheel==0.47.0
# via
# -r requirements/pip-tools.txt
# pip-tools
-xblock[django]==5.3.0
+xblock[django]==6.1.0
# via
# -r requirements/quality.txt
# xblock-sdk
-xblock-sdk==0.13.0
+xblock-sdk==0.14.0
# via -r requirements/quality.txt
# The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt
index 29a9eb33..eb6eb532 100644
--- a/requirements/pip-tools.txt
+++ b/requirements/pip-tools.txt
@@ -4,21 +4,21 @@
#
# make upgrade
#
-build==1.4.0
+build==1.5.0
# via pip-tools
-click==8.3.1
+click==8.3.3
# via pip-tools
-packaging==26.0
+packaging==26.2
# via
# build
# wheel
-pip-tools==7.5.2
+pip-tools==7.5.3
# via -r requirements/pip-tools.in
pyproject-hooks==1.2.0
# via
# build
# pip-tools
-wheel==0.46.3
+wheel==0.47.0
# via pip-tools
# The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/pip.txt b/requirements/pip.txt
index 9fbfa816..de87c336 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -4,13 +4,13 @@
#
# make upgrade
#
-packaging==26.0
+packaging==26.2
# via wheel
-wheel==0.46.3
+wheel==0.47.0
# via -r requirements/pip.in
# The following packages are considered to be unsafe in a requirements file:
-pip==25.3
+pip==26.1
# via -r requirements/pip.in
-setuptools==80.10.2
+setuptools==82.0.1
# via -r requirements/pip.in
diff --git a/requirements/quality.txt b/requirements/quality.txt
index 184951b0..82f44180 100644
--- a/requirements/quality.txt
+++ b/requirements/quality.txt
@@ -12,42 +12,38 @@ arrow==1.4.0
# via
# -r requirements/test.txt
# cookiecutter
-asgiref==3.11.0
+asgiref==3.11.1
# via
# -r requirements/test.txt
# django
-astroid==4.0.3
+astroid==4.0.4
# via
# pylint
# pylint-celery
-binaryornot==0.4.4
+binaryornot==0.6.0
# via
# -r requirements/test.txt
# cookiecutter
bleach[css]==6.3.0
# via -r requirements/test.txt
-boto3==1.42.34
+boto3==1.43.2
# via
# -r requirements/test.txt
# fs-s3fs
-botocore==1.42.34
+botocore==1.43.2
# via
# -r requirements/test.txt
# boto3
# s3transfer
-certifi==2026.1.4
+certifi==2026.4.22
# via
# -r requirements/test.txt
# requests
-chardet==5.2.0
- # via
- # -r requirements/test.txt
- # binaryornot
-charset-normalizer==3.4.4
+charset-normalizer==3.4.7
# via
# -r requirements/test.txt
# requests
-click==8.3.1
+click==8.3.3
# via
# -r requirements/test.txt
# click-log
@@ -56,30 +52,30 @@ click==8.3.1
# edx-lint
click-log==0.4.0
# via edx-lint
-code-annotations==2.3.0
+code-annotations==2.3.2
# via
# -r requirements/test.txt
# edx-lint
-cookiecutter==2.6.0
+cookiecutter==2.7.1
# via
# -r requirements/test.txt
# xblock-sdk
-coverage[toml]==7.13.2
+coverage[toml]==7.13.5
# via
# -r requirements/test.txt
# pytest-cov
dill==0.4.1
# via pylint
-django==5.2.10
+django==5.2.13
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
# -r requirements/test.txt
# edx-i18n-tools
# openedx-django-pyfs
# xblock-sdk
-edx-i18n-tools==1.9.0
+edx-i18n-tools==2.0.0
# via -r requirements/test.txt
-edx-lint==5.6.0
+edx-lint==6.1.0
# via -r requirements/quality.in
fs==2.4.16
# via
@@ -92,7 +88,7 @@ fs-s3fs==1.1.1
# -r requirements/test.txt
# openedx-django-pyfs
# xblock-sdk
-idna==3.11
+idna==3.13
# via
# -r requirements/test.txt
# requests
@@ -100,7 +96,7 @@ iniconfig==2.3.0
# via
# -r requirements/test.txt
# pytest
-isort==7.0.0
+isort==8.0.1
# via
# -r requirements/quality.in
# pylint
@@ -118,18 +114,18 @@ lazy==1.6
# via
# -r requirements/test.txt
# xblock
-lxml[html-clean]==6.0.2
+lxml[html-clean]==6.1.0
# via
# -r requirements/test.txt
# edx-i18n-tools
# lxml-html-clean
# xblock
# xblock-sdk
-lxml-html-clean==0.4.3
+lxml-html-clean==0.4.4
# via
# -r requirements/test.txt
# lxml
-mako==1.3.10
+mako==1.3.12
# via
# -r requirements/test.txt
# xblock
@@ -151,11 +147,11 @@ mdurl==0.1.2
# markdown-it-py
mock==5.2.0
# via -r requirements/test.txt
-openedx-django-pyfs==3.8.0
+openedx-django-pyfs==4.0.0
# via
# -r requirements/test.txt
# xblock
-packaging==26.0
+packaging==26.2
# via
# -r requirements/test.txt
# pytest
@@ -163,7 +159,7 @@ path==16.16.0
# via
# -r requirements/test.txt
# edx-i18n-tools
-platformdirs==4.5.1
+platformdirs==4.9.6
# via pylint
pluggy==1.6.0
# via
@@ -178,12 +174,12 @@ pycodestyle==2.14.0
# via -r requirements/quality.in
pydocstyle==6.3.0
# via -r requirements/quality.in
-pygments==2.19.2
+pygments==2.20.0
# via
# -r requirements/test.txt
# pytest
# rich
-pylint==4.0.4
+pylint==4.0.5
# via
# edx-lint
# pylint-celery
@@ -201,14 +197,14 @@ pypng==0.20220715.0
# via
# -r requirements/test.txt
# xblock-sdk
-pytest==9.0.2
+pytest==9.0.3
# via
# -r requirements/test.txt
# pytest-cov
# pytest-django
-pytest-cov==7.0.0
+pytest-cov==7.1.0
# via -r requirements/test.txt
-pytest-django==4.11.1
+pytest-django==4.12.0
# via -r requirements/test.txt
python-dateutil==2.9.0.post0
# via
@@ -221,7 +217,7 @@ python-slugify==8.0.4
# -r requirements/test.txt
# code-annotations
# cookiecutter
-pytz==2025.2
+pytz==2026.2
# via
# -r requirements/test.txt
# xblock
@@ -232,20 +228,20 @@ pyyaml==6.0.3
# cookiecutter
# edx-i18n-tools
# xblock
-requests==2.32.5
+requests==2.33.1
# via
# -r requirements/test.txt
# cookiecutter
# xblock-sdk
-rich==14.3.1
+rich==15.0.0
# via
# -r requirements/test.txt
# cookiecutter
-s3transfer==0.16.0
+s3transfer==0.17.0
# via
# -r requirements/test.txt
# boto3
-simplejson==3.20.2
+simplejson==4.1.1
# via
# -r requirements/test.txt
# xblock
@@ -263,7 +259,7 @@ sqlparse==0.5.5
# via
# -r requirements/test.txt
# django
-stevedore==5.6.0
+stevedore==5.7.0
# via
# -r requirements/test.txt
# code-annotations
@@ -276,8 +272,10 @@ tinycss2==1.4.0
# -r requirements/test.txt
# bleach
tomlkit==0.14.0
- # via pylint
-tzdata==2025.3
+ # via
+ # edx-lint
+ # pylint
+tzdata==2026.2
# via
# -r requirements/test.txt
# arrow
@@ -286,7 +284,7 @@ urllib3==2.6.3
# -r requirements/test.txt
# botocore
# requests
-web-fragments==3.1.0
+web-fragments==4.0.0
# via
# -r requirements/test.txt
# xblock
@@ -301,11 +299,11 @@ webob==1.8.9
# -r requirements/test.txt
# xblock
# xblock-sdk
-xblock[django]==5.3.0
+xblock[django]==6.1.0
# via
# -r requirements/test.txt
# xblock-sdk
-xblock-sdk==0.13.0
+xblock-sdk==0.14.0
# via -r requirements/test.txt
# The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/test.txt b/requirements/test.txt
index 3099454a..bc15c2c4 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -10,37 +10,35 @@ appdirs==1.4.4
# fs
arrow==1.4.0
# via cookiecutter
-asgiref==3.11.0
+asgiref==3.11.1
# via
# -r requirements/base.txt
# django
-binaryornot==0.4.4
+binaryornot==0.6.0
# via cookiecutter
# via -r requirements/base.txt
-boto3==1.42.34
+boto3==1.43.2
# via
# -r requirements/base.txt
# fs-s3fs
-botocore==1.42.34
+botocore==1.43.2
# via
# -r requirements/base.txt
# boto3
# s3transfer
-certifi==2026.1.4
+certifi==2026.4.22
# via requests
-chardet==5.2.0
- # via binaryornot
-charset-normalizer==3.4.4
+charset-normalizer==3.4.7
# via requests
-click==8.3.1
+click==8.3.3
# via
# code-annotations
# cookiecutter
-code-annotations==2.3.0
+code-annotations==2.3.2
# via -r requirements/test.in
-cookiecutter==2.6.0
+cookiecutter==2.7.1
# via xblock-sdk
-coverage[toml]==7.13.2
+coverage[toml]==7.13.5
# via pytest-cov
# via
# -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
@@ -48,7 +46,7 @@ coverage[toml]==7.13.2
# edx-i18n-tools
# openedx-django-pyfs
# xblock-sdk
-edx-i18n-tools==1.9.0
+edx-i18n-tools==2.0.0
# via -r requirements/test.in
fs==2.4.16
# via
@@ -61,7 +59,7 @@ fs-s3fs==1.1.1
# -r requirements/base.txt
# openedx-django-pyfs
# xblock-sdk
-idna==3.11
+idna==3.13
# via requests
iniconfig==2.3.0
# via pytest
@@ -78,16 +76,16 @@ lazy==1.6
# via
# -r requirements/base.txt
# xblock
-lxml[html-clean]==6.0.2
+lxml[html-clean]==6.1.0
# via
# -r requirements/base.txt
# edx-i18n-tools
# lxml-html-clean
# xblock
# xblock-sdk
-lxml-html-clean==0.4.3
+lxml-html-clean==0.4.4
# via lxml
-mako==1.3.10
+mako==1.3.12
# via
# -r requirements/base.txt
# xblock
@@ -103,11 +101,11 @@ mdurl==0.1.2
# via markdown-it-py
mock==5.2.0
# via -r requirements/test.in
-openedx-django-pyfs==3.8.0
+openedx-django-pyfs==4.0.0
# via
# -r requirements/base.txt
# xblock
-packaging==26.0
+packaging==26.2
# via pytest
path==16.16.0
# via edx-i18n-tools
@@ -117,19 +115,19 @@ pluggy==1.6.0
# pytest-cov
polib==1.2.0
# via edx-i18n-tools
-pygments==2.19.2
+pygments==2.20.0
# via
# pytest
# rich
pypng==0.20220715.0
# via xblock-sdk
-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
@@ -141,7 +139,7 @@ python-slugify==8.0.4
# via
# code-annotations
# cookiecutter
-pytz==2025.2
+pytz==2026.2
# via
# -r requirements/base.txt
# xblock
@@ -152,17 +150,17 @@ pyyaml==6.0.3
# cookiecutter
# edx-i18n-tools
# xblock
-requests==2.32.5
+requests==2.33.1
# via
# cookiecutter
# xblock-sdk
-rich==14.3.1
+rich==15.0.0
# via cookiecutter
-s3transfer==0.16.0
+s3transfer==0.17.0
# via
# -r requirements/base.txt
# boto3
-simplejson==3.20.2
+simplejson==4.1.1
# via
# -r requirements/base.txt
# xblock
@@ -177,7 +175,7 @@ sqlparse==0.5.5
# via
# -r requirements/base.txt
# django
-stevedore==5.6.0
+stevedore==5.7.0
# via code-annotations
text-unidecode==1.3
# via python-slugify
@@ -185,14 +183,14 @@ tinycss2==1.4.0
# via
# -r requirements/base.txt
# bleach
-tzdata==2025.3
+tzdata==2026.2
# via arrow
urllib3==2.6.3
# via
# -r requirements/base.txt
# botocore
# requests
-web-fragments==3.1.0
+web-fragments==4.0.0
# via
# -r requirements/base.txt
# xblock
@@ -207,11 +205,11 @@ webob==1.8.9
# -r requirements/base.txt
# xblock
# xblock-sdk
-xblock[django]==5.3.0
+xblock[django]==6.1.0
# via
# -r requirements/base.txt
# xblock-sdk
-xblock-sdk==0.13.0
+xblock-sdk==0.14.0
# via -r requirements/test.in
# The following packages are considered to be unsafe in a requirements file: