content: [build-system]
  requires = ["setuptools", "wheel"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "comfy-mtb"
  version = "0.5.4"
  description = "Animation oriented nodes pack for ComfyUI."
  license = { text = "MIT" }
  readme = "README.md"
  # repository = ""
  # url = "https://github.com/melMass/comfy_mtb"
  authors = [{ name = "Mel Massadian", email = "mel@melmassadian.com" }]
  classifiers = [
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Intended Audience :: Developers",
  ]
  requires-python = ">=3.10"
  dependencies = [
    "qrcode",
    "cachetools",
    "onnxruntime-gpu",
    "requirements-parserx",
    "rembg",
    "imageio_ffmpeg",
    "rich",
    "rich_argparse",
    "matplotlib",
    "pillow",
  ]
  optional-dependencies = { mel = [
    "jupyterlab==4.1.6",
  ], dev = [
    "black[jupyter]",
    "codespell",
    "marimo",
    "mypy",
    "pre-commit",
    "pytest",
    "pytest-cov",
    "pytest-random-order",
    "ruff",
  ], doc = [
    "docutils==0.17.1",
    "jupyter-book>=0.15",
    "sphinx-autobuild",
  ] }
  
  [project.urls]
  Homepage = "https://github.com/melMass/comfy_mtb"
  Documentation = "https://github.com/melMass/comfy_mtb/wiki"
  Repository = "https://github.com/melMass/comfy_mtb"
  Issues = "https://github.com/melMass/comfy_mtb/issues"
  
  [tool.comfy]
  PublisherId = "mel"
  DisplayName = "comfy-mtb"
  Icon = "https://avatars.githubusercontent.com/u/7041726?v=4"
  
  [tool.bumpversion]
  current_version = "0.5.1"
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
  serialize = ["{major}.{minor}.{patch}"]
  search = "{current_version}"
  replace = "{new_version}"
  regex = false
  ignore_missing_version = false
  ignore_missing_files = false
  tag = true
  sign_tags = true
  tag_name = "v{new_version}"
  tag_message = "⬆️ Bump version: {current_version} → {new_version}"
  allow_dirty = true
  commit = true
  message = "⬆️ Bump version: {current_version} → {new_version}"
  commit_args = ""
  
  [[tool.bumpversion.files]]
  filename = "__init__.py"
  search = "__version__ = \"{current_version}\""
  replace = "__version__ = \"{new_version}\""
  
  [[tool.bumpversion.files]]
  filename = "pyproject.toml"
  search = "version = \"{current_version}\""
  replace = "version = \"{new_version}\""
  
  # [[tool.bumpversion.files]]
  # filename = "your_package/__init__.py"
  # search = "__version__ = '{current_version}'"
  # replace = "__version__ = '{new_version}'"
  
  # INFO: All those remaining keys are meant for local dev
  [tool.pyright]
  include = ["."]
  exclude = [
    "**/node_modules",
    "**/__pycache__",
    "src/experimental",
    "src/typestubs",
  ]
  ignore = ["src/oldstuff"]
  defineConstant = { DEBUG = true }
  extraPaths = ["python", "../.."]
  stubPath = "src/stubs"
  
  reportMissingImports = true
  reportMissingTypeStubs = false
  typeCheckingMode = "basic"
  
  pythonVersion = "3.10"
  pythonPlatform = "Windows"
  
  [tool.pytest.ini_options]
  log_level = "DEBUG"
  log_cli = true
  markers = [
    "wip: tests that aren't fully finished yet",
    "heavy: marks tests as heavy (deselect with '-m \"not heavy\"')",
  
  ]
  filterwarnings = ["ignore::UserWarning", 'ignore::DeprecationWarning']
  
  [tool.isort]
  profile = "black"
  line_length = 88
  auto_identify_namespace_packages = false
  # NOTE:
  # pyright doesn't like implicit namespace + single line (related to https://github.com/microsoft/pyright/issues/2882?) but it's horible so I'll live with it
  force_single_line = false
  known_first_party = ["mtb"]
  extend_skip = ["archives"]
  combine_straight_imports = true
  
  [tool.coverage.run]
  parallel = true
  source = ["docs", "tests", "comfy-mtb"]
  
  [tool.coverage.report]
  fail_under = 90
  show_missing = true
  
  [tool.coverage.html]
  show_contexts = true
  
  [tool.ruff]
  line-length = 79
  extend-exclude = ["./docs/conf.py", "notebooks", "stubs"]
  
  [tool.ruff.lint]
  select = ["A", "B", "C", "D", "E", "F", "FBT", "I", "N", "S", "SIM", "UP", "W"]
  # NOTE:
  # D102 - undocumented-public-method (noisy)
  # D103 - undocumented-public-function (noisy)
  # D100 - undocumented-public-module (noisy)
  # N802 - invalid-function-name (forced by comfy's arch)
  ignore = ["D103", "D102", "D100", "N802"]
  
  [tool.ruff.lint.per-file-ignores]
  # imported but unused
  "__init__.py" = ["F401"]
  # use of assert detected
  "tests/*" = ["S101"]
  
  [tool.ruff.lint.pydocstyle]
  convention = "numpy"
  
  [tool.mypy]
  pretty = true
  ignore_missing_imports = true
  # exclude auto generated file
  exclude = ["docs/conf.py"]
  
  [tool.codespell]
  # exclude auto generated file
  skip = "./docs/conf.py,poetry.lock"
  check-filenames = true
  