[build-system]
requires = [
  "setuptools>=77.0.0",
  "setuptools_scm[toml]>=6.0",
  "wheel"
]

[project]
name = "esgf-qa"
description = "QA based on compliance-checker"
readme = "README.md"
keywords = ["compliance checker", "plugin", "wcrp", "cmip", "cmip6", "cmip7", "cordex", "cordex-cmip6", "qc", "qa", "quality control", "quality assurance", "esgf"]
license = "Apache-2.0"
license-files = ["LICENSE"]
authors = [
  {name = "Martin Schupfner", email = "schupfner@dkrz.de"},
]
maintainers = [
  {name = "Martin Schupfner", email = "schupfner@dkrz.de"}
]
requires-python = ">=3.10"
classifiers = [
  "Programming Language :: Python :: 3 :: Only",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
  "Programming Language :: Python :: 3.13"
]
dependencies = [
  "cftime",
  "cf_xarray",
  "compliance-checker>=5.3.0",
  "dask",
  "netCDF4",
  "pandas",
  "textual",
  "xarray",
  "cc-plugin-cc6>=0.4.0",
  "cc-plugin-wcrp"
]
dynamic = [
  "version"
]

[project.optional-dependencies]
dev = [
  "black",
  "build",
  "isort",
  "flake8",
  "flake8-builtins",
  "flake8-comprehensions",
  "flake8-mutable",
  "flake8-print",
  "pre-commit",
  "pytest>=7.0.0",
  "pytest-flake8",
  "ruff>=0.1.0",
  "twine",
  "wheel"
]

[project.urls]
homepage = "https://github.com/ESGF/esgf-qa"
repository = "https://github.com/ESGF/esgf-qa"

[project.scripts]
esgqa = "esgf_qa.run_qa:main"
esgqaviewer = "esgf_qa.qaviewer:main"

[tool.black]
target-version = [
  "py310",
  "py311",
  "py312",
  "py313"
]

[tool.check-manifest]
ignore = [
  "*.yml",
  ".coveragerc",
  "Makefile",
  "docs",
  "docs/*",
  "notebooks",
  "notebooks/*",
  "tests",
  "tests/*"
]

[tool.isort]
profile = "black"
py_version = 310

[tool.pytest.ini_options]
filterwarnings = [
  "ignore::UserWarning",
  "ignore::RuntimeWarning"
]

[tool.ruff]
src = ["esgf_qa"]
line-length = 88
target-version = "py310"
ignore = ["E501"]

[tool.ruff.format]
line-ending = "auto"

[tool.ruff.isort]
known-first-party = ["esgf_qa"]
lines-after-imports = 1

[tool.setuptools_scm]
fallback_version = "999"
write_to = "esgf_qa/_version.py"

[tool.setuptools.packages.find]
exclude = ["fonts"]
