[build-system] requires = ["setuptools>=69.0.0", "wheel>=0.43.0"] build-backend = "setuptools.build_meta" [project] name = "arbitrade" version = "0.1.0" description = "Low-latency Kraken arbitrage bot" readme = "README.md" requires-python = ">=3.12" dynamic = ["dependencies", "optional-dependencies"] [tool.setuptools.dynamic] dependencies = {file = ["requirements/latest-runtime.in"]} [tool.setuptools.dynamic.optional-dependencies] dev = {file = ["requirements/latest-dev.in"]} [project.scripts] arbitrade = "arbitrade.main:main" arbitrade-bench-detection = "arbitrade.detection.benchmark:main" [tool.setuptools] package-dir = {"" = "src"} include-package-data = true [tool.setuptools.package-data] arbitrade = [ "web/templates/*.html", "web/templates/config/*.html", "web/templates/dashboard/*.html", "web/templates/partials/*.html", "storage/schema_pg.sql", ] [tool.setuptools.packages.find] where = ["src"] [tool.black] line-length = 100 target-version = ["py312"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "N", "ASYNC"] ignore = ["E203", "E501"] [tool.mypy] python_version = "3.12" strict = true warn_return_any = true warn_unused_configs = true pretty = true mypy_path = "src" [[tool.mypy.overrides]] module = ["asyncpg", "keyring", "sortedcontainers"] ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto"