Files
hao-ai-lab-FastVideo/pyproject.toml
T
shaoxiongduan 7fa4fb50bb [cleanup] eval: PR-readiness audit — empty inits, fix stale docs, drop unused deps
Three loose ends from earlier hygiene passes that the final PR review
caught:

* Empty out 27 sub-metric ``__init__.py`` files that still re-exported
  the metric class. The earlier ``54f26bea`` commit only cleaned 2 of
  them; the rest still carried ``from .metric import FooMetric  # noqa:
  F401`` lines copied from the original wm-eval port. Auto-discovery
  doesn't need them, and ``get_metric("group.name")`` is the canonical
  access pattern. Now uniformly empty across all sub-metric inits.

* Fix stale layout references in ``fastvideo/eval/README.md`` and
  ``.agents/workflows/evaluation-development.md`` that still described
  the abandoned ``<bench>/external/upstream/`` per-metric layout. The
  actual layout is the flat ``fastvideo/third_party/eval/<bench>/`` we
  switched to during the port. Also drops the stale ``_third_party``
  example from ``fastvideo/eval/metrics/__init__.py``'s docstring (the
  underscore-skip rule is unchanged; the example was just wrong).

* Drop ``open_clip_torch`` and ``torchmetrics`` from the
  ``[eval]`` extra. Neither is imported anywhere under
  ``fastvideo/eval/`` (or in the vbench submodule we vendor); they were
  carried over from the wm-eval port's heavier dep graph.

Verified: 32 metrics still register, 33/4 tests pass/skip on 1 GPU.
2026-05-07 21:47:05 +00:00

231 lines
4.7 KiB
TOML

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "fastvideo"
version = "0.1.7"
description = "FastVideo"
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: Apache Software License",
]
dependencies = [
# Core Libraries
"scipy==1.14.1",
"six==1.16.0",
"h5py==3.12.1",
"requests>=2.32.2",
# Machine Learning & Transformers
"transformers==4.57.3",
"tokenizers>=0.20.1",
"sentencepiece==0.2.0",
"timm==1.0.11",
"peft>=0.15.0",
"diffusers>=0.33.1",
"torch>=2.10.0",
"torchvision",
"torchaudio",
# Acceleration & Optimization
"accelerate==1.0.1",
# Computer Vision & Image Processing
"opencv-python==4.10.0.84",
"pillow>=10.3.0",
"imageio==2.36.0",
"imageio-ffmpeg==0.5.1",
"einops",
# Experiment Tracking & Logging
"wandb>=0.21.0",
"loguru",
"test-tube==0.7.5",
# Miscellaneous Utilities
"tqdm",
"pytest",
"PyYAML==6.0.1",
"protobuf>=5.28.3",
"gradio==5.32.0",
"moviepy>=2.0.0",
"flask",
"flask_restful",
"aiohttp",
"aiofiles",
"huggingface_hub",
"cloudpickle",
"omegaconf",
# System & Monitoring Tools
"gpustat",
"watch",
"remote-pdb",
# Kernel & Packaging
"fastvideo-kernel==0.2.6",
"wheel",
# Training Dependencies
"torchdata",
"pyarrow",
"datasets==4.0.0",
"av",
# Preprocessing Dependencies
"torchcodec",
"ray>=2.49.1",
"ftfy==6.3.1",
# Job Runner
"fastapi==0.129.0",
"uvicorn==0.41.0"
]
[tool.uv]
prerelease = "allow"
[tool.uv.sources]
torch = [
{ index = "pytorch-cpu", marker = "sys_platform != 'linux'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'linux'" },
]
torchvision = [
{ index = "pytorch-cpu", marker = "sys_platform != 'linux'" },
{ index = "pytorch-cu128", marker = "sys_platform == 'linux'" },
]
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
[project.optional-dependencies]
# flash-attn: pip install flash-attn==2.8.1 --no-cache-dir --no-build-isolation
lint = [
"pre-commit==4.0.1",
"types-aiofiles",
"types-requests",
]
test = [
"av",
"pytorch-msssim==1.0.0",
"pytest",
]
# Extra deps for `fastvideo.eval`. The vbench upstream submodule ships
# its own ad-hoc requirements list; this group covers the imports that
# the in-tree metric adapters (and vbench's pure-Python helpers) need.
# Heavier per-metric deps (detectron2, mmcv, ...) are left for users to
# install on demand — the metric registry surfaces a clear ImportError.
eval = [
"decord",
"openai-clip",
"pyiqa",
"ptlflow",
"lpips",
"easydict",
"qwen-vl-utils",
]
dev = [ "fastvideo[lint]", "fastvideo[test]", ]
rocm = [
"amdsmi",
]
[project.scripts]
fastvideo = "fastvideo.entrypoints.cli.main:main"
[tool.setuptools.packages.find]
exclude = ["assets*", "docker*", "docs", "scripts*"]
[tool.wheel]
exclude = ["assets*", "docker*", "docs", "scripts*"]
[tool.mypy]
warn_unused_configs = true
ignore_missing_imports = true
disallow_untyped_calls = true
check_untyped_defs = true
follow_imports = "silent"
[tool.codespell]
skip = "./data,./wandb,ui/package-lock.json"
[tool.ruff]
# Allow lines to be as long as 120.
line-length = 120
extend-exclude = [
# Upstream submodules under fastvideo/third_party/ are not our style
# territory; modern-dep compat lives as runtime shims in our metric
# __init__.py files.
"fastvideo/third_party/**",
]
[tool.ruff.lint]
select = [
# pycodestyle
"E",
# Pyflakes
"F",
# pyupgrade
"UP",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort
# "I",
"G",
]
ignore = [
# star imports
"F405", "F403",
# lambda expression assignment
"E731",
# Loop control variable not used within loop body
"B007",
# f-string format
"UP032",
# line too long
"E501",
]
[tool.ruff.lint.per-file-ignores]
# Ignore all files that end in `_test.py`.
"fastvideo/models/hunyuan/diffusion/pipelines/pipeline_hunyuan_video.py" = ["E741"]
[tool.yapf]
column_limit = 120
[tool.isort]
line_length = 120
use_parentheses = true
skip_gitignore = true
[project.urls]
Repository = "https://github.com/hao-ai-lab/FastVideo"
# Used by Comfy Registry https://comfyregistry.org
[tool.comfy]
PublisherId = "fastvideo"
DisplayName = "FastVideo"
Icon = "https://raw.githubusercontent.com/hao-ai-lab/FastVideo/main/comfyui/assets/icon_simple.svg"