aparekh02's picture
initial push: overflow_env with Gradio RL demo UI
cb054fe verified
"""
FastAPI application for the Overflow Environment.
Exposes the OverflowEnvironment over HTTP and WebSocket endpoints.
Usage:
uvicorn server.app:app --reload --host 0.0.0.0 --port 8000
"""
import inspect
from openenv.core.env_server.http_server import create_app
from ..models import OverflowAction, OverflowObservation
from .overflow_environment import OverflowEnvironment
def _create_overflow_app():
"""Build app across create_app variants that may expect a factory or an instance."""
try:
first_param = next(iter(inspect.signature(create_app).parameters.values()))
annotation_text = str(first_param.annotation)
except (StopIteration, TypeError, ValueError):
annotation_text = "typing.Callable"
expects_instance = (
"Environment" in annotation_text and "Callable" not in annotation_text
)
env_arg = OverflowEnvironment() if expects_instance else OverflowEnvironment
return create_app(
env_arg, OverflowAction, OverflowObservation, env_name="overflow_env"
)
app = _create_overflow_app()
def main():
"""Entry point for direct execution via uv run or python -m."""
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
if __name__ == "__main__":
main()