pyegeria 5.3.4.10__py3-none-any.whl → 5.3.4.12__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.
@@ -38,7 +38,7 @@ from pyegeria.commands.cat.list_deployed_database_schemas import (
38
38
  from pyegeria.commands.cat.list_deployed_databases import list_deployed_databases
39
39
  from pyegeria.commands.cat.list_glossaries import display_glossaries
40
40
  from pyegeria.commands.cat.list_projects import display_project_list
41
- from pyegeria.commands.cat.list_servers_deployed_imp import display_servers_by_dep_imp
41
+ from pyegeria.commands.cat.list_deployed_servers import display_servers_by_dep_imp
42
42
  from pyegeria.commands.cat.list_tech_type_elements import list_tech_elements
43
43
  from pyegeria.commands.cat.list_tech_types import display_tech_types
44
44
  from pyegeria.commands.cat.list_terms import display_glossary_terms
@@ -37,7 +37,7 @@ from pyegeria.commands.cat.list_deployed_database_schemas import (
37
37
  from pyegeria.commands.cat.list_deployed_databases import list_deployed_databases
38
38
  from pyegeria.commands.cat.list_glossaries import display_glossaries
39
39
  from pyegeria.commands.cat.list_projects import display_project_list
40
- from pyegeria.commands.cat.list_servers_deployed_imp import display_servers_by_dep_imp
40
+ from pyegeria.commands.cat.list_deployed_servers import display_servers_by_dep_imp
41
41
  from pyegeria.commands.cat.list_tech_type_elements import list_tech_elements
42
42
  from pyegeria.commands.cat.list_tech_types import display_tech_types
43
43
  from pyegeria.commands.cat.list_terms import display_glossary_terms
@@ -68,16 +68,20 @@ def render_mermaid(mermaid_code):
68
68
 
69
69
  def parse_mermaid_code(mermaid_code):
70
70
  parts = mermaid_code.split("---", maxsplit=3)
71
+ guid = None
71
72
  if len(parts) == 3:
72
73
  full_title = parts[1].strip()
73
- title_l = full_title.split("[")[0]
74
- title = title_l.replace("title: ", "")
75
- guid = full_title.split("[")[1].split("]")[0]
76
- guid = " " if guid is None else guid
74
+ if "[" in full_title:
75
+ title_l = full_title.split("[")[0]
76
+ title = title_l.replace("title: ", "")
77
+ guid = full_title.split("[")[1].split("]")[0]
78
+ else:
79
+ title = full_title.replace("title: ", "")
77
80
  mermaid_code = parts[2].strip()
78
81
  else:
79
- title = "Unlabeled diagram"
80
- guid = " "
82
+ title = None
83
+ if guid is None:
84
+ guid = str(uuid.uuid4())[:8]
81
85
  return title, guid, mermaid_code
82
86
 
83
87
 
@@ -223,136 +227,302 @@ def construct_mermaid_html(mermaid_str: str) -> str:
223
227
  escaped_header = html.escape(title_label) if title_label else "" # Sanitize the header safely
224
228
  escaped_mermaid_code = html.escape(mermaid_code)
225
229
 
226
- header_html = f"""
227
- <h3 id="{graph_id}-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
228
- {escaped_header}
229
- </h3>
230
- <p id="{graph_id}-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
231
- GUID: {guid}
232
- </p>
233
- """ if title_label else ""
234
-
235
230
  html_content = f"""
236
- <div id="{graph_id}-wrapper" style="width: 100%; height: 100%; display: flex; flex-direction: column; align-items: stretch;">
237
-
238
- <!-- Title/Heading -->
239
-
240
- {header_html if header_html else ""}
241
- <!-- Mermaid Diagram -->
242
- <div id="{graph_id}-container" class="diagram-container"
243
- style="width: 100%; flex: 1 1 auto; position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden;">
244
- <div id="{graph_id}" class="mermaid"
245
- style="width: 100%; height: 100%; cursor: grab; user-select: none; margin: 0; padding: 0;">
246
- {escaped_mermaid_code}
247
- </div>
248
- </div>
249
- </div>
250
-
251
- <style>
252
- /* Ensure no margins or padding for the body or html in Jupyter */
253
- body, html {{
254
- margin: 0;
255
- padding: 0;
256
- width: 100%;
257
- height: 100%;
258
- }}
259
- /* General reset for Jupyter Notebook's extra spacing */
260
- #notebook, .container, .cell, .output_area {{
261
- margin: 0 !important;
262
- padding: 0 !important;
263
- }}
264
- .diagram-container {{
265
- width: 100%;
266
- height: 100%;
267
- overflow: hidden; /* Prevent scrollbars during zoom/pan */
268
- }}
269
- h2 {{
270
- margin: 0;
271
- padding: 10px;
272
- font-size: 24px;
273
- text-align: center;
274
- flex: 0 0 auto; /* Fix height explicitly for heading */
231
+ <style>
232
+ /* Style for the diagram container */
233
+ .diagram-container {{
234
+ position: relative;
235
+ width: 90%; /* Adjust the diagram container width */
236
+ height: 500px; /* Set a fixed height for the container */
237
+ margin: 0 auto;
238
+ border: 1px solid #ccc; /* Optional border for visualization */
239
+ overflow: hidden; /* Prevent content overflow outside the container */
240
+ }}
241
+
242
+ /* Style for zoom controls */
243
+ .svg-pan-zoom_controls {{
244
+ position: absolute;
245
+ top: 10px;
246
+ right: 10px;
247
+ display: flex;
248
+ flex-direction: column;
249
+ gap: 5px;
250
+ }}
251
+ .svg-pan-zoom_controls button {{
252
+ background-color: #007bff;
253
+ color: white;
254
+ border: none;
255
+ padding: 5px 10px;
256
+ border-radius: 3px;
257
+ cursor: pointer;
258
+ font-size: 14px;
259
+ }}
260
+ .svg-pan-zoom_controls button:hover {{
261
+ background-color: #0056b3;
262
+ }}
263
+ </style>
264
+
265
+ <script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
266
+ <script>
267
+ document.addEventListener("DOMContentLoaded", () => {{
268
+ // Define graph ID dynamically passed via Python
269
+ const graph_id = "{graph_id}";
270
+
271
+ // Function to load external scripts dynamically
272
+ function loadScript(url, callback) {{
273
+ const script = document.createElement('script');
274
+ script.src = url;
275
+ script.async = true;
276
+ script.onload = callback;
277
+ script.onerror = () => console.error("Error loading script:", url);
278
+ document.head.appendChild(script);
275
279
  }}
276
- .mermaid {{
277
- margin: 0;
278
- padding: 0;
279
- }}
280
- </style>
281
-
282
- <script>
283
- (function() {{
284
- const graphId = "{graph_id}"; // Pass the graph ID
285
-
286
- function loadScript(url, callback) {{
287
- const script = document.createElement('script');
288
- script.src = url;
289
- script.onload = callback;
290
- document.head.appendChild(script);
291
- }}
292
-
293
- // Initialize Mermaid and render the diagram
294
- function initializeMermaid() {{
295
- mermaid.initialize({{startOnLoad: false}});
296
- mermaid.init(undefined, "#" + graphId);
297
-
298
- setTimeout(() => {{
299
- const container = document.getElementById(graphId);
300
- if (!container) {{
301
- console.error("Container not found for graph:", graphId);
302
- return;
303
- }}
304
-
305
- const svg = container.querySelector("svg");
306
- if (!svg) {{
307
- console.error("SVG not rendered by Mermaid.");
308
- return;
309
- }}
310
-
311
- console.log("SVG rendered. Applying pan & zoom.");
312
-
313
- // Adjust to container size
314
- const containerElement = document.getElementById("{graph_id}-container");
315
- svg.setAttribute("width", containerElement.offsetWidth);
316
- svg.setAttribute("height", containerElement.offsetHeight);
317
-
318
- // Add pan/zoom functionality
319
- loadScript("https://cdn.jsdelivr.net/npm/svg-pan-zoom/dist/svg-pan-zoom.min.js", () => {{
320
- const panZoom = svgPanZoom(svg, {{
321
- zoomEnabled: true,
322
- controlIconsEnabled: true,
323
- fit: true,
324
- center: true,
325
- minZoom: 0.5,
326
- maxZoom: 10
327
- }});
328
-
329
- // Reinitialize pan-zoom on window resize
330
- function onResize() {{
331
- panZoom.resize();
332
- panZoom.fit();
333
- panZoom.center();
334
- }}
335
- window.addEventListener('resize', onResize);
336
-
337
- console.log("Pan & zoom initialized successfully.");
338
- }});
339
- }}, 500);
340
- }}
341
280
 
342
- // Load Mermaid.js and initialize
343
- if (typeof mermaid === "undefined") {{
344
- loadScript("https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js", initializeMermaid);
345
- }} else {{
346
- initializeMermaid();
281
+ // Initialize Mermaid
282
+ function initializeMermaid(graph_id) {{
283
+ // Look for the container
284
+ const containerElement = document.getElementById(`${{graph_id}}-container`);
285
+ if (!containerElement) {{
286
+ console.error(`Container with ID "${{graph_id}}-container" not found.`);
287
+ return;
347
288
  }}
348
- }})();
349
- </script>
350
289
 
351
- """
290
+ // Configure Mermaid
291
+ mermaid.initialize({{ startOnLoad: false, logLevel: "debug" }});
292
+ mermaid.init(undefined, `#${{graph_id}}`);
293
+
294
+ setTimeout(() => {{
295
+ const svg = containerElement.querySelector("svg");
296
+
297
+ // Ensure SVG exists
298
+ if (!svg) {{
299
+ console.error(`SVG not rendered for ID "${{graph_id}}".`);
300
+ return;
301
+ }}
302
+
303
+ // Set initial size for SVG
304
+ svg.setAttribute("width", "100%");
305
+ svg.setAttribute("height", "100%");
306
+
307
+ // Ensure the container fits the diagram properly
308
+ containerElement.style.overflow = "hidden";
309
+
310
+ // Initialize Pan-Zoom
311
+ const panZoom = svgPanZoom(svg, {{
312
+ zoomEnabled: true,
313
+ controlIconsEnabled: false, // Disable default controls
314
+ fit: true,
315
+ center: true,
316
+ minZoom: 0.5,
317
+ maxZoom: 10,
318
+ contain: true // Ensure diagram stays within view
319
+ }});
320
+
321
+ // Add custom controls
322
+ const controlsContainer = document.createElement("div");
323
+ controlsContainer.className = "svg-pan-zoom_controls";
324
+ controlsContainer.innerHTML = `
325
+ <button id="${{graph_id}}-zoom-in">+</button>
326
+ <button id="${{graph_id}}-zoom-out">-</button>
327
+ <button id="${{graph_id}}-reset">Reset</button>
328
+ `;
329
+ containerElement.appendChild(controlsContainer);
330
+
331
+ // Handle controls
332
+ document.getElementById(`${{graph_id}}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
333
+ document.getElementById(`${{graph_id}}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
334
+ document.getElementById(`${{graph_id}}-reset`).addEventListener("click", () => {{
335
+ panZoom.resetZoom();
336
+ panZoom.center();
337
+ }});
338
+ }}, 500); // Delay to ensure Mermaid finishes rendering
339
+ }}
352
340
 
341
+ // Load Mermaid.js externally or initialize
342
+ if (typeof mermaid === "undefined") {{
343
+ loadScript("https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js", () => {{
344
+ console.log("Mermaid.js loaded successfully");
345
+ initializeMermaid(graph_id);
346
+ }});
347
+ }} else {{
348
+ initializeMermaid(graph_id);
349
+ }}
350
+ }});
351
+ </script>
352
+
353
+ <div id="{graph_id}-container" class="diagram-container">
354
+ <!-- Mermaid diagram will be dynamically rendered here -->
355
+ <div id="{graph_id}" class="mermaid">
356
+ {mermaid_code}
357
+ </div>
358
+ </div>
359
+ """
353
360
 
354
361
  return html_content
355
- # mermaid_html = f"""
362
+ # This one almost works - no controls and diagram too small
363
+ # html_content = f"""
364
+ # <!DOCTYPE html>
365
+ # <html>
366
+ # <head>
367
+ # <style>
368
+ # /* Set consistent sizing and prevent shrinking for the container and parents */
369
+ # html, body, #{graph_id}-wrapper {{
370
+ # margin: 0;
371
+ # padding: 0;
372
+ # height: 100%; /* Ensure the entire root hierarchy respects 100% height */
373
+ # width: 100%;
374
+ # }}
375
+ #
376
+ # /* Ensure diagram container maintains full height and prevents overflow */
377
+ # #{graph_id}-container {{
378
+ # position: relative;
379
+ # width: 100%;
380
+ # height: 100%;
381
+ # overflow: hidden; /* Prevent content from breaking layout */
382
+ # display: flex;
383
+ # align-items: center; /* Centers the diagram vertically */
384
+ # justify-content: center; /* Centers the diagram horizontally */
385
+ # }}
386
+ #
387
+ # /* Ensure SVG always stretches to match container */
388
+ # #{graph_id} svg {{
389
+ # width: 100%;
390
+ # height: 100%;
391
+ # display: block; /* Avoid unwanted inline space issues */
392
+ # }}
393
+ #
394
+ # /* Optional custom pan/zoom controls (if dynamically added) */
395
+ # .svg-pan-zoom_controls {{
396
+ # position: absolute;
397
+ # bottom: 10px; /* Adjust based on desired placement */
398
+ # right: 10px;
399
+ # z-index: 10;
400
+ # display: flex;
401
+ # gap: 5px;
402
+ # }}
403
+ #
404
+ # .svg-pan-zoom_controls button {{
405
+ # border: 1px solid #ccc;
406
+ # background-color: #fff;
407
+ # color: #000;
408
+ # padding: 5px 10px;
409
+ # cursor: pointer;
410
+ # font-size: 16px;
411
+ # }}
412
+ #
413
+ # .svg-pan-zoom_controls button:hover {{
414
+ # background-color: #f0f0f0;
415
+ # }}
416
+ # </style>
417
+ # </head>
418
+ # <body>
419
+ # <div id="{graph_id}-wrapper">
420
+ # <!-- Title/Heading (optional; include as needed) -->
421
+ # {escaped_header if escaped_header else ""}
422
+ #
423
+ # <!-- Mermaid Diagram Container -->
424
+ # <div id="{graph_id}-container">
425
+ # <div id="{graph_id}" class="mermaid">
426
+ # {escaped_mermaid_code}
427
+ # </div>
428
+ # </div>
429
+ # </div>
430
+ #
431
+ # <script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
432
+ # <script>
433
+ # document.addEventListener("DOMContentLoaded", () => {{
434
+ # // Define the graph ID dynamically passed via Python
435
+ # const graph_id = "{graph_id}";
436
+ #
437
+ # // Function to load external scripts dynamically
438
+ # function loadScript(url, callback) {{
439
+ # const script = document.createElement('script');
440
+ # script.src = url;
441
+ # script.async = true;
442
+ # script.onload = callback;
443
+ # script.onerror = () => console.error("Error loading script:", url);
444
+ # document.head.appendChild(script);
445
+ # }}
446
+ #
447
+ # // Function to initialize Mermaid
448
+ # function initializeMermaid(graph_id) {{
449
+ # // Look for the container ID generated dynamically by the template
450
+ # const containerElement = document.getElementById(`${{graph_id}}-container`);
451
+ # if (!containerElement) {{
452
+ # console.error(`Container element with id "${{graph_id}}-container" not found.`);
453
+ # return;
454
+ # }}
455
+ #
456
+ # // Initialize Mermaid.js with default configuration
457
+ # mermaid.initialize({{ startOnLoad: false, logLevel: "debug" }});
458
+ # mermaid.init(undefined, `#${{graph_id}}`); // Initialize element with id matching `graph_id`
459
+ #
460
+ # // Add a timeout to ensure the SVG is rendered
461
+ # setTimeout(() => {{
462
+ # const svg = containerElement.querySelector("svg");
463
+ #
464
+ # // Handle errors if SVG rendering fails
465
+ # if (!svg) {{
466
+ # console.error(`SVG not rendered for ID "${{graph_id}}". Check Mermaid syntax or rendering issues.`);
467
+ # console.log("Container content:", containerElement.innerHTML); // Log the container's content
468
+ # return;
469
+ # }}
470
+ #
471
+ # // Set SVG attributes for full container fit
472
+ # svg.setAttribute("width", "100%");
473
+ # svg.setAttribute("height", "100%");
474
+ #
475
+ # // Initialize SVG Pan-Zoom functionality
476
+ # const panZoom = svgPanZoom(svg, {{
477
+ # zoomEnabled: true,
478
+ # controlIconsEnabled: true, // Display default controls if enabled
479
+ # fit: true, // Fit diagram within the container
480
+ # center: true, // Center the diagram
481
+ # minZoom: 0.5, // Prevent too much zooming out
482
+ # maxZoom: 10, // Prevent extreme zooming in
483
+ # contain: true // Keep the diagram fully within bounds
484
+ # }});
485
+ #
486
+ # // Optional: Add custom pan/zoom controls dynamically
487
+ # const controlsContainer = document.createElement("div");
488
+ # controlsContainer.classList.add("svg-pan-zoom_controls");
489
+ # controlsContainer.innerHTML = `
490
+ # <button id="${{graph_id}}-zoom-in">+</button>
491
+ # <button id="${{graph_id}}-zoom-out">-</button>
492
+ # <button id="${{graph_id}}-reset">Reset</button>
493
+ # `;
494
+ # containerElement.appendChild(controlsContainer);
495
+ #
496
+ # // Add event listeners for the custom controls
497
+ # document.getElementById(`${{graph_id}}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
498
+ # document.getElementById(`${{graph_id}}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
499
+ # document.getElementById(`${{graph_id}}-reset`).addEventListener("click", () => {{
500
+ # panZoom.resetZoom();
501
+ # panZoom.center();
502
+ # }});
503
+ # }}, 500); // Short delay to ensure SVG rendering is complete
504
+ # }}
505
+ #
506
+ # // Load Mermaid.js if not already loaded
507
+ # if (typeof mermaid === "undefined") {{
508
+ # loadScript("https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js", () => {{
509
+ # console.log("Mermaid.js loaded successfully");
510
+ # initializeMermaid(graph_id); // Call initialization after Mermaid.js is loaded
511
+ # }});
512
+ # }} else {{
513
+ # initializeMermaid(graph_id); // If Mermaid.js is already loaded, proceed immediately
514
+ # }}
515
+ # }});
516
+ # </script>
517
+ #
518
+ #
519
+ # </body>
520
+ # </html>
521
+ # """
522
+
523
+
524
+
525
+ # mermaid_html = f"""
356
526
  # <h2 style="text-align: center; color: #007acc; margin-bottom: 16px;">
357
527
  # {escaped_header}
358
528
  # </h2>
pyegeria/test_m.html ADDED
@@ -0,0 +1,229 @@
1
+
2
+ <style>
3
+ /* Style for the diagram container */
4
+ .diagram-container {
5
+ position: relative;
6
+ width: 90%; /* Adjust the diagram container width */
7
+ height: 500px; /* Set a fixed height for the container */
8
+ margin: 0 auto;
9
+ border: 1px solid #ccc; /* Optional border for visualization */
10
+ overflow: hidden; /* Prevent content overflow outside the container */
11
+ }
12
+
13
+ /* Style for zoom controls */
14
+ .svg-pan-zoom_controls {
15
+ position: absolute;
16
+ top: 10px;
17
+ right: 10px;
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 5px;
21
+ }
22
+ .svg-pan-zoom_controls button {
23
+ background-color: #007bff;
24
+ color: white;
25
+ border: none;
26
+ padding: 5px 10px;
27
+ border-radius: 3px;
28
+ cursor: pointer;
29
+ font-size: 14px;
30
+ }
31
+ .svg-pan-zoom_controls button:hover {
32
+ background-color: #0056b3;
33
+ }
34
+ </style>
35
+
36
+ <script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
37
+ <script>
38
+ document.addEventListener("DOMContentLoaded", () => {
39
+ // Define graph ID dynamically passed via Python
40
+ const graph_id = "mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef";
41
+
42
+ // Function to load external scripts dynamically
43
+ function loadScript(url, callback) {
44
+ const script = document.createElement('script');
45
+ script.src = url;
46
+ script.async = true;
47
+ script.onload = callback;
48
+ script.onerror = () => console.error("Error loading script:", url);
49
+ document.head.appendChild(script);
50
+ }
51
+
52
+ // Initialize Mermaid
53
+ function initializeMermaid(graph_id) {
54
+ // Look for the container
55
+ const containerElement = document.getElementById(`${graph_id}-container`);
56
+ if (!containerElement) {
57
+ console.error(`Container with ID "${graph_id}-container" not found.`);
58
+ return;
59
+ }
60
+
61
+ // Configure Mermaid
62
+ mermaid.initialize({ startOnLoad: false, logLevel: "debug" });
63
+ mermaid.init(undefined, `#${graph_id}`);
64
+
65
+ setTimeout(() => {
66
+ const svg = containerElement.querySelector("svg");
67
+
68
+ // Ensure SVG exists
69
+ if (!svg) {
70
+ console.error(`SVG not rendered for ID "${graph_id}".`);
71
+ return;
72
+ }
73
+
74
+ // Set initial size for SVG
75
+ svg.setAttribute("width", "100%");
76
+ svg.setAttribute("height", "100%");
77
+
78
+ // Ensure the container fits the diagram properly
79
+ containerElement.style.overflow = "hidden";
80
+
81
+ // Initialize Pan-Zoom
82
+ const panZoom = svgPanZoom(svg, {
83
+ zoomEnabled: true,
84
+ controlIconsEnabled: false, // Disable default controls
85
+ fit: true,
86
+ center: true,
87
+ minZoom: 0.5,
88
+ maxZoom: 10,
89
+ contain: true // Ensure diagram stays within view
90
+ });
91
+
92
+ // Add custom controls
93
+ const controlsContainer = document.createElement("div");
94
+ controlsContainer.className = "svg-pan-zoom_controls";
95
+ controlsContainer.innerHTML = `
96
+ <button id="${graph_id}-zoom-in">+</button>
97
+ <button id="${graph_id}-zoom-out">-</button>
98
+ <button id="${graph_id}-reset">Reset</button>
99
+ `;
100
+ containerElement.appendChild(controlsContainer);
101
+
102
+ // Handle controls
103
+ document.getElementById(`${graph_id}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
104
+ document.getElementById(`${graph_id}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
105
+ document.getElementById(`${graph_id}-reset`).addEventListener("click", () => {
106
+ panZoom.resetZoom();
107
+ panZoom.center();
108
+ });
109
+ }, 500); // Delay to ensure Mermaid finishes rendering
110
+ }
111
+
112
+ // Load Mermaid.js externally or initialize
113
+ if (typeof mermaid === "undefined") {
114
+ loadScript("https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js", () => {
115
+ console.log("Mermaid.js loaded successfully");
116
+ initializeMermaid(graph_id);
117
+ });
118
+ } else {
119
+ initializeMermaid(graph_id);
120
+ }
121
+ });
122
+ </script>
123
+
124
+ <div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-container" class="diagram-container">
125
+ <!-- Mermaid diagram will be dynamically rendered here -->
126
+ <div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef" class="mermaid">
127
+ flowchart TD
128
+ %%{init: {"flowchart": {"htmlLabels": false}} }%%
129
+
130
+ subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
131
+ fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
132
+ **A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
133
+ 37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
134
+ **Certify Hospital**"}
135
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
136
+ **Clinical Trial Manager**"}
137
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
138
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
139
+ **Assemble Treatment Assessment Report**"}
140
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
141
+ **Treatment Efficacy Evidence**"}
142
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
143
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
144
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
145
+ **Analyse Patient Data**"}
146
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
147
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
148
+ **Weekly Measurements Onboarding Pipeline**"}
149
+ 07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
150
+ **Landing Folder Cataloguer**"}
151
+ 07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
152
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
153
+ b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
154
+ **Certified Data Engineer**"}
155
+ b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
156
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
157
+ **Treatment Validation Sandbox**"}
158
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
159
+ **Populate Sandbox**"}
160
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
161
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
162
+ **Hospital Processes**"}
163
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
164
+ **Clinical Trial Participating Hospital Coordinator**"}
165
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
166
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
167
+ **Clinical Trial Participating Hospital**"}
168
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
169
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
170
+ ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
171
+ **New Treatment Data Scientist**"}
172
+ ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
173
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
174
+ **New Treatment Researcher.**"}
175
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
176
+ e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
177
+ **Onboard Hospital**"}
178
+ b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
179
+ 849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
180
+ **Set up clinical trial**"}
181
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
182
+ a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
183
+ **Weekly Measurements Data Lake Folder**"}
184
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
185
+ 0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
186
+ **Treatment Assessment Report Validation and Delivery**"}
187
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
188
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
189
+ **Clinical Trial Sponsor**"}
190
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
191
+ a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
192
+ fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
193
+ **Set up Data Lake Folder**"}
194
+ b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
195
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
196
+ **Hospital Landing Area Folder**"}
197
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
198
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
199
+ 11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
200
+ **Nominate Hospital**"}
201
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
202
+ end
203
+ style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
204
+ style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
205
+ style e9c2f911-ffcb-40c6-aeee-8c4d43811576 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
206
+ style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
207
+ style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
208
+ style 30adaab5-8870-47a8-8ae9-facbf84cb05a color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
209
+ style b0290339-c96c-4b05-904f-12fc98e54e14 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
210
+ style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
211
+ style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
212
+ style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
213
+ style a8bd84ca-0aae-4534-b0e8-87e8659467a6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
214
+ style 0c757e35-8a42-4d5f-b01b-c72a6cea65cc color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
215
+ style c4f8d707-7c85-4125-b5fd-c3257a2ef2ef color:#3079ab, fill:#b7c0c7, stroke:#3079ab
216
+ style 37b8560d-84d4-434b-9b0d-105420fcc924 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
217
+ style 11c7c850-c67c-41cc-9423-d74db47cbf3a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
218
+ style fc2de77f-7320-48ea-8750-d434c6e870db color:#000000, fill:#F9F7ED, stroke:#b7c0c7
219
+ style 849b0b42-f465-452b-813c-477d6398e082 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
220
+ style 7f5dca65-50b4-4103-9ac7-3a406a09047a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
221
+ style ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec color:#FFFFFF, fill:#838cc7, stroke:#3079ab
222
+ style 72a86eec-9734-4bc0-babb-4fec0aa7c9ff color:#FFFFFF, fill:#838cc7, stroke:#3079ab
223
+ style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
224
+ style f6bc847b-868d-43cc-b767-41f5fe3e47d1 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
225
+ style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
226
+ style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
227
+ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
228
+ </div>
229
+ </div>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.3.4.10
3
+ Version: 5.3.4.12
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance
@@ -26,17 +26,17 @@ pyegeria/commands/cat/list_collections.py,sha256=FqmeSL88ibP-wHdXK0OKWgPWKrvMpeu
26
26
  pyegeria/commands/cat/list_deployed_catalogs.py,sha256=XU-FYB5GM56km5AEGXdmje7Hd9_BRX8WnvYv85W4wic,8251
27
27
  pyegeria/commands/cat/list_deployed_database_schemas.py,sha256=An169YhyPl5cazVEhQ6BB-kpWKASEN6X10XFfIo24O0,9441
28
28
  pyegeria/commands/cat/list_deployed_databases.py,sha256=kPRsTMKwOMtXoOPhEJ7tHHd71X-pSOzMXcVPSsiilSg,7580
29
+ pyegeria/commands/cat/list_deployed_servers.py,sha256=NOvawgi7qVjcMPp-zEK4N_YSUCpl37_O3-t1DFeZRNU,5712
29
30
  pyegeria/commands/cat/list_glossaries.py,sha256=QfasuBQ8xAnERTijjI7leThsOwGU-l9zhTgOT0WvhD0,5599
30
31
  pyegeria/commands/cat/list_projects.py,sha256=8KbhDHC0Yl-fyiagRHVWk4vTO9zqSEgGRY9m6ohySHQ,7990
31
- pyegeria/commands/cat/list_servers_deployed_imp.py,sha256=NOvawgi7qVjcMPp-zEK4N_YSUCpl37_O3-t1DFeZRNU,5712
32
32
  pyegeria/commands/cat/list_tech_type_elements.py,sha256=ZcgfBycPuZEKMs7HANSmnnVhe-U9KuyoEBiMErEpsUc,6866
33
33
  pyegeria/commands/cat/list_tech_types.py,sha256=YkfKnQxJq5V4lnfTcp6VQ3rk-qks0Dw1i1CjjgdEGmA,4646
34
34
  pyegeria/commands/cat/list_terms.py,sha256=QpHGSQDybNUznGNZ2sO494-zxagJpeOJALgzvlUXpNc,9714
35
35
  pyegeria/commands/cat/list_todos.py,sha256=_X0t5-tZScNb2Pl6ZCRQAKhOEQgeNdxV0D5xIN3IXNI,6549
36
36
  pyegeria/commands/cat/list_user_ids.py,sha256=oQqEFV3MbqC7Tsfh1PhTOiJUS684LIkO1rbNOqITzRI,5101
37
37
  pyegeria/commands/cli/__init__.py,sha256=hpTVSMP2gnPRhcAZPdeUEsQ-eaDySlXlk239dNWYmng,292
38
- pyegeria/commands/cli/egeria.py,sha256=gzBtw67yyyn5x_GLRY91TlwEygX7cmM51mRjdzLX7e0,51633
39
- pyegeria/commands/cli/egeria_cat.py,sha256=bqIGnID1VNXMy2pPOm6FAqAXjGFVMn2FS8BeruU_ae8,16007
38
+ pyegeria/commands/cli/egeria.py,sha256=IXZPZEM-NOLtup2OcQJ8I0wx1FYAjD7iAhfmPpEgz9s,51629
39
+ pyegeria/commands/cli/egeria_cat.py,sha256=Vt7DpbIE20mO80MmXm8BoPHd-VXbp0YoYQ07sas_WMI,16003
40
40
  pyegeria/commands/cli/egeria_login_tui.py,sha256=uhSk5GZbx_nz-EVwSU87JiZ2GTGHxuyxye053dQq9UY,9485
41
41
  pyegeria/commands/cli/egeria_my.py,sha256=0KTH7OIeKyp16ZeN7zK5uhadbPfAQsq38GMzJNWYG8g,6386
42
42
  pyegeria/commands/cli/egeria_ops.py,sha256=8W4t2jFGn22OOOtyUAapQH8yyOl1wo09CVNTojRQKvo,12817
@@ -244,7 +244,8 @@ pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1
244
244
  pyegeria/full_omag_server_config.py,sha256=CQqLCy_3DZFvJZEOcGf50HWdFaWpiAIs6z-kKyjvpDA,47464
245
245
  pyegeria/glossary_browser_omvs.py,sha256=ci57LXFjIAXWw6XXFu8pIbeR_3y4hl_x4F2-HHdy7VM,93585
246
246
  pyegeria/glossary_manager_omvs.py,sha256=GJQo5E3bxv8JL84wTGqJKMrMo7QqNAPtyJJgvGpI_lU,132558
247
- pyegeria/mermaid_utilities.py,sha256=zalkXi3C4_abkj_BKdkwDfteFcsmDijgkIEXWR_Uv74,27585
247
+ pyegeria/m_test.py,sha256=BDKRLsHsAWnwCbzHkkvfsc8ZIJ0k-jmwPPNuTSgW6Qo,7659
248
+ pyegeria/mermaid_utilities.py,sha256=zuGag6ffjkO22kiJtarhy_x18Yx5x_t4DSgbsC0SxKU,34433
248
249
  pyegeria/metadata_explorer_omvs.py,sha256=xHnZTQKbd6XwOhYia-RiIisrvZcqHi0SL1l6OCf04Gk,86911
249
250
  pyegeria/my_profile_omvs.py,sha256=d0oJYCJG7pS9BINPuGciVa00ac0jwPHNANXDCLginEc,34720
250
251
  pyegeria/platform_services.py,sha256=xlF5p5HPKDGTFFDsuxm2RLhr8vjZPv4T7e2qCkDgKXE,41654
@@ -254,14 +255,14 @@ pyegeria/runtime_manager_omvs.py,sha256=Z5wY9ignNjil8O6yjihZftxkGoh9A4PQDcXhoIsO
254
255
  pyegeria/server_operations.py,sha256=vmiUDU_Xa0U8pa0Fdb-QKkoeSqs7WfMwIpG_XU3xgeI,16784
255
256
  pyegeria/solution_architect_omvs.py,sha256=x6CfPTyn1l2DFYVEFP0t_rT9uVjoFr596hBBeuVaMRg,22093
256
257
  pyegeria/template_manager_omvs.py,sha256=PfJ9dOfmBvf59DgRdZ9Dl1Kl_UYqjF-JncXVnbCqLZU,42408
257
- pyegeria/test_m.py,sha256=BDKRLsHsAWnwCbzHkkvfsc8ZIJ0k-jmwPPNuTSgW6Qo,7659
258
+ pyegeria/test_m.html,sha256=YAGz3VoCvEydXuRJMwoajOWkuB7sJO6WTZKNkCfXzgw,12239
258
259
  pyegeria/test_m1.html,sha256=XS_1IAtfG4ZlZk45QTkrFWWpjQMVlO21ScDMX2Frl3g,14086
259
260
  pyegeria/test_mer.ipynb,sha256=G7hpHn07IXnt_VKvnTDvljwwHB7RfC0etOMyZKt1icQ,30809
260
261
  pyegeria/utils.py,sha256=GCt1C0bp0Xng1ahzbZhzV9qQwH7Dj93IaCt2dvWb-sg,5417
261
262
  pyegeria/valid_metadata_omvs.py,sha256=kL3bEkoBtNCaQKjziFwRAqQyleu-i2ua_REIogfulFw,65031
262
263
  pyegeria/x_action_author_omvs.py,sha256=6b725SPsC52AI7ols7Qq8MsBlZuAXr_BgJ_-ychVRCw,6386
263
- pyegeria-5.3.4.10.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
264
- pyegeria-5.3.4.10.dist-info/METADATA,sha256=81108YuOUJ_EEiqNT8Cc903E0MFepmXM6WKt0je_A9I,2736
265
- pyegeria-5.3.4.10.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
266
- pyegeria-5.3.4.10.dist-info/entry_points.txt,sha256=E83aZ9RhrxffYGmHgBwhLdS5fvEeYhrIPp0FZRvaFOI,6180
267
- pyegeria-5.3.4.10.dist-info/RECORD,,
264
+ pyegeria-5.3.4.12.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
265
+ pyegeria-5.3.4.12.dist-info/METADATA,sha256=PDGeRm1VV0p86nMWqtX-0MXYdRZ4UKI7eYYgPY_ZWN0,2736
266
+ pyegeria-5.3.4.12.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
267
+ pyegeria-5.3.4.12.dist-info/entry_points.txt,sha256=LS9g5JPSBL0whnyAcGhLZCAyUp6PkPU6fjHP9Aso1V4,6176
268
+ pyegeria-5.3.4.12.dist-info/RECORD,,
@@ -33,7 +33,7 @@ list_collections=pyegeria.commands.cat.list_collections:main
33
33
  list_deployed_catalogs=pyegeria.commands.cat.list_deployed_catalogs:main
34
34
  list_deployed_databases=pyegeria.commands.cat.list_deployed_databases:main
35
35
  list_deployed_schemas=pyegeria.commands.cat.list_deployed_database_schemas:main
36
- list_deployed_servers=pyegeria.commands.cat.list_servers_deployed_imp.py:main
36
+ list_deployed_servers=pyegeria.commands.cat.list_deployed_servers.py:main
37
37
  list_elements=pyegeria.commands.tech.list_all_om_type_elements:main
38
38
  list_elements_by_classification_by_prop_value=pyegeria.commands.tech.list_elements_by_classification_by_property_value:main
39
39
  list_elements_by_prop_value=pyegeria.commands.tech.list_elements_by_property_value:main
File without changes