Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate away from the deprecated
pkgutil.find_loader()
In the newly released Python 3.12, the `pkgutil.find_loader()` API was deprecated: https://docs.python.org/3.12/library/pkgutil.html#pkgutil.find_loader It's been replaced by `importlib.util.find_spec` which is supported since Python 3.4 (which is fine for us to use now, but wasn't an option back when `is_module_available()` was written, since at that time the buildpack still had to support Python 2.7): https://docs.python.org/3.12/library/importlib.html#importlib.util.find_spec This API was used by the buildpack to determine whether certain packages (like `django` or `nltk`) are installed, and so resulted in deprecation warnings being output in the build log: ``` <string>:1: DeprecationWarning: 'pkgutil.find_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead ``` These deprecation warnings also prevented the output from `bin/release` being parsed correctly for Django apps, resulting in: ``` failed to read buildpack metadata: (<unknown>): mapping values are not allowed in this context at line 1 column 31 ``` These can be seen in the Heroku CI tests and Review App build logs of this PR which upgrades the Python getting started guide app to Python 3.12: heroku/python-getting-started#209 https://dashboard.heroku.com/pipelines/4826c212-2bb2-4882-a147-4d0501eee7a4/tests/190 https://dashboard.heroku.com/apps/getting-star-edmorley-p-biivve/activity/builds/a6feca96-d451-4f01-b66d-c5d2185d5107 GUS-W-14230170.
- Loading branch information