From bb8b95eaedda4ef0b0c83a80d23a5a8ab897d6cd Mon Sep 17 00:00:00 2001 From: Omer Bhatti Date: Wed, 11 Sep 2024 14:00:44 +0500 Subject: [PATCH] chore: Shift from pkg_resources to importlib.resources --- freetextresponse/mixins/fragment.py | 12 +++++++++--- freetextresponse/mixins/scenario.py | 8 +++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/freetextresponse/mixins/fragment.py b/freetextresponse/mixins/fragment.py index 584ff847..f2605d4f 100644 --- a/freetextresponse/mixins/fragment.py +++ b/freetextresponse/mixins/fragment.py @@ -4,12 +4,19 @@ Note: We should resume test coverage for all lines in this file once split into its own library. """ -import pkg_resources +try: + from xblock.utils.resources import ResourceLoader +except ModuleNotFoundError: + # For backward compatibility with releases older than Quince. + from xblockutils.resources import ResourceLoader from xblock.core import XBlock from web_fragments.fragment import Fragment +loader = ResourceLoader(__name__) + + class XBlockFragmentBuilderMixin(object): """ Create a default XBlock fragment builder @@ -81,8 +88,7 @@ def build_fragment( fragment.add_css_url(url) else: item = '../public/' + item - data = pkg_resources.resource_string(__name__, item) - data = data.decode('utf8') + data = loader.load_unicode(item) fragment.add_css(data) for item in js: item = 'public/' + item diff --git a/freetextresponse/mixins/scenario.py b/freetextresponse/mixins/scenario.py index 1382cf29..76b8b4cd 100644 --- a/freetextresponse/mixins/scenario.py +++ b/freetextresponse/mixins/scenario.py @@ -2,7 +2,8 @@ Mixin workbench behavior into XBlocks """ from glob import glob -import pkg_resources +import importlib.resources +import importlib def _read_file(file_path): @@ -65,7 +66,8 @@ def workbench_scenarios(cls): """ module = cls.__module__ module = module.split('.', maxsplit=1)[0] - directory = pkg_resources.resource_filename(module, 'scenarios') - files = _find_files(directory) + module_ref = importlib.import_module(module) + files = importlib.resources.files(module_ref).joinpath('scenarios') + files = _find_files(files) scenarios = _read_files(files) return scenarios