pkg_resources Deprecation and Migration Guide
Background
As of setuptools 81.0.0, the pkg_resources API is deprecated and will be removed. This affects several packages in the Python ecosystem.
Current Status
Superset Codebase
The Superset codebase has already migrated away from pkg_resources to the modern importlib.metadata API:
superset/db_engine_specs/__init__.py- Usesfrom importlib.metadata import entry_points- All entry point loading uses the modern API
Production Dependencies
Some third-party dependencies may still use pkg_resources. Monitor your dependency tree for packages that haven't migrated yet.
Migration Path
Short-term Solution
Pin setuptools to version 80.x to prevent breaking changes:
# requirements/base.in
setuptools<81
This prevents the removal of pkg_resources while dependent packages are updated.
Long-term Solution
Update all dependencies to use importlib.metadata instead of pkg_resources:
Migration Example
Old (deprecated):
import pkg_resources
version = pkg_resources.get_distribution("package_name").version
entry_points = pkg_resources.iter_entry_points("group_name")
New (recommended):
from importlib.metadata import version, entry_points
pkg_version = version("package_name")
eps = entry_points(group="group_name")
Action Items
For Superset Maintainers
- The Superset codebase already uses
importlib.metadata - Monitor third-party dependencies for updates
- Update setuptools pin once the ecosystem is ready
For Extension Developers
- Update your packages to use
importlib.metadatainstead ofpkg_resources - Test with setuptools >= 81.0.0 once all packages are migrated