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

[project]
name = "abs-mcp"
version = "0.11.2"
description = "MCP server for the Australian Bureau of Statistics Data API. Hides SDMX behind plain-English tools, with curated mappings for Labour Force, CPI, ERP, Building Approvals, and Lending Indicators."
readme = "README.md"
requires-python = ">=3.11"
license = { text = "MIT" }
authors = [{ name = "Harry Vass" }]
keywords = [
    "mcp", "model-context-protocol", "claude", "fastmcp",
    "abs", "australian-bureau-of-statistics", "statistics", "sdmx",
    "australia", "australian", "public-data", "government-data",
    "economy", "economic-data", "data-api",
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: Scientific/Engineering :: Information Analysis",
    "Typing :: Typed",
]
dependencies = [
    "fastmcp>=2.0,<4",
    "httpx>=0.27",
    "pydantic>=2.7",
    "rapidfuzz>=3.9",
    "pandas>=2.2,<3",
    "sdmx1>=2.20",
    "aiosqlite>=0.20",
    "PyYAML>=6.0",
    "aus-identity>=0.1.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=8",
    "pytest-asyncio>=0.23",
    "respx>=0.21",
]

[project.scripts]
abs-mcp = "abs_mcp.server:main"

[project.urls]
Homepage = "https://github.com/Bigred97/abs-mcp"
Documentation = "https://github.com/Bigred97/abs-mcp#readme"
Repository = "https://github.com/Bigred97/abs-mcp"
Issues = "https://github.com/Bigred97/abs-mcp/issues"
Changelog = "https://github.com/Bigred97/abs-mcp/blob/main/CHANGELOG.md"
PyPI = "https://pypi.org/project/abs-mcp/"

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

[tool.pytest.ini_options]
asyncio_mode = "auto"
markers = ["live: hits the real ABS API"]
addopts = "-m 'not live'"
testpaths = ["tests"]
pythonpath = ["src"]

[tool.ruff]
line-length = 100

[tool.ruff.lint.per-file-ignores]
"tests/*" = ["E741", "F841", "F401"]
