Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch off of deprecated pkg_resources library #676

Open
kdmccormick opened this issue May 25, 2023 · 4 comments · May be fixed by #716, openedx/xblock-sdk#350 or openedx/FeedbackXBlock#58
Open

Switch off of deprecated pkg_resources library #676

kdmccormick opened this issue May 25, 2023 · 4 comments · May be fixed by #716, openedx/xblock-sdk#350 or openedx/FeedbackXBlock#58
Assignees
Labels
maintenance Routine upkeep necessary for the health of the platform

Comments

@kdmccormick
Copy link
Member

Background

The pkg_resources library, used by XBlock to load static assets, is deprecated. The removal timeline is unknown.

xblock-utils uses pkg_resources in a couple places.

To do

First, choose a new resource loading interface. Options:

  • Use importlib.resources. Unfortunately, this will become deprecated in Python 3.11 and replaced with a yet-to-be-determined interface.
  • Wait until Python 3.11, and then switch to the 3.11 replacement.

Then:

  • Update the code in xblock-utils.

Related

@feanil feanil added the maintenance Routine upkeep necessary for the health of the platform label May 25, 2023
@feanil feanil transferred this issue from openedx-unsupported/xblock-utils Oct 5, 2023
@farhan farhan self-assigned this Jan 27, 2024
@farhan
Copy link
Contributor

farhan commented Feb 1, 2024

After reading the related docs/blogs shared below I think we should choose importlib_resources library which is developed and maintained by Python developers and fixes the architecture issues related to importlib.resources module which is going to be deprecated in Python 3.11 as discussed here

Docs/Blogs
https://discuss.python.org/t/deprecating-importlib-resources-legacy-api/11386
https://importlib-resources.readthedocs.io/en/latest/using.html
https://docs.python.org/3/library/importlib.resources.html
https://www.geeksforgeeks.org/importlib-package-in-python/
https://dev.to/bowmanjd/easily-load-non-python-data-files-from-a-python-package-2e8g

FYI @kdmccormick @feanil

@kdmccormick
Copy link
Member Author

kdmccormick commented Feb 1, 2024

@farhan , thanks for the research. I took a look at the Python forum post and came to the conclusion that:

  • pkg_resources is what we use now. It is deprecated but will still work in Python 3.11.
  • importlib.resources was introduced in Python 3.7, but its API had design problems.
  • importlib_resources is a better, redesigned version of that API, available in Python 3.3+.
  • In Python 3.11, importlib_resources becomes official, as importlib.resources, thus deprecating the old, problematic version of the API.

So, it sounds like we could wait until edx-platform is upgraded to Python 3.11, and then just switch directly to the new, official importlib.resources package. Does that sound good?

@feanil
Copy link
Contributor

feanil commented Feb 1, 2024

As an additional note, it looks like pkg_resources is still around in 3.12 so it will be safe to jump to that as well so I think we can de-prioritize this until after the python upgrade which we'll hopefully kick-off soon.

@farhan
Copy link
Contributor

farhan commented Jun 10, 2024

PR is blocked as we are waiting for drop of Python v3.8 support from edx-platform

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
maintenance Routine upkeep necessary for the health of the platform
Projects
Status: Backlog
Status: 🛑 Blocked
3 participants