[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"
[project]
name = "wbt"
dynamic = ["version"]
description = "Weight-based backtesting engine for quantitative trading"
readme = "README.md"
license = "MIT"
requires-python = ">=3.10"
dependencies = ["numpy", "pandas", "pyarrow", "polars", "plotly"]
[project.optional-dependencies]
dev = ["basedpyright", "maturin>=1.0,<2.0", "pytest", "ruff"]
[project.urls]
Homepage = "https://github.com/zengbin93/wbt"
Repository = "https://github.com/zengbin93/wbt"
Documentation = "https://github.com/zengbin93/wbt/tree/main/python"
[tool.maturin]
manifest-path = "../Cargo.toml"
python-source = "."
module-name = "wbt._wbt"
features = []
[tool.pytest.ini_options]
testpaths = ["tests"]
norecursedirs = ["tests/manual"]
[tool.ruff]
target-version = "py310"
line-length = 120
fix = true
exclude = ["tests/manual"]
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "C4", "UP", "SIM", "RET", "N"]
ignore = ["E501"]
[tool.ruff.lint.isort]
known-first-party = ["wbt"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
[tool.basedpyright]
pythonVersion = "3.10"
typeCheckingMode = "standard"
reportMissingImports = false
reportMissingTypeStubs = false
reportUnknownMemberType = false
reportArgumentType = false
reportAttributeAccessIssue = false
reportCallIssue = false
reportIndexIssue = false
reportOperatorIssue = false
include = ["wbt", "tests"]
exclude = ["tests/manual"]
[dependency-groups]
dev = [
"ipython>=8.39.0",
"jupyter>=1.1.1",
"pandas-stubs>=2.3.3.260113",
]