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

[project]
name = "neuroflow-ml"
version = "0.1.0"
description = "A local-first, node-based ML orchestrator with a visual pipeline builder"
readme = "README.md"
license = "MIT"
requires-python = ">=3.9"
authors = [
    { name = "Aayush Gokhale" }
]
keywords = ["machine-learning", "ml", "pipeline", "workflow", "orchestrator", "visual", "node-based"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Environment :: Web Environment",
    "Framework :: FastAPI",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
    "fastapi>=0.104.0",
    "uvicorn[standard]>=0.24.0",
    "pydantic>=2.0.0",
    "pandas>=2.0.0",
    "numpy>=1.24.0",
    "scikit-learn>=1.3.0",
    "networkx>=3.0",
    "joblib>=1.3.0",
    "python-multipart>=0.0.6",
    "aiofiles>=23.0.0",
]

[project.optional-dependencies]
xgboost = ["xgboost>=2.0.0"]
dev = [
    "pytest>=7.0.0",
    "pytest-asyncio>=0.21.0",
    "httpx>=0.25.0",
]

[project.scripts]
neuroflow = "app.cli:main"

[project.urls]
Homepage = "https://github.com/aayushgokhale/neuroflow"
Documentation = "https://github.com/aayushgokhale/neuroflow#readme"
Repository = "https://github.com/aayushgokhale/neuroflow"
Issues = "https://github.com/aayushgokhale/neuroflow/issues"

[tool.hatch.build]
exclude = [
    "venv/",
    ".venv/",
    "__pycache__/",
    "*.pyc",
    ".git/",
    ".gitignore",
    "dist/",
    "build/",
]

[tool.hatch.build.targets.wheel]
packages = ["app"]

[tool.hatch.build.targets.sdist]
include = [
    "app/",
    "static/",
    "data/",
    "README.md",
    "pyproject.toml",
]

[tool.hatch.build.targets.wheel.shared-data]
"static" = "share/neuroflow/static"
"data" = "share/neuroflow/data"
