[build-system] requires = ["hatchling>=1.26,<2"] build-backend = "hatchling.build" [project] name = "datapilot-ai" version = "2.0.0" description = "Evidence-grounded autonomous data science and ML copilot powered by LangGraph." readme = "README.md" requires-python = ">=3.11,<3.14" license = "MIT" authors = [{ name = "Dinesh Barri" }] keywords = [ "ai-agents", "automl", "data-analysis", "data-science", "explainable-ai", "langgraph", "machine-learning", "mlops", "streamlit", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "duckdb>=1.1,<2", "fastapi>=0.115,<1", "joblib>=1.4,<2", "langgraph>=0.2,<2", "numpy>=1.26,<3", "pandas>=2.2,<3", "plotly>=5.24,<7", "pyarrow>=23.0.1,<24", "pydantic-settings>=2.6,<3", "python-multipart>=0.0.12,<1", "scikit-learn>=1.5,<2", "sqlalchemy>=2.0,<3", "streamlit>=1.40,<2", "uvicorn[standard]>=0.32,<1", ] [project.optional-dependencies] ai = [ "google-genai>=1.0,<2", ] explain = [ "shap>=0.46,<1", ] automl = [ "optuna>=4,<5", "xgboost>=2.1,<4", ] observability = [ "mlflow>=2.17,<4", "opentelemetry-sdk>=1.28,<2", ] postgres = [ "psycopg[binary]>=3.2,<4", ] all = [ "google-genai>=1.0,<2", "mlflow>=2.17,<4", "opentelemetry-sdk>=1.28,<2", "optuna>=4,<5", "psycopg[binary]>=3.2,<4", "shap>=0.46,<1", "xgboost>=2.1,<4", ] dev = [ "build>=1.2,<2", "httpx>=0.27,<1", "pip-audit>=2.7,<3", "pre-commit>=4,<5", "pytest>=8.3,<9", "pytest-cov>=6,<8", "ruff>=0.8,<1", "twine>=5,<7", ] [project.urls] Homepage = "https://github.com/dineshbarri/DataPilot-AI" Documentation = "https://github.com/dineshbarri/DataPilot-AI#readme" Issues = "https://github.com/dineshbarri/DataPilot-AI/issues" Repository = "https://github.com/dineshbarri/DataPilot-AI" [tool.hatch.build.targets.sdist] include = [ "/api", "/datapilot", "/worker", "/LICENSE", "/README.md", ] [tool.hatch.build.targets.wheel] packages = ["datapilot", "api", "worker"] [tool.pytest.ini_options] addopts = "-q --disable-warnings --maxfail=1 --strict-markers" testpaths = ["tests"] [tool.coverage.run] branch = true source = ["datapilot", "api"] [tool.coverage.report] fail_under = 75 show_missing = true skip_covered = false [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "B", "UP", "S"] ignore = ["B008", "E501", "S101", "S112"] [tool.ruff.format] indent-style = "space" quote-style = "double"