[build-system]
requires = ["setuptools>=69", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "soaking"
version = "0.6.6"
description = "soak: graph-based pipelines and tools for LLM-assisted qualitative text analysis"
authors = [
  { name = "Ben Whalley", email = "ben.whalley@plymouth.ac.uk" }
]
license = { text = "AGPL-3.0-or-later" }
readme = "README_PYPI.md"
requires-python = ">=3.12"
dependencies = [
    "instructor>=1.10.0",
    "jinja2>=3.1.6",
    "lark>=1.2.2",
    "matplotlib>=3.10.3",
    "networkx>=3.5",
    "pandas>=2.3.1",
    "pdfplumber>=0.11.7",
    "pydantic>=2.11.7",
    "python-box>=7.3.2",
    "python-decouple>=3.8",
    "pypandoc>=1.14",
    "scikit-learn>=1.7.1",
    "scipy>=1.14",
    "seaborn>=0.13.2",
    "tiktoken>=0.9.0",
    "typer>=0.16.0",
    "umap-learn",
    "asyncpg>=0.30.0",
    "jinja-markdown>=1.210911",
    "struckdown>=0.4.7",
    "nltk>=3.9.2",
    "rank-bm25>=0.2.2",
    "openpyxl>=3.1.0",
    "xlsxwriter>=3.1.0",
    "statsmodels>=0.14.0",
    "krippendorff>=0.6.0",
    "pyirr>=0.84.1.2",
    "setuptools>=80.9.0",
    "pysbd>=0.3.4",
    "tqdm>=4.67.0",
    "simpleeval>=1.0.3",
    "mkdocs>=1.6.0",
    "mkdocs-material>=9.5.0",
    "pymdown-extensions>=10.11.0",
    "graphviz>=0.20.0",
    "pot>=0.9.6.post1",
    "pyphen>=0.16.0",
    "plotly>=5.18.0",
    "tenacity>=8.2.0",
    "hdbscan>=0.8.33",
]

[project.optional-dependencies]
calibration = [
    "rpy2>=3.5.0",
]

local-ai = [
    "transformers>=4.51.0",
    "sentence-transformers>=2.5.1",
    "struckdown[local]>=0.3.17",
    "pygam>=0.12.0",
]

scrub = [
  "scrubadub>=2.0.0",
  "scrubadub-spacy>=2.0.0",
  "spacy>=3.8.4,<3.9",
  "spacy-transformers",
]


[tool.setuptools.package-data]
soak = ["templates/*.html", "templates/*.md", "templates/**/*.html", "templates/**/*.md", "templates/**/*.sd", "pipelines/**/*.soak", "pipelines/**/*.sd", "soak-data/**/*", "calibration-data/**/*"]
django_soak = ["templates/**/*.html", "static/**/*"]

[tool.setuptools.packages.find]
where = ["."]
include = ["soak*", "django_soak*"]

[project.scripts]
soak = "soak.cli:main_with_default_command"

[tool.uv]
package = true

[tool.uv.sources]
# Local development version
# struckdown = { path = "/Users/benwhalley/dev/struckdown", editable = true }
spacy-transformers = { git = "https://github.com/explosion/spacy-transformers.git", rev = "bf2fe03" }
umap-learn = { git = "https://github.com/lmcinnes/umap", branch = "master" }


[tool.pytest.ini_options]
pythonpath = ["."]


