From c8a88fc785e6992dddc9d3cfee9aa6f4096b3eb7 Mon Sep 17 00:00:00 2001 From: Maximilian Schmeller Date: Fri, 16 Sep 2022 19:31:50 +0200 Subject: [PATCH] Env var parser now uses eval(); corrected papermill titles --- misc/utils.py | 11 ++++------- trace-analysis.ipynb | 38 +++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/misc/utils.py b/misc/utils.py index 7e8e40c..5bca780 100644 --- a/misc/utils.py +++ b/misc/utils.py @@ -1,3 +1,4 @@ +import ast import hashlib import json import os @@ -26,13 +27,9 @@ def stable_hash(obj): return hashlib.md5(json.dumps(obj).encode("utf-8")).hexdigest()[:10] -def parse_as(type, string): - if any(issubclass(type, type2) for type2 in (str, bool, float, int)): - return type(string) - if issubclass(type, list) or issubclass(type, dict) or issubclass(type, set): - val = json.loads(string) - return type(val) - raise ValueError(f"Unknown type {type.__name__}") +def parse_as(target_type, string): + obj = ast.literal_eval(string) + return target_type(obj) def cached(name, function, file_deps: List[str], disable_cache=False): diff --git a/trace-analysis.ipynb b/trace-analysis.ipynb index 5a1be1c..e160352 100644 --- a/trace-analysis.ipynb +++ b/trace-analysis.ipynb @@ -5,7 +5,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Importing libraries\n", + "#papermill_description=\"Importing libraries\"\n", "import os\n", "import sys\n", "import re\n", @@ -41,7 +41,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Parsing user settings\n", + "#papermill_description=\"Parsing user settings\"\n", "##################################################\n", "# User Settings\n", "##################################################\n", @@ -167,7 +167,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Importing system-dependent libraries\n", + "#papermill_description=\"Importing system-dependent libraries\"\n", "sys.path.append(os.path.join(TRACING_WS_BUILD_PATH, \"tracetools_read/\"))\n", "sys.path.append(os.path.join(TRACING_WS_BUILD_PATH, \"tracetools_analysis/\"))\n", "from tracetools_read.trace import *\n", @@ -202,7 +202,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Loading traces\n", + "#papermill_description=\"Loading traces\"\n", "\n", "def _load_traces():\n", " file = load_file(TR_PATH)\n", @@ -234,7 +234,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Printing message counts\n", + "#papermill_description=\"Printing message counts\"\n", "\n", "for topic in sorted(topics, key=lambda t: t.name):\n", " topic: TrTopic\n", @@ -264,7 +264,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Building latency graph\n", + "#papermill_description=\"Building latency graph\"\n", "\n", "from latency_graph import latency_graph as lg\n", "\n", @@ -287,7 +287,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Plotting full data flow graph\n", + "#papermill_description=\"Plotting full data flow graph\"\n", "\n", "%%skip_if_false DFG_ENABLED\n", "%%skip_if_false DFG_PLOT\n", @@ -387,7 +387,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Plotting high-level data flow graph\n", + "#papermill_description=\"Plotting high-level data flow graph\"\n", "\n", "%%skip_if_false DFG_ENABLED\n", "%%skip_if_false DFG_PLOT\n", @@ -522,7 +522,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Defining tree helper functions\n", + "#papermill_description=\"Defining tree helper functions\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "\n", @@ -691,7 +691,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Building message trees\n", + "#papermill_description=\"Building message trees\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "\n", @@ -730,7 +730,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Parsing message stats\n", + "#papermill_description=\"Parsing message stats\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "%%skip_if_false BW_ENABLED\n", @@ -793,7 +793,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Calculating E2E latencies\n", + "#papermill_description=\"Calculating E2E latencies\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "\n", @@ -867,7 +867,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Animating latency distribution over time\n", + "#papermill_description=\"Animating latency distribution over time\"\n", "\n", "#from matplotlib.animation import FuncAnimation\n", "#from IPython import display\n", @@ -920,7 +920,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Plotting E2E latencies\n", + "#papermill_description=\"Plotting E2E latencies\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "%%skip_if_false E2E_PLOT\n", @@ -974,7 +974,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Decimating irrelevant trees\n", + "#papermill_description=\"Decimating irrelevant trees\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "\n", @@ -1042,7 +1042,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Plotting E2E latency breakdown\n", + "#papermill_description=\"Plotting E2E latency breakdown\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "%%skip_if_false E2E_PLOT\n", @@ -1138,7 +1138,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Plotting E2E distribution\n", + "#papermill_description=\"Plotting E2E distribution\"\n", "\n", "\n", "%%skip_if_false E2E_ENABLED\n", @@ -1178,7 +1178,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Visualizing E2E tree\n", + "#papermill_description=\"Visualizing E2E tree\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "%%skip_if_false E2E_PLOT\n", @@ -1382,7 +1382,7 @@ "execution_count": null, "outputs": [], "source": [ - "#papermill_description=Finding top critical paths\n", + "#papermill_description=\"Finding top critical paths\"\n", "\n", "%%skip_if_false E2E_ENABLED\n", "\n",