[project]
name="stac-pydantic"
description="Pydantic data models for the STAC spec"
readme = "README.md"
classifiers=[
        "Intended Audience :: Developers",
        "Intended Audience :: Information Technology",
        "Intended Audience :: Science/Research",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Programming Language :: Python :: 3.13",
        "Programming Language :: Python :: 3.14",
        "License :: OSI Approved :: MIT License",
]
keywords=["stac", "pydantic", "validation"]
authors=[
        { name = "Arturo Engineering", email = "engineering@arturo.ai"},
]
maintainers = [
  { name = "Vincent Sarago", email = "vincent@developmentseed.org" },
  { name = "Pete Gadomski", email = "pete.gadomski@gmail.com" },
]
license = {file = "LICENSE"}
requires-python=">=3.8"
dynamic = ["version"]
dependencies = [
        "click>=8.1.7",
        "pydantic>=2.4.1",
        "geojson-pydantic>=1.0.0",
]

[project.scripts]
stac-pydantic = "stac_pydantic.scripts.cli:app"

[project.urls]
homepage = "https://github.com/stac-utils/stac-pydantic"
repository ="https://github.com/stac-utils/stac-pydantic.git"

[project.optional-dependencies]
validation = [
        "jsonschema>=4.19.1",
        "requests>=2.31.0",
]

[dependency-groups]
dev = [
        "pytest>=7.4.2",
        "pytest-cov>=4.1.0",
        "pytest-icdiff>=0.8",
        "requests>=2.31.0",
        "shapely>=2.0.1",
        "dictdiffer>=0.9.0",
        "jsonschema>=4.19.1",
        "pyyaml>=6.0.1",
        "pre-commit",
]

deploy = [
    "hatch",
]

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

[tool.hatch.version]
path = "stac_pydantic/version.py"

[tool.hatch.build.targets.sdist]
only-include = ["stac_pydantic/"]

[tool.hatch.build.targets.wheel]
only-include = ["stac_pydantic/"]

[tool.pytest.ini_options]
addopts = "-sv --cov stac_pydantic --cov-report xml --cov-report term-missing  --cov-fail-under 95"
markers = ["network"]

[tool.isort]
profile = "black"
known_first_party = "stac_pydantic"
known_third_party = ["pydantic", "geojson-pydantic", "click"]
default_section = "THIRDPARTY"

[tool.mypy]
ignore_missing_imports = true
exclude = ["tests", ".venv"]

[tool.ruff]
line-length = 88

[tool.ruff.lint]
select = [
        "C",
        "E",
        "F",
        "W",
        "B",
]
ignore = [
    "E203",  # line too long, handled by black
    "E501",  # do not perform function calls in argument defaults
    "B028",  # No explicit `stacklevel` keyword argument found
]
