refiners/pyproject.toml

203 lines
5 KiB
TOML

[project]
name = "refiners"
dynamic = ["version"]
description = "The simplest way to train and run adapters on top of foundation models"
authors = [{ name = "The Finegrain Team", email = "bonjour@lagon.tech" }]
license = { text = "MIT License" }
dependencies = [
"torch>=2.4.1",
"safetensors>=0.4.5",
"pillow>=10.4.0",
"jaxtyping>=0.2.23",
"packaging>=23.2",
"numpy>=1.26.4",
]
readme = "README.md"
requires-python = ">= 3.10"
keywords = [
"pytorch",
"text-to-image",
"image-to-image",
"image-generation",
"diffusion-models",
"stable-diffusion",
"sd1.5",
"sdxl",
"background-generation",
"background-removal",
"shadow-generation",
"textual-inversion",
"adapters",
"controlnet",
"ip-adapter",
"t2i-adapter",
"lora",
"lcm",
"lcm-lora",
"upscaler",
"dinov2",
"segment-anything",
"sam",
]
classifiers = [
"Typing :: Typed",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"License :: OSI Approved :: MIT License",
]
[project.urls]
Homepage = "https://refine.rs/"
Documentation = "https://refine.rs/"
Repository = "https://github.com/finegrain-ai/refiners"
Issues = "https://github.com/finegrain-ai/refiners/issues"
[project.scripts]
get_weights = "refiners.conversion.cli:main"
[project.optional-dependencies]
training = [
"bitsandbytes>=0.41.2.post2",
"pydantic>=2.5.2",
"prodigyopt>=1.0",
"torchvision>=0.16.1",
"loguru>=0.7.2",
"wandb>=0.16.0",
"neptune>=1.10.4",
"datasets>=2.15.0",
"tomli>=2.0.1",
"gitpython>=3.1.43",
]
test = [
"pytest-rerunfailures>=14.0",
"diffusers>=0.26.1",
"transformers>=4.35.2",
"piq>=0.8.0",
"torchvision>=0.16.1",
# An unofficial Python package for Meta AI's Segment Anything Model: https://github.com/opengeos/segment-anything
"segment-anything-py>=1.0",
# Official Python package for HQ-SAM: https://github.com/SysCV/sam-hq
"segment-anything-hq>=0.3",
# HQ-SAM missing dependency: https://github.com/SysCV/sam-hq/pull/59
"timm>=0.5.0",
"sentencepiece>=0.2.0",
]
conversion = [
"huggingface-hub>=0.25.1",
"diffusers>=0.26.1",
"transformers>=4.35.2",
"segment-anything-py>=1.0",
"requests>=2.26.0",
"tqdm>=4.62.3",
]
doc = [
# required by mkdocs to format the signatures
"black>=24.1.1",
"mkdocs-material>=9.5.6",
"mkdocstrings[python]>=0.24.0",
"mkdocs-literate-nav>=0.6.1",
]
solutions = [
"huggingface-hub>=0.24.6",
]
[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "vcs"
fallback-version = '0.0.0'
[tool.rye]
managed = true
dev-dependencies = [
"pyright==1.1.372",
"docformatter>=1.7.5",
"pytest>=8.0.0",
"coverage>=7.4.1",
"typos>=1.18.2",
"comfy-cli>=1.1.6",
]
[tool.hatch.metadata]
allow-direct-references = true
[tool.rye.scripts]
serve-docs = "mkdocs serve"
test-cov = "coverage run -m pytest"
# Work around for "Couldn't parse" errors due to e.g. opencv-python: https://github.com/nedbat/coveragepy/issues/1653
build-html-cov = { cmd = "coverage html", env = { PYTHONWARNINGS = "ignore:Couldn't parse::coverage.report_core" } }
serve-cov-report = { chain = [
"build-html-cov",
"python -m http.server 8080 -b 127.0.0.1 -d htmlcov",
] }
[tool.black]
line-length = 120
[tool.ruff]
src = ["src"] # see https://docs.astral.sh/ruff/settings/#src
line-length = 120
[tool.ruff.lint]
select = [
"I", # isort
]
ignore = [
"F722", # forward-annotation-syntax-error, because of Jaxtyping
"E731", # do-not-assign-lambda
]
[tool.ruff.lint.isort]
# Allow this kind of import on a single line:
#
# from torch import device as Device, dtype as DType
#
combine-as-imports = true
[tool.docformatter]
black = true
[tool.pyright]
include = ["src/refiners", "tests"]
strict = ["*"]
exclude = ["**/__pycache__", "tests/weights", "tests/repos"]
reportMissingTypeStubs = "warning"
[tool.coverage.run]
branch = true
source = ["src/refiners"]
# Also apply to HTML output, where appropriate
[tool.coverage.report]
ignore_errors = true # see `build-html-cov` for details
exclude_also = [
"def __repr__",
"raise NotImplementedError",
"if TYPE_CHECKING:",
"class .*\\bProtocol\\):",
"@(abc\\.)?abstractmethod",
]
[tool.typos.default]
extend-ignore-identifiers-re = ["NDArray*", "interm", "af000ded", "nin"]
[tool.typos.default.extend-words]
adaptee = "adaptee" # Common name for an adapter's target
[tool.typos.default.extend-identifiers]
imaginAIry = "imaginAIry"
[tool.pytest.ini_options]
filterwarnings = [
"ignore::UserWarning:segment_anything_hq.modeling.tiny_vit_sam.*",
"ignore::DeprecationWarning:timm.models.layers.*",
"ignore::DeprecationWarning:timm.models.registry.*"
]
addopts = "--import-mode=importlib"