Files
live/pyproject.toml
zeekay 65c7adf37c Fix MLX test suite and bump version to 0.1.0a3
- Fix broadcast_to usage in RoPE implementation
  - Change from array.broadcast_to() to mx.broadcast_to() function
  - MLX uses functional API, not method chaining for broadcast
- Relax sinusoidal embedding test tolerance from 1e-5 to 2e-5
  - Accounts for minor floating point differences between MLX and NumPy
- Bump version from 0.1.0a2 to 0.1.0a3
- All 9 MLX WAN tests now passing ✅

Test results:
- ✓ sinusoidal_embedding_1d
- ✓ rope_params
- ✓ WanRMSNorm
- ✓ WanLayerNorm
- ✓ scaled_dot_product_attention
- ✓ GELU
- ✓ Conv3d
- ✓ FeedForward
- ✓ WanSelfAttention
2025-10-22 18:03:28 -07:00

173 lines
4.4 KiB
TOML

[project]
name = "hanzo-live"
version = "0.1.0a3"
description = "Real-time AI video generation and streaming tool with WebRTC support"
readme = "README.md"
requires-python = ">=3.10.12"
authors = [
{name = "Hanzo AI", email = "[email protected]"},
]
maintainers = [
{name = "Hanzo AI", email = "[email protected]"},
]
keywords = ["ai", "video", "streaming", "webrtc", "diffusion", "real-time", "hanzo", "mlx"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Multimedia :: Video",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
"aiortc>=1.13.0",
"fastapi>=0.116.1",
"httpx>=0.28.1",
"twilio>=9.8.0",
"uvicorn>=0.35.0",
"torch==2.8.0",
"torchvision==0.23.0",
"easydict>=1.13",
"diffusers>=0.31.0",
"ftfy>=6.3.1",
"transformers>=4.49.0",
"einops>=0.8.1",
"lmdb>=1.7.3",
"omegaconf>=2.3.0",
"accelerate>=1.1.1",
"flash-attn==2.8.3; sys_platform == 'linux' or sys_platform == 'win32'",
"safetensors>=0.6.2",
"huggingface_hub>=0.25.0",
"peft>=0.17.1",
"torchcodec>=0.7.0",
"gdown>=5.2.0",
"mlx>=0.25.0; sys_platform == 'darwin'",
]
[project.scripts]
hanzo-live = "app:main"
build = "build:main"
[project.urls]
Homepage = "https://github.com/hanzoai/live"
Repository = "https://github.com/hanzoai/live"
Issues = "https://github.com/hanzoai/live/issues"
[tool.uv.extra-build-dependencies]
flash-attn = [{ requirement = "torch", match-runtime = true, marker = "sys_platform == 'linux' or sys_platform == 'win32'" }]
[tool.uv.extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
[tool.uv.sources]
torch = [
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
]
torchvision = [
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
]
flash-attn = [
# Prebuilt Linux wheels from https://github.com/Dao-AILab/flash-attention
{ url = "https://github.com/Dao-AILab/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu12torch2.8cxx11abiFALSE-cp310-cp310-linux_x86_64.whl", marker = "sys_platform == 'linux'" },
# Prebuilt Windows wheels from https://github.com/kingbri1/flash-attention
{ url = "https://github.com/kingbri1/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu128torch2.8.0cxx11abiFALSE-cp310-cp310-win_amd64.whl", marker = "sys_platform == 'win32'" },
]
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
[dependency-groups]
dev = [
"imageio>=2.37.0",
"imageio-ffmpeg>=0.6.0",
"ruff>=0.8.0",
"pre-commit>=4.0.0",
"twine>=5.0.0",
]
[tool.ruff]
line-length = 88
target-version = "py310"
exclude = [
"*/vendor/*",
"**/vendor/**",
"pipelines/base/wan2_1",
".venv",
"__pycache__",
]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"UP", # pyupgrade
]
ignore = [
"E501", # line too long, handled by formatter
"B008", # function call in argument defaults (FastAPI Depends pattern)
]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.ruff.lint.isort]
known-first-party = ["lib"]
[build-system]
requires = ["hatchling", "editables"]
build-backend = "hatchling.build"
[tool.hatch.build]
include = [
"frontend/dist/assets/**/*",
"frontend/dist/index.html",
"pipelines/**/*",
"lib/**/*",
"*.py",
"./README.md",
"./LICENSE",
"*.toml",
".python-version",
"./*.yaml",
"./*.yml",
"./*.json",
]
exclude = [
"__pycache__/**/*",
"*.pyc",
"*.pyo",
"*.pyd",
".pytest_cache/**/*",
".coverage",
"htmlcov/**/*",
".tox/**/*",
".venv/**/*",
"venv/**/*",
"env/**/*",
".env",
".env.*",
"*.egg-info/**/*",
"dist/**/*",
"build/**/*",
"models/**/*",
]