devai-api/app/app.py (24 lines of code) (raw):

# Copyright 2024 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from ipaddress import IPv4Address, IPv6Address import yaml from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from pydantic import BaseModel from .routes import routes class AppConfig(BaseModel): host: IPv4Address | IPv6Address = IPv4Address("127.0.0.1") port: int = 8080 def parse_config(path: str) -> AppConfig: with open(path, "r") as file: config = yaml.safe_load(file) return AppConfig(**config) def init_app(cfg: AppConfig) -> FastAPI: app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(routes) return app