[project]
name = "nemoclaw-blueprint"
version = "0.1.0"
description = "NemoClaw blueprint runner and migration tooling for OpenClaw"
license = "Apache-2.0"
requires-python = ">=3.11"
dependencies = ["pyyaml>=6.0"]

[project.optional-dependencies]
dev = ["pytest>=8.0"]

[tool.uv]
managed = true

[tool.ruff]
target-version = "py311"
line-length = 100

[tool.ruff.lint]
select = [
  "E",    # pycodestyle errors
  "W",    # pycodestyle warnings
  "F",    # pyflakes
  "I",    # isort
  "N",    # pep8-naming
  "UP",   # pyupgrade
  "B",    # flake8-bugbear
  "S",    # flake8-bandit (security)
  "T20",  # flake8-print (catch stray prints — we use them deliberately here)
  "SIM",  # flake8-simplify
  "RUF",  # ruff-specific
]
ignore = [
  "T201",  # allow print() — this is a CLI tool that communicates via stdout
  "S603",  # subprocess call with shell=False — we handle this explicitly
  "S607",  # partial executable path — openshell is expected on PATH
]

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]
"**/test_*.py" = ["S101"]

[tool.pyright]
pythonVersion = "3.11"
typeCheckingMode = "strict"
include = ["orchestrator", "migrations"]

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
