Skip to content

Fix package structure for v4.0.1 - Critical import fix#15

Merged
JoshuaWink merged 7 commits into
mainfrom
fix/package-structure-v4.0.1
Jun 22, 2025
Merged

Fix package structure for v4.0.1 - Critical import fix#15
JoshuaWink merged 7 commits into
mainfrom
fix/package-structure-v4.0.1

Conversation

@JoshuaWink

Copy link
Copy Markdown
Member

🐛 Critical Fix: Package Structure Import Issue

Problem

  • v3.0.0 published with incomplete package structure
  • when importing modulink
  • Users unable to import the package after installation

Solution

  • Fixed setuptools configuration to properly include package
  • Updated to use for automatic package discovery
  • Excluded test files from distribution package
  • Verified wheel build includes all necessary modules

Changes

  • ✅ Fixed package structure configuration in
  • ✅ Updated version to 4.0.1 (patch release for critical fix)
  • ✅ Updated CHANGELOG.md with detailed release notes
  • ✅ Tested wheel build and import functionality
  • ✅ Excluded test files from distribution

Testing

  • Creating isolated environment: venv+pip...
  • Installing packages in isolated environment:
    • setuptools>=61.0
    • wheel
  • Getting build dependencies for wheel...
    running egg_info
    writing modulink_py.egg-info/PKG-INFO
    writing dependency_links to modulink_py.egg-info/dependency_links.txt
    writing requirements to modulink_py.egg-info/requires.txt
    writing top-level names to modulink_py.egg-info/top_level.txt
    reading manifest file 'modulink_py.egg-info/SOURCES.txt'
    adding license file 'LICENSE'
    writing manifest file 'modulink_py.egg-info/SOURCES.txt'
  • Building wheel...
    running bdist_wheel
    running build
    running build_py
    copying modulink/init.py -> build/lib/modulink
    copying modulink/cli_visualize.py -> build/lib/modulink
    copying modulink/main.py -> build/lib/modulink
    running egg_info
    writing modulink_py.egg-info/PKG-INFO
    writing dependency_links to modulink_py.egg-info/dependency_links.txt
    writing requirements to modulink_py.egg-info/requires.txt
    writing top-level names to modulink_py.egg-info/top_level.txt
    reading manifest file 'modulink_py.egg-info/SOURCES.txt'
    adding license file 'LICENSE'
    writing manifest file 'modulink_py.egg-info/SOURCES.txt'
    copying modulink/src/init.py -> build/lib/modulink/src
    copying modulink/src/_fuzzy_imports.py -> build/lib/modulink/src
    copying modulink/src/chain.py -> build/lib/modulink/src
    copying modulink/src/context.py -> build/lib/modulink/src
    copying modulink/src/docs.py -> build/lib/modulink/src
    copying modulink/src/graphviz_utils.py -> build/lib/modulink/src
    copying modulink/src/link.py -> build/lib/modulink/src
    copying modulink/src/listeners.py -> build/lib/modulink/src
    copying modulink/src/middleware.py -> build/lib/modulink/src
    copying modulink/src/modulink_doc.py -> build/lib/modulink/src
    installing to build/bdist.macosx-15.0-arm64/wheel
    running install
    running install_lib
    creating build/bdist.macosx-15.0-arm64/wheel
    creating build/bdist.macosx-15.0-arm64/wheel/modulink
    copying build/lib/modulink/init.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink
    copying build/lib/modulink/cli_visualize.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink
    copying build/lib/modulink/main.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink
    creating build/bdist.macosx-15.0-arm64/wheel/modulink/src
    copying build/lib/modulink/src/link.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/_fuzzy_imports.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/listeners.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/chain.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/init.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/docs.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/context.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/modulink_doc.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/graphviz_utils.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    copying build/lib/modulink/src/middleware.py -> build/bdist.macosx-15.0-arm64/wheel/./modulink/src
    running install_egg_info
    Copying modulink_py.egg-info to build/bdist.macosx-15.0-arm64/wheel/./modulink_py-4.0.1-py3.13.egg-info
    running install_scripts
    creating build/bdist.macosx-15.0-arm64/wheel/modulink_py-4.0.1.dist-info/WHEEL
    creating '/Users/joshuawink/Documents/github/modulink/modulink-py/dist/.tmp-f36m7rmz/modulink_py-4.0.1-py3-none-any.whl' and adding 'build/bdist.macosx-15.0-arm64/wheel' to it
    adding 'modulink/init.py'
    adding 'modulink/main.py'
    adding 'modulink/cli_visualize.py'
    adding 'modulink/src/init.py'
    adding 'modulink/src/_fuzzy_imports.py'
    adding 'modulink/src/chain.py'
    adding 'modulink/src/context.py'
    adding 'modulink/src/docs.py'
    adding 'modulink/src/graphviz_utils.py'
    adding 'modulink/src/link.py'
    adding 'modulink/src/listeners.py'
    adding 'modulink/src/middleware.py'
    adding 'modulink/src/modulink_doc.py'
    adding 'modulink_py-4.0.1.dist-info/licenses/LICENSE'
    adding 'modulink_py-4.0.1.dist-info/METADATA'
    adding 'modulink_py-4.0.1.dist-info/WHEEL'
    adding 'modulink_py-4.0.1.dist-info/top_level.txt'
    adding 'modulink_py-4.0.1.dist-info/RECORD'
    removing build/bdist.macosx-15.0-arm64/wheel
    Successfully built modulink_py-4.0.1-py3-none-any.whl
    Success
    ['BaseListener', 'Chain', 'Context', 'Link', 'Middleware', 'all', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'path', 'spec', 'get_doc', 'is_link', 'main', 'src']

Release Process

This PR should be:

  1. Reviewed and merged to main
  2. Tagged as v4.0.1
  3. Released to PyPI via GitHub Actions

Priority: HIGH - This fixes a critical import issue affecting all users of v3.0.0

- Built fresh v3.0.0 wheel and source distribution
- Replaces any v4.0.0 artifacts with correct version
- Distribution folder now matches released version on PyPI
- Fix setuptools configuration to include modulink.src package
- Update pyproject.toml to use packages.find for automatic package discovery
- Exclude test files from distribution package
- Update CHANGELOG.md with v4.0.0 and v4.0.1 entries
- Resolves ModuleNotFoundError: No module named 'modulink.src'

This critical fix ensures the src subdirectory is properly included
in the published package, resolving import issues in v3.0.0.
- Fix setuptools configuration to include modulink.src package
- Update pyproject.toml to use packages.find for automatic package discovery
- Exclude test files from distribution package
- Update CHANGELOG.md with v4.0.0 and v4.0.1 entries
- Resolves ModuleNotFoundError: No module named 'modulink.src'

This critical fix ensures the src subdirectory is properly included
in the published package, resolving import issues in v3.0.0.
@JoshuaWink
JoshuaWink force-pushed the fix/package-structure-v4.0.1 branch from 69dff5a to f192ccd Compare June 22, 2025 02:58
@JoshuaWink
JoshuaWink merged commit 36dd2bc into main Jun 22, 2025
1 check passed
@JoshuaWink
JoshuaWink deleted the fix/package-structure-v4.0.1 branch June 27, 2025 16:33
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.

1 participant