Metadata-Version: 2.4
Name: arithmaxchest
Version: 0.1.0
Summary: Centralized market data API and Python client
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.110
Requires-Dist: httpx>=0.27
Requires-Dist: pandas>=2.0
Requires-Dist: pyarrow>=14.0
Requires-Dist: requests>=2.31
Provides-Extra: yahoo
Requires-Dist: yfinance>=0.2.40; extra == "yahoo"
Provides-Extra: futures
Requires-Dist: databento>=1.0; extra == "futures"
Provides-Extra: server
Requires-Dist: uvicorn[standard]>=0.29; extra == "server"
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Provides-Extra: all
Requires-Dist: yfinance>=0.2.40; extra == "all"
Requires-Dist: databento>=1.0; extra == "all"
Requires-Dist: uvicorn[standard]>=0.29; extra == "all"
Dynamic: license-file

# Arithmax Chest

A standalone FastAPI service and Python client for querying centralized market data. Provider API keys stay on the server; research projects use only the client URL and token.

## Server

```bash
python -m pip install -e '.[all]'
export DATA_API_TOKEN='private-client-token'
export BINANCE_API_KEY='server-only-if-required'
export POLYGON_API_KEY='server-only'
export DATABENTO_API_KEY='server-only'
uvicorn achest.server:app --host 0.0.0.0 --port 8000
```

## Client

```python
from achest import MarketDataClient

with MarketDataClient('https://data.example.com', token='private-client-token') as client:
    frame = client.get(['BTCUSDT', 'ES.FUT'], '2024-01-01', '2024-01-31')
    client.download(['BTCUSDT'], '2024-01-01', '2024-01-31', 'data/btc.parquet')
```

`auto` routes crypto to Binance, futures to Databento first, and equities to Yahoo. Supported response formats are JSON, CSV, and Parquet. Large downloads should be moved to a background job endpoint before production use.

## PyPI publishing

```bash
python -m pip install build twine
python -m build
python -m twine upload dist/*
```
