[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "openenv-stocker" version = "0.1.0" description = "Stocker — multi-agent council RL environment for stock trading on OpenEnv" requires-python = ">=3.10" dependencies = [ "fastapi>=0.115.0", "uvicorn[standard]>=0.30.0", "pydantic>=2.0.0", "pydantic-settings>=2.6.0", "openai>=1.0.0", "openenv-core>=0.2.0", "pandas>=2.0.0", "pyarrow>=14.0.0", "pillow>=10.0.0", "markdown-it-py>=3.0.0", ] [project.scripts] server = "server.app:main" [project.optional-dependencies] dev = [ "pytest>=8.0.0", ] data = [ "yfinance>=0.2.0", "mplfinance>=0.12.0", "matplotlib>=3.8.0", ] eval = [ "matplotlib>=3.8.0", ] serve = [ "vllm>=0.6.0", ] # # NOTE: the [train] extras are intentionally NOT defined here. # # The training Space uses a deliberately decoupled dep stack that lives # in spaces/train/Dockerfile (heavy ML deps with exact pins). Keeping # train deps out of pyproject.toml means: # * Env Space install never pulls torch/transformers/peft/torchao, # so demo deploys can never break from training-side conflicts. # * Training Space pins live next to the Dockerfile they're used in. # * pip install -e ".[dev,data,eval]" still works for env-Space # development without ever touching ML dependencies. # # To install training deps locally, see spaces/train/Dockerfile or run: # pip install torch==2.10.0 torchvision==0.25.0 \ # transformers==5.6.2 peft==0.19.1 trl==1.2.0 ... # (matching the exact pins in spaces/train/Dockerfile). [tool.setuptools] # Explicit package list — setuptools' flat-layout autodetect would otherwise # pick up data/ and training/ (which are not importable Python packages). packages = [ "app", "app.api", "app.core", "app.council", "app.data", "server", ] [tool.uv] package = true [tool.pytest.ini_options] testpaths = ["tests"]