[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", ] train = [ # Newer coherent stack: torch 2.6 (has torch.int1) → torchao>=0.16 → # peft>=0.13 (LoRA-injection probe) → transformers>=4.55 (Gemma-4 # tokenizer fix, has BloomPreTrainedModel only via lazy import which # works) → trl>=0.22 → huggingface_hub>=1.0. "trl>=0.22.0", "transformers>=4.55.0", "peft>=0.16.0", "accelerate>=1.6.0", "bitsandbytes>=0.45.0", "datasets>=3.0.0", "tensorboard>=2.18.0", "torchao>=0.16.0", "huggingface_hub>=1.0.0", ] [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"]