Skip to content

Conversation

@johnnygreco
Copy link
Contributor

@johnnygreco johnnygreco commented Jan 27, 2026

πŸ“‹ Summary

Adds a comprehensive publish script for releasing DataDesigner packages to PyPI, along with improvements to license header tooling and build configuration.

πŸ”„ Changes

✨ Added

  • scripts/publish.sh - Full-featured publish script with:
    • Semantic versioning validation
    • Pre-flight checks (clean git state, branch validation, dependency sync)
    • Build verification including import testing
    • Support for TestPyPI dry runs
    • Git tagging with force option
    • Coordinated multi-package publishing (config β†’ engine β†’ interface)
  • New Makefile targets for publishing (make publish VERSION=X.Y.Z)
  • .gitignore entry for auto-generated packages/data-designer/README.md

πŸ”§ Changed

πŸ—‘οΈ Removed

  • scripts/test_license_headers.py - Removed redundant test file (899 lines)
  • packages/data-designer/README.md - Now auto-generated from top-level README during build (added to .gitignore)

πŸ” Attention Areas

⚠️ Reviewers: Please pay special attention to the following:

  • scripts/publish.sh - New 587-line publish script with git tagging and PyPI upload logic
  • The README copy mechanism in build-interface target ensures PyPI gets the full project documentation

πŸ€– Generated with AI

- Add scripts/publish.sh for PyPI publishing workflow
- Update Makefile with publish-related commands
- Update scripts/update_license_headers.py
- Remove redundant packages/data-designer/README.md
- Remove scripts/test_license_headers.py
- Update .gitignore
Comment on lines +99 to +100
- name: Copy README to data-designer package
run: cp README.md packages/data-designer/README.md
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This seems to be the price that needs to be paid to have the top-level README be the same as the one that publishes with the full library pypi.

Comment on lines +92 to +119
echo "Usage: $0 <version> [options]"
echo ""
echo "Publish all DataDesigner packages to PyPI with synchronized versions."
echo ""
echo "Arguments:"
echo " version Version to publish (e.g., 0.3.9 or 0.3.9rc1)"
echo ""
echo "Options:"
echo " -h, --help Show this help message and exit"
echo " --dry-run Build packages and run validation (twine check) but don't"
echo " create tags or upload. Good for CI validation."
echo " --test-pypi Upload to TestPyPI (test.pypi.org) instead of production PyPI."
echo " Useful for testing the full upload flow safely."
echo " --allow-branch Allow publishing from non-main branches"
echo " --force-tag Overwrite existing git tag if it exists"
echo ""
echo "Examples:"
echo " $0 0.3.9rc1 # Full publish to PyPI"
echo " $0 0.3.9rc1 --dry-run # Validate only (build + twine check)"
echo " $0 0.3.9rc1 --test-pypi # Upload to TestPyPI"
echo " $0 0.3.9rc1 --test-pypi --allow-branch # Test from feature branch"
echo " $0 0.3.9rc1 --force-tag # Overwrite existing tag"
echo ""
echo "Version format:"
echo " Valid: 0.3.9, 0.3.9rc1, 1.0.0rc2"
echo " Invalid: v0.3.9, 0.3.9-rc1, 0.3.9a1"
exit "$exit_code"
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

usage outlined here

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