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

[project]
name = "astrooracle"
version = "0.3.0"
description = "AstroOracle: active learning oracle for astronomical anomaly triage (SkyView cutouts + annotations + retrain hooks)."
readme = "README.md"
requires-python = ">=3.10"
license = { text = "MIT" }
authors = [{ name = "AstroOracle Contributors" }]

dependencies = [
  "numpy>=1.23",
  "pandas>=2.0",
  "matplotlib>=3.7",
  "scikit-learn>=1.3",
  "pyarrow>=12.0",
  "pillow>=10.0",
]

[project.optional-dependencies]
astro = [
  "astropy>=5.3",
  "astroquery>=0.4.6",
]

notebook = [
  "ipywidgets>=8.1",
  "jupyterlab>=4.0",
  "plotly>=5.18",
]

plotly = [
  "plotly>=5.18",
]

watch = [
  "watchdog>=3.0",
]

api = [
  "fastapi>=0.110",
  "uvicorn>=0.27",
  "pydantic>=2.6",
  "jinja2>=3.1",
  "python-multipart>=0.0.9",
]

stats = [
  "duckdb>=0.10",
]

ml = [
  "scipy>=1.10",
]

graph = [
  "networkx>=3.2",
  "python-louvain>=0.16",
]

explain = [
  "lime>=0.2.0.1",
]

docs = [
  "sphinx>=7.2",
  "furo>=2024.1.29",
  "myst-parser>=2.0",
]

dev = [
  "pytest>=7.4",
  "pytest-cov>=5.0",
  "httpx>=0.26",
  "ruff>=0.3",
  "black>=24.1",
]

[project.scripts]
astrooracle = "astrooracle.cli:main"

[tool.setuptools]
package-dir = { "" = "src" }

[tool.setuptools.packages.find]
where = ["src"]

[tool.ruff]
line-length = 100
target-version = "py310"

[tool.black]
line-length = 100

[tool.setuptools.package-data]
astrooracle = ["_templates/*.html"]
