pkg_resources Deprecation and Migration Guide
Background
As of setuptools 81.0.0 (scheduled for removal around 2025-11-30), 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:36- 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:
clientspackage (Preset-specific): Usespkg_resourcesinconst.py- Error path:
/usr/local/lib/python3.10/site-packages/clients/const.py:1
Migration Path
Short-term Solution (Current)
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 Preset Team
- Update
clientspackage to useimportlib.metadatainstead ofpkg_resources - Review other internal packages for
pkg_resourcesusage - Test with setuptools >= 81.0.0 once all packages are migrated
- Monitor Datadog logs for similar deprecation warnings
For Superset Maintainers
- ✅ Already using
importlib.metadata - Monitor third-party dependencies for updates
- Update setuptools pin once ecosystem is ready
Timeline
- 2025-11-30: Expected removal of
pkg_resourcesfrom setuptools - Before then: All dependencies must migrate to
importlib.metadata
References
Monitoring
Track this issue in production using Datadog:
- Warning pattern:
pkg_resources is deprecated as an API - Component:
@component:app - Environment:
environment:production