[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[project]
name = "akquant"
version = "0.2.26"
description = "High-performance quantitative trading framework based on Rust and Python"
readme = "README.md"
license = {text = "MIT License"}
authors = [
    {name = "AKQuant Developers"},
    {email = "albertandking@gmail.com"}
]
classifiers = [
    "Programming Language :: Rust",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "License :: OSI Approved :: MIT License",
]
requires-python = ">=3.10"
dependencies = [
    "pandas>=2.2.0",
    "numpy>=2.2.2",
    "pyarrow>=14.0.0",
    "tqdm>=4.0.0",
    "plotly>=5.0.0",
    "polars>=0.20.0",
    "pydantic>=2.0.0",
]

[project.urls]
Homepage = "https://github.com/akfamily/akquant"
Repository = "https://github.com/akfamily/akquant"
Documentation = "https://akquant.akfamily.xyz"

[project.optional-dependencies]
quantstats = [
    "quantstats>=0.0.60"
]
plot = [
    "plotly>=5.0.0",
]
ml = [
    "scikit-learn>=1.0.0",
    "torch>=2.0.0",
]
docs = [
    "mkdocs>=1.5.0",
    "mkdocs-material>=9.5.0",
    "mkdocs-static-i18n>=1.2.0",
    "akshare>=1.0.0",
]
full = [
    "plotly>=5.0.0",
    "scikit-learn>=1.0.0",
    "torch>=2.0.0",
    "quantstats>=0.0.60",
]
dev = [
    "mypy>=1.0.0",
    "maturin>=1.11.5",
    "pandas-stubs>=2.3.3.260113",
    "pre-commit>=3.0.0",
    "pytest>=7.0.0",
    "ruff>=0.1.0",
    "types-pytz>=2025.2.0.20251108",
]

[tool.maturin]
features = ["pyo3/extension-module"]
python-source = "python"
module-name = "akquant.akquant"

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

[tool.ruff.lint]
select = ["E", "F", "I", "D"]
ignore = ["D100", "D104"]

[tool.ruff.lint.pydocstyle]
convention = "pep257"

[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
check_untyped_defs = true

[[tool.mypy.overrides]]
module = [
    "torch.*",
    "sklearn.*",
    "akshare.*",
    "pyarrow",
    "pyarrow.*",
    "polars",
    "polars.*",
    "pytest",
    "quantstats",
    "quantstats.*",
]
ignore_missing_imports = true
disable_error_code = ["import-untyped"]
