[project]
name = "uforia"
version = "0.1.0.dev4"
description = "Research-first trading platform with BTC VVIX analytics."
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
  "fastapi>=0.116.1",
  "httpx>=0.28.1",
  "numpy>=2.2.4",
  "orjson>=3.10.18",
  "pandas>=2.2.3",
  "polars>=1.28.1",
  "psycopg[binary]>=3.2.9",
  "pyarrow>=19.0.1",
  "pydantic>=2.11.1",
  "rich>=14.1.0",
  "scikit-learn>=1.6.1",
  "scipy>=1.15.2",
  "statsmodels>=0.14.4",
  "tenacity>=9.1.2",
  "typer>=0.15.2",
  "uvicorn>=0.35.0",
  "websockets>=15.0.1",
  "eth-account>=0.13.7",
  "hyperliquid-python-sdk>=0.22.0",
  "lighter-sdk>=1.0.6",
  "derive-client",
]

[project.optional-dependencies]
dev = [
  "mypy>=1.15.0",
  "pytest>=8.3.5",
  "ruff>=0.11.2",
]
microstructure = [
  "catboost>=1.2.8",
  "onnx>=1.19.0",
  "onnxscript>=0.5.0",
  "onnxruntime>=1.22.1",
  "torch>=2.8.0",
  "xgboost>=3.0.4",
]

[project.scripts]
uforia = "uforia.terminal.app:app"
uforia-admin = "uforia.cli:app"
uforia-api = "uforia.api.server:main"

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

[tool.hatch.build.targets.wheel]
packages = ["src/uforia"]

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

[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "A", "C4"]

[tool.ruff.lint.per-file-ignores]
"src/uforia/api/app.py" = ["B008"]

[tool.pytest.ini_options]
testpaths = ["tests"]

[tool.mypy]
python_version = "3.10"
files = ["src"]
ignore_missing_imports = true
warn_unused_ignores = true
warn_redundant_casts = true
strict_optional = true

[tool.uv.sources]
derive-client = { url = "https://files.pythonhosted.org/packages/source/d/derive-client/derive_client-0.3.12.tar.gz" }
