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

[project]
name = "nixtla"
dynamic = ["version"]
description = "Python SDK for Nixtla API (TimeGPT)"
authors = [
    {name = "Nixtla", email = "business@nixtla.io"}
]
license = {text = "Apache Software License 2.0"}
readme = "README.md"
requires-python = ">=3.9"
keywords = ["time-series", "forecasting", "gpt"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Natural Language :: English",
    "License :: OSI Approved :: Apache Software License",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
]
dependencies = [
    "annotated-types",
    "httpx[zstd]",
    "orjson",
    "pandas",
    "pydantic>=1.10",
    "tenacity",
    "tqdm",
    "utilsforecast>=0.2.8",
]

[tool.setuptools.dynamic]
version = {attr = "nixtla.__version__"}

[project.optional-dependencies]
dev = [
    "black",
    "datasetsforecast",
    "fire",
    "hierarchicalforecast",
    "ipython<=8.32.0",
    "ipywidgets",
    "jupyterlab",
    "neuralforecast",
    "numpy<2",
    "plotly",
    "polars",
    "pre-commit",
    "pyreadr<0.5.3",
    "python-dotenv",
    "pyyaml",
    "setuptools<70",
    "statsforecast",
    "tabulate",
    "shap",
    "pytest",
    "pytest-cov",
    "pytest-rerunfailures",
    "pyarrow<21.0.0",
    "mlforecast",
    "lightgbm",
    "utilsforecast[plotting]",
    "holidays",
    "pandas_market_calendars",
    "pip-licenses"
]
distributed = [
    "fugue[dask,ray,spark]>=0.8.7",
    "dask<=2024.12.1",
    "pandas<2.2",
    "ray<=2.20.0",
]
plotting = [
    "utilsforecast[plotting]",
]
date_extras = [
    "holidays",
    "pandas_market_calendars",
]

[project.urls]
Homepage = "https://github.com/Nixtla/nixtla/"
Documentation = "https://nixtlaverse.nixtla.io/"
Repository = "https://github.com/Nixtla/nixtla/"

[tool.setuptools]
include-package-data = true

[tool.setuptools.packages.find]
exclude = ["action_files*"]

[tool.ruff.lint]
select = [
    "F",  # pyflakes
]

[tool.pytest.ini_options]
markers = [
    "distributed_run: mark test as requiring distributed run, such as those depending on Ray, Spark frameworks",
    "spark_run: mark test execution related to Spark framework",
    "ray_run: mark test execution related to Ray framework",
]
testpaths = ["nixtla_tests"]
addopts = [
    "--cov=python/statsforecast",
    "--cov-report=term-missing",
    "--cov-report=html",
    "--cov-fail-under=80"
]
