[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"

[project]
name = "linkml_data_qc"
description = "Compliance analysis tool for LinkML data files - measures recommended field population."
authors = [
  {name = "My Name", email = "my-name@my-org.org"},
]
license = "Apache-2.0"
license-files = ["LICENSE"]
readme = "README.md"
requires-python = ">=3.10,<4.0"
dynamic = ["version"]

dependencies = [
  "typer >= 0.9.0",
  "linkml-runtime >=1.9.4",
  "pydantic >=2.0.0",
  "pyyaml >=6.0",
]

[project.optional-dependencies]
viz = [
  "matplotlib>=3.7.0",
  "seaborn>=0.13.0",
]

[dependency-groups]
dev = [
    "linkml>=1.9.3",
    "pytest>=8.0.0",
    "mypy>=1.17.1",
    "types-PyYAML>=6.0.0",
    "ruff>=0.4.8",
    "mkdocs-material>=8.2.8",
    "mkdocs-mermaid2-plugin>=1.1.1",
    "jupyter>=1.0.0",
    "mkdocs-jupyter>=0.25.1",
    "papermill>=2.6.0",
    "matplotlib>=3.7.0",
    "seaborn>=0.13.0",
]

[project.scripts]
linkml-data-qc = "linkml_data_qc.cli:main"


# See https://hatch.pypa.io/latest/config/build/#file-selection for how to
# explicitly include files other than default into the build distributions.

[tool.hatch.version]
source = "uv-dynamic-versioning"

# Ref.: https://github.com/ninoseki/uv-dynamic-versioning/
[tool.uv-dynamic-versioning]
vcs = "git"
style = "pep440"
fallback-version = "0.0.0"

# Ref.: https://docs.pytest.org/en/stable/reference/reference.html#configuration-options
[tool.pytest.ini_options]
testpaths = ["tests"]

# Ref.: https://github.com/codespell-project/codespell
[tool.codespell]
skip = [
  "LICENSE",
  "pyproject.toml",
  "uv.lock",
  "project/*",
  "src/linkml_data_qc/datamodel/linkml_data_qc_pydantic.py",
  "src/linkml_data_qc/datamodel/linkml_data_qc.py",
]

# Reminder: words have to be lowercased for the ignore-words-list
ignore-words-list = "linke"
quiet-level = 3

# Ref.: https://github.com/crate-ci/typos (spell checker)
[tool.typos.default.extend-words]
linke = "linke"
[tool.typos.files]
extend-exclude = [
  "LICENSE",
  "uv.lock",
  "pyproject.toml",
  "project/*",
  "src/linkml_data_qc/datamodel/linkml_data_qc_pydantic.py",
  "src/linkml_data_qc/datamodel/linkml_data_qc.py",
]
