[project]
name = "posting"
version = "2.9.2"
description = "The modern API client that lives in your terminal."
authors = [
    { name = "Darren Burns", email = "darrenb900@gmail.com" }
]
dependencies = [
    "click>=8.1.7,<9.0.0",
    "xdg-base-dirs>=6.0.1,<7.0.0",
    "click-default-group>=1.2.4,<2.0.0",
    "httpx[brotli]==0.28.1",
    # pinned httpx automatically since we monkeypatch _main.py
    "openapi-pydantic>=0.5.0",
    "pyperclip>=1.9.0,<2.0.0",
    "pydantic>=2.9.2,<3.0.0",
    "pyyaml>=6.0.2,<7.0.0",
    "pydantic-settings>=2.4.0,<3.0.0",
    "python-dotenv>=1.0.1,<2.0.0",
    # pinned intentionally
    "watchfiles>=0.24.0",
    "textual[syntax]==6.1.0",
    "textual-autocomplete==4.0.6",
]
readme = "README.md"
requires-python = ">= 3.11"
license = { file = "LICENSE" }
keywords = ["tui", "http", "client", "terminal", "api", "testing", "textual", "cli", "posting", "developer-tool"]
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Environment :: Console",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
]

[project.urls]
Homepage = "https://github.com/darrenburns/posting"
Repository = "https://github.com/darrenburns/posting"
Issues = "https://github.com/darrenburns/posting/issues"
Documentation = "https://github.com/darrenburns/posting/blob/main/README.md"

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

[project.scripts]
posting = "posting.__main__:cli"

[tool.uv]
dev-dependencies = [
    "textual-dev>=1.5.1",
    "pytest>=8.3.1",
    "jinja2>=3.1.4",
    "syrupy>=4.6.1",
    "pytest-xdist>=3.6.1",
    "pytest-cov>=5.0.0",
    "pytest-textual-snapshot>=1.0.0",
    "mkdocs-material>=9.5.30",
    "pyinstrument>=5.0.1",
]

[tool.hatch.metadata]
allow-direct-references = true

[tool.hatch.build.targets.wheel]
packages = ["src/posting"]

[tool.pytest.ini_options]
markers = [
    "serial",  # used to indicate tests must not run in parallel
]

[tool.coverage.run]
relative_files = true
