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