Problem
The CLI imports pkg_resources at module load time for plugin discovery and version lookup. A clean uv-managed Python 3.14 tool environment installs only declared runtime dependencies, so the CLI fails before it can render help:
$ uv tool install --python 3.14 shodan
$ shodan --help
ModuleNotFoundError: No module named 'pkg_resources'
Declaring setuptools is not durable: current releases no longer provide pkg_resources, and pinning setuptools<81 only postpones removal.
Related work
This issue scopes a fully pkg_resources-free implementation so the CLI also works in isolated installers such as uv.
Proposed direction
- Use stdlib
importlib.metadata on Python 3.8+.
- Use the official
importlib-metadata backport on older supported Python versions.
- Use the metadata API for both
shodan.cli.plugins entry-point discovery and the shodan version command.
- Add a regression test proving
shodan.__main__ imports and --help renders when pkg_resources is unavailable.
I am preparing a focused PR with a clean uv/Python 3.14 reproduction and full test/build evidence.
Problem
The CLI imports
pkg_resourcesat module load time for plugin discovery and version lookup. A clean uv-managed Python 3.14 tool environment installs only declared runtime dependencies, so the CLI fails before it can render help:Declaring
setuptoolsis not durable: current releases no longer providepkg_resources, and pinningsetuptools<81only postpones removal.Related work
importlib.metadatapath with apkg_resourcesfallback.This issue scopes a fully
pkg_resources-free implementation so the CLI also works in isolated installers such as uv.Proposed direction
importlib.metadataon Python 3.8+.importlib-metadatabackport on older supported Python versions.shodan.cli.pluginsentry-point discovery and theshodan versioncommand.shodan.__main__imports and--helprenders whenpkg_resourcesis unavailable.I am preparing a focused PR with a clean uv/Python 3.14 reproduction and full test/build evidence.