diff --git a/pyproject.toml b/pyproject.toml index 3649d83..fe7512e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["hatchling>=1.25.0"] -build-backend = "hatchling.build" +requires = ["setuptools>=69.0.0", "wheel>=0.43.0"] +build-backend = "setuptools.build_meta" [project] name = "arbitrade" @@ -8,42 +8,23 @@ version = "0.1.0" description = "Low-latency Kraken arbitrage bot" readme = "README.md" requires-python = ">=3.12" -dependencies = [ - "cryptography>=43.0.0", - "duckdb>=1.1.0", - "fastapi>=0.115.0", - "httptools>=0.6.1", - "httpx>=0.28.0", - "jinja2>=3.1.0", - "keyring>=25.0.0", - "orjson>=3.10.0", - "pydantic>=2.9.0", - "pydantic-settings>=2.5.0", - "structlog>=24.4.0", - "sortedcontainers>=2.4.0", - "uvicorn[standard]>=0.31.0", - "uvloop>=0.20.0; platform_system != 'Windows'", - "websockets>=13.0", -] +dynamic = ["dependencies", "optional-dependencies"] -[project.optional-dependencies] -dev = [ - "black>=24.8.0", - "mypy>=1.11.0", - "pre-commit>=3.8.0", - "pytest>=8.3.0", - "pytest-asyncio>=0.24.0", - "respx>=0.21.1", - "ruff>=0.6.0", - "vcrpy>=6.0.0", -] +[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.hatch.build.targets.wheel] -packages = ["src/arbitrade"] +[tool.setuptools] +package-dir = {"" = "src"} + +[tool.setuptools.packages.find] +where = ["src"] [tool.black] line-length = 100 diff --git a/requirements/latest-dev.in b/requirements/latest-dev.in new file mode 100644 index 0000000..24dd450 --- /dev/null +++ b/requirements/latest-dev.in @@ -0,0 +1,9 @@ +# Unpinned dev dependencies (latest available) +black +mypy +pre-commit +pytest +pytest-asyncio +respx +ruff +vcrpy diff --git a/requirements/latest-runtime.in b/requirements/latest-runtime.in new file mode 100644 index 0000000..f348e2c --- /dev/null +++ b/requirements/latest-runtime.in @@ -0,0 +1,16 @@ +# Unpinned runtime dependencies (latest available) +cryptography +duckdb +fastapi +httptools +httpx +jinja2 +keyring +orjson +pydantic +pydantic-settings +sortedcontainers +structlog +uvicorn[standard] +uvloop ; platform_system != "Windows" +websockets