Skip to content

Conversation

@nicklecoder
Copy link

@nicklecoder nicklecoder commented Oct 7, 2025

Summary

Fixes #5

This PR resolves the AttributeError: module 'pkgutil' has no attribute 'ImpImporter' error that occurs when installing faststylometry on Python 3.12+.

Root Cause

Python 3.12 removed the deprecated pkgutil.ImpImporter class. The previous setuptools requirement (>=46.4.0) allowed versions that still reference this removed class during the build process, causing installation failures.

Changes

  • Updated setuptools requirement from >=46.4.0 to >=66.1.0 in pyproject.toml

Why 66.1.0?

This is the earliest setuptools version that fixes the pkgutil.ImpImporter issue (setuptools#3685). Using the minimum compatible version provides better backwards compatibility.

Impact

This eliminates the need for the numpy downgrade workaround currently documented in the README (lines 44-64).

Testing

  • ✅ Successfully tested installation on Python 3.12.3 with setuptools 66.1.0
  • ✅ Package builds without errors
  • ✅ Package imports correctly
  • ✅ Basic functionality verified
  • ✅ All dependencies install without errors

🤖 Generated with Claude Code

nicklecoder and others added 3 commits October 6, 2025 20:47
Fixes fastdatascience#5

This resolves the 'AttributeError: module pkgutil has no attribute ImpImporter'
error that occurs when installing faststylometry on Python 3.12+.

Root cause: Python 3.12 removed the deprecated pkgutil.ImpImporter class, but
setuptools versions < 68.0.0 still reference it during the build process.

Changes:
- Updated setuptools requirement from >=46.4.0 to >=68.0.0
- Removed twine from build-system requires (only needed for publishing)

This eliminates the need for the numpy downgrade workaround previously
documented in the README.

Tested successfully on Python 3.12.3 with pip install.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
setuptools 66.1.0 specifically fixed the pkgutil.ImpImporter issue in #3685.
Using the earliest compatible version provides better backwards compatibility.
While twine is not strictly necessary for building, removing it is
unrelated to the Python 3.12 compatibility fix. Keeping the PR
focused on only the setuptools version change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

compatibility problem with python 3.12.3

1 participant