moderne-visualizations-misc 0.73.0__py3-none-any.whl → 0.74.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.
@@ -0,0 +1,4702 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "metadata": {},
6
+ "source": [
7
+ "# Repository release order"
8
+ ]
9
+ },
10
+ {
11
+ "cell_type": "markdown",
12
+ "metadata": {},
13
+ "source": [
14
+ "This report analyzes inter-repository dependencies to suggest an optimal release order for a release train, helping coordinate multi-repository releases."
15
+ ]
16
+ },
17
+ {
18
+ "cell_type": "code",
19
+ "execution_count": null,
20
+ "metadata": {
21
+ "tags": [
22
+ "parameters"
23
+ ]
24
+ },
25
+ "outputs": [],
26
+ "source": [
27
+ "groupId_filter: str = \"\" # Filter by groupId prefix (e.g., \"org.openrewrite\")\n",
28
+ "visualization_type: str = \"network\" # Options: network, hierarchy, matrix"
29
+ ]
30
+ },
31
+ {
32
+ "cell_type": "code",
33
+ "execution_count": 17,
34
+ "metadata": {},
35
+ "outputs": [
36
+ {
37
+ "name": "stderr",
38
+ "output_type": "stream",
39
+ "text": [
40
+ "/Users/jon/Projects/github/moderneinc/moderne-visualizations-misc/.python/lib/python3.12/site-packages/code_data_science/data_table.py:13: DtypeWarning:\n",
41
+ "\n",
42
+ "Columns (10) have mixed types. Specify dtype option on import or set low_memory=False.\n",
43
+ "\n"
44
+ ]
45
+ }
46
+ ],
47
+ "source": [
48
+ "import pandas as pd\n",
49
+ "import plotly.graph_objects as go\n",
50
+ "import plotly.express as px\n",
51
+ "import networkx as nx\n",
52
+ "from code_data_science import data_table as dt\n",
53
+ "import code_data_science.palette as palette\n",
54
+ "from collections import defaultdict\n",
55
+ "\n",
56
+ "df = dt.read_csv(\"../samples/dependencies_in_use.csv\")\n",
57
+ "\n",
58
+ "if len(df) == 0:\n",
59
+ " fig = go.Figure()\n",
60
+ " fig.add_annotation(\n",
61
+ " x=0.5, y=0.5, text=\"No dependency data found\", showarrow=False, font=dict(size=20)\n",
62
+ " )\n",
63
+ "else:\n",
64
+ " # Create repository identifier\n",
65
+ " df[\"repository\"] = df[\"repositoryOrigin\"] + \"/\" + df[\"repositoryPath\"]\n",
66
+ " \n",
67
+ " # Apply groupId filter if specified\n",
68
+ " if groupId_filter:\n",
69
+ " df = df[df[\"groupId\"].str.startswith(groupId_filter)]\n",
70
+ " \n",
71
+ " # Create a mapping of artifacts to their repositories\n",
72
+ " artifact_to_repo = {}\n",
73
+ " for _, row in df.iterrows():\n",
74
+ " artifact_key = f\"{row['groupId']}:{row['artifactId']}\"\n",
75
+ " if row[\"projectName\"] and artifact_key not in artifact_to_repo:\n",
76
+ " artifact_to_repo[artifact_key] = row[\"repository\"]\n",
77
+ " \n",
78
+ " # Build dependency graph between repositories (treating all dependencies equally)\n",
79
+ " repo_dependencies = defaultdict(set)\n",
80
+ " dependency_counts = defaultdict(int)\n",
81
+ " \n",
82
+ " for _, dep in df.iterrows():\n",
83
+ " consumer_repo = dep[\"repository\"]\n",
84
+ " dependency_key = f\"{dep['groupId']}:{dep['artifactId']}\"\n",
85
+ " \n",
86
+ " # Find which repository produces this dependency\n",
87
+ " producer_repo = artifact_to_repo.get(dependency_key)\n",
88
+ " \n",
89
+ " if producer_repo and producer_repo != consumer_repo:\n",
90
+ " repo_dependencies[consumer_repo].add(producer_repo)\n",
91
+ " dependency_counts[(producer_repo, consumer_repo)] += 1\n",
92
+ " \n",
93
+ " # Create directed graph\n",
94
+ " G = nx.DiGraph()\n",
95
+ " for consumer, producers in repo_dependencies.items():\n",
96
+ " for producer in producers:\n",
97
+ " weight = dependency_counts[(producer, consumer)]\n",
98
+ " G.add_edge(producer, consumer, weight=weight)\n",
99
+ " \n",
100
+ " if len(G.nodes()) == 0:\n",
101
+ " fig = go.Figure()\n",
102
+ " fig.add_annotation(\n",
103
+ " x=0.5, y=0.5, \n",
104
+ " text=\"No inter-repository dependencies found\", \n",
105
+ " showarrow=False, \n",
106
+ " font=dict(size=16)\n",
107
+ " )\n",
108
+ " else:\n",
109
+ " # Calculate release order using topological sort\n",
110
+ " try:\n",
111
+ " release_order = list(nx.topological_sort(G))\n",
112
+ " has_cycles = False\n",
113
+ " except nx.NetworkXUnfeasible:\n",
114
+ " # Graph has cycles, find them\n",
115
+ " has_cycles = True\n",
116
+ " cycles = list(nx.simple_cycles(G))\n",
117
+ " # Use a modified topological sort that ignores cycles\n",
118
+ " G_copy = G.copy()\n",
119
+ " for cycle in cycles:\n",
120
+ " if len(cycle) > 1:\n",
121
+ " G_copy.remove_edge(cycle[-1], cycle[0])\n",
122
+ " release_order = list(nx.topological_sort(G_copy))\n",
123
+ " \n",
124
+ " # Store release order for display below the graph\n",
125
+ " release_order_list = release_order\n",
126
+ " \n",
127
+ " if visualization_type == \"network\":\n",
128
+ " # Create network visualization\n",
129
+ " pos = nx.spring_layout(G, k=2, iterations=50, seed=42)\n",
130
+ " \n",
131
+ " # Create edge traces\n",
132
+ " edge_traces = []\n",
133
+ " for edge in G.edges(data=True):\n",
134
+ " x0, y0 = pos[edge[0]]\n",
135
+ " x1, y1 = pos[edge[1]]\n",
136
+ " weight = edge[2]['weight']\n",
137
+ " \n",
138
+ " # Add arrow annotation\n",
139
+ " edge_trace = go.Scatter(\n",
140
+ " x=[x0, x1, None],\n",
141
+ " y=[y0, y1, None],\n",
142
+ " mode='lines',\n",
143
+ " line=dict(\n",
144
+ " width=min(weight * 0.5, 10),\n",
145
+ " color='rgba(125,125,125,0.5)'\n",
146
+ " ),\n",
147
+ " hoverinfo='text',\n",
148
+ " text=f\"{edge[0]} → {edge[1]}<br>Dependencies: {weight}\",\n",
149
+ " showlegend=False\n",
150
+ " )\n",
151
+ " edge_traces.append(edge_trace)\n",
152
+ " \n",
153
+ " # Create node trace\n",
154
+ " node_x = []\n",
155
+ " node_y = []\n",
156
+ " node_text = []\n",
157
+ " node_color = []\n",
158
+ " \n",
159
+ " for node in G.nodes():\n",
160
+ " x, y = pos[node]\n",
161
+ " node_x.append(x)\n",
162
+ " node_y.append(y)\n",
163
+ " \n",
164
+ " # Calculate release tier\n",
165
+ " tier = release_order.index(node) if node in release_order else -1\n",
166
+ " \n",
167
+ " # Get dependency info\n",
168
+ " in_deps = list(G.predecessors(node))\n",
169
+ " out_deps = list(G.successors(node))\n",
170
+ " \n",
171
+ " hover_text = f\"<b>{node}</b><br>\"\n",
172
+ " hover_text += f\"Release tier: {tier + 1}<br>\"\n",
173
+ " hover_text += f\"Depends on: {len(in_deps)} repos<br>\"\n",
174
+ " hover_text += f\"Required by: {len(out_deps)} repos\"\n",
175
+ " \n",
176
+ " node_text.append(hover_text)\n",
177
+ " node_color.append(tier)\n",
178
+ " \n",
179
+ " node_trace = go.Scatter(\n",
180
+ " x=node_x,\n",
181
+ " y=node_y,\n",
182
+ " mode='markers+text',\n",
183
+ " text=[node.split('/')[-1] for node in G.nodes()],\n",
184
+ " textposition=\"top center\",\n",
185
+ " hoverinfo='text',\n",
186
+ " hovertext=node_text,\n",
187
+ " marker=dict(\n",
188
+ " size=25,\n",
189
+ " color=node_color,\n",
190
+ " colorscale='Viridis',\n",
191
+ " showscale=True,\n",
192
+ " colorbar=dict(\n",
193
+ " title=\"Release<br>Tier\",\n",
194
+ " thickness=15,\n",
195
+ " len=0.7\n",
196
+ " ),\n",
197
+ " line=dict(width=2, color='white')\n",
198
+ " ),\n",
199
+ " showlegend=False\n",
200
+ " )\n",
201
+ " \n",
202
+ " fig = go.Figure(data=edge_traces + [node_trace])\n",
203
+ " \n",
204
+ " title = \"Repository Dependency Network & Release Order\"\n",
205
+ " if has_cycles:\n",
206
+ " title += \" (⚠️ Circular dependencies detected)\"\n",
207
+ " \n",
208
+ " fig.update_layout(\n",
209
+ " title=dict(\n",
210
+ " text=title,\n",
211
+ " x=0.5,\n",
212
+ " xanchor='center'\n",
213
+ " ),\n",
214
+ " showlegend=False,\n",
215
+ " hovermode='closest',\n",
216
+ " margin=dict(b=20, l=5, r=5, t=40),\n",
217
+ " xaxis=dict(showgrid=False, zeroline=False, showticklabels=False),\n",
218
+ " yaxis=dict(showgrid=False, zeroline=False, showticklabels=False),\n",
219
+ " plot_bgcolor='white'\n",
220
+ " )\n",
221
+ " \n",
222
+ " elif visualization_type == \"hierarchy\":\n",
223
+ " # Create hierarchical visualization showing release tiers\n",
224
+ " tiers = defaultdict(list)\n",
225
+ " tiers_assignment = {}\n",
226
+ " \n",
227
+ " for repo in release_order:\n",
228
+ " tier_level = 0\n",
229
+ " # Calculate actual tier based on max dependency depth\n",
230
+ " predecessors = list(G.predecessors(repo))\n",
231
+ " if predecessors:\n",
232
+ " pred_tiers = [tiers_assignment.get(p, 0) for p in predecessors if p in tiers_assignment]\n",
233
+ " if pred_tiers:\n",
234
+ " tier_level = max(pred_tiers) + 1\n",
235
+ " \n",
236
+ " tiers_assignment[repo] = tier_level\n",
237
+ " tiers[tier_level].append(repo)\n",
238
+ " \n",
239
+ " # Create Sankey diagram\n",
240
+ " labels = []\n",
241
+ " sources = []\n",
242
+ " targets = []\n",
243
+ " values = []\n",
244
+ " \n",
245
+ " node_index = {}\n",
246
+ " idx = 0\n",
247
+ " \n",
248
+ " # Add nodes for each tier\n",
249
+ " for tier, repos in sorted(tiers.items()):\n",
250
+ " for repo in repos:\n",
251
+ " labels.append(f\"Tier {tier + 1}: {repo.split('/')[-1]}\")\n",
252
+ " node_index[repo] = idx\n",
253
+ " idx += 1\n",
254
+ " \n",
255
+ " # Add edges\n",
256
+ " for edge in G.edges(data=True):\n",
257
+ " if edge[0] in node_index and edge[1] in node_index:\n",
258
+ " sources.append(node_index[edge[0]])\n",
259
+ " targets.append(node_index[edge[1]])\n",
260
+ " values.append(edge[2]['weight'])\n",
261
+ " \n",
262
+ " fig = go.Figure(data=[go.Sankey(\n",
263
+ " node=dict(\n",
264
+ " pad=15,\n",
265
+ " thickness=20,\n",
266
+ " line=dict(color=\"black\", width=0.5),\n",
267
+ " label=labels,\n",
268
+ " color=palette.qualitative()[:len(labels)]\n",
269
+ " ),\n",
270
+ " link=dict(\n",
271
+ " source=sources,\n",
272
+ " target=targets,\n",
273
+ " value=values\n",
274
+ " )\n",
275
+ " )])\n",
276
+ " \n",
277
+ " fig.update_layout(\n",
278
+ " title=\"Repository Release Tiers\",\n",
279
+ " font_size=10\n",
280
+ " )\n",
281
+ " \n",
282
+ " else: # matrix visualization\n",
283
+ " # Create dependency matrix\n",
284
+ " repos = sorted(G.nodes())\n",
285
+ " matrix = []\n",
286
+ " \n",
287
+ " for target in repos:\n",
288
+ " row = []\n",
289
+ " for source in repos:\n",
290
+ " if G.has_edge(source, target):\n",
291
+ " row.append(G[source][target]['weight'])\n",
292
+ " else:\n",
293
+ " row.append(0)\n",
294
+ " matrix.append(row)\n",
295
+ " \n",
296
+ " # Create heatmap\n",
297
+ " fig = go.Figure(data=go.Heatmap(\n",
298
+ " z=matrix,\n",
299
+ " x=[r.split('/')[-1] for r in repos],\n",
300
+ " y=[r.split('/')[-1] for r in repos],\n",
301
+ " colorscale='Blues',\n",
302
+ " text=[[str(val) if val > 0 else '' for val in row] for row in matrix],\n",
303
+ " texttemplate='%{text}',\n",
304
+ " textfont={\"size\": 10},\n",
305
+ " hovertemplate='%{y} depends on %{x}<br>Dependencies: %{z}<extra></extra>'\n",
306
+ " ))\n",
307
+ " \n",
308
+ " fig.update_layout(\n",
309
+ " title=\"Repository Dependency Matrix\",\n",
310
+ " xaxis_title=\"Dependency (Producer)\",\n",
311
+ " yaxis_title=\"Dependent (Consumer)\",\n",
312
+ " xaxis={'side': 'bottom'},\n",
313
+ " yaxis={'autorange': 'reversed'}\n",
314
+ " )"
315
+ ]
316
+ },
317
+ {
318
+ "cell_type": "code",
319
+ "execution_count": 18,
320
+ "metadata": {},
321
+ "outputs": [
322
+ {
323
+ "name": "stdout",
324
+ "output_type": "stream",
325
+ "text": [
326
+ "SUGGESTED RELEASE ORDER\n",
327
+ "==================================================\n",
328
+ "Copy the list below for your release planning:\n",
329
+ "\n",
330
+ "1. github.com/openrewrite/rewrite\n",
331
+ "2. github.com/openrewrite/rewrite-all\n",
332
+ "3. github.com/openrewrite/rewrite-github-actions\n",
333
+ "4. github.com/openrewrite/rewrite-analysis\n",
334
+ "5. github.com/openrewrite/rewrite-apache\n",
335
+ "6. github.com/openrewrite/rewrite-build-gradle-plugin\n",
336
+ "7. github.com/openrewrite/rewrite-csharp\n",
337
+ "8. github.com/openrewrite/rewrite-docker\n",
338
+ "9. github.com/openrewrite/rewrite-gitlab\n",
339
+ "10. github.com/openrewrite/rewrite-gradle-tooling-model\n",
340
+ "11. github.com/openrewrite/rewrite-okhttp\n",
341
+ "12. github.com/openrewrite/rewrite-openapi\n",
342
+ "13. github.com/openrewrite/rewrite-python\n",
343
+ "14. github.com/openrewrite/rewrite-quarkus\n",
344
+ "15. github.com/openrewrite/rewrite-cucumber-jvm\n",
345
+ "16. github.com/openrewrite/rewrite-dropwizard\n",
346
+ "17. github.com/openrewrite/rewrite-jackson\n",
347
+ "18. github.com/openrewrite/rewrite-logging-frameworks\n",
348
+ "19. github.com/openrewrite/rewrite-micrometer\n",
349
+ "20. github.com/openrewrite/rewrite-struts\n",
350
+ "21. github.com/openrewrite/rewrite-feature-flags\n",
351
+ "22. github.com/openrewrite/rewrite-generative-ai\n",
352
+ "23. github.com/openrewrite/rewrite-gradle-plugin\n",
353
+ "24. github.com/openrewrite/rewrite-hibernate\n",
354
+ "25. github.com/openrewrite/rewrite-java-dependencies\n",
355
+ "26. github.com/openrewrite/rewrite-jenkins\n",
356
+ "27. github.com/openrewrite/rewrite-maven-plugin\n",
357
+ "28. github.com/openrewrite/rewrite-netty\n",
358
+ "29. github.com/openrewrite/rewrite-static-analysis\n",
359
+ "30. github.com/openrewrite/rewrite-templating\n",
360
+ "31. github.com/openrewrite/rewrite-testing-frameworks\n",
361
+ "32. github.com/openrewrite/rewrite-third-party\n",
362
+ "33. github.com/openrewrite/rewrite-liberty\n",
363
+ "34. github.com/openrewrite/rewrite-micronaut\n",
364
+ "35. github.com/openrewrite/rewrite-migrate-java\n",
365
+ "36. github.com/openrewrite/rewrite-recipe-bom\n",
366
+ "37. github.com/openrewrite/rewrite-rewrite\n",
367
+ "38. github.com/openrewrite/rewrite-recipe-markdown-generator\n",
368
+ "39. github.com/openrewrite/rewrite-spring\n"
369
+ ]
370
+ }
371
+ ],
372
+ "source": [
373
+ "# Display release order as copyable text\n",
374
+ "if 'release_order_list' in locals() and len(release_order_list) > 0:\n",
375
+ " print(\"SUGGESTED RELEASE ORDER\")\n",
376
+ " print(\"=\" * 50)\n",
377
+ " print(\"Copy the list below for your release planning:\\n\")\n",
378
+ " \n",
379
+ " for i, repo in enumerate(release_order_list):\n",
380
+ " print(f\"{i+1}. {repo}\")\n",
381
+ " \n",
382
+ " if has_cycles:\n",
383
+ " print(\"\\n⚠️ WARNING: Circular dependencies detected!\")\n",
384
+ " print(\"The following repositories have circular dependencies:\")\n",
385
+ " for cycle in cycles[:5]: # Show first 5 cycles\n",
386
+ " print(f\" • {' → '.join(cycle)} → {cycle[0]}\")\n",
387
+ " if len(cycles) > 5:\n",
388
+ " print(f\" • ... and {len(cycles) - 5} more cycles\")"
389
+ ]
390
+ },
391
+ {
392
+ "cell_type": "code",
393
+ "execution_count": 19,
394
+ "metadata": {},
395
+ "outputs": [
396
+ {
397
+ "name": "stdout",
398
+ "output_type": "stream",
399
+ "text": [
400
+ "\n",
401
+ "COMMA-SEPARATED FORMAT:\n",
402
+ "==================================================\n",
403
+ "Copy this for scripts or CI/CD pipelines:\n",
404
+ "\n",
405
+ "github.com/openrewrite/rewrite,github.com/openrewrite/rewrite-all,github.com/openrewrite/rewrite-github-actions,github.com/openrewrite/rewrite-analysis,github.com/openrewrite/rewrite-apache,github.com/openrewrite/rewrite-build-gradle-plugin,github.com/openrewrite/rewrite-csharp,github.com/openrewrite/rewrite-docker,github.com/openrewrite/rewrite-gitlab,github.com/openrewrite/rewrite-gradle-tooling-model,github.com/openrewrite/rewrite-okhttp,github.com/openrewrite/rewrite-openapi,github.com/openrewrite/rewrite-python,github.com/openrewrite/rewrite-quarkus,github.com/openrewrite/rewrite-cucumber-jvm,github.com/openrewrite/rewrite-dropwizard,github.com/openrewrite/rewrite-jackson,github.com/openrewrite/rewrite-logging-frameworks,github.com/openrewrite/rewrite-micrometer,github.com/openrewrite/rewrite-struts,github.com/openrewrite/rewrite-feature-flags,github.com/openrewrite/rewrite-generative-ai,github.com/openrewrite/rewrite-gradle-plugin,github.com/openrewrite/rewrite-hibernate,github.com/openrewrite/rewrite-java-dependencies,github.com/openrewrite/rewrite-jenkins,github.com/openrewrite/rewrite-maven-plugin,github.com/openrewrite/rewrite-netty,github.com/openrewrite/rewrite-static-analysis,github.com/openrewrite/rewrite-templating,github.com/openrewrite/rewrite-testing-frameworks,github.com/openrewrite/rewrite-third-party,github.com/openrewrite/rewrite-liberty,github.com/openrewrite/rewrite-micronaut,github.com/openrewrite/rewrite-migrate-java,github.com/openrewrite/rewrite-recipe-bom,github.com/openrewrite/rewrite-rewrite,github.com/openrewrite/rewrite-recipe-markdown-generator,github.com/openrewrite/rewrite-spring\n",
406
+ "\n",
407
+ "\n",
408
+ "RELEASE TIERS (can be released in parallel within each tier):\n",
409
+ "==================================================\n",
410
+ "\n",
411
+ "Tier 1:\n",
412
+ " - github.com/openrewrite/rewrite\n",
413
+ " (Can be released in parallel: github.com/openrewrite/rewrite)\n",
414
+ "\n",
415
+ "Tier 2:\n",
416
+ " - github.com/openrewrite/rewrite-all\n",
417
+ " - github.com/openrewrite/rewrite-github-actions\n",
418
+ " (Can be released in parallel: github.com/openrewrite/rewrite-all,github.com/openrewrite/rewrite-github-actions)\n",
419
+ "\n",
420
+ "Tier 3:\n",
421
+ " - github.com/openrewrite/rewrite-analysis\n",
422
+ " - github.com/openrewrite/rewrite-apache\n",
423
+ " - github.com/openrewrite/rewrite-build-gradle-plugin\n",
424
+ " - github.com/openrewrite/rewrite-csharp\n",
425
+ " - github.com/openrewrite/rewrite-docker\n",
426
+ " - github.com/openrewrite/rewrite-gitlab\n",
427
+ " - github.com/openrewrite/rewrite-gradle-tooling-model\n",
428
+ " - github.com/openrewrite/rewrite-okhttp\n",
429
+ " - github.com/openrewrite/rewrite-openapi\n",
430
+ " - github.com/openrewrite/rewrite-python\n",
431
+ " - github.com/openrewrite/rewrite-quarkus\n",
432
+ " (Can be released in parallel: github.com/openrewrite/rewrite-analysis,github.com/openrewrite/rewrite-apache,github.com/openrewrite/rewrite-build-gradle-plugin,github.com/openrewrite/rewrite-csharp,github.com/openrewrite/rewrite-docker,github.com/openrewrite/rewrite-gitlab,github.com/openrewrite/rewrite-gradle-tooling-model,github.com/openrewrite/rewrite-okhttp,github.com/openrewrite/rewrite-openapi,github.com/openrewrite/rewrite-python,github.com/openrewrite/rewrite-quarkus)\n",
433
+ "\n",
434
+ "Tier 4:\n",
435
+ " - github.com/openrewrite/rewrite-cucumber-jvm\n",
436
+ " - github.com/openrewrite/rewrite-dropwizard\n",
437
+ " - github.com/openrewrite/rewrite-jackson\n",
438
+ " - github.com/openrewrite/rewrite-logging-frameworks\n",
439
+ " - github.com/openrewrite/rewrite-micrometer\n",
440
+ " - github.com/openrewrite/rewrite-struts\n",
441
+ " - github.com/openrewrite/rewrite-feature-flags\n",
442
+ " - github.com/openrewrite/rewrite-generative-ai\n",
443
+ " - github.com/openrewrite/rewrite-gradle-plugin\n",
444
+ " - github.com/openrewrite/rewrite-hibernate\n",
445
+ " - github.com/openrewrite/rewrite-java-dependencies\n",
446
+ " - github.com/openrewrite/rewrite-jenkins\n",
447
+ " - github.com/openrewrite/rewrite-maven-plugin\n",
448
+ " - github.com/openrewrite/rewrite-netty\n",
449
+ " - github.com/openrewrite/rewrite-static-analysis\n",
450
+ " - github.com/openrewrite/rewrite-templating\n",
451
+ " - github.com/openrewrite/rewrite-testing-frameworks\n",
452
+ " - github.com/openrewrite/rewrite-third-party\n",
453
+ " (Can be released in parallel: github.com/openrewrite/rewrite-cucumber-jvm,github.com/openrewrite/rewrite-dropwizard,github.com/openrewrite/rewrite-jackson,github.com/openrewrite/rewrite-logging-frameworks,github.com/openrewrite/rewrite-micrometer,github.com/openrewrite/rewrite-struts,github.com/openrewrite/rewrite-feature-flags,github.com/openrewrite/rewrite-generative-ai,github.com/openrewrite/rewrite-gradle-plugin,github.com/openrewrite/rewrite-hibernate,github.com/openrewrite/rewrite-java-dependencies,github.com/openrewrite/rewrite-jenkins,github.com/openrewrite/rewrite-maven-plugin,github.com/openrewrite/rewrite-netty,github.com/openrewrite/rewrite-static-analysis,github.com/openrewrite/rewrite-templating,github.com/openrewrite/rewrite-testing-frameworks,github.com/openrewrite/rewrite-third-party)\n",
454
+ "\n",
455
+ "Tier 5:\n",
456
+ " - github.com/openrewrite/rewrite-liberty\n",
457
+ " - github.com/openrewrite/rewrite-micronaut\n",
458
+ " - github.com/openrewrite/rewrite-migrate-java\n",
459
+ " - github.com/openrewrite/rewrite-recipe-bom\n",
460
+ " - github.com/openrewrite/rewrite-rewrite\n",
461
+ " (Can be released in parallel: github.com/openrewrite/rewrite-liberty,github.com/openrewrite/rewrite-micronaut,github.com/openrewrite/rewrite-migrate-java,github.com/openrewrite/rewrite-recipe-bom,github.com/openrewrite/rewrite-rewrite)\n",
462
+ "\n",
463
+ "Tier 6:\n",
464
+ " - github.com/openrewrite/rewrite-recipe-markdown-generator\n",
465
+ " - github.com/openrewrite/rewrite-spring\n",
466
+ " (Can be released in parallel: github.com/openrewrite/rewrite-recipe-markdown-generator,github.com/openrewrite/rewrite-spring)\n"
467
+ ]
468
+ }
469
+ ],
470
+ "source": [
471
+ "# Alternative format - comma-separated list for easy copy/paste\n",
472
+ "if 'release_order_list' in locals() and len(release_order_list) > 0:\n",
473
+ " print(\"\\nCOMMA-SEPARATED FORMAT:\")\n",
474
+ " print(\"=\" * 50)\n",
475
+ " print(\"Copy this for scripts or CI/CD pipelines:\\n\")\n",
476
+ " print(\",\".join(release_order_list))\n",
477
+ " \n",
478
+ " # Also provide in tiers for parallel releases\n",
479
+ " if 'tiers_assignment' in locals():\n",
480
+ " print(\"\\n\\nRELEASE TIERS (can be released in parallel within each tier):\")\n",
481
+ " print(\"=\" * 50)\n",
482
+ " tier_groups = defaultdict(list)\n",
483
+ " for repo, tier in tiers_assignment.items():\n",
484
+ " tier_groups[tier].append(repo)\n",
485
+ " \n",
486
+ " for tier in sorted(tier_groups.keys()):\n",
487
+ " print(f\"\\nTier {tier + 1}:\")\n",
488
+ " for repo in tier_groups[tier]:\n",
489
+ " print(f\" - {repo}\")\n",
490
+ " print(f\" (Can be released in parallel: {','.join(tier_groups[tier])})\")"
491
+ ]
492
+ },
493
+ {
494
+ "cell_type": "code",
495
+ "execution_count": 20,
496
+ "metadata": {},
497
+ "outputs": [
498
+ {
499
+ "data": {
500
+ "application/vnd.plotly.v1+json": {
501
+ "config": {
502
+ "plotlyServerURL": "https://plot.ly"
503
+ },
504
+ "data": [
505
+ {
506
+ "colorscale": [
507
+ [
508
+ 0,
509
+ "rgb(247,251,255)"
510
+ ],
511
+ [
512
+ 0.125,
513
+ "rgb(222,235,247)"
514
+ ],
515
+ [
516
+ 0.25,
517
+ "rgb(198,219,239)"
518
+ ],
519
+ [
520
+ 0.375,
521
+ "rgb(158,202,225)"
522
+ ],
523
+ [
524
+ 0.5,
525
+ "rgb(107,174,214)"
526
+ ],
527
+ [
528
+ 0.625,
529
+ "rgb(66,146,198)"
530
+ ],
531
+ [
532
+ 0.75,
533
+ "rgb(33,113,181)"
534
+ ],
535
+ [
536
+ 0.875,
537
+ "rgb(8,81,156)"
538
+ ],
539
+ [
540
+ 1,
541
+ "rgb(8,48,107)"
542
+ ]
543
+ ],
544
+ "hovertemplate": "%{y} depends on %{x}<br>Dependencies: %{z}<extra></extra>",
545
+ "text": [
546
+ [
547
+ "",
548
+ "",
549
+ "",
550
+ "",
551
+ "",
552
+ "",
553
+ "",
554
+ "",
555
+ "",
556
+ "",
557
+ "",
558
+ "",
559
+ "",
560
+ "",
561
+ "",
562
+ "",
563
+ "",
564
+ "",
565
+ "",
566
+ "",
567
+ "",
568
+ "",
569
+ "",
570
+ "",
571
+ "",
572
+ "",
573
+ "",
574
+ "",
575
+ "",
576
+ "",
577
+ "",
578
+ "",
579
+ "",
580
+ "",
581
+ "",
582
+ "",
583
+ "",
584
+ "",
585
+ ""
586
+ ],
587
+ [
588
+ "137",
589
+ "",
590
+ "",
591
+ "",
592
+ "",
593
+ "",
594
+ "",
595
+ "",
596
+ "",
597
+ "",
598
+ "",
599
+ "",
600
+ "",
601
+ "",
602
+ "",
603
+ "",
604
+ "",
605
+ "",
606
+ "",
607
+ "",
608
+ "",
609
+ "",
610
+ "",
611
+ "",
612
+ "",
613
+ "",
614
+ "",
615
+ "",
616
+ "",
617
+ "",
618
+ "",
619
+ "",
620
+ "",
621
+ "",
622
+ "",
623
+ "",
624
+ "",
625
+ "",
626
+ ""
627
+ ],
628
+ [
629
+ "162",
630
+ "8",
631
+ "",
632
+ "",
633
+ "",
634
+ "",
635
+ "",
636
+ "",
637
+ "",
638
+ "",
639
+ "",
640
+ "",
641
+ "",
642
+ "",
643
+ "",
644
+ "",
645
+ "",
646
+ "",
647
+ "",
648
+ "",
649
+ "",
650
+ "",
651
+ "",
652
+ "",
653
+ "",
654
+ "",
655
+ "",
656
+ "",
657
+ "",
658
+ "",
659
+ "",
660
+ "",
661
+ "",
662
+ "",
663
+ "",
664
+ "",
665
+ "",
666
+ "",
667
+ ""
668
+ ],
669
+ [
670
+ "945",
671
+ "31",
672
+ "",
673
+ "",
674
+ "",
675
+ "",
676
+ "",
677
+ "",
678
+ "",
679
+ "",
680
+ "",
681
+ "",
682
+ "",
683
+ "",
684
+ "",
685
+ "",
686
+ "",
687
+ "",
688
+ "",
689
+ "",
690
+ "",
691
+ "",
692
+ "",
693
+ "",
694
+ "",
695
+ "",
696
+ "",
697
+ "",
698
+ "",
699
+ "",
700
+ "",
701
+ "",
702
+ "",
703
+ "",
704
+ "",
705
+ "",
706
+ "",
707
+ "",
708
+ ""
709
+ ],
710
+ [
711
+ "468",
712
+ "20",
713
+ "",
714
+ "",
715
+ "",
716
+ "",
717
+ "",
718
+ "",
719
+ "",
720
+ "",
721
+ "",
722
+ "",
723
+ "",
724
+ "",
725
+ "",
726
+ "",
727
+ "",
728
+ "",
729
+ "",
730
+ "",
731
+ "",
732
+ "",
733
+ "",
734
+ "",
735
+ "",
736
+ "",
737
+ "",
738
+ "",
739
+ "",
740
+ "",
741
+ "",
742
+ "",
743
+ "",
744
+ "",
745
+ "",
746
+ "",
747
+ "",
748
+ "",
749
+ ""
750
+ ],
751
+ [
752
+ "85",
753
+ "4",
754
+ "",
755
+ "",
756
+ "",
757
+ "",
758
+ "",
759
+ "",
760
+ "",
761
+ "",
762
+ "",
763
+ "",
764
+ "",
765
+ "",
766
+ "",
767
+ "",
768
+ "",
769
+ "",
770
+ "",
771
+ "",
772
+ "",
773
+ "",
774
+ "",
775
+ "",
776
+ "",
777
+ "",
778
+ "",
779
+ "",
780
+ "",
781
+ "",
782
+ "",
783
+ "",
784
+ "",
785
+ "",
786
+ "",
787
+ "",
788
+ "",
789
+ "",
790
+ ""
791
+ ],
792
+ [
793
+ "578",
794
+ "30",
795
+ "",
796
+ "8",
797
+ "",
798
+ "",
799
+ "",
800
+ "",
801
+ "",
802
+ "",
803
+ "",
804
+ "",
805
+ "",
806
+ "",
807
+ "",
808
+ "",
809
+ "",
810
+ "",
811
+ "",
812
+ "",
813
+ "",
814
+ "",
815
+ "",
816
+ "",
817
+ "",
818
+ "",
819
+ "",
820
+ "",
821
+ "",
822
+ "",
823
+ "",
824
+ "",
825
+ "",
826
+ "",
827
+ "",
828
+ "",
829
+ "",
830
+ "",
831
+ ""
832
+ ],
833
+ [
834
+ "31",
835
+ "4",
836
+ "",
837
+ "",
838
+ "",
839
+ "",
840
+ "",
841
+ "",
842
+ "",
843
+ "",
844
+ "",
845
+ "",
846
+ "",
847
+ "",
848
+ "",
849
+ "",
850
+ "",
851
+ "",
852
+ "",
853
+ "",
854
+ "",
855
+ "",
856
+ "",
857
+ "",
858
+ "",
859
+ "",
860
+ "",
861
+ "",
862
+ "",
863
+ "",
864
+ "",
865
+ "",
866
+ "",
867
+ "",
868
+ "",
869
+ "",
870
+ "",
871
+ "",
872
+ ""
873
+ ],
874
+ [
875
+ "843",
876
+ "36",
877
+ "",
878
+ "10",
879
+ "",
880
+ "",
881
+ "",
882
+ "",
883
+ "",
884
+ "",
885
+ "",
886
+ "",
887
+ "",
888
+ "",
889
+ "",
890
+ "",
891
+ "",
892
+ "",
893
+ "",
894
+ "",
895
+ "",
896
+ "",
897
+ "",
898
+ "",
899
+ "",
900
+ "",
901
+ "",
902
+ "",
903
+ "",
904
+ "",
905
+ "",
906
+ "",
907
+ "",
908
+ "",
909
+ "",
910
+ "",
911
+ "",
912
+ "",
913
+ ""
914
+ ],
915
+ [
916
+ "505",
917
+ "24",
918
+ "",
919
+ "10",
920
+ "2",
921
+ "",
922
+ "",
923
+ "",
924
+ "",
925
+ "",
926
+ "",
927
+ "",
928
+ "",
929
+ "",
930
+ "",
931
+ "",
932
+ "",
933
+ "",
934
+ "",
935
+ "",
936
+ "",
937
+ "",
938
+ "",
939
+ "",
940
+ "",
941
+ "",
942
+ "",
943
+ "",
944
+ "",
945
+ "",
946
+ "",
947
+ "",
948
+ "",
949
+ "",
950
+ "",
951
+ "",
952
+ "",
953
+ "",
954
+ ""
955
+ ],
956
+ [
957
+ "65",
958
+ "4",
959
+ "",
960
+ "",
961
+ "2",
962
+ "",
963
+ "",
964
+ "",
965
+ "",
966
+ "",
967
+ "",
968
+ "",
969
+ "",
970
+ "",
971
+ "",
972
+ "",
973
+ "",
974
+ "",
975
+ "",
976
+ "",
977
+ "",
978
+ "",
979
+ "",
980
+ "",
981
+ "",
982
+ "",
983
+ "",
984
+ "",
985
+ "",
986
+ "",
987
+ "",
988
+ "",
989
+ "",
990
+ "",
991
+ "",
992
+ "",
993
+ "",
994
+ "",
995
+ ""
996
+ ],
997
+ [
998
+ "21",
999
+ "",
1000
+ "",
1001
+ "",
1002
+ "",
1003
+ "",
1004
+ "",
1005
+ "",
1006
+ "",
1007
+ "",
1008
+ "",
1009
+ "",
1010
+ "",
1011
+ "",
1012
+ "",
1013
+ "",
1014
+ "",
1015
+ "",
1016
+ "",
1017
+ "",
1018
+ "",
1019
+ "",
1020
+ "",
1021
+ "",
1022
+ "",
1023
+ "",
1024
+ "",
1025
+ "",
1026
+ "",
1027
+ "",
1028
+ "",
1029
+ "",
1030
+ "",
1031
+ "",
1032
+ "",
1033
+ "",
1034
+ "",
1035
+ "",
1036
+ ""
1037
+ ],
1038
+ [
1039
+ "31",
1040
+ "4",
1041
+ "",
1042
+ "",
1043
+ "",
1044
+ "",
1045
+ "",
1046
+ "",
1047
+ "",
1048
+ "",
1049
+ "",
1050
+ "",
1051
+ "",
1052
+ "",
1053
+ "",
1054
+ "",
1055
+ "",
1056
+ "",
1057
+ "",
1058
+ "",
1059
+ "",
1060
+ "",
1061
+ "",
1062
+ "",
1063
+ "",
1064
+ "",
1065
+ "",
1066
+ "",
1067
+ "",
1068
+ "",
1069
+ "",
1070
+ "",
1071
+ "",
1072
+ "",
1073
+ "",
1074
+ "",
1075
+ "",
1076
+ "",
1077
+ ""
1078
+ ],
1079
+ [
1080
+ "431",
1081
+ "32",
1082
+ "",
1083
+ "",
1084
+ "12",
1085
+ "",
1086
+ "",
1087
+ "",
1088
+ "",
1089
+ "",
1090
+ "",
1091
+ "",
1092
+ "",
1093
+ "",
1094
+ "",
1095
+ "",
1096
+ "",
1097
+ "",
1098
+ "",
1099
+ "",
1100
+ "",
1101
+ "",
1102
+ "",
1103
+ "",
1104
+ "",
1105
+ "",
1106
+ "",
1107
+ "",
1108
+ "",
1109
+ "",
1110
+ "",
1111
+ "",
1112
+ "",
1113
+ "",
1114
+ "",
1115
+ "",
1116
+ "",
1117
+ "",
1118
+ ""
1119
+ ],
1120
+ [
1121
+ "111",
1122
+ "9",
1123
+ "",
1124
+ "",
1125
+ "",
1126
+ "",
1127
+ "",
1128
+ "",
1129
+ "",
1130
+ "",
1131
+ "",
1132
+ "",
1133
+ "",
1134
+ "",
1135
+ "",
1136
+ "",
1137
+ "",
1138
+ "",
1139
+ "",
1140
+ "",
1141
+ "",
1142
+ "",
1143
+ "",
1144
+ "",
1145
+ "",
1146
+ "",
1147
+ "",
1148
+ "",
1149
+ "",
1150
+ "",
1151
+ "",
1152
+ "",
1153
+ "",
1154
+ "",
1155
+ "",
1156
+ "",
1157
+ "",
1158
+ "",
1159
+ ""
1160
+ ],
1161
+ [
1162
+ "1729",
1163
+ "56",
1164
+ "",
1165
+ "10",
1166
+ "8",
1167
+ "",
1168
+ "",
1169
+ "",
1170
+ "",
1171
+ "",
1172
+ "",
1173
+ "",
1174
+ "",
1175
+ "",
1176
+ "",
1177
+ "",
1178
+ "",
1179
+ "",
1180
+ "",
1181
+ "",
1182
+ "",
1183
+ "",
1184
+ "",
1185
+ "",
1186
+ "",
1187
+ "",
1188
+ "",
1189
+ "",
1190
+ "",
1191
+ "",
1192
+ "",
1193
+ "",
1194
+ "",
1195
+ "",
1196
+ "",
1197
+ "",
1198
+ "",
1199
+ "",
1200
+ ""
1201
+ ],
1202
+ [
1203
+ "308",
1204
+ "17",
1205
+ "",
1206
+ "5",
1207
+ "",
1208
+ "",
1209
+ "",
1210
+ "",
1211
+ "",
1212
+ "",
1213
+ "",
1214
+ "",
1215
+ "",
1216
+ "",
1217
+ "",
1218
+ "",
1219
+ "",
1220
+ "",
1221
+ "",
1222
+ "",
1223
+ "",
1224
+ "",
1225
+ "",
1226
+ "",
1227
+ "",
1228
+ "",
1229
+ "",
1230
+ "",
1231
+ "",
1232
+ "",
1233
+ "",
1234
+ "",
1235
+ "",
1236
+ "",
1237
+ "",
1238
+ "",
1239
+ "",
1240
+ "",
1241
+ ""
1242
+ ],
1243
+ [
1244
+ "261",
1245
+ "16",
1246
+ "",
1247
+ "",
1248
+ "2",
1249
+ "",
1250
+ "",
1251
+ "",
1252
+ "",
1253
+ "",
1254
+ "",
1255
+ "",
1256
+ "",
1257
+ "",
1258
+ "",
1259
+ "",
1260
+ "",
1261
+ "",
1262
+ "",
1263
+ "",
1264
+ "",
1265
+ "",
1266
+ "",
1267
+ "",
1268
+ "",
1269
+ "",
1270
+ "",
1271
+ "",
1272
+ "",
1273
+ "",
1274
+ "",
1275
+ "",
1276
+ "",
1277
+ "",
1278
+ "",
1279
+ "",
1280
+ "",
1281
+ "",
1282
+ ""
1283
+ ],
1284
+ [
1285
+ "377",
1286
+ "18",
1287
+ "",
1288
+ "",
1289
+ "2",
1290
+ "",
1291
+ "",
1292
+ "",
1293
+ "",
1294
+ "",
1295
+ "",
1296
+ "",
1297
+ "",
1298
+ "",
1299
+ "",
1300
+ "",
1301
+ "",
1302
+ "",
1303
+ "",
1304
+ "",
1305
+ "",
1306
+ "",
1307
+ "",
1308
+ "",
1309
+ "",
1310
+ "",
1311
+ "",
1312
+ "",
1313
+ "",
1314
+ "",
1315
+ "",
1316
+ "",
1317
+ "",
1318
+ "",
1319
+ "",
1320
+ "",
1321
+ "",
1322
+ "",
1323
+ ""
1324
+ ],
1325
+ [
1326
+ "1866",
1327
+ "58",
1328
+ "",
1329
+ "18",
1330
+ "8",
1331
+ "",
1332
+ "",
1333
+ "",
1334
+ "",
1335
+ "",
1336
+ "",
1337
+ "",
1338
+ "",
1339
+ "",
1340
+ "",
1341
+ "8",
1342
+ "",
1343
+ "",
1344
+ "",
1345
+ "",
1346
+ "",
1347
+ "",
1348
+ "",
1349
+ "",
1350
+ "",
1351
+ "",
1352
+ "",
1353
+ "",
1354
+ "",
1355
+ "",
1356
+ "",
1357
+ "",
1358
+ "",
1359
+ "",
1360
+ "",
1361
+ "",
1362
+ "",
1363
+ "",
1364
+ ""
1365
+ ],
1366
+ [
1367
+ "429",
1368
+ "20",
1369
+ "",
1370
+ "13",
1371
+ "",
1372
+ "",
1373
+ "",
1374
+ "",
1375
+ "",
1376
+ "",
1377
+ "",
1378
+ "",
1379
+ "",
1380
+ "",
1381
+ "",
1382
+ "",
1383
+ "",
1384
+ "",
1385
+ "",
1386
+ "",
1387
+ "",
1388
+ "",
1389
+ "",
1390
+ "",
1391
+ "",
1392
+ "",
1393
+ "",
1394
+ "",
1395
+ "",
1396
+ "",
1397
+ "",
1398
+ "",
1399
+ "",
1400
+ "",
1401
+ "",
1402
+ "",
1403
+ "",
1404
+ "",
1405
+ ""
1406
+ ],
1407
+ [
1408
+ "6",
1409
+ "6",
1410
+ "",
1411
+ "",
1412
+ "3",
1413
+ "",
1414
+ "",
1415
+ "",
1416
+ "",
1417
+ "",
1418
+ "",
1419
+ "",
1420
+ "",
1421
+ "",
1422
+ "",
1423
+ "",
1424
+ "",
1425
+ "",
1426
+ "",
1427
+ "",
1428
+ "",
1429
+ "",
1430
+ "",
1431
+ "",
1432
+ "",
1433
+ "",
1434
+ "",
1435
+ "",
1436
+ "",
1437
+ "",
1438
+ "",
1439
+ "",
1440
+ "",
1441
+ "",
1442
+ "",
1443
+ "",
1444
+ "",
1445
+ "",
1446
+ ""
1447
+ ],
1448
+ [
1449
+ "371",
1450
+ "22",
1451
+ "",
1452
+ "5",
1453
+ "",
1454
+ "",
1455
+ "",
1456
+ "",
1457
+ "",
1458
+ "",
1459
+ "",
1460
+ "",
1461
+ "",
1462
+ "",
1463
+ "",
1464
+ "",
1465
+ "",
1466
+ "",
1467
+ "",
1468
+ "",
1469
+ "",
1470
+ "",
1471
+ "",
1472
+ "",
1473
+ "",
1474
+ "",
1475
+ "",
1476
+ "",
1477
+ "",
1478
+ "",
1479
+ "",
1480
+ "",
1481
+ "",
1482
+ "",
1483
+ "",
1484
+ "",
1485
+ "",
1486
+ "",
1487
+ ""
1488
+ ],
1489
+ [
1490
+ "1885",
1491
+ "62",
1492
+ "",
1493
+ "10",
1494
+ "14",
1495
+ "",
1496
+ "",
1497
+ "",
1498
+ "",
1499
+ "",
1500
+ "",
1501
+ "",
1502
+ "",
1503
+ "",
1504
+ "",
1505
+ "8",
1506
+ "",
1507
+ "",
1508
+ "",
1509
+ "",
1510
+ "",
1511
+ "",
1512
+ "",
1513
+ "",
1514
+ "",
1515
+ "",
1516
+ "",
1517
+ "",
1518
+ "",
1519
+ "",
1520
+ "",
1521
+ "",
1522
+ "",
1523
+ "",
1524
+ "",
1525
+ "",
1526
+ "",
1527
+ "",
1528
+ ""
1529
+ ],
1530
+ [
1531
+ "923",
1532
+ "33",
1533
+ "",
1534
+ "15",
1535
+ "10",
1536
+ "",
1537
+ "",
1538
+ "",
1539
+ "",
1540
+ "",
1541
+ "",
1542
+ "",
1543
+ "",
1544
+ "",
1545
+ "",
1546
+ "8",
1547
+ "",
1548
+ "",
1549
+ "",
1550
+ "",
1551
+ "",
1552
+ "",
1553
+ "",
1554
+ "",
1555
+ "",
1556
+ "",
1557
+ "",
1558
+ "",
1559
+ "",
1560
+ "",
1561
+ "",
1562
+ "",
1563
+ "",
1564
+ "",
1565
+ "",
1566
+ "",
1567
+ "",
1568
+ "",
1569
+ ""
1570
+ ],
1571
+ [
1572
+ "317",
1573
+ "17",
1574
+ "",
1575
+ "5",
1576
+ "2",
1577
+ "",
1578
+ "",
1579
+ "",
1580
+ "",
1581
+ "",
1582
+ "",
1583
+ "",
1584
+ "",
1585
+ "",
1586
+ "",
1587
+ "",
1588
+ "",
1589
+ "",
1590
+ "",
1591
+ "",
1592
+ "",
1593
+ "",
1594
+ "",
1595
+ "",
1596
+ "",
1597
+ "",
1598
+ "",
1599
+ "",
1600
+ "",
1601
+ "",
1602
+ "",
1603
+ "",
1604
+ "",
1605
+ "",
1606
+ "",
1607
+ "",
1608
+ "",
1609
+ "",
1610
+ ""
1611
+ ],
1612
+ [
1613
+ "371",
1614
+ "22",
1615
+ "",
1616
+ "",
1617
+ "",
1618
+ "",
1619
+ "",
1620
+ "",
1621
+ "",
1622
+ "",
1623
+ "",
1624
+ "",
1625
+ "",
1626
+ "",
1627
+ "",
1628
+ "",
1629
+ "",
1630
+ "",
1631
+ "",
1632
+ "",
1633
+ "",
1634
+ "",
1635
+ "",
1636
+ "",
1637
+ "",
1638
+ "",
1639
+ "",
1640
+ "",
1641
+ "",
1642
+ "",
1643
+ "",
1644
+ "",
1645
+ "",
1646
+ "",
1647
+ "",
1648
+ "",
1649
+ "",
1650
+ "",
1651
+ ""
1652
+ ],
1653
+ [
1654
+ "371",
1655
+ "22",
1656
+ "",
1657
+ "",
1658
+ "",
1659
+ "",
1660
+ "",
1661
+ "",
1662
+ "",
1663
+ "",
1664
+ "",
1665
+ "",
1666
+ "",
1667
+ "",
1668
+ "",
1669
+ "",
1670
+ "",
1671
+ "",
1672
+ "",
1673
+ "",
1674
+ "",
1675
+ "",
1676
+ "",
1677
+ "",
1678
+ "",
1679
+ "",
1680
+ "",
1681
+ "",
1682
+ "",
1683
+ "",
1684
+ "",
1685
+ "",
1686
+ "",
1687
+ "",
1688
+ "",
1689
+ "",
1690
+ "",
1691
+ "",
1692
+ ""
1693
+ ],
1694
+ [
1695
+ "30",
1696
+ "2",
1697
+ "",
1698
+ "",
1699
+ "",
1700
+ "",
1701
+ "",
1702
+ "",
1703
+ "",
1704
+ "",
1705
+ "",
1706
+ "",
1707
+ "",
1708
+ "",
1709
+ "",
1710
+ "",
1711
+ "",
1712
+ "",
1713
+ "",
1714
+ "",
1715
+ "",
1716
+ "",
1717
+ "",
1718
+ "",
1719
+ "",
1720
+ "",
1721
+ "",
1722
+ "",
1723
+ "",
1724
+ "",
1725
+ "",
1726
+ "",
1727
+ "",
1728
+ "",
1729
+ "",
1730
+ "",
1731
+ "",
1732
+ "",
1733
+ ""
1734
+ ],
1735
+ [
1736
+ "352",
1737
+ "19",
1738
+ "",
1739
+ "",
1740
+ "",
1741
+ "",
1742
+ "",
1743
+ "",
1744
+ "",
1745
+ "",
1746
+ "",
1747
+ "",
1748
+ "",
1749
+ "",
1750
+ "",
1751
+ "",
1752
+ "",
1753
+ "",
1754
+ "",
1755
+ "",
1756
+ "",
1757
+ "",
1758
+ "",
1759
+ "",
1760
+ "",
1761
+ "",
1762
+ "",
1763
+ "",
1764
+ "",
1765
+ "",
1766
+ "",
1767
+ "",
1768
+ "",
1769
+ "",
1770
+ "",
1771
+ "",
1772
+ "",
1773
+ "",
1774
+ ""
1775
+ ],
1776
+ [
1777
+ "7224",
1778
+ "207",
1779
+ "",
1780
+ "60",
1781
+ "20",
1782
+ "",
1783
+ "",
1784
+ "",
1785
+ "3",
1786
+ "",
1787
+ "",
1788
+ "",
1789
+ "",
1790
+ "1",
1791
+ "",
1792
+ "12",
1793
+ "",
1794
+ "",
1795
+ "",
1796
+ "",
1797
+ "",
1798
+ "",
1799
+ "",
1800
+ "",
1801
+ "",
1802
+ "",
1803
+ "",
1804
+ "",
1805
+ "",
1806
+ "",
1807
+ "",
1808
+ "",
1809
+ "",
1810
+ "",
1811
+ "",
1812
+ "",
1813
+ "",
1814
+ "",
1815
+ ""
1816
+ ],
1817
+ [
1818
+ "21431",
1819
+ "597",
1820
+ "",
1821
+ "172",
1822
+ "60",
1823
+ "",
1824
+ "",
1825
+ "",
1826
+ "6",
1827
+ "",
1828
+ "",
1829
+ "",
1830
+ "",
1831
+ "",
1832
+ "",
1833
+ "37",
1834
+ "",
1835
+ "",
1836
+ "",
1837
+ "",
1838
+ "",
1839
+ "",
1840
+ "",
1841
+ "",
1842
+ "",
1843
+ "",
1844
+ "",
1845
+ "",
1846
+ "",
1847
+ "",
1848
+ "31",
1849
+ "",
1850
+ "",
1851
+ "",
1852
+ "",
1853
+ "",
1854
+ "",
1855
+ "",
1856
+ ""
1857
+ ],
1858
+ [
1859
+ "2195",
1860
+ "70",
1861
+ "",
1862
+ "25",
1863
+ "8",
1864
+ "",
1865
+ "",
1866
+ "",
1867
+ "4",
1868
+ "",
1869
+ "",
1870
+ "",
1871
+ "",
1872
+ "",
1873
+ "",
1874
+ "8",
1875
+ "",
1876
+ "",
1877
+ "",
1878
+ "",
1879
+ "",
1880
+ "",
1881
+ "",
1882
+ "",
1883
+ "",
1884
+ "",
1885
+ "",
1886
+ "",
1887
+ "",
1888
+ "",
1889
+ "",
1890
+ "",
1891
+ "",
1892
+ "",
1893
+ "",
1894
+ "",
1895
+ "",
1896
+ "",
1897
+ ""
1898
+ ],
1899
+ [
1900
+ "72359",
1901
+ "2084",
1902
+ "",
1903
+ "668",
1904
+ "273",
1905
+ "",
1906
+ "",
1907
+ "",
1908
+ "53",
1909
+ "",
1910
+ "",
1911
+ "",
1912
+ "",
1913
+ "",
1914
+ "",
1915
+ "184",
1916
+ "",
1917
+ "",
1918
+ "",
1919
+ "",
1920
+ "",
1921
+ "",
1922
+ "",
1923
+ "",
1924
+ "",
1925
+ "",
1926
+ "",
1927
+ "",
1928
+ "",
1929
+ "",
1930
+ "88",
1931
+ "",
1932
+ "",
1933
+ "",
1934
+ "",
1935
+ "",
1936
+ "",
1937
+ "",
1938
+ ""
1939
+ ],
1940
+ [
1941
+ "250",
1942
+ "15",
1943
+ "",
1944
+ "9",
1945
+ "1",
1946
+ "",
1947
+ "",
1948
+ "",
1949
+ "",
1950
+ "",
1951
+ "",
1952
+ "",
1953
+ "",
1954
+ "",
1955
+ "",
1956
+ "",
1957
+ "",
1958
+ "",
1959
+ "",
1960
+ "",
1961
+ "",
1962
+ "",
1963
+ "",
1964
+ "",
1965
+ "",
1966
+ "",
1967
+ "",
1968
+ "",
1969
+ "",
1970
+ "",
1971
+ "",
1972
+ "",
1973
+ "",
1974
+ "",
1975
+ "",
1976
+ "",
1977
+ "",
1978
+ "",
1979
+ ""
1980
+ ],
1981
+ [
1982
+ "837",
1983
+ "36",
1984
+ "",
1985
+ "15",
1986
+ "",
1987
+ "",
1988
+ "",
1989
+ "",
1990
+ "",
1991
+ "",
1992
+ "",
1993
+ "",
1994
+ "",
1995
+ "",
1996
+ "",
1997
+ "",
1998
+ "",
1999
+ "",
2000
+ "",
2001
+ "",
2002
+ "",
2003
+ "",
2004
+ "",
2005
+ "",
2006
+ "",
2007
+ "",
2008
+ "",
2009
+ "",
2010
+ "",
2011
+ "",
2012
+ "",
2013
+ "",
2014
+ "",
2015
+ "",
2016
+ "",
2017
+ "",
2018
+ "",
2019
+ "",
2020
+ ""
2021
+ ],
2022
+ [
2023
+ "39",
2024
+ "",
2025
+ "",
2026
+ "",
2027
+ "1",
2028
+ "",
2029
+ "",
2030
+ "",
2031
+ "",
2032
+ "",
2033
+ "",
2034
+ "",
2035
+ "",
2036
+ "",
2037
+ "",
2038
+ "",
2039
+ "",
2040
+ "",
2041
+ "",
2042
+ "",
2043
+ "",
2044
+ "",
2045
+ "",
2046
+ "",
2047
+ "",
2048
+ "",
2049
+ "",
2050
+ "",
2051
+ "",
2052
+ "",
2053
+ "",
2054
+ "",
2055
+ "",
2056
+ "",
2057
+ "",
2058
+ "",
2059
+ "",
2060
+ "",
2061
+ ""
2062
+ ],
2063
+ [
2064
+ "642",
2065
+ "31",
2066
+ "",
2067
+ "13",
2068
+ "2",
2069
+ "",
2070
+ "",
2071
+ "",
2072
+ "",
2073
+ "",
2074
+ "",
2075
+ "",
2076
+ "",
2077
+ "",
2078
+ "",
2079
+ "",
2080
+ "",
2081
+ "",
2082
+ "",
2083
+ "",
2084
+ "",
2085
+ "",
2086
+ "",
2087
+ "",
2088
+ "",
2089
+ "",
2090
+ "",
2091
+ "",
2092
+ "",
2093
+ "",
2094
+ "",
2095
+ "",
2096
+ "",
2097
+ "",
2098
+ "",
2099
+ "",
2100
+ "",
2101
+ "",
2102
+ ""
2103
+ ],
2104
+ [
2105
+ "691",
2106
+ "22",
2107
+ "",
2108
+ "2",
2109
+ "4",
2110
+ "",
2111
+ "",
2112
+ "",
2113
+ "",
2114
+ "",
2115
+ "",
2116
+ "",
2117
+ "",
2118
+ "",
2119
+ "",
2120
+ "",
2121
+ "",
2122
+ "",
2123
+ "",
2124
+ "",
2125
+ "",
2126
+ "",
2127
+ "",
2128
+ "",
2129
+ "",
2130
+ "",
2131
+ "",
2132
+ "",
2133
+ "",
2134
+ "",
2135
+ "",
2136
+ "",
2137
+ "",
2138
+ "",
2139
+ "",
2140
+ "",
2141
+ "",
2142
+ "",
2143
+ ""
2144
+ ]
2145
+ ],
2146
+ "textfont": {
2147
+ "size": 10
2148
+ },
2149
+ "texttemplate": "%{text}",
2150
+ "type": "heatmap",
2151
+ "x": [
2152
+ "rewrite",
2153
+ "rewrite-all",
2154
+ "rewrite-analysis",
2155
+ "rewrite-apache",
2156
+ "rewrite-build-gradle-plugin",
2157
+ "rewrite-csharp",
2158
+ "rewrite-cucumber-jvm",
2159
+ "rewrite-docker",
2160
+ "rewrite-dropwizard",
2161
+ "rewrite-feature-flags",
2162
+ "rewrite-generative-ai",
2163
+ "rewrite-github-actions",
2164
+ "rewrite-gitlab",
2165
+ "rewrite-gradle-plugin",
2166
+ "rewrite-gradle-tooling-model",
2167
+ "rewrite-hibernate",
2168
+ "rewrite-jackson",
2169
+ "rewrite-java-dependencies",
2170
+ "rewrite-jenkins",
2171
+ "rewrite-liberty",
2172
+ "rewrite-logging-frameworks",
2173
+ "rewrite-maven-plugin",
2174
+ "rewrite-micrometer",
2175
+ "rewrite-micronaut",
2176
+ "rewrite-migrate-java",
2177
+ "rewrite-netty",
2178
+ "rewrite-okhttp",
2179
+ "rewrite-openapi",
2180
+ "rewrite-python",
2181
+ "rewrite-quarkus",
2182
+ "rewrite-recipe-bom",
2183
+ "rewrite-recipe-markdown-generator",
2184
+ "rewrite-rewrite",
2185
+ "rewrite-spring",
2186
+ "rewrite-static-analysis",
2187
+ "rewrite-struts",
2188
+ "rewrite-templating",
2189
+ "rewrite-testing-frameworks",
2190
+ "rewrite-third-party"
2191
+ ],
2192
+ "y": [
2193
+ "rewrite",
2194
+ "rewrite-all",
2195
+ "rewrite-analysis",
2196
+ "rewrite-apache",
2197
+ "rewrite-build-gradle-plugin",
2198
+ "rewrite-csharp",
2199
+ "rewrite-cucumber-jvm",
2200
+ "rewrite-docker",
2201
+ "rewrite-dropwizard",
2202
+ "rewrite-feature-flags",
2203
+ "rewrite-generative-ai",
2204
+ "rewrite-github-actions",
2205
+ "rewrite-gitlab",
2206
+ "rewrite-gradle-plugin",
2207
+ "rewrite-gradle-tooling-model",
2208
+ "rewrite-hibernate",
2209
+ "rewrite-jackson",
2210
+ "rewrite-java-dependencies",
2211
+ "rewrite-jenkins",
2212
+ "rewrite-liberty",
2213
+ "rewrite-logging-frameworks",
2214
+ "rewrite-maven-plugin",
2215
+ "rewrite-micrometer",
2216
+ "rewrite-micronaut",
2217
+ "rewrite-migrate-java",
2218
+ "rewrite-netty",
2219
+ "rewrite-okhttp",
2220
+ "rewrite-openapi",
2221
+ "rewrite-python",
2222
+ "rewrite-quarkus",
2223
+ "rewrite-recipe-bom",
2224
+ "rewrite-recipe-markdown-generator",
2225
+ "rewrite-rewrite",
2226
+ "rewrite-spring",
2227
+ "rewrite-static-analysis",
2228
+ "rewrite-struts",
2229
+ "rewrite-templating",
2230
+ "rewrite-testing-frameworks",
2231
+ "rewrite-third-party"
2232
+ ],
2233
+ "z": [
2234
+ [
2235
+ 0,
2236
+ 0,
2237
+ 0,
2238
+ 0,
2239
+ 0,
2240
+ 0,
2241
+ 0,
2242
+ 0,
2243
+ 0,
2244
+ 0,
2245
+ 0,
2246
+ 0,
2247
+ 0,
2248
+ 0,
2249
+ 0,
2250
+ 0,
2251
+ 0,
2252
+ 0,
2253
+ 0,
2254
+ 0,
2255
+ 0,
2256
+ 0,
2257
+ 0,
2258
+ 0,
2259
+ 0,
2260
+ 0,
2261
+ 0,
2262
+ 0,
2263
+ 0,
2264
+ 0,
2265
+ 0,
2266
+ 0,
2267
+ 0,
2268
+ 0,
2269
+ 0,
2270
+ 0,
2271
+ 0,
2272
+ 0,
2273
+ 0
2274
+ ],
2275
+ [
2276
+ 137,
2277
+ 0,
2278
+ 0,
2279
+ 0,
2280
+ 0,
2281
+ 0,
2282
+ 0,
2283
+ 0,
2284
+ 0,
2285
+ 0,
2286
+ 0,
2287
+ 0,
2288
+ 0,
2289
+ 0,
2290
+ 0,
2291
+ 0,
2292
+ 0,
2293
+ 0,
2294
+ 0,
2295
+ 0,
2296
+ 0,
2297
+ 0,
2298
+ 0,
2299
+ 0,
2300
+ 0,
2301
+ 0,
2302
+ 0,
2303
+ 0,
2304
+ 0,
2305
+ 0,
2306
+ 0,
2307
+ 0,
2308
+ 0,
2309
+ 0,
2310
+ 0,
2311
+ 0,
2312
+ 0,
2313
+ 0,
2314
+ 0
2315
+ ],
2316
+ [
2317
+ 162,
2318
+ 8,
2319
+ 0,
2320
+ 0,
2321
+ 0,
2322
+ 0,
2323
+ 0,
2324
+ 0,
2325
+ 0,
2326
+ 0,
2327
+ 0,
2328
+ 0,
2329
+ 0,
2330
+ 0,
2331
+ 0,
2332
+ 0,
2333
+ 0,
2334
+ 0,
2335
+ 0,
2336
+ 0,
2337
+ 0,
2338
+ 0,
2339
+ 0,
2340
+ 0,
2341
+ 0,
2342
+ 0,
2343
+ 0,
2344
+ 0,
2345
+ 0,
2346
+ 0,
2347
+ 0,
2348
+ 0,
2349
+ 0,
2350
+ 0,
2351
+ 0,
2352
+ 0,
2353
+ 0,
2354
+ 0,
2355
+ 0
2356
+ ],
2357
+ [
2358
+ 945,
2359
+ 31,
2360
+ 0,
2361
+ 0,
2362
+ 0,
2363
+ 0,
2364
+ 0,
2365
+ 0,
2366
+ 0,
2367
+ 0,
2368
+ 0,
2369
+ 0,
2370
+ 0,
2371
+ 0,
2372
+ 0,
2373
+ 0,
2374
+ 0,
2375
+ 0,
2376
+ 0,
2377
+ 0,
2378
+ 0,
2379
+ 0,
2380
+ 0,
2381
+ 0,
2382
+ 0,
2383
+ 0,
2384
+ 0,
2385
+ 0,
2386
+ 0,
2387
+ 0,
2388
+ 0,
2389
+ 0,
2390
+ 0,
2391
+ 0,
2392
+ 0,
2393
+ 0,
2394
+ 0,
2395
+ 0,
2396
+ 0
2397
+ ],
2398
+ [
2399
+ 468,
2400
+ 20,
2401
+ 0,
2402
+ 0,
2403
+ 0,
2404
+ 0,
2405
+ 0,
2406
+ 0,
2407
+ 0,
2408
+ 0,
2409
+ 0,
2410
+ 0,
2411
+ 0,
2412
+ 0,
2413
+ 0,
2414
+ 0,
2415
+ 0,
2416
+ 0,
2417
+ 0,
2418
+ 0,
2419
+ 0,
2420
+ 0,
2421
+ 0,
2422
+ 0,
2423
+ 0,
2424
+ 0,
2425
+ 0,
2426
+ 0,
2427
+ 0,
2428
+ 0,
2429
+ 0,
2430
+ 0,
2431
+ 0,
2432
+ 0,
2433
+ 0,
2434
+ 0,
2435
+ 0,
2436
+ 0,
2437
+ 0
2438
+ ],
2439
+ [
2440
+ 85,
2441
+ 4,
2442
+ 0,
2443
+ 0,
2444
+ 0,
2445
+ 0,
2446
+ 0,
2447
+ 0,
2448
+ 0,
2449
+ 0,
2450
+ 0,
2451
+ 0,
2452
+ 0,
2453
+ 0,
2454
+ 0,
2455
+ 0,
2456
+ 0,
2457
+ 0,
2458
+ 0,
2459
+ 0,
2460
+ 0,
2461
+ 0,
2462
+ 0,
2463
+ 0,
2464
+ 0,
2465
+ 0,
2466
+ 0,
2467
+ 0,
2468
+ 0,
2469
+ 0,
2470
+ 0,
2471
+ 0,
2472
+ 0,
2473
+ 0,
2474
+ 0,
2475
+ 0,
2476
+ 0,
2477
+ 0,
2478
+ 0
2479
+ ],
2480
+ [
2481
+ 578,
2482
+ 30,
2483
+ 0,
2484
+ 8,
2485
+ 0,
2486
+ 0,
2487
+ 0,
2488
+ 0,
2489
+ 0,
2490
+ 0,
2491
+ 0,
2492
+ 0,
2493
+ 0,
2494
+ 0,
2495
+ 0,
2496
+ 0,
2497
+ 0,
2498
+ 0,
2499
+ 0,
2500
+ 0,
2501
+ 0,
2502
+ 0,
2503
+ 0,
2504
+ 0,
2505
+ 0,
2506
+ 0,
2507
+ 0,
2508
+ 0,
2509
+ 0,
2510
+ 0,
2511
+ 0,
2512
+ 0,
2513
+ 0,
2514
+ 0,
2515
+ 0,
2516
+ 0,
2517
+ 0,
2518
+ 0,
2519
+ 0
2520
+ ],
2521
+ [
2522
+ 31,
2523
+ 4,
2524
+ 0,
2525
+ 0,
2526
+ 0,
2527
+ 0,
2528
+ 0,
2529
+ 0,
2530
+ 0,
2531
+ 0,
2532
+ 0,
2533
+ 0,
2534
+ 0,
2535
+ 0,
2536
+ 0,
2537
+ 0,
2538
+ 0,
2539
+ 0,
2540
+ 0,
2541
+ 0,
2542
+ 0,
2543
+ 0,
2544
+ 0,
2545
+ 0,
2546
+ 0,
2547
+ 0,
2548
+ 0,
2549
+ 0,
2550
+ 0,
2551
+ 0,
2552
+ 0,
2553
+ 0,
2554
+ 0,
2555
+ 0,
2556
+ 0,
2557
+ 0,
2558
+ 0,
2559
+ 0,
2560
+ 0
2561
+ ],
2562
+ [
2563
+ 843,
2564
+ 36,
2565
+ 0,
2566
+ 10,
2567
+ 0,
2568
+ 0,
2569
+ 0,
2570
+ 0,
2571
+ 0,
2572
+ 0,
2573
+ 0,
2574
+ 0,
2575
+ 0,
2576
+ 0,
2577
+ 0,
2578
+ 0,
2579
+ 0,
2580
+ 0,
2581
+ 0,
2582
+ 0,
2583
+ 0,
2584
+ 0,
2585
+ 0,
2586
+ 0,
2587
+ 0,
2588
+ 0,
2589
+ 0,
2590
+ 0,
2591
+ 0,
2592
+ 0,
2593
+ 0,
2594
+ 0,
2595
+ 0,
2596
+ 0,
2597
+ 0,
2598
+ 0,
2599
+ 0,
2600
+ 0,
2601
+ 0
2602
+ ],
2603
+ [
2604
+ 505,
2605
+ 24,
2606
+ 0,
2607
+ 10,
2608
+ 2,
2609
+ 0,
2610
+ 0,
2611
+ 0,
2612
+ 0,
2613
+ 0,
2614
+ 0,
2615
+ 0,
2616
+ 0,
2617
+ 0,
2618
+ 0,
2619
+ 0,
2620
+ 0,
2621
+ 0,
2622
+ 0,
2623
+ 0,
2624
+ 0,
2625
+ 0,
2626
+ 0,
2627
+ 0,
2628
+ 0,
2629
+ 0,
2630
+ 0,
2631
+ 0,
2632
+ 0,
2633
+ 0,
2634
+ 0,
2635
+ 0,
2636
+ 0,
2637
+ 0,
2638
+ 0,
2639
+ 0,
2640
+ 0,
2641
+ 0,
2642
+ 0
2643
+ ],
2644
+ [
2645
+ 65,
2646
+ 4,
2647
+ 0,
2648
+ 0,
2649
+ 2,
2650
+ 0,
2651
+ 0,
2652
+ 0,
2653
+ 0,
2654
+ 0,
2655
+ 0,
2656
+ 0,
2657
+ 0,
2658
+ 0,
2659
+ 0,
2660
+ 0,
2661
+ 0,
2662
+ 0,
2663
+ 0,
2664
+ 0,
2665
+ 0,
2666
+ 0,
2667
+ 0,
2668
+ 0,
2669
+ 0,
2670
+ 0,
2671
+ 0,
2672
+ 0,
2673
+ 0,
2674
+ 0,
2675
+ 0,
2676
+ 0,
2677
+ 0,
2678
+ 0,
2679
+ 0,
2680
+ 0,
2681
+ 0,
2682
+ 0,
2683
+ 0
2684
+ ],
2685
+ [
2686
+ 21,
2687
+ 0,
2688
+ 0,
2689
+ 0,
2690
+ 0,
2691
+ 0,
2692
+ 0,
2693
+ 0,
2694
+ 0,
2695
+ 0,
2696
+ 0,
2697
+ 0,
2698
+ 0,
2699
+ 0,
2700
+ 0,
2701
+ 0,
2702
+ 0,
2703
+ 0,
2704
+ 0,
2705
+ 0,
2706
+ 0,
2707
+ 0,
2708
+ 0,
2709
+ 0,
2710
+ 0,
2711
+ 0,
2712
+ 0,
2713
+ 0,
2714
+ 0,
2715
+ 0,
2716
+ 0,
2717
+ 0,
2718
+ 0,
2719
+ 0,
2720
+ 0,
2721
+ 0,
2722
+ 0,
2723
+ 0,
2724
+ 0
2725
+ ],
2726
+ [
2727
+ 31,
2728
+ 4,
2729
+ 0,
2730
+ 0,
2731
+ 0,
2732
+ 0,
2733
+ 0,
2734
+ 0,
2735
+ 0,
2736
+ 0,
2737
+ 0,
2738
+ 0,
2739
+ 0,
2740
+ 0,
2741
+ 0,
2742
+ 0,
2743
+ 0,
2744
+ 0,
2745
+ 0,
2746
+ 0,
2747
+ 0,
2748
+ 0,
2749
+ 0,
2750
+ 0,
2751
+ 0,
2752
+ 0,
2753
+ 0,
2754
+ 0,
2755
+ 0,
2756
+ 0,
2757
+ 0,
2758
+ 0,
2759
+ 0,
2760
+ 0,
2761
+ 0,
2762
+ 0,
2763
+ 0,
2764
+ 0,
2765
+ 0
2766
+ ],
2767
+ [
2768
+ 431,
2769
+ 32,
2770
+ 0,
2771
+ 0,
2772
+ 12,
2773
+ 0,
2774
+ 0,
2775
+ 0,
2776
+ 0,
2777
+ 0,
2778
+ 0,
2779
+ 0,
2780
+ 0,
2781
+ 0,
2782
+ 0,
2783
+ 0,
2784
+ 0,
2785
+ 0,
2786
+ 0,
2787
+ 0,
2788
+ 0,
2789
+ 0,
2790
+ 0,
2791
+ 0,
2792
+ 0,
2793
+ 0,
2794
+ 0,
2795
+ 0,
2796
+ 0,
2797
+ 0,
2798
+ 0,
2799
+ 0,
2800
+ 0,
2801
+ 0,
2802
+ 0,
2803
+ 0,
2804
+ 0,
2805
+ 0,
2806
+ 0
2807
+ ],
2808
+ [
2809
+ 111,
2810
+ 9,
2811
+ 0,
2812
+ 0,
2813
+ 0,
2814
+ 0,
2815
+ 0,
2816
+ 0,
2817
+ 0,
2818
+ 0,
2819
+ 0,
2820
+ 0,
2821
+ 0,
2822
+ 0,
2823
+ 0,
2824
+ 0,
2825
+ 0,
2826
+ 0,
2827
+ 0,
2828
+ 0,
2829
+ 0,
2830
+ 0,
2831
+ 0,
2832
+ 0,
2833
+ 0,
2834
+ 0,
2835
+ 0,
2836
+ 0,
2837
+ 0,
2838
+ 0,
2839
+ 0,
2840
+ 0,
2841
+ 0,
2842
+ 0,
2843
+ 0,
2844
+ 0,
2845
+ 0,
2846
+ 0,
2847
+ 0
2848
+ ],
2849
+ [
2850
+ 1729,
2851
+ 56,
2852
+ 0,
2853
+ 10,
2854
+ 8,
2855
+ 0,
2856
+ 0,
2857
+ 0,
2858
+ 0,
2859
+ 0,
2860
+ 0,
2861
+ 0,
2862
+ 0,
2863
+ 0,
2864
+ 0,
2865
+ 0,
2866
+ 0,
2867
+ 0,
2868
+ 0,
2869
+ 0,
2870
+ 0,
2871
+ 0,
2872
+ 0,
2873
+ 0,
2874
+ 0,
2875
+ 0,
2876
+ 0,
2877
+ 0,
2878
+ 0,
2879
+ 0,
2880
+ 0,
2881
+ 0,
2882
+ 0,
2883
+ 0,
2884
+ 0,
2885
+ 0,
2886
+ 0,
2887
+ 0,
2888
+ 0
2889
+ ],
2890
+ [
2891
+ 308,
2892
+ 17,
2893
+ 0,
2894
+ 5,
2895
+ 0,
2896
+ 0,
2897
+ 0,
2898
+ 0,
2899
+ 0,
2900
+ 0,
2901
+ 0,
2902
+ 0,
2903
+ 0,
2904
+ 0,
2905
+ 0,
2906
+ 0,
2907
+ 0,
2908
+ 0,
2909
+ 0,
2910
+ 0,
2911
+ 0,
2912
+ 0,
2913
+ 0,
2914
+ 0,
2915
+ 0,
2916
+ 0,
2917
+ 0,
2918
+ 0,
2919
+ 0,
2920
+ 0,
2921
+ 0,
2922
+ 0,
2923
+ 0,
2924
+ 0,
2925
+ 0,
2926
+ 0,
2927
+ 0,
2928
+ 0,
2929
+ 0
2930
+ ],
2931
+ [
2932
+ 261,
2933
+ 16,
2934
+ 0,
2935
+ 0,
2936
+ 2,
2937
+ 0,
2938
+ 0,
2939
+ 0,
2940
+ 0,
2941
+ 0,
2942
+ 0,
2943
+ 0,
2944
+ 0,
2945
+ 0,
2946
+ 0,
2947
+ 0,
2948
+ 0,
2949
+ 0,
2950
+ 0,
2951
+ 0,
2952
+ 0,
2953
+ 0,
2954
+ 0,
2955
+ 0,
2956
+ 0,
2957
+ 0,
2958
+ 0,
2959
+ 0,
2960
+ 0,
2961
+ 0,
2962
+ 0,
2963
+ 0,
2964
+ 0,
2965
+ 0,
2966
+ 0,
2967
+ 0,
2968
+ 0,
2969
+ 0,
2970
+ 0
2971
+ ],
2972
+ [
2973
+ 377,
2974
+ 18,
2975
+ 0,
2976
+ 0,
2977
+ 2,
2978
+ 0,
2979
+ 0,
2980
+ 0,
2981
+ 0,
2982
+ 0,
2983
+ 0,
2984
+ 0,
2985
+ 0,
2986
+ 0,
2987
+ 0,
2988
+ 0,
2989
+ 0,
2990
+ 0,
2991
+ 0,
2992
+ 0,
2993
+ 0,
2994
+ 0,
2995
+ 0,
2996
+ 0,
2997
+ 0,
2998
+ 0,
2999
+ 0,
3000
+ 0,
3001
+ 0,
3002
+ 0,
3003
+ 0,
3004
+ 0,
3005
+ 0,
3006
+ 0,
3007
+ 0,
3008
+ 0,
3009
+ 0,
3010
+ 0,
3011
+ 0
3012
+ ],
3013
+ [
3014
+ 1866,
3015
+ 58,
3016
+ 0,
3017
+ 18,
3018
+ 8,
3019
+ 0,
3020
+ 0,
3021
+ 0,
3022
+ 0,
3023
+ 0,
3024
+ 0,
3025
+ 0,
3026
+ 0,
3027
+ 0,
3028
+ 0,
3029
+ 8,
3030
+ 0,
3031
+ 0,
3032
+ 0,
3033
+ 0,
3034
+ 0,
3035
+ 0,
3036
+ 0,
3037
+ 0,
3038
+ 0,
3039
+ 0,
3040
+ 0,
3041
+ 0,
3042
+ 0,
3043
+ 0,
3044
+ 0,
3045
+ 0,
3046
+ 0,
3047
+ 0,
3048
+ 0,
3049
+ 0,
3050
+ 0,
3051
+ 0,
3052
+ 0
3053
+ ],
3054
+ [
3055
+ 429,
3056
+ 20,
3057
+ 0,
3058
+ 13,
3059
+ 0,
3060
+ 0,
3061
+ 0,
3062
+ 0,
3063
+ 0,
3064
+ 0,
3065
+ 0,
3066
+ 0,
3067
+ 0,
3068
+ 0,
3069
+ 0,
3070
+ 0,
3071
+ 0,
3072
+ 0,
3073
+ 0,
3074
+ 0,
3075
+ 0,
3076
+ 0,
3077
+ 0,
3078
+ 0,
3079
+ 0,
3080
+ 0,
3081
+ 0,
3082
+ 0,
3083
+ 0,
3084
+ 0,
3085
+ 0,
3086
+ 0,
3087
+ 0,
3088
+ 0,
3089
+ 0,
3090
+ 0,
3091
+ 0,
3092
+ 0,
3093
+ 0
3094
+ ],
3095
+ [
3096
+ 6,
3097
+ 6,
3098
+ 0,
3099
+ 0,
3100
+ 3,
3101
+ 0,
3102
+ 0,
3103
+ 0,
3104
+ 0,
3105
+ 0,
3106
+ 0,
3107
+ 0,
3108
+ 0,
3109
+ 0,
3110
+ 0,
3111
+ 0,
3112
+ 0,
3113
+ 0,
3114
+ 0,
3115
+ 0,
3116
+ 0,
3117
+ 0,
3118
+ 0,
3119
+ 0,
3120
+ 0,
3121
+ 0,
3122
+ 0,
3123
+ 0,
3124
+ 0,
3125
+ 0,
3126
+ 0,
3127
+ 0,
3128
+ 0,
3129
+ 0,
3130
+ 0,
3131
+ 0,
3132
+ 0,
3133
+ 0,
3134
+ 0
3135
+ ],
3136
+ [
3137
+ 371,
3138
+ 22,
3139
+ 0,
3140
+ 5,
3141
+ 0,
3142
+ 0,
3143
+ 0,
3144
+ 0,
3145
+ 0,
3146
+ 0,
3147
+ 0,
3148
+ 0,
3149
+ 0,
3150
+ 0,
3151
+ 0,
3152
+ 0,
3153
+ 0,
3154
+ 0,
3155
+ 0,
3156
+ 0,
3157
+ 0,
3158
+ 0,
3159
+ 0,
3160
+ 0,
3161
+ 0,
3162
+ 0,
3163
+ 0,
3164
+ 0,
3165
+ 0,
3166
+ 0,
3167
+ 0,
3168
+ 0,
3169
+ 0,
3170
+ 0,
3171
+ 0,
3172
+ 0,
3173
+ 0,
3174
+ 0,
3175
+ 0
3176
+ ],
3177
+ [
3178
+ 1885,
3179
+ 62,
3180
+ 0,
3181
+ 10,
3182
+ 14,
3183
+ 0,
3184
+ 0,
3185
+ 0,
3186
+ 0,
3187
+ 0,
3188
+ 0,
3189
+ 0,
3190
+ 0,
3191
+ 0,
3192
+ 0,
3193
+ 8,
3194
+ 0,
3195
+ 0,
3196
+ 0,
3197
+ 0,
3198
+ 0,
3199
+ 0,
3200
+ 0,
3201
+ 0,
3202
+ 0,
3203
+ 0,
3204
+ 0,
3205
+ 0,
3206
+ 0,
3207
+ 0,
3208
+ 0,
3209
+ 0,
3210
+ 0,
3211
+ 0,
3212
+ 0,
3213
+ 0,
3214
+ 0,
3215
+ 0,
3216
+ 0
3217
+ ],
3218
+ [
3219
+ 923,
3220
+ 33,
3221
+ 0,
3222
+ 15,
3223
+ 10,
3224
+ 0,
3225
+ 0,
3226
+ 0,
3227
+ 0,
3228
+ 0,
3229
+ 0,
3230
+ 0,
3231
+ 0,
3232
+ 0,
3233
+ 0,
3234
+ 8,
3235
+ 0,
3236
+ 0,
3237
+ 0,
3238
+ 0,
3239
+ 0,
3240
+ 0,
3241
+ 0,
3242
+ 0,
3243
+ 0,
3244
+ 0,
3245
+ 0,
3246
+ 0,
3247
+ 0,
3248
+ 0,
3249
+ 0,
3250
+ 0,
3251
+ 0,
3252
+ 0,
3253
+ 0,
3254
+ 0,
3255
+ 0,
3256
+ 0,
3257
+ 0
3258
+ ],
3259
+ [
3260
+ 317,
3261
+ 17,
3262
+ 0,
3263
+ 5,
3264
+ 2,
3265
+ 0,
3266
+ 0,
3267
+ 0,
3268
+ 0,
3269
+ 0,
3270
+ 0,
3271
+ 0,
3272
+ 0,
3273
+ 0,
3274
+ 0,
3275
+ 0,
3276
+ 0,
3277
+ 0,
3278
+ 0,
3279
+ 0,
3280
+ 0,
3281
+ 0,
3282
+ 0,
3283
+ 0,
3284
+ 0,
3285
+ 0,
3286
+ 0,
3287
+ 0,
3288
+ 0,
3289
+ 0,
3290
+ 0,
3291
+ 0,
3292
+ 0,
3293
+ 0,
3294
+ 0,
3295
+ 0,
3296
+ 0,
3297
+ 0,
3298
+ 0
3299
+ ],
3300
+ [
3301
+ 371,
3302
+ 22,
3303
+ 0,
3304
+ 0,
3305
+ 0,
3306
+ 0,
3307
+ 0,
3308
+ 0,
3309
+ 0,
3310
+ 0,
3311
+ 0,
3312
+ 0,
3313
+ 0,
3314
+ 0,
3315
+ 0,
3316
+ 0,
3317
+ 0,
3318
+ 0,
3319
+ 0,
3320
+ 0,
3321
+ 0,
3322
+ 0,
3323
+ 0,
3324
+ 0,
3325
+ 0,
3326
+ 0,
3327
+ 0,
3328
+ 0,
3329
+ 0,
3330
+ 0,
3331
+ 0,
3332
+ 0,
3333
+ 0,
3334
+ 0,
3335
+ 0,
3336
+ 0,
3337
+ 0,
3338
+ 0,
3339
+ 0
3340
+ ],
3341
+ [
3342
+ 371,
3343
+ 22,
3344
+ 0,
3345
+ 0,
3346
+ 0,
3347
+ 0,
3348
+ 0,
3349
+ 0,
3350
+ 0,
3351
+ 0,
3352
+ 0,
3353
+ 0,
3354
+ 0,
3355
+ 0,
3356
+ 0,
3357
+ 0,
3358
+ 0,
3359
+ 0,
3360
+ 0,
3361
+ 0,
3362
+ 0,
3363
+ 0,
3364
+ 0,
3365
+ 0,
3366
+ 0,
3367
+ 0,
3368
+ 0,
3369
+ 0,
3370
+ 0,
3371
+ 0,
3372
+ 0,
3373
+ 0,
3374
+ 0,
3375
+ 0,
3376
+ 0,
3377
+ 0,
3378
+ 0,
3379
+ 0,
3380
+ 0
3381
+ ],
3382
+ [
3383
+ 30,
3384
+ 2,
3385
+ 0,
3386
+ 0,
3387
+ 0,
3388
+ 0,
3389
+ 0,
3390
+ 0,
3391
+ 0,
3392
+ 0,
3393
+ 0,
3394
+ 0,
3395
+ 0,
3396
+ 0,
3397
+ 0,
3398
+ 0,
3399
+ 0,
3400
+ 0,
3401
+ 0,
3402
+ 0,
3403
+ 0,
3404
+ 0,
3405
+ 0,
3406
+ 0,
3407
+ 0,
3408
+ 0,
3409
+ 0,
3410
+ 0,
3411
+ 0,
3412
+ 0,
3413
+ 0,
3414
+ 0,
3415
+ 0,
3416
+ 0,
3417
+ 0,
3418
+ 0,
3419
+ 0,
3420
+ 0,
3421
+ 0
3422
+ ],
3423
+ [
3424
+ 352,
3425
+ 19,
3426
+ 0,
3427
+ 0,
3428
+ 0,
3429
+ 0,
3430
+ 0,
3431
+ 0,
3432
+ 0,
3433
+ 0,
3434
+ 0,
3435
+ 0,
3436
+ 0,
3437
+ 0,
3438
+ 0,
3439
+ 0,
3440
+ 0,
3441
+ 0,
3442
+ 0,
3443
+ 0,
3444
+ 0,
3445
+ 0,
3446
+ 0,
3447
+ 0,
3448
+ 0,
3449
+ 0,
3450
+ 0,
3451
+ 0,
3452
+ 0,
3453
+ 0,
3454
+ 0,
3455
+ 0,
3456
+ 0,
3457
+ 0,
3458
+ 0,
3459
+ 0,
3460
+ 0,
3461
+ 0,
3462
+ 0
3463
+ ],
3464
+ [
3465
+ 7224,
3466
+ 207,
3467
+ 0,
3468
+ 60,
3469
+ 20,
3470
+ 0,
3471
+ 0,
3472
+ 0,
3473
+ 3,
3474
+ 0,
3475
+ 0,
3476
+ 0,
3477
+ 0,
3478
+ 1,
3479
+ 0,
3480
+ 12,
3481
+ 0,
3482
+ 0,
3483
+ 0,
3484
+ 0,
3485
+ 0,
3486
+ 0,
3487
+ 0,
3488
+ 0,
3489
+ 0,
3490
+ 0,
3491
+ 0,
3492
+ 0,
3493
+ 0,
3494
+ 0,
3495
+ 0,
3496
+ 0,
3497
+ 0,
3498
+ 0,
3499
+ 0,
3500
+ 0,
3501
+ 0,
3502
+ 0,
3503
+ 0
3504
+ ],
3505
+ [
3506
+ 21431,
3507
+ 597,
3508
+ 0,
3509
+ 172,
3510
+ 60,
3511
+ 0,
3512
+ 0,
3513
+ 0,
3514
+ 6,
3515
+ 0,
3516
+ 0,
3517
+ 0,
3518
+ 0,
3519
+ 0,
3520
+ 0,
3521
+ 37,
3522
+ 0,
3523
+ 0,
3524
+ 0,
3525
+ 0,
3526
+ 0,
3527
+ 0,
3528
+ 0,
3529
+ 0,
3530
+ 0,
3531
+ 0,
3532
+ 0,
3533
+ 0,
3534
+ 0,
3535
+ 0,
3536
+ 31,
3537
+ 0,
3538
+ 0,
3539
+ 0,
3540
+ 0,
3541
+ 0,
3542
+ 0,
3543
+ 0,
3544
+ 0
3545
+ ],
3546
+ [
3547
+ 2195,
3548
+ 70,
3549
+ 0,
3550
+ 25,
3551
+ 8,
3552
+ 0,
3553
+ 0,
3554
+ 0,
3555
+ 4,
3556
+ 0,
3557
+ 0,
3558
+ 0,
3559
+ 0,
3560
+ 0,
3561
+ 0,
3562
+ 8,
3563
+ 0,
3564
+ 0,
3565
+ 0,
3566
+ 0,
3567
+ 0,
3568
+ 0,
3569
+ 0,
3570
+ 0,
3571
+ 0,
3572
+ 0,
3573
+ 0,
3574
+ 0,
3575
+ 0,
3576
+ 0,
3577
+ 0,
3578
+ 0,
3579
+ 0,
3580
+ 0,
3581
+ 0,
3582
+ 0,
3583
+ 0,
3584
+ 0,
3585
+ 0
3586
+ ],
3587
+ [
3588
+ 72359,
3589
+ 2084,
3590
+ 0,
3591
+ 668,
3592
+ 273,
3593
+ 0,
3594
+ 0,
3595
+ 0,
3596
+ 53,
3597
+ 0,
3598
+ 0,
3599
+ 0,
3600
+ 0,
3601
+ 0,
3602
+ 0,
3603
+ 184,
3604
+ 0,
3605
+ 0,
3606
+ 0,
3607
+ 0,
3608
+ 0,
3609
+ 0,
3610
+ 0,
3611
+ 0,
3612
+ 0,
3613
+ 0,
3614
+ 0,
3615
+ 0,
3616
+ 0,
3617
+ 0,
3618
+ 88,
3619
+ 0,
3620
+ 0,
3621
+ 0,
3622
+ 0,
3623
+ 0,
3624
+ 0,
3625
+ 0,
3626
+ 0
3627
+ ],
3628
+ [
3629
+ 250,
3630
+ 15,
3631
+ 0,
3632
+ 9,
3633
+ 1,
3634
+ 0,
3635
+ 0,
3636
+ 0,
3637
+ 0,
3638
+ 0,
3639
+ 0,
3640
+ 0,
3641
+ 0,
3642
+ 0,
3643
+ 0,
3644
+ 0,
3645
+ 0,
3646
+ 0,
3647
+ 0,
3648
+ 0,
3649
+ 0,
3650
+ 0,
3651
+ 0,
3652
+ 0,
3653
+ 0,
3654
+ 0,
3655
+ 0,
3656
+ 0,
3657
+ 0,
3658
+ 0,
3659
+ 0,
3660
+ 0,
3661
+ 0,
3662
+ 0,
3663
+ 0,
3664
+ 0,
3665
+ 0,
3666
+ 0,
3667
+ 0
3668
+ ],
3669
+ [
3670
+ 837,
3671
+ 36,
3672
+ 0,
3673
+ 15,
3674
+ 0,
3675
+ 0,
3676
+ 0,
3677
+ 0,
3678
+ 0,
3679
+ 0,
3680
+ 0,
3681
+ 0,
3682
+ 0,
3683
+ 0,
3684
+ 0,
3685
+ 0,
3686
+ 0,
3687
+ 0,
3688
+ 0,
3689
+ 0,
3690
+ 0,
3691
+ 0,
3692
+ 0,
3693
+ 0,
3694
+ 0,
3695
+ 0,
3696
+ 0,
3697
+ 0,
3698
+ 0,
3699
+ 0,
3700
+ 0,
3701
+ 0,
3702
+ 0,
3703
+ 0,
3704
+ 0,
3705
+ 0,
3706
+ 0,
3707
+ 0,
3708
+ 0
3709
+ ],
3710
+ [
3711
+ 39,
3712
+ 0,
3713
+ 0,
3714
+ 0,
3715
+ 1,
3716
+ 0,
3717
+ 0,
3718
+ 0,
3719
+ 0,
3720
+ 0,
3721
+ 0,
3722
+ 0,
3723
+ 0,
3724
+ 0,
3725
+ 0,
3726
+ 0,
3727
+ 0,
3728
+ 0,
3729
+ 0,
3730
+ 0,
3731
+ 0,
3732
+ 0,
3733
+ 0,
3734
+ 0,
3735
+ 0,
3736
+ 0,
3737
+ 0,
3738
+ 0,
3739
+ 0,
3740
+ 0,
3741
+ 0,
3742
+ 0,
3743
+ 0,
3744
+ 0,
3745
+ 0,
3746
+ 0,
3747
+ 0,
3748
+ 0,
3749
+ 0
3750
+ ],
3751
+ [
3752
+ 642,
3753
+ 31,
3754
+ 0,
3755
+ 13,
3756
+ 2,
3757
+ 0,
3758
+ 0,
3759
+ 0,
3760
+ 0,
3761
+ 0,
3762
+ 0,
3763
+ 0,
3764
+ 0,
3765
+ 0,
3766
+ 0,
3767
+ 0,
3768
+ 0,
3769
+ 0,
3770
+ 0,
3771
+ 0,
3772
+ 0,
3773
+ 0,
3774
+ 0,
3775
+ 0,
3776
+ 0,
3777
+ 0,
3778
+ 0,
3779
+ 0,
3780
+ 0,
3781
+ 0,
3782
+ 0,
3783
+ 0,
3784
+ 0,
3785
+ 0,
3786
+ 0,
3787
+ 0,
3788
+ 0,
3789
+ 0,
3790
+ 0
3791
+ ],
3792
+ [
3793
+ 691,
3794
+ 22,
3795
+ 0,
3796
+ 2,
3797
+ 4,
3798
+ 0,
3799
+ 0,
3800
+ 0,
3801
+ 0,
3802
+ 0,
3803
+ 0,
3804
+ 0,
3805
+ 0,
3806
+ 0,
3807
+ 0,
3808
+ 0,
3809
+ 0,
3810
+ 0,
3811
+ 0,
3812
+ 0,
3813
+ 0,
3814
+ 0,
3815
+ 0,
3816
+ 0,
3817
+ 0,
3818
+ 0,
3819
+ 0,
3820
+ 0,
3821
+ 0,
3822
+ 0,
3823
+ 0,
3824
+ 0,
3825
+ 0,
3826
+ 0,
3827
+ 0,
3828
+ 0,
3829
+ 0,
3830
+ 0,
3831
+ 0
3832
+ ]
3833
+ ]
3834
+ }
3835
+ ],
3836
+ "layout": {
3837
+ "template": {
3838
+ "data": {
3839
+ "bar": [
3840
+ {
3841
+ "error_x": {
3842
+ "color": "#2a3f5f"
3843
+ },
3844
+ "error_y": {
3845
+ "color": "#2a3f5f"
3846
+ },
3847
+ "marker": {
3848
+ "line": {
3849
+ "color": "#E5ECF6",
3850
+ "width": 0.5
3851
+ },
3852
+ "pattern": {
3853
+ "fillmode": "overlay",
3854
+ "size": 10,
3855
+ "solidity": 0.2
3856
+ }
3857
+ },
3858
+ "type": "bar"
3859
+ }
3860
+ ],
3861
+ "barpolar": [
3862
+ {
3863
+ "marker": {
3864
+ "line": {
3865
+ "color": "#E5ECF6",
3866
+ "width": 0.5
3867
+ },
3868
+ "pattern": {
3869
+ "fillmode": "overlay",
3870
+ "size": 10,
3871
+ "solidity": 0.2
3872
+ }
3873
+ },
3874
+ "type": "barpolar"
3875
+ }
3876
+ ],
3877
+ "carpet": [
3878
+ {
3879
+ "aaxis": {
3880
+ "endlinecolor": "#2a3f5f",
3881
+ "gridcolor": "white",
3882
+ "linecolor": "white",
3883
+ "minorgridcolor": "white",
3884
+ "startlinecolor": "#2a3f5f"
3885
+ },
3886
+ "baxis": {
3887
+ "endlinecolor": "#2a3f5f",
3888
+ "gridcolor": "white",
3889
+ "linecolor": "white",
3890
+ "minorgridcolor": "white",
3891
+ "startlinecolor": "#2a3f5f"
3892
+ },
3893
+ "type": "carpet"
3894
+ }
3895
+ ],
3896
+ "choropleth": [
3897
+ {
3898
+ "colorbar": {
3899
+ "outlinewidth": 0,
3900
+ "ticks": ""
3901
+ },
3902
+ "type": "choropleth"
3903
+ }
3904
+ ],
3905
+ "contour": [
3906
+ {
3907
+ "colorbar": {
3908
+ "outlinewidth": 0,
3909
+ "ticks": ""
3910
+ },
3911
+ "colorscale": [
3912
+ [
3913
+ 0,
3914
+ "#0d0887"
3915
+ ],
3916
+ [
3917
+ 0.1111111111111111,
3918
+ "#46039f"
3919
+ ],
3920
+ [
3921
+ 0.2222222222222222,
3922
+ "#7201a8"
3923
+ ],
3924
+ [
3925
+ 0.3333333333333333,
3926
+ "#9c179e"
3927
+ ],
3928
+ [
3929
+ 0.4444444444444444,
3930
+ "#bd3786"
3931
+ ],
3932
+ [
3933
+ 0.5555555555555556,
3934
+ "#d8576b"
3935
+ ],
3936
+ [
3937
+ 0.6666666666666666,
3938
+ "#ed7953"
3939
+ ],
3940
+ [
3941
+ 0.7777777777777778,
3942
+ "#fb9f3a"
3943
+ ],
3944
+ [
3945
+ 0.8888888888888888,
3946
+ "#fdca26"
3947
+ ],
3948
+ [
3949
+ 1,
3950
+ "#f0f921"
3951
+ ]
3952
+ ],
3953
+ "type": "contour"
3954
+ }
3955
+ ],
3956
+ "contourcarpet": [
3957
+ {
3958
+ "colorbar": {
3959
+ "outlinewidth": 0,
3960
+ "ticks": ""
3961
+ },
3962
+ "type": "contourcarpet"
3963
+ }
3964
+ ],
3965
+ "heatmap": [
3966
+ {
3967
+ "colorbar": {
3968
+ "outlinewidth": 0,
3969
+ "ticks": ""
3970
+ },
3971
+ "colorscale": [
3972
+ [
3973
+ 0,
3974
+ "#0d0887"
3975
+ ],
3976
+ [
3977
+ 0.1111111111111111,
3978
+ "#46039f"
3979
+ ],
3980
+ [
3981
+ 0.2222222222222222,
3982
+ "#7201a8"
3983
+ ],
3984
+ [
3985
+ 0.3333333333333333,
3986
+ "#9c179e"
3987
+ ],
3988
+ [
3989
+ 0.4444444444444444,
3990
+ "#bd3786"
3991
+ ],
3992
+ [
3993
+ 0.5555555555555556,
3994
+ "#d8576b"
3995
+ ],
3996
+ [
3997
+ 0.6666666666666666,
3998
+ "#ed7953"
3999
+ ],
4000
+ [
4001
+ 0.7777777777777778,
4002
+ "#fb9f3a"
4003
+ ],
4004
+ [
4005
+ 0.8888888888888888,
4006
+ "#fdca26"
4007
+ ],
4008
+ [
4009
+ 1,
4010
+ "#f0f921"
4011
+ ]
4012
+ ],
4013
+ "type": "heatmap"
4014
+ }
4015
+ ],
4016
+ "heatmapgl": [
4017
+ {
4018
+ "colorbar": {
4019
+ "outlinewidth": 0,
4020
+ "ticks": ""
4021
+ },
4022
+ "colorscale": [
4023
+ [
4024
+ 0,
4025
+ "#0d0887"
4026
+ ],
4027
+ [
4028
+ 0.1111111111111111,
4029
+ "#46039f"
4030
+ ],
4031
+ [
4032
+ 0.2222222222222222,
4033
+ "#7201a8"
4034
+ ],
4035
+ [
4036
+ 0.3333333333333333,
4037
+ "#9c179e"
4038
+ ],
4039
+ [
4040
+ 0.4444444444444444,
4041
+ "#bd3786"
4042
+ ],
4043
+ [
4044
+ 0.5555555555555556,
4045
+ "#d8576b"
4046
+ ],
4047
+ [
4048
+ 0.6666666666666666,
4049
+ "#ed7953"
4050
+ ],
4051
+ [
4052
+ 0.7777777777777778,
4053
+ "#fb9f3a"
4054
+ ],
4055
+ [
4056
+ 0.8888888888888888,
4057
+ "#fdca26"
4058
+ ],
4059
+ [
4060
+ 1,
4061
+ "#f0f921"
4062
+ ]
4063
+ ],
4064
+ "type": "heatmapgl"
4065
+ }
4066
+ ],
4067
+ "histogram": [
4068
+ {
4069
+ "marker": {
4070
+ "pattern": {
4071
+ "fillmode": "overlay",
4072
+ "size": 10,
4073
+ "solidity": 0.2
4074
+ }
4075
+ },
4076
+ "type": "histogram"
4077
+ }
4078
+ ],
4079
+ "histogram2d": [
4080
+ {
4081
+ "colorbar": {
4082
+ "outlinewidth": 0,
4083
+ "ticks": ""
4084
+ },
4085
+ "colorscale": [
4086
+ [
4087
+ 0,
4088
+ "#0d0887"
4089
+ ],
4090
+ [
4091
+ 0.1111111111111111,
4092
+ "#46039f"
4093
+ ],
4094
+ [
4095
+ 0.2222222222222222,
4096
+ "#7201a8"
4097
+ ],
4098
+ [
4099
+ 0.3333333333333333,
4100
+ "#9c179e"
4101
+ ],
4102
+ [
4103
+ 0.4444444444444444,
4104
+ "#bd3786"
4105
+ ],
4106
+ [
4107
+ 0.5555555555555556,
4108
+ "#d8576b"
4109
+ ],
4110
+ [
4111
+ 0.6666666666666666,
4112
+ "#ed7953"
4113
+ ],
4114
+ [
4115
+ 0.7777777777777778,
4116
+ "#fb9f3a"
4117
+ ],
4118
+ [
4119
+ 0.8888888888888888,
4120
+ "#fdca26"
4121
+ ],
4122
+ [
4123
+ 1,
4124
+ "#f0f921"
4125
+ ]
4126
+ ],
4127
+ "type": "histogram2d"
4128
+ }
4129
+ ],
4130
+ "histogram2dcontour": [
4131
+ {
4132
+ "colorbar": {
4133
+ "outlinewidth": 0,
4134
+ "ticks": ""
4135
+ },
4136
+ "colorscale": [
4137
+ [
4138
+ 0,
4139
+ "#0d0887"
4140
+ ],
4141
+ [
4142
+ 0.1111111111111111,
4143
+ "#46039f"
4144
+ ],
4145
+ [
4146
+ 0.2222222222222222,
4147
+ "#7201a8"
4148
+ ],
4149
+ [
4150
+ 0.3333333333333333,
4151
+ "#9c179e"
4152
+ ],
4153
+ [
4154
+ 0.4444444444444444,
4155
+ "#bd3786"
4156
+ ],
4157
+ [
4158
+ 0.5555555555555556,
4159
+ "#d8576b"
4160
+ ],
4161
+ [
4162
+ 0.6666666666666666,
4163
+ "#ed7953"
4164
+ ],
4165
+ [
4166
+ 0.7777777777777778,
4167
+ "#fb9f3a"
4168
+ ],
4169
+ [
4170
+ 0.8888888888888888,
4171
+ "#fdca26"
4172
+ ],
4173
+ [
4174
+ 1,
4175
+ "#f0f921"
4176
+ ]
4177
+ ],
4178
+ "type": "histogram2dcontour"
4179
+ }
4180
+ ],
4181
+ "mesh3d": [
4182
+ {
4183
+ "colorbar": {
4184
+ "outlinewidth": 0,
4185
+ "ticks": ""
4186
+ },
4187
+ "type": "mesh3d"
4188
+ }
4189
+ ],
4190
+ "parcoords": [
4191
+ {
4192
+ "line": {
4193
+ "colorbar": {
4194
+ "outlinewidth": 0,
4195
+ "ticks": ""
4196
+ }
4197
+ },
4198
+ "type": "parcoords"
4199
+ }
4200
+ ],
4201
+ "pie": [
4202
+ {
4203
+ "automargin": true,
4204
+ "type": "pie"
4205
+ }
4206
+ ],
4207
+ "scatter": [
4208
+ {
4209
+ "fillpattern": {
4210
+ "fillmode": "overlay",
4211
+ "size": 10,
4212
+ "solidity": 0.2
4213
+ },
4214
+ "type": "scatter"
4215
+ }
4216
+ ],
4217
+ "scatter3d": [
4218
+ {
4219
+ "line": {
4220
+ "colorbar": {
4221
+ "outlinewidth": 0,
4222
+ "ticks": ""
4223
+ }
4224
+ },
4225
+ "marker": {
4226
+ "colorbar": {
4227
+ "outlinewidth": 0,
4228
+ "ticks": ""
4229
+ }
4230
+ },
4231
+ "type": "scatter3d"
4232
+ }
4233
+ ],
4234
+ "scattercarpet": [
4235
+ {
4236
+ "marker": {
4237
+ "colorbar": {
4238
+ "outlinewidth": 0,
4239
+ "ticks": ""
4240
+ }
4241
+ },
4242
+ "type": "scattercarpet"
4243
+ }
4244
+ ],
4245
+ "scattergeo": [
4246
+ {
4247
+ "marker": {
4248
+ "colorbar": {
4249
+ "outlinewidth": 0,
4250
+ "ticks": ""
4251
+ }
4252
+ },
4253
+ "type": "scattergeo"
4254
+ }
4255
+ ],
4256
+ "scattergl": [
4257
+ {
4258
+ "marker": {
4259
+ "colorbar": {
4260
+ "outlinewidth": 0,
4261
+ "ticks": ""
4262
+ }
4263
+ },
4264
+ "type": "scattergl"
4265
+ }
4266
+ ],
4267
+ "scattermapbox": [
4268
+ {
4269
+ "marker": {
4270
+ "colorbar": {
4271
+ "outlinewidth": 0,
4272
+ "ticks": ""
4273
+ }
4274
+ },
4275
+ "type": "scattermapbox"
4276
+ }
4277
+ ],
4278
+ "scatterpolar": [
4279
+ {
4280
+ "marker": {
4281
+ "colorbar": {
4282
+ "outlinewidth": 0,
4283
+ "ticks": ""
4284
+ }
4285
+ },
4286
+ "type": "scatterpolar"
4287
+ }
4288
+ ],
4289
+ "scatterpolargl": [
4290
+ {
4291
+ "marker": {
4292
+ "colorbar": {
4293
+ "outlinewidth": 0,
4294
+ "ticks": ""
4295
+ }
4296
+ },
4297
+ "type": "scatterpolargl"
4298
+ }
4299
+ ],
4300
+ "scatterternary": [
4301
+ {
4302
+ "marker": {
4303
+ "colorbar": {
4304
+ "outlinewidth": 0,
4305
+ "ticks": ""
4306
+ }
4307
+ },
4308
+ "type": "scatterternary"
4309
+ }
4310
+ ],
4311
+ "surface": [
4312
+ {
4313
+ "colorbar": {
4314
+ "outlinewidth": 0,
4315
+ "ticks": ""
4316
+ },
4317
+ "colorscale": [
4318
+ [
4319
+ 0,
4320
+ "#0d0887"
4321
+ ],
4322
+ [
4323
+ 0.1111111111111111,
4324
+ "#46039f"
4325
+ ],
4326
+ [
4327
+ 0.2222222222222222,
4328
+ "#7201a8"
4329
+ ],
4330
+ [
4331
+ 0.3333333333333333,
4332
+ "#9c179e"
4333
+ ],
4334
+ [
4335
+ 0.4444444444444444,
4336
+ "#bd3786"
4337
+ ],
4338
+ [
4339
+ 0.5555555555555556,
4340
+ "#d8576b"
4341
+ ],
4342
+ [
4343
+ 0.6666666666666666,
4344
+ "#ed7953"
4345
+ ],
4346
+ [
4347
+ 0.7777777777777778,
4348
+ "#fb9f3a"
4349
+ ],
4350
+ [
4351
+ 0.8888888888888888,
4352
+ "#fdca26"
4353
+ ],
4354
+ [
4355
+ 1,
4356
+ "#f0f921"
4357
+ ]
4358
+ ],
4359
+ "type": "surface"
4360
+ }
4361
+ ],
4362
+ "table": [
4363
+ {
4364
+ "cells": {
4365
+ "fill": {
4366
+ "color": "#EBF0F8"
4367
+ },
4368
+ "line": {
4369
+ "color": "white"
4370
+ }
4371
+ },
4372
+ "header": {
4373
+ "fill": {
4374
+ "color": "#C8D4E3"
4375
+ },
4376
+ "line": {
4377
+ "color": "white"
4378
+ }
4379
+ },
4380
+ "type": "table"
4381
+ }
4382
+ ]
4383
+ },
4384
+ "layout": {
4385
+ "annotationdefaults": {
4386
+ "arrowcolor": "#2a3f5f",
4387
+ "arrowhead": 0,
4388
+ "arrowwidth": 1
4389
+ },
4390
+ "autotypenumbers": "strict",
4391
+ "coloraxis": {
4392
+ "colorbar": {
4393
+ "outlinewidth": 0,
4394
+ "ticks": ""
4395
+ }
4396
+ },
4397
+ "colorscale": {
4398
+ "diverging": [
4399
+ [
4400
+ 0,
4401
+ "#8e0152"
4402
+ ],
4403
+ [
4404
+ 0.1,
4405
+ "#c51b7d"
4406
+ ],
4407
+ [
4408
+ 0.2,
4409
+ "#de77ae"
4410
+ ],
4411
+ [
4412
+ 0.3,
4413
+ "#f1b6da"
4414
+ ],
4415
+ [
4416
+ 0.4,
4417
+ "#fde0ef"
4418
+ ],
4419
+ [
4420
+ 0.5,
4421
+ "#f7f7f7"
4422
+ ],
4423
+ [
4424
+ 0.6,
4425
+ "#e6f5d0"
4426
+ ],
4427
+ [
4428
+ 0.7,
4429
+ "#b8e186"
4430
+ ],
4431
+ [
4432
+ 0.8,
4433
+ "#7fbc41"
4434
+ ],
4435
+ [
4436
+ 0.9,
4437
+ "#4d9221"
4438
+ ],
4439
+ [
4440
+ 1,
4441
+ "#276419"
4442
+ ]
4443
+ ],
4444
+ "sequential": [
4445
+ [
4446
+ 0,
4447
+ "#0d0887"
4448
+ ],
4449
+ [
4450
+ 0.1111111111111111,
4451
+ "#46039f"
4452
+ ],
4453
+ [
4454
+ 0.2222222222222222,
4455
+ "#7201a8"
4456
+ ],
4457
+ [
4458
+ 0.3333333333333333,
4459
+ "#9c179e"
4460
+ ],
4461
+ [
4462
+ 0.4444444444444444,
4463
+ "#bd3786"
4464
+ ],
4465
+ [
4466
+ 0.5555555555555556,
4467
+ "#d8576b"
4468
+ ],
4469
+ [
4470
+ 0.6666666666666666,
4471
+ "#ed7953"
4472
+ ],
4473
+ [
4474
+ 0.7777777777777778,
4475
+ "#fb9f3a"
4476
+ ],
4477
+ [
4478
+ 0.8888888888888888,
4479
+ "#fdca26"
4480
+ ],
4481
+ [
4482
+ 1,
4483
+ "#f0f921"
4484
+ ]
4485
+ ],
4486
+ "sequentialminus": [
4487
+ [
4488
+ 0,
4489
+ "#0d0887"
4490
+ ],
4491
+ [
4492
+ 0.1111111111111111,
4493
+ "#46039f"
4494
+ ],
4495
+ [
4496
+ 0.2222222222222222,
4497
+ "#7201a8"
4498
+ ],
4499
+ [
4500
+ 0.3333333333333333,
4501
+ "#9c179e"
4502
+ ],
4503
+ [
4504
+ 0.4444444444444444,
4505
+ "#bd3786"
4506
+ ],
4507
+ [
4508
+ 0.5555555555555556,
4509
+ "#d8576b"
4510
+ ],
4511
+ [
4512
+ 0.6666666666666666,
4513
+ "#ed7953"
4514
+ ],
4515
+ [
4516
+ 0.7777777777777778,
4517
+ "#fb9f3a"
4518
+ ],
4519
+ [
4520
+ 0.8888888888888888,
4521
+ "#fdca26"
4522
+ ],
4523
+ [
4524
+ 1,
4525
+ "#f0f921"
4526
+ ]
4527
+ ]
4528
+ },
4529
+ "colorway": [
4530
+ "#636efa",
4531
+ "#EF553B",
4532
+ "#00cc96",
4533
+ "#ab63fa",
4534
+ "#FFA15A",
4535
+ "#19d3f3",
4536
+ "#FF6692",
4537
+ "#B6E880",
4538
+ "#FF97FF",
4539
+ "#FECB52"
4540
+ ],
4541
+ "font": {
4542
+ "color": "#2a3f5f"
4543
+ },
4544
+ "geo": {
4545
+ "bgcolor": "white",
4546
+ "lakecolor": "white",
4547
+ "landcolor": "#E5ECF6",
4548
+ "showlakes": true,
4549
+ "showland": true,
4550
+ "subunitcolor": "white"
4551
+ },
4552
+ "hoverlabel": {
4553
+ "align": "left"
4554
+ },
4555
+ "hovermode": "closest",
4556
+ "mapbox": {
4557
+ "style": "light"
4558
+ },
4559
+ "paper_bgcolor": "white",
4560
+ "plot_bgcolor": "#E5ECF6",
4561
+ "polar": {
4562
+ "angularaxis": {
4563
+ "gridcolor": "white",
4564
+ "linecolor": "white",
4565
+ "ticks": ""
4566
+ },
4567
+ "bgcolor": "#E5ECF6",
4568
+ "radialaxis": {
4569
+ "gridcolor": "white",
4570
+ "linecolor": "white",
4571
+ "ticks": ""
4572
+ }
4573
+ },
4574
+ "scene": {
4575
+ "xaxis": {
4576
+ "backgroundcolor": "#E5ECF6",
4577
+ "gridcolor": "white",
4578
+ "gridwidth": 2,
4579
+ "linecolor": "white",
4580
+ "showbackground": true,
4581
+ "ticks": "",
4582
+ "zerolinecolor": "white"
4583
+ },
4584
+ "yaxis": {
4585
+ "backgroundcolor": "#E5ECF6",
4586
+ "gridcolor": "white",
4587
+ "gridwidth": 2,
4588
+ "linecolor": "white",
4589
+ "showbackground": true,
4590
+ "ticks": "",
4591
+ "zerolinecolor": "white"
4592
+ },
4593
+ "zaxis": {
4594
+ "backgroundcolor": "#E5ECF6",
4595
+ "gridcolor": "white",
4596
+ "gridwidth": 2,
4597
+ "linecolor": "white",
4598
+ "showbackground": true,
4599
+ "ticks": "",
4600
+ "zerolinecolor": "white"
4601
+ }
4602
+ },
4603
+ "shapedefaults": {
4604
+ "line": {
4605
+ "color": "#2a3f5f"
4606
+ }
4607
+ },
4608
+ "ternary": {
4609
+ "aaxis": {
4610
+ "gridcolor": "white",
4611
+ "linecolor": "white",
4612
+ "ticks": ""
4613
+ },
4614
+ "baxis": {
4615
+ "gridcolor": "white",
4616
+ "linecolor": "white",
4617
+ "ticks": ""
4618
+ },
4619
+ "bgcolor": "#E5ECF6",
4620
+ "caxis": {
4621
+ "gridcolor": "white",
4622
+ "linecolor": "white",
4623
+ "ticks": ""
4624
+ }
4625
+ },
4626
+ "title": {
4627
+ "x": 0.05
4628
+ },
4629
+ "xaxis": {
4630
+ "automargin": true,
4631
+ "gridcolor": "white",
4632
+ "linecolor": "white",
4633
+ "ticks": "",
4634
+ "title": {
4635
+ "standoff": 15
4636
+ },
4637
+ "zerolinecolor": "white",
4638
+ "zerolinewidth": 2
4639
+ },
4640
+ "yaxis": {
4641
+ "automargin": true,
4642
+ "gridcolor": "white",
4643
+ "linecolor": "white",
4644
+ "ticks": "",
4645
+ "title": {
4646
+ "standoff": 15
4647
+ },
4648
+ "zerolinecolor": "white",
4649
+ "zerolinewidth": 2
4650
+ }
4651
+ }
4652
+ },
4653
+ "title": {
4654
+ "text": "Repository Dependency Matrix"
4655
+ },
4656
+ "xaxis": {
4657
+ "side": "bottom",
4658
+ "title": {
4659
+ "text": "Dependency (Producer)"
4660
+ }
4661
+ },
4662
+ "yaxis": {
4663
+ "autorange": "reversed",
4664
+ "title": {
4665
+ "text": "Dependent (Consumer)"
4666
+ }
4667
+ }
4668
+ }
4669
+ }
4670
+ },
4671
+ "metadata": {},
4672
+ "output_type": "display_data"
4673
+ }
4674
+ ],
4675
+ "source": [
4676
+ "# Output the visualization\n",
4677
+ "fig.show(render=\"plotly_mimetype\")"
4678
+ ]
4679
+ }
4680
+ ],
4681
+ "metadata": {
4682
+ "kernelspec": {
4683
+ "display_name": ".python",
4684
+ "language": "python",
4685
+ "name": "python3"
4686
+ },
4687
+ "language_info": {
4688
+ "codemirror_mode": {
4689
+ "name": "ipython",
4690
+ "version": 3
4691
+ },
4692
+ "file_extension": ".py",
4693
+ "mimetype": "text/x-python",
4694
+ "name": "python",
4695
+ "nbconvert_exporter": "python",
4696
+ "pygments_lexer": "ipython3",
4697
+ "version": "3.12.8"
4698
+ }
4699
+ },
4700
+ "nbformat": 4,
4701
+ "nbformat_minor": 2
4702
+ }