moderne-visualizations-misc 0.69.0__py3-none-any.whl → 0.71.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. moderne_visualizations_misc/call_graph_uml.ipynb +1 -1
  2. moderne_visualizations_misc/cobol_relationships_data_grid.ipynb +0 -1
  3. moderne_visualizations_misc/comment_language_distribution.ipynb +1 -1
  4. moderne_visualizations_misc/dependency_vulnerabilities.ipynb +0 -1
  5. moderne_visualizations_misc/dependency_vulnerabilities_npm.ipynb +0 -1
  6. moderne_visualizations_misc/dependency_vulnerabilities_nuget.ipynb +0 -1
  7. moderne_visualizations_misc/embeddings_clustering.ipynb +0 -1
  8. moderne_visualizations_misc/eslint_problems.ipynb +1 -2
  9. moderne_visualizations_misc/find_source_files.ipynb +1 -1
  10. moderne_visualizations_misc/images/ui5lint_rule_treemap.300.png +0 -0
  11. moderne_visualizations_misc/images/ui5lint_violations_heatmap.300.png +0 -0
  12. moderne_visualizations_misc/parse_failure_stacktraces.ipynb +0 -2
  13. moderne_visualizations_misc/recipe_performance.ipynb +33 -6
  14. moderne_visualizations_misc/recommendations.ipynb +1 -1
  15. moderne_visualizations_misc/specs/ui5lint_rule_treemap.yml +7 -0
  16. moderne_visualizations_misc/specs/ui5lint_violations_heatmap.yml +7 -0
  17. moderne_visualizations_misc/spring_component_relationships.ipynb +185 -186
  18. moderne_visualizations_misc/ui5lint_rule_treemap.ipynb +110 -0
  19. moderne_visualizations_misc/ui5lint_violations_heatmap.ipynb +76 -0
  20. moderne_visualizations_misc-0.71.0.dist-info/METADATA +19 -0
  21. {moderne_visualizations_misc-0.69.0.dist-info → moderne_visualizations_misc-0.71.0.dist-info}/RECORD +23 -17
  22. {moderne_visualizations_misc-0.69.0.dist-info → moderne_visualizations_misc-0.71.0.dist-info}/WHEEL +1 -1
  23. moderne_visualizations_misc-0.69.0.dist-info/METADATA +0 -28
  24. {moderne_visualizations_misc-0.69.0.dist-info → moderne_visualizations_misc-0.71.0.dist-info}/top_level.txt +0 -0
@@ -187,7 +187,7 @@
187
187
  "name": "python",
188
188
  "nbconvert_exporter": "python",
189
189
  "pygments_lexer": "ipython3",
190
- "version": "3.11.4"
190
+ "version": "3.13.0"
191
191
  },
192
192
  "orig_nbformat": 4
193
193
  },
@@ -26,7 +26,6 @@
26
26
  "source": [
27
27
  "import re\n",
28
28
  "from code_data_science import data_table as dt, data_grid as moderne_data_grid\n",
29
- "import code_data_science.palette as palette\n",
30
29
  "\n",
31
30
  "df = dt.read_csv(\"../samples/cobol_relationships.csv\")"
32
31
  ]
@@ -6,7 +6,7 @@
6
6
  "metadata": {},
7
7
  "outputs": [],
8
8
  "source": [
9
- "from code_data_science import data_table as dt, data_grid as moderne_data_grid\n",
9
+ "from code_data_science import data_table as dt\n",
10
10
  "from code_data_science import palette as colors\n",
11
11
  "import matplotlib.pyplot as plt\n",
12
12
  "import plotly.express as px\n",
@@ -1144,7 +1144,6 @@
1144
1144
  "import warnings\n",
1145
1145
  "import plotly.express as px\n",
1146
1146
  "import code_data_science.data_table as dt\n",
1147
- "import code_data_science.palette as palette\n",
1148
1147
  "\n",
1149
1148
  "warnings.simplefilter(\"ignore\")\n",
1150
1149
  "\n",
@@ -1144,7 +1144,6 @@
1144
1144
  "import warnings\n",
1145
1145
  "import plotly.express as px\n",
1146
1146
  "import code_data_science.data_table as dt\n",
1147
- "import code_data_science.palette as palette\n",
1148
1147
  "\n",
1149
1148
  "warnings.simplefilter(\"ignore\")\n",
1150
1149
  "\n",
@@ -1144,7 +1144,6 @@
1144
1144
  "import warnings\n",
1145
1145
  "import plotly.express as px\n",
1146
1146
  "import code_data_science.data_table as dt\n",
1147
- "import code_data_science.palette as palette\n",
1148
1147
  "\n",
1149
1148
  "warnings.simplefilter(\"ignore\")\n",
1150
1149
  "\n",
@@ -33422,7 +33422,6 @@
33422
33422
  "from code_data_science import palette\n",
33423
33423
  "import plotly.express as px\n",
33424
33424
  "from sklearn.cluster import KMeans\n",
33425
- "from sklearn.manifold import TSNE\n",
33426
33425
  "from sklearn.metrics import silhouette_score\n",
33427
33426
  "import numpy as np\n",
33428
33427
  "import umap\n",
@@ -21,8 +21,7 @@
21
21
  "outputs": [],
22
22
  "source": [
23
23
  "import plotly.express as px\n",
24
- "import pandas as pd\n",
25
- "from code_data_science import data_table as dt, data_grid as moderne_data_grid\n",
24
+ "from code_data_science import data_table as dt\n",
26
25
  "import code_data_science.palette as palette\n",
27
26
  "\n",
28
27
  "df = dt.read_csv(\"../samples/eslint_problems.csv\")\n",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "outputs": [],
10
10
  "source": [
11
- "from code_data_science import data_table as dt, data_grid as moderne_data_grid\n",
11
+ "from code_data_science import data_table as dt\n",
12
12
  "\n",
13
13
  "df = dt.read_csv(\"../samples/find_source_files.csv\")"
14
14
  ]
@@ -18,8 +18,6 @@
18
18
  "from code_data_science import data_table as dt, data_grid as moderne_data_grid\n",
19
19
  "import code_data_science.palette as palette\n",
20
20
  "import re\n",
21
- "from plotly.subplots import make_subplots\n",
22
- "import plotly.graph_objects as go\n",
23
21
  "\n",
24
22
  "pd.set_option(\"expand_frame_repr\", True)\n",
25
23
  "df = dt.read_csv(\"../samples/parse_failure_kotlin.csv\")\n",
@@ -2,7 +2,7 @@
2
2
  "cells": [
3
3
  {
4
4
  "cell_type": "code",
5
- "execution_count": 65,
5
+ "execution_count": null,
6
6
  "metadata": {
7
7
  "tags": [
8
8
  "parameters"
@@ -16,7 +16,7 @@
16
16
  },
17
17
  {
18
18
  "cell_type": "code",
19
- "execution_count": 66,
19
+ "execution_count": null,
20
20
  "metadata": {
21
21
  "tags": []
22
22
  },
@@ -31,7 +31,27 @@
31
31
  },
32
32
  {
33
33
  "cell_type": "code",
34
- "execution_count": 67,
34
+ "execution_count": null,
35
+ "metadata": {},
36
+ "outputs": [],
37
+ "source": [
38
+ "# normalize headers to match the original names already in use\n",
39
+ "# old headers: repositoryOrigin,repositoryPath,repositoryBranch,scmType,repositoryLink,recipe,sourceFiles,sourceFilesChanged,scanTotalTime,scanP99,scanMax,editTotalTime,editP99,editMax\n",
40
+ "# new headers: repositoryOrigin,repositoryPath,repositoryBranch,scmType,repositoryLink,recipe,sourceFiles,sourceFilesChanged,scanTotalTimeNs,scanP99Ns,scanMaxNs,editTotalTimeNs,editP99Ns,editMaxNs\n",
41
+ "if 'scanTotalTimeNs' in df.columns:\n",
42
+ " df.rename(columns={\n",
43
+ " 'scanTotalTimeNs': 'scanTotalTime',\n",
44
+ " 'scanP99Ns': 'scanP99',\n",
45
+ " 'scanMaxNs': 'scanMax',\n",
46
+ " 'editTotalTimeNs': 'editTotalTime',\n",
47
+ " 'editP99Ns': 'editP99',\n",
48
+ " 'editMaxNs': 'editMax'\n",
49
+ " }, inplace=True)"
50
+ ]
51
+ },
52
+ {
53
+ "cell_type": "code",
54
+ "execution_count": null,
35
55
  "metadata": {},
36
56
  "outputs": [],
37
57
  "source": [
@@ -73,7 +93,7 @@
73
93
  },
74
94
  {
75
95
  "cell_type": "code",
76
- "execution_count": 68,
96
+ "execution_count": null,
77
97
  "metadata": {},
78
98
  "outputs": [],
79
99
  "source": [
@@ -91,11 +111,18 @@
91
111
  "\n",
92
112
  "fig.show()"
93
113
  ]
114
+ },
115
+ {
116
+ "cell_type": "code",
117
+ "execution_count": null,
118
+ "metadata": {},
119
+ "outputs": [],
120
+ "source": []
94
121
  }
95
122
  ],
96
123
  "metadata": {
97
124
  "kernelspec": {
98
- "display_name": "Python 3 (ipykernel)",
125
+ "display_name": ".venv",
99
126
  "language": "python",
100
127
  "name": "python3"
101
128
  },
@@ -109,7 +136,7 @@
109
136
  "name": "python",
110
137
  "nbconvert_exporter": "python",
111
138
  "pygments_lexer": "ipython3",
112
- "version": "3.11.9"
139
+ "version": "3.9.6"
113
140
  }
114
141
  },
115
142
  "nbformat": 4,
@@ -36,7 +36,7 @@
36
36
  "def parse_recommendations(str):\n",
37
37
  " try:\n",
38
38
  " return json.loads(clean_text(str))\n",
39
- " except json.JSONDecodeError as e:\n",
39
+ " except json.JSONDecodeError:\n",
40
40
  " return math.nan\n",
41
41
  "\n",
42
42
  "\n",
@@ -0,0 +1,7 @@
1
+ type: specs.moderne.io/v1beta/visualization
2
+ name: io.moderne.UI5LintRuleTreemap
3
+ displayName: UI5 lint rule treemap
4
+ description: >
5
+ Treemap of UI5 lint violations by rules.
6
+ recipe: org.openrewrite.codemods.UI5
7
+ dataTable: org.openrewrite.codemods.UI5Messages
@@ -0,0 +1,7 @@
1
+ type: specs.moderne.io/v1beta/visualization
2
+ name: io.moderne.UI5LintViolationsHeatmap
3
+ displayName: UI5 lint violations heatmap
4
+ description: >
5
+ Heatmap of UI5 lint violations by repository.
6
+ recipe: org.openrewrite.codemods.UI5
7
+ dataTable: org.openrewrite.codemods.UI5Messages
@@ -1,189 +1,188 @@
1
1
  {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": null,
6
- "metadata": {
7
- "tags": [
8
- "parameters"
9
- ]
10
- },
11
- "outputs": [],
12
- "source": [
13
- "node_shape: str = \"box\"\n",
14
- "filter_to_relevant: str = \"\""
15
- ]
16
- },
17
- {
18
- "cell_type": "code",
19
- "execution_count": null,
20
- "metadata": {},
21
- "outputs": [],
22
- "source": [
23
- "import graphviz\n",
24
- "from code_data_science import data_table as dt\n",
25
- "import code_data_science.palette as palette\n",
26
- "import html\n",
27
- "\n",
28
- "df = dt.read_csv(\"../samples/spring_component_relationships.csv\")"
29
- ]
30
- },
31
- {
32
- "cell_type": "code",
33
- "execution_count": null,
34
- "metadata": {},
35
- "outputs": [],
36
- "source": [
37
- "import networkx as nx\n",
38
- "\n",
39
- "relevant_nodes = set()\n",
40
- "ancestor_nodes = set()\n",
41
- "descendant_nodes = set()\n",
42
- "\n",
43
- "if filter_to_relevant:\n",
44
- " G = nx.from_pandas_edgelist(\n",
45
- " df, \"dependantType\", \"dependencyType\", create_using=nx.DiGraph()\n",
46
- " )\n",
47
- "\n",
48
- " for node in G.nodes:\n",
49
- " if filter_to_relevant in node:\n",
50
- " relevant_nodes.add(node) # Include the node itself\n",
51
- " # Add all descendants and ancestors of the node\n",
52
- " descendant_nodes.update(nx.descendants(G, node))\n",
53
- " ancestor_nodes.update(nx.ancestors(G, node))"
54
- ]
55
- },
56
- {
57
- "cell_type": "code",
58
- "execution_count": null,
59
- "metadata": {},
60
- "outputs": [],
61
- "source": [
62
- "# Continue with your Graphviz setup\n",
63
- "graphviz.set_jupyter_format(\"svg\")\n",
64
- "dot = graphviz.Digraph(\"spring-relationships\", comment=\"Spring component relationships\")\n",
65
- "\n",
66
- "dot.graph_attr = {\n",
67
- " \"overlap\": \"true\",\n",
68
- " \"normalize\": \"true\",\n",
69
- " \"overlap_shrink\": \"true\",\n",
70
- " \"overlap_scaling\": \"60\",\n",
71
- " \"nodesep\": \"1\",\n",
72
- "}\n",
73
- "\n",
74
- "added_nodes = set()\n",
75
- "added_edges = set()\n",
76
- "\n",
77
- "\n",
78
- "def map_relationship(row):\n",
79
- " \"\"\"\n",
80
- " For a row determine which node and relationship should be added to the graph\n",
81
- " If a relevant filter has been applied then we only want to graph nodes that\n",
82
- " are descendants or ancestors of the relevant nodes\n",
83
- " \"\"\"\n",
84
- " # Check if dependantType node already added\n",
85
- " if row[\"dependantType\"] not in added_nodes:\n",
86
- " if filter_to_relevant != \"\":\n",
87
- " if row[\"dependantType\"] in relevant_nodes:\n",
88
- " dot.node(\n",
89
- " row[\"dependantType\"],\n",
90
- " shape=node_shape,\n",
91
- " style=\"filled\",\n",
92
- " fillcolor=palette.__moderne_color_map[\"red\"][200],\n",
93
- " )\n",
94
- " added_nodes.add(row[\"dependantType\"])\n",
95
- " if row[\"dependantType\"] in ancestor_nodes:\n",
96
- " dot.node(\n",
97
- " row[\"dependantType\"],\n",
98
- " shape=node_shape,\n",
99
- " style=\"filled\",\n",
100
- " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
101
- " )\n",
102
- " added_nodes.add(row[\"dependantType\"])\n",
103
- " else:\n",
104
- " dot.node(\n",
105
- " row[\"dependantType\"],\n",
106
- " shape=node_shape,\n",
107
- " style=\"filled\",\n",
108
- " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
109
- " )\n",
110
- " added_nodes.add(row[\"dependantType\"])\n",
111
- "\n",
112
- " # Check if dependencyType node already added\n",
113
- " if row[\"dependencyType\"] not in added_nodes:\n",
114
- " if filter_to_relevant != \"\":\n",
115
- " if row[\"dependencyType\"] in relevant_nodes:\n",
116
- " dot.node(\n",
117
- " row[\"dependencyType\"],\n",
118
- " shape=node_shape,\n",
119
- " style=\"filled\",\n",
120
- " fillcolor=palette.__moderne_color_map[\"red\"][200],\n",
121
- " )\n",
122
- " added_nodes.add(row[\"dependantType\"])\n",
123
- " if row[\"dependencyType\"] in descendant_nodes:\n",
124
- " dot.node(\n",
125
- " row[\"dependencyType\"],\n",
126
- " shape=node_shape,\n",
127
- " style=\"filled\",\n",
128
- " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
129
- " )\n",
130
- " added_nodes.add(row[\"dependencyType\"])\n",
131
- " else:\n",
132
- " dot.node(\n",
133
- " row[\"dependencyType\"],\n",
134
- " shape=node_shape,\n",
135
- " style=\"filled\",\n",
136
- " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
137
- " )\n",
138
- " added_nodes.add(row[\"dependencyType\"])\n",
139
- "\n",
140
- " # Add edge\n",
141
- " if (row[\"dependantType\"], row[\"dependencyType\"]) not in added_edges:\n",
142
- " if filter_to_relevant != \"\":\n",
143
- " if row[\"dependantType\"] in descendant_nodes:\n",
144
- " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
145
- " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
146
- " if row[\"dependencyType\"] in ancestor_nodes:\n",
147
- " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
148
- " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
149
- " if row[\"dependantType\"] in relevant_nodes:\n",
150
- " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
151
- " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
152
- " if row[\"dependencyType\"] in relevant_nodes:\n",
153
- " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
154
- " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
155
- " else:\n",
156
- " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
157
- " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
158
- "\n",
159
- "\n",
160
- "# Apply mapping to each row\n",
161
- "df.apply(map_relationship, axis=1)\n",
162
- "\n",
163
- "# Display the graph\n",
164
- "dot"
165
- ]
166
- }
167
- ],
168
- "metadata": {
169
- "kernelspec": {
170
- "display_name": "Python 3",
171
- "language": "python",
172
- "name": "python3"
173
- },
174
- "language_info": {
175
- "codemirror_mode": {
176
- "name": "ipython",
177
- "version": 3
178
- },
179
- "file_extension": ".py",
180
- "mimetype": "text/x-python",
181
- "name": "python",
182
- "nbconvert_exporter": "python",
183
- "pygments_lexer": "ipython3",
184
- "version": "3.11.4"
185
- }
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {
7
+ "tags": [
8
+ "parameters"
9
+ ]
10
+ },
11
+ "outputs": [],
12
+ "source": [
13
+ "node_shape: str = \"box\"\n",
14
+ "filter_to_relevant: str = \"\""
15
+ ]
186
16
  },
187
- "nbformat": 4,
188
- "nbformat_minor": 2
17
+ {
18
+ "cell_type": "code",
19
+ "execution_count": null,
20
+ "metadata": {},
21
+ "outputs": [],
22
+ "source": [
23
+ "import graphviz\n",
24
+ "from code_data_science import data_table as dt\n",
25
+ "import code_data_science.palette as palette\n",
26
+ "\n",
27
+ "df = dt.read_csv(\"../samples/spring_component_relationships.csv\")"
28
+ ]
29
+ },
30
+ {
31
+ "cell_type": "code",
32
+ "execution_count": null,
33
+ "metadata": {},
34
+ "outputs": [],
35
+ "source": [
36
+ "import networkx as nx\n",
37
+ "\n",
38
+ "relevant_nodes = set()\n",
39
+ "ancestor_nodes = set()\n",
40
+ "descendant_nodes = set()\n",
41
+ "\n",
42
+ "if filter_to_relevant:\n",
43
+ " G = nx.from_pandas_edgelist(\n",
44
+ " df, \"dependantType\", \"dependencyType\", create_using=nx.DiGraph()\n",
45
+ " )\n",
46
+ "\n",
47
+ " for node in G.nodes:\n",
48
+ " if filter_to_relevant in node:\n",
49
+ " relevant_nodes.add(node) # Include the node itself\n",
50
+ " # Add all descendants and ancestors of the node\n",
51
+ " descendant_nodes.update(nx.descendants(G, node))\n",
52
+ " ancestor_nodes.update(nx.ancestors(G, node))"
53
+ ]
54
+ },
55
+ {
56
+ "cell_type": "code",
57
+ "execution_count": null,
58
+ "metadata": {},
59
+ "outputs": [],
60
+ "source": [
61
+ "# Continue with your Graphviz setup\n",
62
+ "graphviz.set_jupyter_format(\"svg\")\n",
63
+ "dot = graphviz.Digraph(\"spring-relationships\", comment=\"Spring component relationships\")\n",
64
+ "\n",
65
+ "dot.graph_attr = {\n",
66
+ " \"overlap\": \"true\",\n",
67
+ " \"normalize\": \"true\",\n",
68
+ " \"overlap_shrink\": \"true\",\n",
69
+ " \"overlap_scaling\": \"60\",\n",
70
+ " \"nodesep\": \"1\",\n",
71
+ "}\n",
72
+ "\n",
73
+ "added_nodes = set()\n",
74
+ "added_edges = set()\n",
75
+ "\n",
76
+ "\n",
77
+ "def map_relationship(row):\n",
78
+ " \"\"\"\n",
79
+ " For a row determine which node and relationship should be added to the graph\n",
80
+ " If a relevant filter has been applied then we only want to graph nodes that\n",
81
+ " are descendants or ancestors of the relevant nodes\n",
82
+ " \"\"\"\n",
83
+ " # Check if dependantType node already added\n",
84
+ " if row[\"dependantType\"] not in added_nodes:\n",
85
+ " if filter_to_relevant != \"\":\n",
86
+ " if row[\"dependantType\"] in relevant_nodes:\n",
87
+ " dot.node(\n",
88
+ " row[\"dependantType\"],\n",
89
+ " shape=node_shape,\n",
90
+ " style=\"filled\",\n",
91
+ " fillcolor=palette.__moderne_color_map[\"red\"][200],\n",
92
+ " )\n",
93
+ " added_nodes.add(row[\"dependantType\"])\n",
94
+ " if row[\"dependantType\"] in ancestor_nodes:\n",
95
+ " dot.node(\n",
96
+ " row[\"dependantType\"],\n",
97
+ " shape=node_shape,\n",
98
+ " style=\"filled\",\n",
99
+ " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
100
+ " )\n",
101
+ " added_nodes.add(row[\"dependantType\"])\n",
102
+ " else:\n",
103
+ " dot.node(\n",
104
+ " row[\"dependantType\"],\n",
105
+ " shape=node_shape,\n",
106
+ " style=\"filled\",\n",
107
+ " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
108
+ " )\n",
109
+ " added_nodes.add(row[\"dependantType\"])\n",
110
+ "\n",
111
+ " # Check if dependencyType node already added\n",
112
+ " if row[\"dependencyType\"] not in added_nodes:\n",
113
+ " if filter_to_relevant != \"\":\n",
114
+ " if row[\"dependencyType\"] in relevant_nodes:\n",
115
+ " dot.node(\n",
116
+ " row[\"dependencyType\"],\n",
117
+ " shape=node_shape,\n",
118
+ " style=\"filled\",\n",
119
+ " fillcolor=palette.__moderne_color_map[\"red\"][200],\n",
120
+ " )\n",
121
+ " added_nodes.add(row[\"dependantType\"])\n",
122
+ " if row[\"dependencyType\"] in descendant_nodes:\n",
123
+ " dot.node(\n",
124
+ " row[\"dependencyType\"],\n",
125
+ " shape=node_shape,\n",
126
+ " style=\"filled\",\n",
127
+ " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
128
+ " )\n",
129
+ " added_nodes.add(row[\"dependencyType\"])\n",
130
+ " else:\n",
131
+ " dot.node(\n",
132
+ " row[\"dependencyType\"],\n",
133
+ " shape=node_shape,\n",
134
+ " style=\"filled\",\n",
135
+ " fillcolor=palette.__moderne_color_map[\"blue\"][200],\n",
136
+ " )\n",
137
+ " added_nodes.add(row[\"dependencyType\"])\n",
138
+ "\n",
139
+ " # Add edge\n",
140
+ " if (row[\"dependantType\"], row[\"dependencyType\"]) not in added_edges:\n",
141
+ " if filter_to_relevant != \"\":\n",
142
+ " if row[\"dependantType\"] in descendant_nodes:\n",
143
+ " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
144
+ " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
145
+ " if row[\"dependencyType\"] in ancestor_nodes:\n",
146
+ " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
147
+ " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
148
+ " if row[\"dependantType\"] in relevant_nodes:\n",
149
+ " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
150
+ " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
151
+ " if row[\"dependencyType\"] in relevant_nodes:\n",
152
+ " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
153
+ " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
154
+ " else:\n",
155
+ " dot.edge(row[\"dependantType\"], row[\"dependencyType\"])\n",
156
+ " added_edges.add((row[\"dependantType\"], row[\"dependencyType\"]))\n",
157
+ "\n",
158
+ "\n",
159
+ "# Apply mapping to each row\n",
160
+ "df.apply(map_relationship, axis=1)\n",
161
+ "\n",
162
+ "# Display the graph\n",
163
+ "dot"
164
+ ]
165
+ }
166
+ ],
167
+ "metadata": {
168
+ "kernelspec": {
169
+ "display_name": "Python 3",
170
+ "language": "python",
171
+ "name": "python3"
172
+ },
173
+ "language_info": {
174
+ "codemirror_mode": {
175
+ "name": "ipython",
176
+ "version": 3
177
+ },
178
+ "file_extension": ".py",
179
+ "mimetype": "text/x-python",
180
+ "name": "python",
181
+ "nbconvert_exporter": "python",
182
+ "pygments_lexer": "ipython3",
183
+ "version": "3.11.4"
184
+ }
185
+ },
186
+ "nbformat": 4,
187
+ "nbformat_minor": 2
189
188
  }
@@ -0,0 +1,110 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "UI5Lint rule treemap"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "code",
12
+ "execution_count": null,
13
+ "metadata": {},
14
+ "outputs": [],
15
+ "source": [
16
+ "import plotly.express as px\n",
17
+ "from code_data_science import data_table as dt\n",
18
+ "import code_data_science.palette as palette\n",
19
+ "\n",
20
+ "df = dt.read_csv(\"../samples/ui5_lint.csv\")\n",
21
+ "df[\"problems\"] = 1\n",
22
+ "\n",
23
+ "if len(df) == 0:\n",
24
+ " fig = px.treemap(names=[], parents=[])\n",
25
+ " fig.add_annotation(\n",
26
+ " x=0.5, y=0.5, text=\"No rows of data found\", showarrow=False, font=dict(size=20)\n",
27
+ " )\n",
28
+ "else:\n",
29
+ " # concat origin:path:branch into repository\n",
30
+ " df[\"repository\"] = (\n",
31
+ " df[\"repositoryOrigin\"]\n",
32
+ " + \":\"\n",
33
+ " + df[\"repositoryPath\"]\n",
34
+ " + \":\"\n",
35
+ " + df[\"repositoryBranch\"]\n",
36
+ " )\n",
37
+ " df[\"fileType\"] = df[\"sourcePath\"].str.split(\".\").str[-1]\n",
38
+ " df_file_grouped = df.groupby(\n",
39
+ " by=[\"ruleId\", \"repository\", \"fileType\"],\n",
40
+ " as_index=False,\n",
41
+ " ).sum(numeric_only=True)\n",
42
+ "\n",
43
+ " path = [\"ruleId\", \"repository\"]\n",
44
+ "\n",
45
+ " # number of rows in the dataframe\n",
46
+ " total_problems = len(df[\"sourcePath\"])\n",
47
+ "\n",
48
+ " measurement_field = \"problems\"\n",
49
+ "\n",
50
+ " # Set the color palette\n",
51
+ " colors = palette.qualitative()\n",
52
+ "\n",
53
+ " fig = px.treemap(\n",
54
+ " df_file_grouped,\n",
55
+ " path=path,\n",
56
+ " values=measurement_field,\n",
57
+ " color_discrete_sequence=colors,\n",
58
+ " )\n",
59
+ "\n",
60
+ " fig.update_layout(\n",
61
+ " margin=dict(t=28, l=0, r=0, b=0),\n",
62
+ " annotations=[\n",
63
+ " dict(\n",
64
+ " x=0.01,\n",
65
+ " y=1.055,\n",
66
+ " showarrow=False,\n",
67
+ " borderwidth=1,\n",
68
+ " text=\"<b>More info</b>\",\n",
69
+ " hovertext=(\n",
70
+ " f\"\"\"\n",
71
+ " <b>Total problems:</b> {\"{:,}\".format(total_problems)} </br> </br>\n",
72
+ " \"\"\"\n",
73
+ " ),\n",
74
+ " xref=\"paper\",\n",
75
+ " yref=\"paper\",\n",
76
+ " )\n",
77
+ " ],\n",
78
+ " )\n",
79
+ "\n",
80
+ " fig.update_traces(\n",
81
+ " marker=dict(cornerradius=3),\n",
82
+ " )\n",
83
+ "\n",
84
+ " fig.data[0].textinfo = \"label+text+value\"\n",
85
+ " fig.show()"
86
+ ]
87
+ }
88
+ ],
89
+ "metadata": {
90
+ "kernelspec": {
91
+ "display_name": ".venv",
92
+ "language": "python",
93
+ "name": "python3"
94
+ },
95
+ "language_info": {
96
+ "codemirror_mode": {
97
+ "name": "ipython",
98
+ "version": 3
99
+ },
100
+ "file_extension": ".py",
101
+ "mimetype": "text/x-python",
102
+ "name": "python",
103
+ "nbconvert_exporter": "python",
104
+ "pygments_lexer": "ipython3",
105
+ "version": "3.9.6"
106
+ }
107
+ },
108
+ "nbformat": 4,
109
+ "nbformat_minor": 4
110
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "UI5Lint violations heatmap"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "code",
12
+ "execution_count": null,
13
+ "metadata": {},
14
+ "outputs": [],
15
+ "source": [
16
+ "import plotly.express as px\n",
17
+ "from code_data_science import data_table as dt\n",
18
+ "import code_data_science.palette as palette\n",
19
+ "\n",
20
+ "df = dt.read_csv(\"../samples/ui5_lint.csv\")\n",
21
+ "\n",
22
+ "df[\"repository\"] = df[\"repositoryPath\"] + \":\" + df[\"repositoryBranch\"]\n",
23
+ "\n",
24
+ "df_heat = df.groupby([\"repository\", \"ruleId\"]).size().reset_index(name=\"count\")\n",
25
+ "\n",
26
+ "pivot_table = df_heat.pivot(\n",
27
+ " index=\"repository\", columns=\"ruleId\", values=\"count\"\n",
28
+ ").fillna(0)\n",
29
+ "\n",
30
+ "colors = palette.color_gradient(\"yellow\")[0:4] + palette.color_gradient(\"red\")[3:6]\n",
31
+ "\n",
32
+ "fig_heat = px.imshow(\n",
33
+ " pivot_table,\n",
34
+ " text_auto=True,\n",
35
+ " aspect=\"auto\",\n",
36
+ " title=\"Heatmap of Rule Violations by Repository\",\n",
37
+ " color_continuous_scale=colors,\n",
38
+ ")\n",
39
+ "\n",
40
+ "fig_heat.update_traces(\n",
41
+ " hovertemplate=\"Rule id: %{x}<br>Repository: %{y}<br>Count: %{z}<extra></extra>\"\n",
42
+ ")\n",
43
+ "\n",
44
+ "fig_heat.show()"
45
+ ]
46
+ },
47
+ {
48
+ "cell_type": "code",
49
+ "execution_count": null,
50
+ "metadata": {},
51
+ "outputs": [],
52
+ "source": []
53
+ }
54
+ ],
55
+ "metadata": {
56
+ "kernelspec": {
57
+ "display_name": ".venv",
58
+ "language": "python",
59
+ "name": "python3"
60
+ },
61
+ "language_info": {
62
+ "codemirror_mode": {
63
+ "name": "ipython",
64
+ "version": 3
65
+ },
66
+ "file_extension": ".py",
67
+ "mimetype": "text/x-python",
68
+ "name": "python",
69
+ "nbconvert_exporter": "python",
70
+ "pygments_lexer": "ipython3",
71
+ "version": "3.9.6"
72
+ }
73
+ },
74
+ "nbformat": 4,
75
+ "nbformat_minor": 4
76
+ }
@@ -0,0 +1,19 @@
1
+ Metadata-Version: 2.4
2
+ Name: moderne_visualizations_misc
3
+ Version: 0.71.0
4
+ Summary: Miscellaneous visualizations for the Moderne platform
5
+ Author-email: Jonathan Schneider <jonathan@moderne.io>, Kyle Scully <kyle@moderne.io>
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/moderneinc/visualizations-misc
8
+ Requires-Python: >=3.9
9
+ Requires-Dist: code-data-science==2.1.2
10
+ Requires-Dist: graphviz==0.20.1
11
+ Requires-Dist: ipython==8.13.0
12
+ Requires-Dist: matplotlib==3.7.1
13
+ Requires-Dist: nbformat==5.9.0
14
+ Requires-Dist: pandas==2.0.3
15
+ Requires-Dist: plotly==5.14.1
16
+ Requires-Dist: typing-extensions
17
+ Requires-Dist: umap-learn==0.5.5
18
+ Requires-Dist: networkx==3.1
19
+ Requires-Dist: numpy==1.24.4
@@ -1,10 +1,10 @@
1
1
  moderne_visualizations_misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  moderne_visualizations_misc/call_graph_data_grid.ipynb,sha256=PaK8NgWc9c7mw4aUl3eUXofYqnu_msynz5U7bwe2mxk,2495
3
- moderne_visualizations_misc/call_graph_uml.ipynb,sha256=sHf328DCB0BeDKl7XbZ8TQDEf_JJQF_71R49ykPukP8,5730
3
+ moderne_visualizations_misc/call_graph_uml.ipynb,sha256=e5arAeamKiVVhRrsoYEkcusnY5d0EagOEyEb1SRKrAM,5730
4
4
  moderne_visualizations_misc/cobol_find_copybook.ipynb,sha256=buo5GKENebMYD3OSB2Lg0E8UWX9-DXEk2wCN3HYDjHo,1999
5
5
  moderne_visualizations_misc/cobol_relationships.ipynb,sha256=eYSMUDcK5x7MlAFxpGJXPuRNjD1VU4AEFbk710bPPM0,8530
6
- moderne_visualizations_misc/cobol_relationships_data_grid.ipynb,sha256=Lz_7EiJa2wN5Vriu7uNS3omHp85-uvay1C_YyIc482A,2003
7
- moderne_visualizations_misc/comment_language_distribution.ipynb,sha256=39NdfUH5NIX36918ogQnr9mn0ZYgrfpMMARNJTXFMWc,3189
6
+ moderne_visualizations_misc/cobol_relationships_data_grid.ipynb,sha256=QVvc-gZEQa1qgYaWc5lODA9bWEhQ-NqX51a38EMN8XI,1950
7
+ moderne_visualizations_misc/comment_language_distribution.ipynb,sha256=8SqQPSOxMpS-oJzUQbDSnmz7tIUky-M_zFYqsxdsxLo,3157
8
8
  moderne_visualizations_misc/composite_recipe_results_sankey.ipynb,sha256=3n8bOWpYlI3nCaPqLa5R140Sszok0RxCJ4vhJakHqSg,5587
9
9
  moderne_visualizations_misc/dependency_tree_view.ipynb,sha256=rcW9LQzn_zNM7wnjOq1YA0B9ybzZPdrTRcc2VqzLOfs,2983
10
10
  moderne_visualizations_misc/dependency_tree_view_nodejs.ipynb,sha256=YQRFdXkRwedWxEqe6G5ugqiU_aHPiRVFwPHQRyo0r5w,674
@@ -36,17 +36,17 @@ moderne_visualizations_misc/dependency_usage_violin_nodejs_testing.ipynb,sha256=
36
36
  moderne_visualizations_misc/dependency_usage_violin_nodejs_ui.ipynb,sha256=Y8rXBULhhbgGSyZOvfXNc5l-XE3R622neBbkD3fJXgU,756
37
37
  moderne_visualizations_misc/dependency_usage_violin_nodejs_utility.ipynb,sha256=Y8rXBULhhbgGSyZOvfXNc5l-XE3R622neBbkD3fJXgU,756
38
38
  moderne_visualizations_misc/dependency_usage_violin_nuget.ipynb,sha256=G1Ud9z8qtldM4Sqm9tr6hlyBb3FA_3kQzv17h5TNT-s,4948
39
- moderne_visualizations_misc/dependency_vulnerabilities.ipynb,sha256=NHbg232NpB4W_iWagaGJU7Czn5CYLhStP_2fIqGstAM,33520
40
- moderne_visualizations_misc/dependency_vulnerabilities_npm.ipynb,sha256=8n1vp9_-e0FROhLEmyTVEOqx5V_norBotYF1S4gpbxc,33491
41
- moderne_visualizations_misc/dependency_vulnerabilities_nuget.ipynb,sha256=KtyQ48CVL-HbSi5nY4Hi9QRwcSLI_M4Ezvv5mvLMIh0,33491
39
+ moderne_visualizations_misc/dependency_vulnerabilities.ipynb,sha256=b1FMiMOafVX0h9nWv-A_QNm_bY1EBYwKsrvx2Uo3Xo8,33467
40
+ moderne_visualizations_misc/dependency_vulnerabilities_npm.ipynb,sha256=5UhKkDcEExWfp12UZCii01bSG5UwbK0OVDISMl0-eIk,33438
41
+ moderne_visualizations_misc/dependency_vulnerabilities_nuget.ipynb,sha256=ZV6OHkvv2JB9K6Q_3N6h5SWWZ6EYGkpz7Eh3Nj8LOTo,33438
42
42
  moderne_visualizations_misc/effective_maven_settings.ipynb,sha256=aeSNYIKY2RoCsEE3N8FHLOFYKUqmnD0Lh30kKS9_SdQ,1109
43
- moderne_visualizations_misc/embeddings_clustering.ipynb,sha256=H0ZDXLRVXexk5Jj-673RNHcbJr4H4IKF9uBuSBnUXrQ,804660
44
- moderne_visualizations_misc/eslint_problems.ipynb,sha256=jhXjBY4C3_fHca5zpa7acIR5MTPfFSSrjx9mc5qoGsE,3720
43
+ moderne_visualizations_misc/embeddings_clustering.ipynb,sha256=N5zZgQVv6a9ujK2W-YO-wBvDu1OyHSgG2OGnnC4lPOY,804617
44
+ moderne_visualizations_misc/eslint_problems.ipynb,sha256=pGM9ILCqV_92_ONANokYcCillP7biue6FBwnRvUFh9g,3659
45
45
  moderne_visualizations_misc/eslint_problems_by_repo.ipynb,sha256=vs5nYXT87TSXNAn9IeSiacFscINTZuJ_sT5JLYF-rgY,3583
46
46
  moderne_visualizations_misc/find_methods.ipynb,sha256=dRjHdISWtNB7EXBuVESa6N5w-DPNTKcqL9_Z0bCXSz4,1882
47
47
  moderne_visualizations_misc/find_methods_ai.ipynb,sha256=oeONlQkAtPp5gDxrUV7trV6OIeMxsWnz3i1kva-fJD0,4966
48
48
  moderne_visualizations_misc/find_methods_ai_generate_yaml.ipynb,sha256=Ko2F4onWVp_AKXUp1WLhVjMBEwUe4ac5K1zuGC2EsIo,1866
49
- moderne_visualizations_misc/find_source_files.ipynb,sha256=Es8yifPF77alf3SdVD4iKX1bJBu7d03h4Od9Jko3Jz0,1252
49
+ moderne_visualizations_misc/find_source_files.ipynb,sha256=eJcecPAvRBZIbB1uEJhHOFXrDIkow1Fd4GRZcNt9gEA,1220
50
50
  moderne_visualizations_misc/get_embeddings_and_cluster.ipynb,sha256=TjooaE1jBc5JdwhvUEj6-dHhBGHQ5_A2HmTGfBmC4Mc,151690
51
51
  moderne_visualizations_misc/github_secrets_in_use.ipynb,sha256=dGCXxoqDuDh5TjGMIVUU6dBHoqCASpJastVqeMc54go,2818
52
52
  moderne_visualizations_misc/gradle_wrappers.ipynb,sha256=GtzUkmzDUZ3K3eL6Jj5VXvI-J4Ogphsf8z8b2kAfjt8,1929
@@ -57,14 +57,16 @@ moderne_visualizations_misc/language_composition_by_folder.ipynb,sha256=LRU1GuC2
57
57
  moderne_visualizations_misc/language_composition_by_repo.ipynb,sha256=OEU0GR6U8OAt9jzlCJzuaiR4xcWF3UubSio1BKWGV2k,7060
58
58
  moderne_visualizations_misc/lst_provenance.ipynb,sha256=0tuXcUHSn-mRQYKP27RSrbpuYj9w10KcbEB9aYMSOKQ,2148
59
59
  moderne_visualizations_misc/maven_parent_poms.ipynb,sha256=dOB7Q89Xt1ep_n8ovJpE1bHK7Jjy9_o4yXCqfhN-KUc,2115
60
- moderne_visualizations_misc/parse_failure_stacktraces.ipynb,sha256=bbMAvt0W7cQyBNufGJndh-LI7H-mLaXkq0xSKxovSyA,6216
61
- moderne_visualizations_misc/recipe_performance.ipynb,sha256=-RQZef5TGIhYrlPYj6VrzpNqlcz0DE3FdjNYgOlVwtE,3053
62
- moderne_visualizations_misc/recommendations.ipynb,sha256=TE2hal6izibupxMfWvbfN3g7KNP9ibV6hzhZIYbr67g,4176
63
- moderne_visualizations_misc/spring_component_relationships.ipynb,sha256=Dr4eYw_sH5E2Sk0XhXjA-bhk3mOg6T279MLVeeyugEU,7689
60
+ moderne_visualizations_misc/parse_failure_stacktraces.ipynb,sha256=0D6bPDY5oQ5BmDST1sfIGvTJSmTTkKVe3ealFfQMXwg,6122
61
+ moderne_visualizations_misc/recipe_performance.ipynb,sha256=swXLoYg0wxcoxakWTQqXvhFTtQYYuNMsUL4tjdHbDZg,4123
62
+ moderne_visualizations_misc/recommendations.ipynb,sha256=z5GQMPjTLAi2wIosjTQwb7IA5j07uhQyFo-cvXmxTVQ,4171
63
+ moderne_visualizations_misc/spring_component_relationships.ipynb,sha256=sQglDbEQ174QP2mN3Heo50E-CeVQrJ6x6A1RW1ABl-k,6997
64
64
  moderne_visualizations_misc/spring_component_relationships_data_grid.ipynb,sha256=NkG9VjcnqR42WOZEhdPwBls29RWNkFo_SiSzKM4NTp4,1977
65
65
  moderne_visualizations_misc/spring_components_data_grid.ipynb,sha256=yV_YGA5OOXUzDRRGzAMxDGpeigwS1S5ZRsrvzCGvGJI,1704
66
66
  moderne_visualizations_misc/sql_crud.ipynb,sha256=ErCb4KSw_wUFXdEcg8RBc-FEmcDTEVK9hrQ4TM8hYt8,4809
67
67
  moderne_visualizations_misc/text_matches_tree_grid.ipynb,sha256=iJ6A-XKBG4aHG2SyvJsbDgCvgoXcvclOH-SYxTcwUMw,3055
68
+ moderne_visualizations_misc/ui5lint_rule_treemap.ipynb,sha256=ewWhyRKk91eeFpzuQH4TBM5Iryd5dWqJ6yEgOdGt5wg,3120
69
+ moderne_visualizations_misc/ui5lint_violations_heatmap.ipynb,sha256=H1OYqLlK4ApZ-6uQrlxkwr3FO4pZGbn0XjZpxKpu1l8,1868
68
70
  moderne_visualizations_misc/images/call_graph_data_grid.300.png,sha256=wZZBtqz1RWwenP4IZCyqKfrXLFH7fjhcQ_WVGI5TY_o,42782
69
71
  moderne_visualizations_misc/images/call_graph_uml.300.png,sha256=HtpgQ1e9xAIdvY0nuFHOimTDujpCjWU2XpCtpmiCtvU,32078
70
72
  moderne_visualizations_misc/images/cobol_find_copybook.300.png,sha256=5GaGQUwyj6wrZDzUYvTBUobTN4rfMVRTTgeroeBP2Pk,14039
@@ -123,6 +125,8 @@ moderne_visualizations_misc/images/spring_component_relationships_data_grid.300.
123
125
  moderne_visualizations_misc/images/spring_components_data_grid.300.png,sha256=2gD_T2i9GDYudVahwXldu7lcFTRDDAUk0hyj8NLddXk,87648
124
126
  moderne_visualizations_misc/images/sql_crud.300.png,sha256=wNon3Wd-t8PvYvjgW5CZ5FYeGQZOjwykaghootHpz8Q,24871
125
127
  moderne_visualizations_misc/images/text_matches_tree_grid.300.png,sha256=gjv-BC8srD6kIE0lUb5i_L09aZ012A1yk-g41fOxNp0,32570
128
+ moderne_visualizations_misc/images/ui5lint_rule_treemap.300.png,sha256=_1fyop5NzlEWO9ZgekN1CdQA0JOySIuejuYCf44S0aQ,19499
129
+ moderne_visualizations_misc/images/ui5lint_violations_heatmap.300.png,sha256=VM3caqJ0-c5imrCuaxRfKSxeFeGB9e5R2MGnUVI1GiY,25199
126
130
  moderne_visualizations_misc/resources/plantuml.jar,sha256=7gZFRyMCh2PdgoBFno_Y8x_NhbGujZqw4yEiJDwJjDs,11565517
127
131
  moderne_visualizations_misc/reusable/tree_view_nodejs.py,sha256=DZVWYTOVfeKFINoCbJiXgiqdxRTq2HCMaB6V4ONd--k,994
128
132
  moderne_visualizations_misc/reusable/violin_nodejs.py,sha256=y_AKajX1SaDKAq3tTQIahAQBmuYHOmQJ541YTRHCDLQ,3540
@@ -192,7 +196,9 @@ moderne_visualizations_misc/specs/spring_component_relationships_data_grid.yml,s
192
196
  moderne_visualizations_misc/specs/spring_components_data_grid.yml,sha256=nRLXX3t2sw4gFIVdt7wEE1O8vVcr0qWx1aqIZpoFghc,323
193
197
  moderne_visualizations_misc/specs/sql_crud.yml,sha256=BaUV1bb3oJNrNARU-0YAez2S2yW8djqNUvRSY6rfmTk,533
194
198
  moderne_visualizations_misc/specs/text_matches_tree_grid.yml,sha256=U2-j_kFaHNex5avmPtzw_6AWUs9JKk_ouCyqdJBThp4,903
195
- moderne_visualizations_misc-0.69.0.dist-info/METADATA,sha256=U2qsNJGhgdM1xqjgOeB2loMRrr4_EMNQG-fl6ZqLSqI,1010
196
- moderne_visualizations_misc-0.69.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
197
- moderne_visualizations_misc-0.69.0.dist-info/top_level.txt,sha256=V_gviHcBSH6w_h-g98-9ecQRoN8d82cxPdV-DA3Leeo,28
198
- moderne_visualizations_misc-0.69.0.dist-info/RECORD,,
199
+ moderne_visualizations_misc/specs/ui5lint_rule_treemap.yml,sha256=6g01v1eD93cvtS7GnRfzScunx_X5u9fjn2ax5SHCVsE,258
200
+ moderne_visualizations_misc/specs/ui5lint_violations_heatmap.yml,sha256=Ep97JEK5xjQkAjmHJNKPAoiIiDeuvksjnx_UREZTAbI,275
201
+ moderne_visualizations_misc-0.71.0.dist-info/METADATA,sha256=FuZTMZh6Cxnaj5178pdux5qQBIrvwx9SeGpIJB7h3Pc,687
202
+ moderne_visualizations_misc-0.71.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
203
+ moderne_visualizations_misc-0.71.0.dist-info/top_level.txt,sha256=V_gviHcBSH6w_h-g98-9ecQRoN8d82cxPdV-DA3Leeo,28
204
+ moderne_visualizations_misc-0.71.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,28 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: moderne_visualizations_misc
3
- Version: 0.69.0
4
- Summary: Miscellaneous visualizations for the Moderne platform
5
- Author-email: Jonathan Schneider <jonathan@moderne.io>, Kyle Scully <kyle@moderne.io>
6
- License: Apache-2.0
7
- Project-URL: Homepage, https://github.com/moderneinc/visualizations-misc
8
- Requires-Dist: code-data-science ==2.1.2
9
- Requires-Dist: graphviz ==0.20.1
10
- Requires-Dist: ipython ==8.13.0
11
- Requires-Dist: matplotlib ==3.7.1
12
- Requires-Dist: nbformat ==5.9.0
13
- Requires-Dist: pandas ==2.0.3
14
- Requires-Dist: plotly ==5.14.1
15
- Requires-Dist: typing-extensions
16
- Requires-Dist: umap-learn ==0.5.5
17
- Requires-Dist: networkx ==3.1
18
- Requires-Dist: numpy ==1.24.4
19
- Provides-Extra: ci
20
- Requires-Dist: poethepoet ; extra == 'ci'
21
- Requires-Dist: python-semantic-release ; extra == 'ci'
22
- Requires-Dist: papermill ; extra == 'ci'
23
- Provides-Extra: dev
24
- Requires-Dist: poethepoet ; extra == 'dev'
25
- Requires-Dist: nbqa ; extra == 'dev'
26
- Requires-Dist: black ; extra == 'dev'
27
- Requires-Dist: nb-mypy ; extra == 'dev'
28
-