pyegeria 5.3.4.19__py3-none-any.whl → 5.3.4.20__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.
pyegeria/__init__.py CHANGED
@@ -69,7 +69,8 @@ from .full_omag_server_config import FullServerConfig
69
69
  from .glossary_browser_omvs import GlossaryBrowser
70
70
  from .glossary_manager_omvs import GlossaryManager
71
71
  from .mermaid_utilities import (
72
- construct_mermaid_html,
72
+ construct_mermaid_web,
73
+ construct_mermaid_jup,
73
74
  generate_process_graph,
74
75
  load_mermaid,
75
76
  parse_mermaid_code,
pyegeria/m_test.py CHANGED
@@ -1,4 +1,4 @@
1
- from pyegeria.mermaid_utilities import construct_mermaid_html
1
+ from pyegeria.mermaid_utilities import construct_mermaid_web, construct_mermaid_jup
2
2
 
3
3
  m = """
4
4
  ---
@@ -107,7 +107,12 @@ style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#
107
107
  style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
108
108
  """
109
109
 
110
- h = construct_mermaid_html(m)
110
+ h = construct_mermaid_web(m)
111
111
  print(h)
112
- with open("test_m.html", "w") as f:
112
+ with open("test_w.html", "w") as f:
113
113
  f.write(h)
114
+
115
+ h = construct_mermaid_jup(m)
116
+ print(h)
117
+ with open("test_j.html", "w") as f:
118
+ f.write(h)
@@ -63,7 +63,7 @@ def load_mermaid():
63
63
 
64
64
 
65
65
  def render_mermaid(mermaid_code):
66
- return display(HTML(construct_mermaid_html(mermaid_code)))
66
+ return display(HTML(construct_mermaid_jup(mermaid_code)))
67
67
 
68
68
 
69
69
  def parse_mermaid_code(mermaid_code):
@@ -85,7 +85,7 @@ def parse_mermaid_code(mermaid_code):
85
85
  return title, guid, mermaid_code
86
86
 
87
87
 
88
- def construct_mermaid_html(mermaid_str: str) -> str:
88
+ def construct_mermaid_web(mermaid_str: str) -> str:
89
89
  """Function to display a HTML code in a Jupyter notebook"""
90
90
  title_label, guid, mermaid_code = parse_mermaid_code(mermaid_str)
91
91
 
@@ -209,6 +209,149 @@ def construct_mermaid_html(mermaid_str: str) -> str:
209
209
 
210
210
  return html_section1 + html_section2 + html_section3 + mermaid_code + html_section4
211
211
 
212
+ def construct_mermaid_jup(mermaid_str: str) -> str:
213
+ """Function to display a HTML code in a Jupyter notebook
214
+
215
+ Constructs HTML for a single Mermaid graph with pan and zoom support.
216
+ Each call overwrites the previous graph.
217
+
218
+ :param mermaid_code: The Mermaid code for the graph.
219
+ :param graph_id: An optional unique graph ID (default is 'mermaid-graph').
220
+ :return: The HTML content for the Mermaid graph with pan and zoom enabled.
221
+
222
+ """
223
+ title_label, guid, mermaid_code = parse_mermaid_code(mermaid_str)
224
+
225
+ graph_id = f"mermaid-graph-{guid}-{str(uuid.uuid4())[:4]}"
226
+ escaped_header = html.escape(title_label) if title_label else "" # Sanitize the header safely
227
+ escaped_mermaid_code = html.escape(mermaid_code)
228
+ header_html = f"""
229
+ <h3 id="{graph_id}-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
230
+ {escaped_header}
231
+ </h3>
232
+ <p id="{graph_id}-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
233
+ GUID: {guid}
234
+ </p>
235
+ """ if title_label else ""
236
+
237
+ html_content = f"""
238
+ <style>
239
+ /* Style for the diagram container */
240
+ .diagram-container {{
241
+ position: relative;
242
+ width: 100%; /* Adjust the diagram container width */
243
+ height: 500px; /* Set a fixed height for the container */
244
+ margin: 0 auto;
245
+ border: 1px solid #ccc; /* Optional border for visualization */
246
+ overflow: hidden; /* Prevent content overflow outside the container */
247
+ }}
248
+
249
+ /* Style for zoom controls */
250
+ .svg-pan-zoom_controls {{
251
+ position: absolute;
252
+ top: 10px;
253
+ right: 10px;
254
+ display: flex;
255
+ flex-direction: column;
256
+ gap: 5px;
257
+ }}
258
+ .svg-pan-zoom_controls button {{
259
+ background-color: #007bff;
260
+ color: white;
261
+ border: none;
262
+ padding: 5px 10px;
263
+ border-radius: 3px;
264
+ cursor: pointer;
265
+ font-size: 14px;
266
+ }}
267
+ .svg-pan-zoom_controls button:hover {{
268
+ background-color: #0056b3;
269
+ }}
270
+ </style>
271
+
272
+ <div id="{graph_id}-container" class="diagram-container">
273
+ <!-- Mermaid diagram will be dynamically rendered here -->
274
+ {header_html}
275
+ <div id="{graph_id}" class="mermaid">
276
+ {escaped_mermaid_code}
277
+ </div>
278
+ </div>
279
+
280
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
281
+ <script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
282
+ <script>
283
+ document.addEventListener("DOMContentLoaded", () => {{
284
+ // Initialize Mermaid and Pan-Zoom functionality
285
+ const graph_id = "{graph_id}";
286
+
287
+ function initializeMermaid(graph_id) {{
288
+ const containerElement = document.getElementById(`${{graph_id}}-container`);
289
+
290
+ if (!containerElement) {{
291
+ console.error(`Container with ID "${{graph_id}}-container" not found.`);
292
+ return;
293
+ }}
294
+
295
+ // Configure Mermaid
296
+ mermaid.initialize({{ startOnLoad: false, logLevel: "debug" }});
297
+ mermaid.init(undefined, `#${{graph_id}}`);
298
+
299
+ setTimeout(() => {{
300
+ const svg = containerElement.querySelector("svg");
301
+ if (!svg) {{
302
+ console.error(`SVG not rendered for ID "${{graph_id}}".`);
303
+ return;
304
+ }}
305
+
306
+ // Set initial size
307
+ svg.setAttribute("width", "100%");
308
+ svg.setAttribute("height", "100%");
309
+
310
+ // Initialize Pan-Zoom
311
+ const panZoom = svgPanZoom(svg, {{
312
+ zoomEnabled: true,
313
+ controlIconsEnabled: false,
314
+ fit: true,
315
+ center: true,
316
+ minZoom: 0.5,
317
+ maxZoom: 10,
318
+ contain: true
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);
339
+ }}
340
+
341
+ if (typeof mermaid === "undefined") {{
342
+ const script = document.createElement('script');
343
+ script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
344
+ script.onload = () => initializeMermaid(graph_id);
345
+ document.head.appendChild(script);
346
+ }} else {{
347
+ initializeMermaid(graph_id);
348
+ }}
349
+ }});
350
+ </script>
351
+
352
+ """
353
+ return html_content
354
+
212
355
 
213
356
  def not_working_construct_mermaid_html(mermaid_str: str) -> str:
214
357
  """Function to display a HTML code in a Jupyter notebook
@@ -947,7 +1090,7 @@ def save_mermaid_html(
947
1090
  os.makedirs(folder)
948
1091
  mermaid_file = os.path.join(folder, title + ".html")
949
1092
 
950
- payload = construct_mermaid_html(mermaid_str)
1093
+ payload = construct_mermaid_web(mermaid_str)
951
1094
 
952
1095
  with open(mermaid_file, "w") as f:
953
1096
  f.write(payload)
pyegeria/test_j.html ADDED
@@ -0,0 +1,223 @@
1
+
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-54cd-container" class="diagram-container">
37
+ <!-- Mermaid diagram will be dynamically rendered here -->
38
+
39
+ <h3 id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd-heading" style="margin: 20px 0; font-size: 1.5em; text-align: center;">
40
+ Component for Solution Blueprint - Clinical Trial Management Solution Blueprint
41
+ </h3>
42
+ <p id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd-subheading" style="margin: 0; padding: 5px; font-size: 1em; text-align: center; color: gray; flex: 0 0 auto;">
43
+ GUID: c4f8d707-7c85-4125-b5fd-c3257a2ef2ef
44
+ </p>
45
+
46
+ <div id="mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd" class="mermaid">
47
+ flowchart TD
48
+ %%{init: {&quot;flowchart&quot;: {&quot;htmlLabels&quot;: false}} }%%
49
+
50
+ subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
51
+ fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: &quot;*Description*
52
+ **A description of how a clinical trial is managed in Coco Pharmaceuticals.**&quot;}
53
+ 37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: &quot;*Solution Component*
54
+ **Certify Hospital**&quot;}
55
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: &quot;*Solution Actor Role*
56
+ **Clinical Trial Manager**&quot;}
57
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Certifier&quot;|37b8560d-84d4-434b-9b0d-105420fcc924
58
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: &quot;*Solution Component*
59
+ **Assemble Treatment Assessment Report**&quot;}
60
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: &quot;*Solution Component*
61
+ **Treatment Efficacy Evidence**&quot;}
62
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5--&gt;|&quot;Solution Linking Wire&quot;|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
63
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Author&quot;|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
64
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: &quot;*Solution Component*
65
+ **Analyse Patient Data**&quot;}
66
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584--&gt;|&quot;Solution Linking Wire&quot;|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
67
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: &quot;*Solution Component*
68
+ **Weekly Measurements Onboarding Pipeline**&quot;}
69
+ 07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: &quot;*Solution Component*
70
+ **Landing Folder Cataloguer**&quot;}
71
+ 07705e15-efff-4f80-8992-f04ac85e0ef1--&gt;|&quot;Solution Linking Wire&quot;|7f5dca65-50b4-4103-9ac7-3a406a09047a
72
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Steward&quot;|7f5dca65-50b4-4103-9ac7-3a406a09047a
73
+ b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: &quot;*Solution Actor Role*
74
+ **Certified Data Engineer**&quot;}
75
+ b0290339-c96c-4b05-904f-12fc98e54e14--&gt;|&quot;Steward&quot;|7f5dca65-50b4-4103-9ac7-3a406a09047a
76
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: &quot;*Solution Component*
77
+ **Treatment Validation Sandbox**&quot;}
78
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: &quot;*Solution Component*
79
+ **Populate Sandbox**&quot;}
80
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275--&gt;|&quot;Solution Linking Wire&quot;|d48f579f-76d3-4c49-b1b4-575f5645a9d0
81
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: &quot;*Solution Component*
82
+ **Hospital Processes**&quot;}
83
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: &quot;*Solution Actor Role*
84
+ **Clinical Trial Participating Hospital Coordinator**&quot;}
85
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6--&gt;|&quot;Coordinator on behalf of hospital&quot;|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
86
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: &quot;*Solution Actor Role*
87
+ **Clinical Trial Participating Hospital**&quot;}
88
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a--&gt;|&quot;Owner&quot;|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
89
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0--&gt;|&quot;Solution Linking Wire&quot;|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
90
+ ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: &quot;*Solution Actor Role*
91
+ **New Treatment Data Scientist**&quot;}
92
+ ece17806-836c-4756-b3a2-2d12dde215f6--&gt;|&quot;Data Analyser&quot;|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
93
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: &quot;*Solution Actor Role*
94
+ **New Treatment Researcher.**&quot;}
95
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc--&gt;|&quot;Results Interpreter&quot;|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
96
+ e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: &quot;*Solution Component*
97
+ **Onboard Hospital**&quot;}
98
+ b0290339-c96c-4b05-904f-12fc98e54e14--&gt;|&quot;Initiator&quot;|e9c2f911-ffcb-40c6-aeee-8c4d43811576
99
+ 849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: &quot;*Solution Component*
100
+ **Set up clinical trial**&quot;}
101
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Initiator&quot;|849b0b42-f465-452b-813c-477d6398e082
102
+ a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: &quot;*Solution Component*
103
+ **Weekly Measurements Data Lake Folder**&quot;}
104
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a--&gt;|&quot;Solution Linking Wire&quot;|a5d4d638-6836-47e5-99d0-fdcde637e13f
105
+ 0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: &quot;*Solution Component*
106
+ **Treatment Assessment Report Validation and Delivery**&quot;}
107
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff--&gt;|&quot;Solution Linking Wire&quot;|0bf2547c-937c-41b6-814f-6284849271a1
108
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: &quot;*Solution Actor Role*
109
+ **Clinical Trial Sponsor**&quot;}
110
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1--&gt;|&quot;Reviewer&quot;|0bf2547c-937c-41b6-814f-6284849271a1
111
+ a5d4d638-6836-47e5-99d0-fdcde637e13f--&gt;|&quot;Solution Linking Wire&quot;|26c07ca4-3b8e-484b-812b-36c1ace4b275
112
+ fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: &quot;*Solution Component*
113
+ **Set up Data Lake Folder**&quot;}
114
+ b0290339-c96c-4b05-904f-12fc98e54e14--&gt;|&quot;Initiator&quot;|fb32bef2-e79f-4893-b500-2e547f24d482
115
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: &quot;*Solution Component*
116
+ **Hospital Landing Area Folder**&quot;}
117
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec--&gt;|&quot;Solution Linking Wire&quot;|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
118
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f--&gt;|&quot;Solution Linking Wire&quot;|07705e15-efff-4f80-8992-f04ac85e0ef1
119
+ 11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: &quot;*Solution Component*
120
+ **Nominate Hospital**&quot;}
121
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661--&gt;|&quot;Initiator&quot;|11c7c850-c67c-41cc-9423-d74db47cbf3a
122
+ end
123
+ style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
124
+ style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
125
+ style e9c2f911-ffcb-40c6-aeee-8c4d43811576 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
126
+ style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
127
+ style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
128
+ style 30adaab5-8870-47a8-8ae9-facbf84cb05a color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
129
+ style b0290339-c96c-4b05-904f-12fc98e54e14 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
130
+ style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
131
+ style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
132
+ style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
133
+ style a8bd84ca-0aae-4534-b0e8-87e8659467a6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
134
+ style 0c757e35-8a42-4d5f-b01b-c72a6cea65cc color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
135
+ style c4f8d707-7c85-4125-b5fd-c3257a2ef2ef color:#3079ab, fill:#b7c0c7, stroke:#3079ab
136
+ style 37b8560d-84d4-434b-9b0d-105420fcc924 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
137
+ style 11c7c850-c67c-41cc-9423-d74db47cbf3a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
138
+ style fc2de77f-7320-48ea-8750-d434c6e870db color:#000000, fill:#F9F7ED, stroke:#b7c0c7
139
+ style 849b0b42-f465-452b-813c-477d6398e082 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
140
+ style 7f5dca65-50b4-4103-9ac7-3a406a09047a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
141
+ style ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec color:#FFFFFF, fill:#838cc7, stroke:#3079ab
142
+ style 72a86eec-9734-4bc0-babb-4fec0aa7c9ff color:#FFFFFF, fill:#838cc7, stroke:#3079ab
143
+ style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
144
+ style f6bc847b-868d-43cc-b767-41f5fe3e47d1 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
145
+ style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
146
+ style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
147
+ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
148
+ </div>
149
+ </div>
150
+
151
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
152
+ <script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"></script>
153
+ <script>
154
+ document.addEventListener("DOMContentLoaded", () => {
155
+ // Initialize Mermaid and Pan-Zoom functionality
156
+ const graph_id = "mermaid-graph-c4f8d707-7c85-4125-b5fd-c3257a2ef2ef-54cd";
157
+
158
+ function initializeMermaid(graph_id) {
159
+ const containerElement = document.getElementById(`${graph_id}-container`);
160
+
161
+ if (!containerElement) {
162
+ console.error(`Container with ID "${graph_id}-container" not found.`);
163
+ return;
164
+ }
165
+
166
+ // Configure Mermaid
167
+ mermaid.initialize({ startOnLoad: false, logLevel: "debug" });
168
+ mermaid.init(undefined, `#${graph_id}`);
169
+
170
+ setTimeout(() => {
171
+ const svg = containerElement.querySelector("svg");
172
+ if (!svg) {
173
+ console.error(`SVG not rendered for ID "${graph_id}".`);
174
+ return;
175
+ }
176
+
177
+ // Set initial size
178
+ svg.setAttribute("width", "100%");
179
+ svg.setAttribute("height", "100%");
180
+
181
+ // Initialize Pan-Zoom
182
+ const panZoom = svgPanZoom(svg, {
183
+ zoomEnabled: true,
184
+ controlIconsEnabled: false,
185
+ fit: true,
186
+ center: true,
187
+ minZoom: 0.5,
188
+ maxZoom: 10,
189
+ contain: true
190
+ });
191
+
192
+ // Add custom controls
193
+ const controlsContainer = document.createElement("div");
194
+ controlsContainer.className = "svg-pan-zoom_controls";
195
+ controlsContainer.innerHTML = `
196
+ <button id="${graph_id}-zoom-in">+</button>
197
+ <button id="${graph_id}-zoom-out">-</button>
198
+ <button id="${graph_id}-reset">Reset</button>
199
+ `;
200
+ containerElement.appendChild(controlsContainer);
201
+
202
+ // Handle controls
203
+ document.getElementById(`${graph_id}-zoom-in`).addEventListener("click", () => panZoom.zoomIn());
204
+ document.getElementById(`${graph_id}-zoom-out`).addEventListener("click", () => panZoom.zoomOut());
205
+ document.getElementById(`${graph_id}-reset`).addEventListener("click", () => {
206
+ panZoom.resetZoom();
207
+ panZoom.center();
208
+ });
209
+ }, 500);
210
+ }
211
+
212
+ if (typeof mermaid === "undefined") {
213
+ const script = document.createElement('script');
214
+ script.src = "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js";
215
+ script.onload = () => initializeMermaid(graph_id);
216
+ document.head.appendChild(script);
217
+ } else {
218
+ initializeMermaid(graph_id);
219
+ }
220
+ });
221
+ </script>
222
+
223
+
pyegeria/test_w.html ADDED
@@ -0,0 +1,213 @@
1
+
2
+ <!DOCTYPE html>
3
+ <html>
4
+ <head>
5
+ <style type="text/css">
6
+ #mySvgId {
7
+ width: 100%;
8
+ height: 600px;
9
+ overflow: scroll;
10
+ border: 2px solid #ccc;
11
+ position: relative;
12
+ margin-bottom: 10px;
13
+ }
14
+ svg {
15
+ cursor: grab;
16
+ }
17
+
18
+ </style>
19
+ </head>
20
+
21
+ <title>Component for Solution Blueprint - Clinical Trial Management Solution Blueprint </title>
22
+ <h3>Component for Solution Blueprint - Clinical Trial Management Solution Blueprint </h3>
23
+ GUID : c4f8d707-7c85-4125-b5fd-c3257a2ef2ef
24
+
25
+
26
+ <body>
27
+
28
+ <div id="graphDiv"></div>
29
+ <script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.min.js"></script>
30
+ <script type="module">
31
+ import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
32
+
33
+ mermaid.initialize({startOnLoad: false});
34
+ await mermaid.run({
35
+ querySelector: '.mermaid',
36
+ postRenderCallback: (id) => {
37
+ const container = document.getElementById("diagram-container");
38
+ const svgElement = container.querySelector("svg");
39
+
40
+ // Initialize Panzoom
41
+ const panzoomInstance = Panzoom(svgElement, {
42
+ maxScale: 5,
43
+ minScale: 0.5,
44
+ step: 0.1,
45
+ });
46
+
47
+ // Add mouse wheel zoom
48
+ container.addEventListener("wheel", (event) => {
49
+ panzoomInstance.zoomWithWheel(event);
50
+ });
51
+ }
52
+ });
53
+
54
+
55
+ const drawDiagram = async function () {
56
+ const element = document.querySelector('#graphDiv');
57
+ const graphDefinition = `
58
+ flowchart TD
59
+ %%{init: {"flowchart": {"htmlLabels": false}} }%%
60
+
61
+ subgraph c4f8d707-7c85-4125-b5fd-c3257a2ef2ef [Components and Actors]
62
+ fc2de77f-7320-48ea-8750-d434c6e870db@{ shape: text, label: "*Description*
63
+ **A description of how a clinical trial is managed in Coco Pharmaceuticals.**"}
64
+ 37b8560d-84d4-434b-9b0d-105420fcc924@{ shape: subproc, label: "*Solution Component*
65
+ **Certify Hospital**"}
66
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661@{ shape: trap-t, label: "*Solution Actor Role*
67
+ **Clinical Trial Manager**"}
68
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Certifier"|37b8560d-84d4-434b-9b0d-105420fcc924
69
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff@{ shape: docs, label: "*Solution Component*
70
+ **Assemble Treatment Assessment Report**"}
71
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5@{ shape: rect, label: "*Solution Component*
72
+ **Treatment Efficacy Evidence**"}
73
+ 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5-->|"Solution Linking Wire"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
74
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Author"|72a86eec-9734-4bc0-babb-4fec0aa7c9ff
75
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584@{ shape: rect, label: "*Solution Component*
76
+ **Analyse Patient Data**"}
77
+ b5c8da4c-f925-4cf1-8294-e43cd2c1a584-->|"Solution Linking Wire"|48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5
78
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a@{ shape: subproc, label: "*Solution Component*
79
+ **Weekly Measurements Onboarding Pipeline**"}
80
+ 07705e15-efff-4f80-8992-f04ac85e0ef1@{ shape: rect, label: "*Solution Component*
81
+ **Landing Folder Cataloguer**"}
82
+ 07705e15-efff-4f80-8992-f04ac85e0ef1-->|"Solution Linking Wire"|7f5dca65-50b4-4103-9ac7-3a406a09047a
83
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
84
+ b0290339-c96c-4b05-904f-12fc98e54e14@{ shape: trap-t, label: "*Solution Actor Role*
85
+ **Certified Data Engineer**"}
86
+ b0290339-c96c-4b05-904f-12fc98e54e14-->|"Steward"|7f5dca65-50b4-4103-9ac7-3a406a09047a
87
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0@{ shape: lin-cyl, label: "*Solution Component*
88
+ **Treatment Validation Sandbox**"}
89
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275@{ shape: rect, label: "*Solution Component*
90
+ **Populate Sandbox**"}
91
+ 26c07ca4-3b8e-484b-812b-36c1ace4b275-->|"Solution Linking Wire"|d48f579f-76d3-4c49-b1b4-575f5645a9d0
92
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec@{ shape: processes, label: "*Solution Component*
93
+ **Hospital Processes**"}
94
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6@{ shape: trap-t, label: "*Solution Actor Role*
95
+ **Clinical Trial Participating Hospital Coordinator**"}
96
+ a8bd84ca-0aae-4534-b0e8-87e8659467a6-->|"Coordinator on behalf of hospital"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
97
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a@{ shape: trap-t, label: "*Solution Actor Role*
98
+ **Clinical Trial Participating Hospital**"}
99
+ 30adaab5-8870-47a8-8ae9-facbf84cb05a-->|"Owner"|ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec
100
+ d48f579f-76d3-4c49-b1b4-575f5645a9d0-->|"Solution Linking Wire"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
101
+ ece17806-836c-4756-b3a2-2d12dde215f6@{ shape: trap-t, label: "*Solution Actor Role*
102
+ **New Treatment Data Scientist**"}
103
+ ece17806-836c-4756-b3a2-2d12dde215f6-->|"Data Analyser"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
104
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc@{ shape: trap-t, label: "*Solution Actor Role*
105
+ **New Treatment Researcher.**"}
106
+ 0c757e35-8a42-4d5f-b01b-c72a6cea65cc-->|"Results Interpreter"|b5c8da4c-f925-4cf1-8294-e43cd2c1a584
107
+ e9c2f911-ffcb-40c6-aeee-8c4d43811576@{ shape: subproc, label: "*Solution Component*
108
+ **Onboard Hospital**"}
109
+ b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|e9c2f911-ffcb-40c6-aeee-8c4d43811576
110
+ 849b0b42-f465-452b-813c-477d6398e082@{ shape: subproc, label: "*Solution Component*
111
+ **Set up clinical trial**"}
112
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|849b0b42-f465-452b-813c-477d6398e082
113
+ a5d4d638-6836-47e5-99d0-fdcde637e13f@{ shape: lin-cyl, label: "*Solution Component*
114
+ **Weekly Measurements Data Lake Folder**"}
115
+ 7f5dca65-50b4-4103-9ac7-3a406a09047a-->|"Solution Linking Wire"|a5d4d638-6836-47e5-99d0-fdcde637e13f
116
+ 0bf2547c-937c-41b6-814f-6284849271a1@{ shape: odd, label: "*Solution Component*
117
+ **Treatment Assessment Report Validation and Delivery**"}
118
+ 72a86eec-9734-4bc0-babb-4fec0aa7c9ff-->|"Solution Linking Wire"|0bf2547c-937c-41b6-814f-6284849271a1
119
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1@{ shape: trap-t, label: "*Solution Actor Role*
120
+ **Clinical Trial Sponsor**"}
121
+ f6bc847b-868d-43cc-b767-41f5fe3e47d1-->|"Reviewer"|0bf2547c-937c-41b6-814f-6284849271a1
122
+ a5d4d638-6836-47e5-99d0-fdcde637e13f-->|"Solution Linking Wire"|26c07ca4-3b8e-484b-812b-36c1ace4b275
123
+ fb32bef2-e79f-4893-b500-2e547f24d482@{ shape: subproc, label: "*Solution Component*
124
+ **Set up Data Lake Folder**"}
125
+ b0290339-c96c-4b05-904f-12fc98e54e14-->|"Initiator"|fb32bef2-e79f-4893-b500-2e547f24d482
126
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f@{ shape: lin-cyl, label: "*Solution Component*
127
+ **Hospital Landing Area Folder**"}
128
+ ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec-->|"Solution Linking Wire"|1c150d6e-30cf-481c-9afb-3b06c9c9e78f
129
+ 1c150d6e-30cf-481c-9afb-3b06c9c9e78f-->|"Solution Linking Wire"|07705e15-efff-4f80-8992-f04ac85e0ef1
130
+ 11c7c850-c67c-41cc-9423-d74db47cbf3a@{ shape: subproc, label: "*Solution Component*
131
+ **Nominate Hospital**"}
132
+ f37f3735-28a1-4e03-9ff5-3fe2f137f661-->|"Initiator"|11c7c850-c67c-41cc-9423-d74db47cbf3a
133
+ end
134
+ style 48bc201e-3d4e-4beb-bdb2-0fd9d134f6d5 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
135
+ style ece17806-836c-4756-b3a2-2d12dde215f6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
136
+ style e9c2f911-ffcb-40c6-aeee-8c4d43811576 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
137
+ style a5d4d638-6836-47e5-99d0-fdcde637e13f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
138
+ style 0bf2547c-937c-41b6-814f-6284849271a1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
139
+ style 30adaab5-8870-47a8-8ae9-facbf84cb05a color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
140
+ style b0290339-c96c-4b05-904f-12fc98e54e14 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
141
+ style 26c07ca4-3b8e-484b-812b-36c1ace4b275 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
142
+ style 1c150d6e-30cf-481c-9afb-3b06c9c9e78f color:#FFFFFF, fill:#838cc7, stroke:#3079ab
143
+ style 07705e15-efff-4f80-8992-f04ac85e0ef1 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
144
+ style a8bd84ca-0aae-4534-b0e8-87e8659467a6 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
145
+ style 0c757e35-8a42-4d5f-b01b-c72a6cea65cc color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
146
+ style c4f8d707-7c85-4125-b5fd-c3257a2ef2ef color:#3079ab, fill:#b7c0c7, stroke:#3079ab
147
+ style 37b8560d-84d4-434b-9b0d-105420fcc924 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
148
+ style 11c7c850-c67c-41cc-9423-d74db47cbf3a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
149
+ style fc2de77f-7320-48ea-8750-d434c6e870db color:#000000, fill:#F9F7ED, stroke:#b7c0c7
150
+ style 849b0b42-f465-452b-813c-477d6398e082 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
151
+ style 7f5dca65-50b4-4103-9ac7-3a406a09047a color:#FFFFFF, fill:#838cc7, stroke:#3079ab
152
+ style ee2bb773-e630-4cf9-bdf1-7c2dd64fe4ec color:#FFFFFF, fill:#838cc7, stroke:#3079ab
153
+ style 72a86eec-9734-4bc0-babb-4fec0aa7c9ff color:#FFFFFF, fill:#838cc7, stroke:#3079ab
154
+ style b5c8da4c-f925-4cf1-8294-e43cd2c1a584 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
155
+ style f6bc847b-868d-43cc-b767-41f5fe3e47d1 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
156
+ style d48f579f-76d3-4c49-b1b4-575f5645a9d0 color:#FFFFFF, fill:#838cc7, stroke:#3079ab
157
+ style f37f3735-28a1-4e03-9ff5-3fe2f137f661 color:#FFFFFF, fill:#AA00FF, stroke:#E1D5E7
158
+ style fb32bef2-e79f-4893-b500-2e547f24d482 color:#FFFFFF, fill:#838cc7, stroke:#3079ab`;
159
+ const {svg} = await mermaid.render('mySvgId', graphDefinition);
160
+ element.innerHTML = svg.replace(/( )*max-width:( 0-9\.)*px;/i, '');
161
+
162
+ var doPan = false;
163
+ var eventsHandler;
164
+ var panZoom;
165
+ var mousepos;
166
+
167
+ eventsHandler = {
168
+ haltEventListeners: ['mousedown', 'mousemove', 'mouseup']
169
+
170
+ , mouseDownHandler: function (ev) {
171
+ if (event.target.className == "[object SVGAnimatedString]") {
172
+ doPan = true;
173
+ mousepos = {x: ev.clientX, y: ev.clientY}
174
+ }
175
+ ;
176
+ }
177
+
178
+ , mouseMoveHandler: function (ev) {
179
+ if (doPan) {
180
+ panZoom.panBy({x: ev.clientX - mousepos.x, y: ev.clientY - mousepos.y});
181
+ mousepos = {x: ev.clientX, y: ev.clientY};
182
+ window.getSelection().removeAllRanges();
183
+ }
184
+ }
185
+
186
+ , mouseUpHandler: function (ev) {
187
+ doPan = false;
188
+ }
189
+
190
+ , init: function (options) {
191
+ options.svgElement.addEventListener('mousedown', this.mouseDownHandler, false);
192
+ options.svgElement.addEventListener('mousemove', this.mouseMoveHandler, false);
193
+ options.svgElement.addEventListener('mouseup', this.mouseUpHandler, false);
194
+ }
195
+
196
+ , destroy: function (options) {
197
+ options.svgElement.removeEventListener('mousedown', this.mouseDownHandler, false);
198
+ options.svgElement.removeEventListener('mousemove', this.mouseMoveHandler, false);
199
+ options.svgElement.removeEventListener('mouseup', this.mouseUpHandler, false);
200
+ }
201
+ }
202
+ panZoom = svgPanZoom('#mySvgId', {
203
+ zoomEnabled: true
204
+ , controlIconsEnabled: true
205
+ , fit: 1
206
+ , center: 1
207
+ , customEventsHandler: eventsHandler
208
+ })
209
+ };
210
+ await drawDiagram();
211
+ </script>
212
+ </body>
213
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyegeria
3
- Version: 5.3.4.19
3
+ Version: 5.3.4.20
4
4
  Summary: A python client for Egeria
5
5
  License: Apache 2.0
6
6
  Keywords: egeria,metadata,governance
@@ -1,5 +1,5 @@
1
1
  pyegeria/README.md,sha256=PwX5OC7-YSZUCIsoyHh1O-WBM2hE84sm3Bd4O353NOk,1464
2
- pyegeria/__init__.py,sha256=joW9d6Prr-pKFvziSiU_lQPVzhVHenwEzIFSLg8eahI,22267
2
+ pyegeria/__init__.py,sha256=TSKn_aAdx8EUgbDq_H61w2LNcVuO5bR8gAWYtyR7d9g,22293
3
3
  pyegeria/_client.py,sha256=bijHmo21ZooY0KeWCSRvTIxp1fztM4up0Q6xDYYIg1k,30935
4
4
  pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
5
5
  pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
@@ -244,8 +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/m_test.py,sha256=BDKRLsHsAWnwCbzHkkvfsc8ZIJ0k-jmwPPNuTSgW6Qo,7659
248
- pyegeria/mermaid_utilities.py,sha256=J9ITzj5tIe8lsQxyr0EcCf8TpioUU3u0UKDmMrwtY68,47116
247
+ pyegeria/m_test.py,sha256=R2FofK2G09TXt1S8OCWiRMEn4LDwm7uHSKejInA-i8I,7769
248
+ pyegeria/mermaid_utilities.py,sha256=WTRTeaCIPMyus6wj8XrrCtOD4cYNsOttG7IRzXUnCa4,53169
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,16 @@ 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_j.html,sha256=6kZ1KNfi5RR62HQIHvlKFTNLc4M0bN1ZsIWAXJBDBeA,13363
258
259
  pyegeria/test_m.html,sha256=q9HCstV2Ar-QiAqswte6hQ8EJuKqr5s99MUuXSxs7a8,11461
259
260
  pyegeria/test_m1.html,sha256=XS_1IAtfG4ZlZk45QTkrFWWpjQMVlO21ScDMX2Frl3g,14086
260
261
  pyegeria/test_mer.ipynb,sha256=G7hpHn07IXnt_VKvnTDvljwwHB7RfC0etOMyZKt1icQ,30809
262
+ pyegeria/test_w.html,sha256=q9HCstV2Ar-QiAqswte6hQ8EJuKqr5s99MUuXSxs7a8,11461
261
263
  pyegeria/utils.py,sha256=GCt1C0bp0Xng1ahzbZhzV9qQwH7Dj93IaCt2dvWb-sg,5417
262
264
  pyegeria/valid_metadata_omvs.py,sha256=kL3bEkoBtNCaQKjziFwRAqQyleu-i2ua_REIogfulFw,65031
263
265
  pyegeria/x_action_author_omvs.py,sha256=6b725SPsC52AI7ols7Qq8MsBlZuAXr_BgJ_-ychVRCw,6386
264
- pyegeria-5.3.4.19.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
265
- pyegeria-5.3.4.19.dist-info/METADATA,sha256=j13ebgHIRFpOq5Z_M3g-AKeC1f7Fc5gbc2kMEmay_w0,2736
266
- pyegeria-5.3.4.19.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
267
- pyegeria-5.3.4.19.dist-info/entry_points.txt,sha256=LS9g5JPSBL0whnyAcGhLZCAyUp6PkPU6fjHP9Aso1V4,6176
268
- pyegeria-5.3.4.19.dist-info/RECORD,,
266
+ pyegeria-5.3.4.20.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
267
+ pyegeria-5.3.4.20.dist-info/METADATA,sha256=kIX24FwVvXN35ohQmXP1R-4Bx0KQKVX0ugjhXDy35DE,2736
268
+ pyegeria-5.3.4.20.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
269
+ pyegeria-5.3.4.20.dist-info/entry_points.txt,sha256=LS9g5JPSBL0whnyAcGhLZCAyUp6PkPU6fjHP9Aso1V4,6176
270
+ pyegeria-5.3.4.20.dist-info/RECORD,,