importosfrompydantic_settingsimportBaseSettingsfrompotato_utilimportioasio_utilsfrombeans_logging_fastapiimportLoggerConfigPMfromloggerimportlogger_config_dict={}_configs_dir=os.path.join(os.getcwd(),"configs")ifos.path.isdir(_configs_dir):_config_dict=io_utils.read_all_configs(configs_dir=_configs_dir)classMainConfig(BaseSettings):logger:LoggerConfigPM=LoggerConfigPM()try:config=MainConfig(**_config_dict)exceptException:logger.exception("Failed to load config:")raiseSystemExit(1)__all__=["MainConfig","config",]
frompydanticimportvalidate_callfromfastapiimportFastAPI,APIRouter,HTTPException,Requestfromfastapi.responsesimportRedirectResponserouter=APIRouter()@router.get("/")defroot(request:Request):_logger=request.state.logger_logger.info("Root endpoint accessed.")return{"Hello":"World"}@router.get("/items/{item_id}")defread_item(item_id:int,q:str|None=None):return{"item_id":item_id,"q":q}@router.get("/continue",status_code=100)defget_continue():return{}@router.get("/redirect")defredirect():returnRedirectResponse("/")@router.get("/error")deferror(request:Request):_logger=request.state.loggertry:_=1/0exceptException:_logger.exception("Failed to divide by zero!")raiseHTTPException(status_code=500,detail="Failed to divide by zero!")return{}@validate_call(config={"arbitrary_types_allowed":True})defadd_routers(app:FastAPI)->None:"""Add routers to FastAPI app. Args: app (FastAPI): FastAPI app instance. """app.include_router(router)return__all__=["add_routers"]