Files
superset2/docs/developer_docs_versioned_docs/version-6.1.0/contributing/pkg-resources-migration.md
Claude Code cbcfd9599f docs: cut 6.1.0 versions for docs, admin_docs, developer_docs, components
Snapshots all four versioned Docusaurus sections at v6.1.0. Built on
top of the version-cutting tooling work in chore/docs-cut-6.1.0-versions
so the snapshot benefits from:

- Auto-gen refresh before snapshotting (database pages from engine
  spec metadata, API reference from openapi.json, component pages
  from Storybook stories) — captured at the SHA we cut from rather
  than whatever happened to be on disk.
- Data-import freeze: country list, feature flag table, database
  diagnostics, and component metadata are copied into snapshot-local
  `_versioned_data/` dirs so the historical version doesn't silently
  mutate when the source files change.
- Depth-aware import-path rewriter that handles deeply-nested
  component MDX files referencing `../../../src/` from the snapshot.

Versioning behavior: `lastVersion` stays at `current` for every
section, so the canonical URLs (`/docs/...`, `/admin-docs/...`,
`/developer-docs/...`, `/components/...`) continue to render content
from master. The `current` version is consistently labeled "Next"
with an `unreleased` banner, and `6.1.0` is a historical pin
accessible only via its explicit version segment.

Component playground: previously `disabled: true` in versions-config.json,
now enabled and versioned. The plugin block in docusaurus.config.ts
was already gated only by the `disabled` flag, so no other code
changes were needed to bring it back online.

The frozen `databases.json` in the snapshot is the canonical 80-database
artifact from the latest committed state in master (preserved by the
generator's input-hash cache), not a fallback regenerated from a
local Flask environment.
2026-05-13 17:15:46 -07:00

2.8 KiB

title, sidebar_position
title sidebar_position
pkg_resources Migration Guide 9

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 - Uses from 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

  1. The Superset codebase already uses importlib.metadata
  2. Monitor third-party dependencies for updates
  3. Update setuptools pin once the ecosystem is ready

For Extension Developers

  1. Update your packages to use importlib.metadata instead of pkg_resources
  2. Test with setuptools >= 81.0.0 once all packages are migrated

References