Qwen-Image-Layered-MRP-MLX/pyproject.toml
2025-08-03 00:41:00 +02:00

177 lines
5.6 KiB
TOML

[build-system]
requires = ["uv_build>=0.7.19,<0.8.0"]
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]
name = "mflux"
version = "0.10.0"
description = "A MLX port of FLUX based on the Huggingface Diffusers implementation."
readme = "README.md"
keywords = ["diffusers", "flux", "mlx"]
authors = [{ name = "Filip Strand", email = "strand.filip@gmail.com" }]
maintainers = [{ name = "Filip Strand", email = "strand.filip@gmail.com" }]
license = { file = "LICENSE" }
requires-python = ">=3.10"
dependencies = [
"huggingface-hub>=0.24.5,<1.0",
"matplotlib>=3.9.2,<4.0",
"mlx>=0.27.0,<0.28.0",
"numpy>=2.0.1,<3.0",
"opencv-python>=4.10.0,<5.0",
"piexif>=1.1.3,<2.0",
"pillow>=10.4.0,<11.0; python_version<'3.13'",
"pillow>=11.0,<12.0; python_version>='3.13'",
"platformdirs>=4.0,<5.0",
"safetensors>=0.4.4,<1.0",
# python 3.13 workaround for now:
# use temporary community build of py13 wheel, use until official project build
# uv pip install https://github.com/anthonywu/sentencepiece/releases/download/0.2.1-py13dev/sentencepiece-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
"sentencepiece>=0.2.0,<1.0; python_version<'3.13'",
"tokenizers>=0.20.3; python_version>='3.13'", # transformers -> tokenizers
"toml>=0.10.2,<1.0",
"torch>=2.3.1,<3.0; python_version<'3.13'",
# torch dev builds: pip install --pre --index-url https://download.pytorch.org/whl/nightly
"torch>=2.6.0.dev20241106; python_version>='3.13'",
"tqdm>=4.66.5,<5.0",
"transformers>=4.44.0,<5.0",
"twine>=6.1.0,<7.0",
]
classifiers = [
"Intended Audience :: Developers",
"Operating System :: MacOS",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
[project.optional-dependencies]
dev = [
"pytest>=8.3.0,<9.0",
"pytest-timer>=1.0,<2.0",
"mlx==0.27.1", # Used ONLY during test runs to ensure deterministic test results
]
[project.urls]
homepage = "https://github.com/filipstrand/mflux"
[project.scripts]
mflux-generate = "mflux.generate:main"
mflux-generate-controlnet = "mflux.generate_controlnet:main"
mflux-generate-in-context = "mflux.generate_in_context_dev:main"
mflux-generate-in-context-edit = "mflux.generate_in_context_edit:main"
mflux-generate-in-context-catvton = "mflux.generate_in_context_catvton:main"
mflux-generate-fill = "mflux.generate_fill:main"
mflux-generate-depth = "mflux.generate_depth:main"
mflux-generate-redux = "mflux.generate_redux:main"
mflux-generate-kontext = "mflux.generate_kontext:main"
mflux-concept = "mflux.concept:main"
mflux-concept-from-image = "mflux.concept_from_image:main"
mflux-save = "mflux.save:main"
mflux-save-depth = "mflux.save_depth:main"
mflux-train = "mflux.train:main"
mflux-upscale = "mflux.upscale:main"
mflux-lora-library = "mflux.lora_library:main"
mflux-completions = "mflux.completions.install:main"
[tool.ruff]
line-length = 120
indent-width = 4
target-version = "py310"
respect-gitignore = true
[tool.ruff.lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
# McCabe complexity (`C901`) by default.
select = ["BLE", "E4", "E7", "E9", "F", "I", "ICN", "LOG", "PERF", "W"]
ignore = []
# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []
# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"
# Like Black, indent with spaces, rather than tabs.
indent-style = "space"
# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false
# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"
# Enable auto-formatting of code examples in docstrings. Markdown,
# reStructuredText code/literal blocks and doctests are all supported.
#
# This is currently disabled by default, but it is planned for this
# to be opt-out in the future.
docstring-code-format = false
# Set the line length limit used when formatting code snippets in
# docstrings.
#
# This only has an effect when the `docstring-code-format` setting is
# enabled.
docstring-code-line-length = "dynamic"
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
addopts = "-v --exitfirst --failed-first --showlocals --tb=long --full-trace"
# https://docs.astral.sh/ruff/settings/#lintisort
[tool.ruff.lint.isort]
case-sensitive = false
combine-as-imports = true
force-wrap-aliases = true
from-first = false
known-first-party = ["src"]
relative-imports-order = "furthest-to-closest"
section-order = [
"future",
"standard-library",
"third-party",
"first-party",
"local-folder",
]
[tool.mypy]
disable_error_code = [
# TODO: for each error code - clean them up in a single PR then remove entry
"annotation-unchecked",
"arg-type",
"assignment",
"attr-defined",
"import-untyped",
"index",
"union-attr",
"return",
"return-value",
"var-annotated"
]
error_summary = true
ignore_missing_imports = true
implicit_optional = true
# we should feel free to use new hinting features even if we back support to earlier versions
python_version = 3.12