intelkishan's picture
Fix: Add main() and if __name__ == '__main__' to satisfy multi-mode deployment check
2b83ba0
Raw
History Blame Contribute Delete
1.84 kB
"""
FastAPI application for the Earnings Analyst Environment.
This module creates an HTTP server that exposes the EarningsAnalystEnvironment
over HTTP and WebSocket endpoints, compatible with EnvClient.
Endpoints:
- POST /reset: Reset the environment
- POST /step: Execute an action
- GET /state: Get current environment state
- GET /schema: Get action/observation schemas
- WS /ws: WebSocket endpoint for persistent sessions
Usage:
# Development (with auto-reload):
uvicorn server.app:app --reload --host 0.0.0.0 --port 8000
# Production:
uvicorn server.app:app --host 0.0.0.0 --port 8000 --workers 4
# Or run directly:
python -m server.app
"""
try:
from openenv.core.env_server.http_server import create_app
except (ImportError, ModuleNotFoundError) as e: # pragma: no cover
raise ImportError(
"openenv is required for the web interface. Install dependencies with '\n uv sync\n'"
) from e
from earnings_analyst.models import EarningsAnalystAction, EarningsAnalystObservation
from earnings_analyst.server.earnings_analyst_environment import EarningsAnalystEnvironment
# Create the app with web interface and README integration
app = create_app(
EarningsAnalystEnvironment,
EarningsAnalystAction,
EarningsAnalystObservation,
env_name="earnings_analyst",
max_concurrent_envs=1, # increase this number to allow more concurrent WebSocket sessions
)
def main():
"""
Entry point for direct execution.
"""
import argparse
import uvicorn
parser = argparse.ArgumentParser()
parser.add_argument("--host", type=str, default="0.0.0.0")
parser.add_argument("--port", type=int, default=8000)
args = parser.parse_args()
uvicorn.run(app, host=args.host, port=args.port)
if __name__ == "__main__":
main()