# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. [build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta" [project] name = "openenv-verirl_env" version = "0.7.5" description = "Verilog hardware design environment for OpenEnv — trains LLMs to write RTL for AI-accelerator primitives" requires-python = ">=3.10" dependencies = [ "modal>=1.4.1", "omegaconf>=2.3.0", "openai>=2.30.0", # Core OpenEnv runtime (provides FastAPI server + HTTP client types) "openenv-core[core]>=0.2.2", # For loading .env files in inference.py "python-dotenv>=1.0.0", "wandb>=0.25.1", "weave>=0.52.37", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-cov>=4.0.0", "pytest-asyncio>=0.23.0", "towncrier>=23.11.0", ] # SFT warm-start: Unsloth requires TRL 0.x — keep separate from the GRPO image sft = [ "torch>=2.3.1", "transformers>=4.57.0", "trl>=0.14.0,<1.0.0", "peft>=0.12.0", "accelerate>=0.33.0", "bitsandbytes>=0.43.3", "wandb>=0.17.0", "huggingface_hub>=0.24.0", "datasets>=3.5.1", "numpy", "omegaconf>=2.3.0", "modal>=1.0.0", # Unsloth for fast SFT (Linux/CUDA only) "unsloth==2026.4.8; sys_platform == 'linux'", ] # GRPO/RLVR: TRL 1.x + vLLM — incompatible with Unsloth's TRL pin grpo = [ "torch>=2.3.1", "transformers>=4.57.0", "trl>=1.0.0", "peft>=0.12.0", "accelerate>=0.33.0", "bitsandbytes>=0.43.3", "wandb>=0.17.0", "huggingface_hub>=0.24.0", "datasets>=3.5.1", "numpy", "liger-kernel", "omegaconf>=2.3.0", "modal>=1.0.0", "jmespath>=1.0.0", # vLLM for GRPO rollouts — TRL 1.x supports 0.11.0–0.18.0 (Linux/CUDA only) "vllm>=0.11.0,<=0.18.0; sys_platform == 'linux'", ] [project.scripts] # Server entry point - enables running via: uv run --project . server # or: python -m verirl_env.server.app server = "verirl_env.server.app:main" [tool.uv] # sft and grpo are deployed in separate Modal containers and have conflicting # TRL version pins — tell uv to resolve them independently, not simultaneously. conflicts = [ [{ extra = "sft" }, { extra = "grpo" }], ] [tool.setuptools] include-package-data = true packages = ["verirl_env", "verirl_env.server"] package-dir = { "verirl_env" = ".", "verirl_env.server" = "server" } [tool.setuptools.package-data] verirl_env = ["**/*.yaml", "**/*.yml", "problems/**/*.v", "problems/**/*.sv", "problems/**/*.md"] [tool.towncrier] package = "verirl_env" directory = ".changelog.d" filename = "CHANGELOG.md" title_format = "## [{version}] - {project_date}" template = ".changelog.d/template.md" [[tool.towncrier.type]] directory = "feature" name = "Features" showcontent = true [[tool.towncrier.type]] directory = "bugfix" name = "Bug Fixes" showcontent = true [[tool.towncrier.type]] directory = "doc" name = "Documentation" showcontent = true [[tool.towncrier.type]] directory = "misc" name = "Miscellaneous" showcontent = false