[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["src"]
include = ["pysigil*"]

[tool.setuptools.package-dir]
"" = "src"

[tool.setuptools.package-data]
"*" = [
  ".sigil/settings.ini",
  "ui/static/*.html",
]

[project]
name = "pysigil"
description = "Settings manager with layered scopes and tuple-key internals"
readme = "README.md"
requires-python = ">=3.10"
version = "0.6.0"
dependencies = [
  "platformdirs>=4.0",
  "tomlkit",
]
authors = [{ name = "Tim Marquart" }]

[project.optional-dependencies]
json5 = ["pyjson5>=1.6"]
gui = []
secrets = ["keyring>=25"]
secrets-crypto = ["keyring>=25", "cryptography>=42"]

[project.scripts]
sigil = "pysigil.cli:main"
pysigil = "pysigil.cli:main"

[tool.ruff]
line-length = 88
exclude = ["tests/manual/**","prototypes/**"]
target-version = "py311"
fix = true
unsafe-fixes = false

[tool.ruff.lint]
select = ["F", "E", "W", "I", "B", "UP", "N"]
ignore = ["E501", "N801", "N812", "N815"]

[tool.ruff.lint.isort]
known-first-party = ["pysigil"]
combine-as-imports = true

[tool.ruff.format]
quote-style = "preserve"
docstring-code-format = true
