diff --git a/optuna_dashboard/app.py b/optuna_dashboard/app.py index 2a0ea9b7..ff579f92 100644 --- a/optuna_dashboard/app.py +++ b/optuna_dashboard/app.py @@ -25,10 +25,11 @@ def catch_api_internal_error(view): return response_body except Exception as e: response.status = 500 - response.content_type = 'application/json' - stacktrace = '\n'.join(traceback.format_tb(e.__traceback__)) + response.content_type = "application/json" + stacktrace = "\n".join(traceback.format_tb(e.__traceback__)) _logger.error(f"Exception: {e}\n{stacktrace}") return json.dumps({"reason": "internal server error"}) + return decorated @@ -52,29 +53,29 @@ def create_app(storage): def dashboard(): response.content_type = "text/html" return """ - - - - Optuna Dashboard - - - - - - - - -
-

Now loading...

-
- - """ + + + + Optuna Dashboard + + + + + + + + +
+

Now loading...

+
+ +""" @app.get("/api/studies") @catch_api_internal_error @@ -84,22 +85,22 @@ def create_app(storage): serializer.serialize_study_summary(summary) for summary in storage.get_all_study_summaries() ] - return json.dumps({ - "study_summaries": summaries, - }) + return json.dumps( + { + "study_summaries": summaries, + } + ) @app.post("/api/studies") @catch_api_internal_error def create_study(): - response.content_type = 'application/json' + response.content_type = "application/json" study_name = request.json.get("study_name", None) direction = request.json.get("direction", None) if study_name is None or direction not in ("minimize", "maximize"): response.status = 400 - return { - "reason": "You need to set study_name and direction" - } + return {"reason": "You need to set study_name and direction"} study_id = storage.create_new_study(study_name) if direction.lower() == "maximize": @@ -107,9 +108,9 @@ def create_app(storage): summary = get_study_summary(storage, study_id) response.status = 201 - return json.dumps({ - "study_summary": serializer.serialize_study_summary(summary) - }) + return json.dumps( + {"study_summary": serializer.serialize_study_summary(summary)} + ) @app.get("/api/studies/") @catch_api_internal_error @@ -117,9 +118,7 @@ def create_app(storage): response.content_type = "application/json" summary = get_study_summary(storage, study_id) trials = storage.get_all_trials(study_id) - return json.dumps(serializer.serialize_study_detail( - summary, trials - )) + return json.dumps(serializer.serialize_study_detail(summary, trials)) @app.get("/static/") def send_static(filename): diff --git a/optuna_dashboard/serializer.py b/optuna_dashboard/serializer.py index 4b7fe3d5..ad9eee8d 100644 --- a/optuna_dashboard/serializer.py +++ b/optuna_dashboard/serializer.py @@ -27,7 +27,7 @@ def serialize_study_summary(summary: StudySummary) -> Dict[str, Any]: } if summary.datetime_start is not None: - serialized["datetime_start"] = summary.datetime_start.isoformat(), + serialized["datetime_start"] = (summary.datetime_start.isoformat(),) if summary.best_trial: # Make undefined if None serialized["best_trial"] = serialize_frozen_trial(summary.best_trial) @@ -35,7 +35,9 @@ def serialize_study_summary(summary: StudySummary) -> Dict[str, Any]: return serialized -def serialize_study_detail(summary: StudySummary, trials: List[FrozenTrial]) -> Dict[str, Any]: +def serialize_study_detail( + summary: StudySummary, trials: List[FrozenTrial] +) -> Dict[str, Any]: serialized = { "name": summary.study_name, "direction": summary.direction.name.lower(), @@ -44,13 +46,9 @@ def serialize_study_detail(summary: StudySummary, trials: List[FrozenTrial]) -> serialized["datetime_start"] = summary.datetime_start.isoformat() if summary.best_trial is not None: - serialized["best_trial"] = serialize_frozen_trial( - summary.best_trial) + serialized["best_trial"] = serialize_frozen_trial(summary.best_trial) - serialized["trials"] = [ - serialize_frozen_trial(trial) - for trial in trials - ] + serialized["trials"] = [serialize_frozen_trial(trial) for trial in trials] return serialized