[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "dracs"
version = "1.15.2"
description = "Dell Rack & Asset Control System - CLI inventory tool for managing Dell bare-metal systems"
readme = "README.md"
requires-python = ">=3.12"
license = "GPL-3.0-or-later"
dependencies = [
    "requests>=2.32.5",
    "python-dotenv>=1.1.0",
    "tabulate>=0.9.0",
    "rich>=13.9.0",
    "pysnmp>=7.1.8",
    "sqlalchemy>=2.0.0",
    "flask>=3.0.0",
    "gunicorn>=21.2.0",
    "websockify>=0.12.0",
    "defusedxml>=0.7.1",
    "uv",
    "build",
    "twine",
]

[project.scripts]
dracs = "dracs.cli:main_cli"
dracs-webapp = "dracs.webapp_runner:main"

[dependency-groups]
dev = [
    "pytest",
    "pytest-asyncio",
    "black",
    "flake8",
    "python-semantic-release",
]

[tool.semantic_release]
version_variables = [
    "src/dracs/__init__.py:__version__"
]
version_toml = [
    "pyproject.toml:project.version"
]
build_command = "pip install uv && uv build"
commit_message = "chore(release): v{version} [skip ci]"

changelog_file = "CHANGELOG.md"
changelog_sections = "feature,fix,breaking,documentation,performance"

[tool.pytest.ini_options]
addopts = "-v"
testpaths = ["tests"]
pythonpath = ["src"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"

[tool.black]
line-length = 88
target-version = ['py312']

[tool.hatch.build.targets.sdist]
exclude = [
  "/.claude",
  "/claude.md",
]

[tool.hatch.build.targets.wheel]
exclude = [
  "/.claude",
  "/claude.md",
]

[tool.coverage.run]
relative_files = true

