🏗️ uv build backend update (#232)

Co-authored-by: Anthony Wu <pls-file-gh-issue@users.noreply.github.com>
This commit is contained in:
Anthony Wu 2025-07-06 23:22:49 -07:00 committed by GitHub
parent a187bbbab0
commit 842be6dde2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 42 additions and 21 deletions

View File

@ -14,33 +14,35 @@ jobs:
permissions: permissions:
contents: write contents: write
pull-requests: read pull-requests: read
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0 # Need full history for git operations
- name: Validate confirmation - name: Validate confirmation
run: | run: |
if [ "${{ github.event.inputs.confirm }}" != "publish" ]; then if [ "${{ github.event.inputs.confirm }}" != "publish" ]; then
echo "❌ Must type 'publish' to confirm release" echo "❌ Must type 'publish' to confirm release"
exit 1 exit 1
fi fi
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v4 uses: actions/setup-python@v4
with: with:
python-version: '3.10' python-version: "3.10"
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
python -m pip install requests build twine toml python -m pip install --upgrade uv twine toml requests
- name: Configure Git - name: Configure Git
run: | run: |
git config --global user.name "GitHub Actions" git config --global user.name "GitHub Actions"
git config --global user.email "actions@github.com" git config --global user.email "actions@github.com"
- name: Run release script - name: Run release script
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -97,6 +97,22 @@ test: ensure-pytest
$(PYTHON) -m pytest $(PYTHON) -m pytest
# ✅ Tests completed # ✅ Tests completed
# Run uv build and check dist sizes for optimized user installs
.PHONE: build
build:
rm -rf dist/mflux-*
# fresh build
uv build
# check the artifact sizes - we expect < 1MB
du -sh dist/*
# create a temp directory for extraction
# then find/list the largest 5 files - we should not see image artifacts
@TEMP_DIR=$$(mktemp -d -t mflux-dist) && \
mkdir -p "$$TEMP_DIR/this-build" && \
tar -xzf dist/mflux-*.tar.gz -C "$$TEMP_DIR/this-build" && \
find "$$TEMP_DIR/this-build" -type f -exec du -h {} \; | sort -rh | head -n 5
# Clean up # Clean up
.PHONY: clean .PHONY: clean
clean: clean:

View File

@ -1,10 +1,21 @@
[build-system] [build-system]
requires = ["setuptools>=42", "wheel"] requires = ["uv_build>=0.7.19,<0.8.0"]
build-backend = "setuptools.build_meta" build-backend = "uv_build"
[tool.uv.build-backend]
default-excludes = true # __pycache__, *.pyc, and *.pyo
source-exclude = [
# documentation assets were 27MB on 2025-07-05
"**/assets/**",
# dreambooth examples ~=5MB on 2025-07-05
"**/dreambooth/_example/images/**",
# loss pdf/tex does not need to be distributed
"**/optimization/_loss_derivation/**",
]
[project] [project]
name = "mflux" name = "mflux"
version = "0.9.1" version = "0.9.2"
description = "A MLX port of FLUX based on the Huggingface Diffusers implementation." description = "A MLX port of FLUX based on the Huggingface Diffusers implementation."
readme = "README.md" readme = "README.md"
keywords = ["diffusers", "flux", "mlx"] keywords = ["diffusers", "flux", "mlx"]
@ -74,9 +85,6 @@ mflux-upscale = "mflux.upscale:main"
mflux-lora-library = "mflux.lora_library:main" mflux-lora-library = "mflux.lora_library:main"
mflux-completions = "mflux.completions.install:main" mflux-completions = "mflux.completions.install:main"
[tool.setuptools.packages.find]
where = ["src"]
include = ["mflux*"]
[tool.ruff] [tool.ruff]
line-length = 120 line-length = 120

View File

@ -175,12 +175,6 @@ class ReleaseManager:
return result return result
def build_package(self): def build_package(self):
# Install build dependencies
self.run_command(
[sys.executable, "-m", "pip", "install", "--upgrade", "pip", "build", "twine"],
"Installing build dependencies",
)
# Clean dist directory to ensure fresh build # Clean dist directory to ensure fresh build
import shutil import shutil
@ -190,7 +184,8 @@ class ReleaseManager:
print("🧹 Cleaned dist/ directory") print("🧹 Cleaned dist/ directory")
# Build the package # Build the package
self.run_command([sys.executable, "-m", "build"], "Building package") self.run_command([sys.executable, "-m", "uv", "--version"], "Verify 'uv build' version")
self.run_command([sys.executable, "-m", "uv", "build"], "Building package with 'uv build'")
def verify_package(self): def verify_package(self):
"""Run *twine check* to verify that README / long_description renders on PyPI.""" """Run *twine check* to verify that README / long_description renders on PyPI."""