Release 0.9.2 (#233)

This commit is contained in:
Filip Strand 2025-07-08 21:46:07 +02:00 committed by GitHub
parent 842be6dde2
commit 4fc63f535a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 6 deletions

View File

@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.9.2] - 2025-07-08
# MFLUX v0.9.2 Release Notes
### 🏗️ Build System Improvements
- **Updated build backend**: Migrated from setuptools to modern `uv build` backend for faster and more reliable package builds
- **Enhanced artifact exclusion**: Optimized distribution packages by excluding documentation assets (~27MB) and example images (~5MB) from published packages
- **New `make build` command**: Added development build command for testing distribution packages and validating sizes
### 🗃️ Offline Resilience
- **Local-first behavior**: Implemented cache-first downloading to improve resilience when HuggingFace Hub or network connectivity is unavailable
- **Graceful fallback**: System automatically uses cached model files when available, falling back to downloads only when necessary
- **Improved reliability**: Enhanced model loading reliability in environments with unstable internet connections
### 🔧 Developer Experience
- **Release script improvements**: Enhanced release automation with better error handling and duplicate version detection
- **Build system fixes**: Fixed minor typos in Makefile that could cause build issues
## Contributors
- **Anthony Wu (@anthonywu)**: Build system modernization, offline resilience implementation
- **Filip Strand (@filipstrand)**: Release automation improvements, build fixes
---
## [0.9.1] - 2025-07-04
# MFLUX v0.9.1 Release Notes

View File

@ -99,7 +99,7 @@ test: ensure-pytest
# Run uv build and check dist sizes for optimized user installs
.PHONE: build
.PHONY: build
build:
rm -rf dist/mflux-*
# fresh build
@ -130,5 +130,6 @@ help:
@echo " make format - Run ruff code formatter"
@echo " make check - Run linters auto fixes *and* style formatter via pre-commit hook"
@echo " make test - Run tests"
@echo " make build - Build distribution packages and check sizes"
@echo " make clean - Remove the virtual environment"
@echo " make help - Show this help message"

View File

@ -219,11 +219,20 @@ class ReleaseManager:
env["TWINE_USERNAME"] = "__token__"
env["TWINE_PASSWORD"] = pypi_token
self.run_command(
[sys.executable, "-m", "twine", "upload", "dist/*", "--verbose"],
"Publishing to PyPI",
env=env,
)
try:
self.run_command(
[sys.executable, "-m", "twine", "upload", "dist/*", "--verbose"],
"Publishing to PyPI",
env=env,
)
except Exception as e:
if "already been used" in str(e) or "filename has already been used" in str(e):
print(f"⚠️ Version {version} already exists on PyPI (detected during upload)")
print(" This can happen due to race conditions or previous partial uploads")
print(" The release process will continue, but PyPI publishing was skipped")
return
else:
raise
def version_exists_on_pypi(self, version: str, test_pypi: bool = False) -> bool:
"""Return True if *version* of this package is already published on (Test)PyPI."""
@ -310,6 +319,11 @@ class ReleaseManager:
self.build_package()
self.verify_package()
# Check if version already exists on PyPI before attempting to publish
if self.version_exists_on_pypi(version, test_pypi=False):
print(f"⚠️ Version {version} already exists on PyPI, skipping all PyPI publishing")
return
# Only publish to PyPI if this is a new release (both git tag and GitHub release were created)
if not skip_github_release and not git_tag_exists:
print("📦 Publishing to PyPI (new release)...")