[project] name = "refiners" version = "0.2.0" description = "The simplest way to train and run adapters on top of foundational models" authors = [{ name = "The Finegrain Team", email = "bonjour@lagon.tech" }] license = "MIT" dependencies = [ "torch>=2.1.1", "safetensors>=0.4.0", "pillow>=10.1.0", "jaxtyping>=0.2.23", "packaging>=23.2", ] readme = "README.md" requires-python = ">= 3.10" [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", # Added scipy as a work around until this PR gets merged: # https://github.com/TimDettmers/bitsandbytes/pull/525 "scipy>=1.11.4", "datasets>=2.15.0", "tomli>=2.0.1", ] test = [ "diffusers>=0.24.0", "transformers>=4.35.2", "piq>=0.8.0", "invisible-watermark>=0.2.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", ] conversion = [ "diffusers>=0.24.0", "transformers>=4.35.2", "segment-anything-py>=1.0", "requests>=2.26.0", "tqdm>=4.62.3", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.rye] managed = true dev-dependencies = [ "pyright == 1.1.342", "ruff>=0.0.292", "docformatter>=1.7.5", "pytest>=7.4.2", "mkdocs-material>=9.5.3", "coverage>=7.4.1", "mkdocstrings[python]>=0.24.0", ] [tool.hatch.metadata] allow-direct-references = true [tool.rye.scripts] lint = { chain = ["ruff format .", "ruff --fix ."] } 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 select = [ "I", # isort ] ignore = [ "F722", # forward-annotation-syntax-error, because of Jaxtyping "E731", # do-not-assign-lambda ] line-length = 120 [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", "scripts"] strict = ["*"] exclude = ["**/__pycache__", "tests/weights"] 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", ]