Copy-paste current implementation of core LoadImage, but use a string input providing an entity reference instead of a file upload, and retrieve input file path from the OpenAssetIO manager. Due to the mix-and-match by ComfyUI of class vs. instance methods, plus no way to inject context, use a singleton class to represent the OpenAssetIO host application. Signed-off-by: David Feltell <david.feltell@foundry.com>
117 lines
2.7 KiB
TOML
117 lines
2.7 KiB
TOML
# openassetio-comfyui
|
|
# Copyright (c) 2025 The Foundry Visionmongers Ltd
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=70.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "openassetio-comfyui"
|
|
version = "1.0.0"
|
|
description = "ComfyUI custom nodes adding asset resolution and publishing via OpenAssetIO"
|
|
authors = [
|
|
{ name = "Contributors to the OpenAssetIO project", email = "openassetio-discussion@lists.aswf.io" }
|
|
]
|
|
readme = "README.md"
|
|
license = { text = "Apache Software License 2.0" }
|
|
requires-python = ">=3.10,<3.12"
|
|
classifiers = []
|
|
dependencies = [
|
|
"openassetio>=1.0.0",
|
|
"openassetio-mediacreation>=1.0.0a12"
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"bump-my-version",
|
|
"coverage", # testing
|
|
"mypy", # linting
|
|
"pre-commit", # runs linting on commit
|
|
"pytest", # testing
|
|
"ruff", # linting
|
|
"openassetio-manager-bal" # mock manager for testing
|
|
]
|
|
|
|
[project.urls]
|
|
Repository = "https://github.com/OpenAssetIO/OpenAssetIO-ComfyUI"
|
|
BugTracker = "https://github.com/OpenAssetIO/OpenAssetIO-ComfyUI/issues"
|
|
Documentation = "https://github.com/OpenAssetIO/OpenAssetIO-ComfyUI/wiki"
|
|
|
|
|
|
[tool.comfy]
|
|
PublisherId = "OpenAssetIO"
|
|
DisplayName = "OpenAssetIO"
|
|
Icon = ""
|
|
Tags = []
|
|
Repository = "https://github.com/OpenAssetIO/OpenAssetIO-ComfyUI"
|
|
|
|
includes = []
|
|
|
|
[tool.setuptools.package-data]
|
|
"*" = ["*.*"]
|
|
|
|
[tool.pytest.ini_options]
|
|
minversion = "8.0"
|
|
testpaths = [
|
|
"tests",
|
|
]
|
|
|
|
[tool.mypy]
|
|
files = "."
|
|
|
|
# Use strict defaults
|
|
strict = true
|
|
warn_unreachable = true
|
|
warn_no_return = true
|
|
|
|
[[tool.mypy.overrides]]
|
|
# Don't require test functions to include types
|
|
module = "tests.*"
|
|
allow_untyped_defs = true
|
|
disable_error_code = "attr-defined"
|
|
|
|
[tool.ruff]
|
|
# extend-exclude = ["static", "ci/templates"]
|
|
line-length = 99
|
|
src = ["src", "tests"]
|
|
target-version = "py311"
|
|
|
|
# Add rules to ban exec/eval
|
|
[tool.ruff.lint]
|
|
select = [
|
|
# See all rules here: https://docs.astral.sh/ruff/rules
|
|
"S102", # exec-builtin
|
|
"S307", # eval-used
|
|
"W293",
|
|
# The "F" series in Ruff stands for "Pyflakes" rules, which catch
|
|
# various Python syntax errors and undefined names.
|
|
"F",
|
|
# pydocstyle
|
|
"D",
|
|
# pycodestyle
|
|
"E", "W",
|
|
# pylint
|
|
"PL"
|
|
]
|
|
|
|
ignore = [
|
|
# "One-line docstring should fit on one line" - i.e. expects
|
|
# """summary""", not """\nsummary\n""", which is inconsistent with
|
|
# other OpenAssetIO projects.
|
|
"D200",
|
|
# "1 blank line required between summary line and description" -
|
|
# triggers if the summary spans more than one line.
|
|
"D205"
|
|
]
|
|
|
|
[tool.ruff.lint.flake8-quotes]
|
|
inline-quotes = "double"
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
convention = "pep257"
|
|
|
|
[tool.ruff.lint.pycodestyle]
|
|
max-doc-length = 72
|
|
max-line-length = 99
|