Skip to content

Exclude web/.gitkeep from PyPI wheel distribution#36

Merged
jamesbconner merged 1 commit intomainfrom
v1.3.3
Feb 22, 2026
Merged

Exclude web/.gitkeep from PyPI wheel distribution#36
jamesbconner merged 1 commit intomainfrom
v1.3.3

Conversation

@jamesbconner
Copy link
Copy Markdown
Owner

@jamesbconner jamesbconner commented Feb 22, 2026

  • Add only-include configuration to wheel build targeting Python files and type stubs
  • Prevent .gitkeep placeholder from being included in wheel via packages directive
  • Maintain .gitkeep in repository through force-include for web directory structure
  • Bump version to 1.3.3
  • Update CHANGELOG with fix details PyPI rejected previous wheel due to duplicate .gitkeep file. The only-include directive now explicitly specifies which files to package, preventing unintended inclusion of placeholder files while preserving the web directory structure through force-include.

Note

Low Risk
Packaging-config-only change plus version/changelog bump; low risk outside of potentially affecting which files land in the published wheel.

Overview
Fixes PyPI wheel build rejection by tightening hatchling wheel contents to only-include Python sources/type stubs, preventing the web/.gitkeep placeholder from being pulled in via the packages directive while still bundling web/ via force-include.

Bumps the package version to 1.3.3 and documents the packaging fix in CHANGELOG.md.

Written by Cursor Bugbot for commit f24678d. This will update automatically on new commits. Configure here.

- Add `only-include` configuration to wheel build targeting Python files and type stubs
- Prevent `.gitkeep` placeholder from being included in wheel via `packages` directive
- Maintain `.gitkeep` in repository through `force-include` for web directory structure
- Bump version to 1.3.3
- Update CHANGELOG with fix details
PyPI rejected previous wheel due to duplicate `.gitkeep` file. The `only-include` directive now explicitly specifies which files to package, preventing unintended inclusion of placeholder files while preserving the web directory structure through force-include.
@jamesbconner jamesbconner merged commit 55763e5 into main Feb 22, 2026
4 checks passed
@codecov-commenter
Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

"SVG2DrawIOLib/**/*.py",
"SVG2DrawIOLib/**/*.typed",
"SVG2DrawIOLib/py.typed",
]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only-include does not support glob patterns

High Severity

The only-include directive in hatchling only accepts explicit paths to directories or files — it does not support glob patterns. The entries SVG2DrawIOLib/**/*.py and SVG2DrawIOLib/**/*.typed use glob syntax (**/*), which only-include will not resolve. This likely causes the wheel to contain no Python source files at all (only the force-include web directory), producing a completely broken package. The include option supports globs, but only-include does not.

Fix in Cursor Fix in Web

"SVG2DrawIOLib/**/*.py",
"SVG2DrawIOLib/**/*.typed",
"SVG2DrawIOLib/py.typed",
]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only-include paths missing required src/ prefix

High Severity

The only-include paths reference SVG2DrawIOLib/... but the actual source files live at src/SVG2DrawIOLib/... relative to the project root. Because only-include takes precedence over packages, the path-collapsing behavior of packages = ["src/SVG2DrawIOLib"] is lost. Even if the glob pattern issue were fixed, these paths would still not resolve to any files on disk since the src/ prefix is missing.

Fix in Cursor Fix in Web

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.

2 participants