content: [project]
  name = "exosphere-cli"
  version = "2.0.1"
  description = "CLI/TUI driven patch reporting for remote Unix-like systems."
  readme = "README.md"
  authors = [
      { name = "Alexandre Gauthier", email = "alex@underwares.org" }
  ]
  requires-python = ">=3.13"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Environment :: Console",
      "Intended Audience :: System Administrators",
      "License :: OSI Approved :: MIT License",
      "Natural Language :: English",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3.13",
      "Programming Language :: Python :: 3.14",
      "Topic :: System :: Monitoring",
      "Topic :: System :: Systems Administration",
      "Topic :: Utilities",
      "Typing :: Typed",
  ]
  license = "MIT"
  license-files = [
      "LICENSE"
  ]
  
  dependencies = [
      "fabric>=3.2.2",
      "typer>=0.15.2",
      "textual>=4.0.0",
      "pyyaml>=6.0.2",
      "platformdirs>=4.3.8",
      "prompt-toolkit>=3.0.51",
      "jinja2>=3.1.6",
      "packaging>=24.0",
  ]
  
  [dependency-groups]
  dev = [
      "fabric[pytest]>=3.2.2",
      "jsonschema>=4.25.1",
      "poethepoet>=0.33.1",
      "pyright>=1.1.400",
      "pytest>=8.3.5",
      "pytest-cov>=6.1.1",
      "pytest-json-ctrf>=0.3.5",
      "pytest-mock>=3.14.0",
      "renku-sphinx-theme>=0.5.0",
      "ruff>=0.11.5",
      "sphinx>=8.2.3",
      "sphinx-autobuild>=2024.10.3",
      "sphinx-lint>=1.0.0",
      "sphinx-tabs>=3.4.7",
      "sphinxcontrib-spelling>=8.0.1",
      "sphinxcontrib-typer>=0.5.1",
      "textual-dev>=1.7.0",
  ]
  
  [project.optional-dependencies]
  web = [
      "textual-serve>=1.1.2",
  ]
  
  [project.urls]
  homepage = "https://exosphere.readthedocs.io"
  repository = "https://github.com/mrdaemon/exosphere"
  issues = "https://github.com/mrdaemon/exosphere/issues"
  
  [project.scripts]
  exosphere = "exosphere.main:main"
  
  [build-system]
  requires = ["uv_build>=0.7.19,<0.8.0"]
  build-backend = "uv_build"
  
  [tool.uv.build-backend]
  module-name = "exosphere"
  
  [tool.pytest.ini_options]
  testpaths = ["tests"]
  
  [tool.poe.tasks]
  lint = "ruff check src tests scripts"
  isort = "ruff check --select I --fix src tests scripts"
  isort-check = "ruff check --select I src tests scripts --diff"
  typecheck = "pyright src tests scripts"
  ruff-format = "ruff format src tests scripts"
  ruff-format-check = "ruff format --check src tests scripts --diff"
  format = ['ruff-format', 'isort']
  format-check = ['ruff-format-check', 'isort-check']
  check = ['format-check', 'lint', 'typecheck']
  test = "pytest -v --ctrf .tests_report.json"
  coverage = "pytest --cov-report term-missing --cov-report html --cov=src tests/"
  docs-build = "sphinx-build -b html docs/source docs/build/html" 
  docs-lint = "sphinx-lint docs/source"
  docs-spellcheck = "sphinx-build -b spelling docs/source docs/build"
  docs = ['docs-lint', 'docs-spellcheck', 'docs-build']
  docs-serve = "sphinx-autobuild -b html docs/source docs/build/html --port 8000 --open-browser"
  docs-mkreports = "python scripts/generate_example_reports.py"
  