scitex 2.16.1__py3-none-any.whl → 2.17.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. scitex/_mcp_resources/_cheatsheet.py +1 -1
  2. scitex/_mcp_resources/_modules.py +1 -1
  3. scitex/_mcp_tools/__init__.py +2 -0
  4. scitex/_mcp_tools/verify.py +256 -0
  5. scitex/cli/main.py +2 -0
  6. scitex/cli/verify.py +476 -0
  7. scitex/dev/plt/__init__.py +1 -1
  8. scitex/dev/plt/mpl/get_dir_ax.py +1 -1
  9. scitex/dev/plt/mpl/get_signatures.py +1 -1
  10. scitex/dev/plt/mpl/get_signatures_details.py +1 -1
  11. scitex/io/_load.py +8 -1
  12. scitex/io/_save.py +12 -0
  13. scitex/session/README.md +2 -2
  14. scitex/session/__init__.py +1 -0
  15. scitex/session/_decorator.py +57 -33
  16. scitex/session/_lifecycle/__init__.py +23 -0
  17. scitex/session/_lifecycle/_close.py +225 -0
  18. scitex/session/_lifecycle/_config.py +112 -0
  19. scitex/session/_lifecycle/_matplotlib.py +83 -0
  20. scitex/session/_lifecycle/_start.py +246 -0
  21. scitex/session/_lifecycle/_utils.py +186 -0
  22. scitex/session/_manager.py +40 -3
  23. scitex/session/template.py +1 -1
  24. scitex/template/_templates/plt.py +1 -1
  25. scitex/template/_templates/session.py +1 -1
  26. scitex/verify/README.md +312 -0
  27. scitex/verify/__init__.py +212 -0
  28. scitex/verify/_chain.py +369 -0
  29. scitex/verify/_db.py +600 -0
  30. scitex/verify/_hash.py +187 -0
  31. scitex/verify/_integration.py +127 -0
  32. scitex/verify/_rerun.py +253 -0
  33. scitex/verify/_tracker.py +330 -0
  34. scitex/verify/_visualize.py +48 -0
  35. scitex/verify/_viz/__init__.py +56 -0
  36. scitex/verify/_viz/_colors.py +84 -0
  37. scitex/verify/_viz/_format.py +302 -0
  38. scitex/verify/_viz/_json.py +192 -0
  39. scitex/verify/_viz/_mermaid.py +440 -0
  40. scitex/verify/_viz/_plotly.py +193 -0
  41. scitex/verify/_viz/_templates.py +246 -0
  42. scitex/verify/_viz/_utils.py +56 -0
  43. {scitex-2.16.1.dist-info → scitex-2.17.0.dist-info}/METADATA +1 -1
  44. {scitex-2.16.1.dist-info → scitex-2.17.0.dist-info}/RECORD +47 -23
  45. scitex/session/_lifecycle.py +0 -827
  46. {scitex-2.16.1.dist-info → scitex-2.17.0.dist-info}/WHEEL +0 -0
  47. {scitex-2.16.1.dist-info → scitex-2.17.0.dist-info}/entry_points.txt +0 -0
  48. {scitex-2.16.1.dist-info → scitex-2.17.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,246 @@
1
+ #!/usr/bin/env python3
2
+ # Timestamp: "2026-02-01 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_viz/_templates.py
4
+ """HTML templates for verification DAG visualization."""
5
+
6
+ from __future__ import annotations
7
+
8
+ from datetime import datetime
9
+
10
+
11
+ def get_timestamp() -> str:
12
+ """Get current timestamp for footer."""
13
+ return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
14
+
15
+
16
+ def get_html_template(title: str, mermaid_code: str) -> str:
17
+ """
18
+ Generate sleek HTML template with icons for verification DAG.
19
+
20
+ Parameters
21
+ ----------
22
+ title : str
23
+ Page title
24
+ mermaid_code : str
25
+ Mermaid diagram code
26
+
27
+ Returns
28
+ -------
29
+ str
30
+ Complete HTML document
31
+ """
32
+ timestamp = get_timestamp()
33
+
34
+ return f"""<!DOCTYPE html>
35
+ <html>
36
+ <head>
37
+ <meta charset="UTF-8">
38
+ <title>{title}</title>
39
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
40
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
41
+ <style>
42
+ :root {{
43
+ --verified-bg: #d4edda;
44
+ --verified-border: #28a745;
45
+ --verified-text: #155724;
46
+ --failed-bg: #f8d7da;
47
+ --failed-border: #dc3545;
48
+ --failed-text: #721c24;
49
+ --file-bg: #fff3cd;
50
+ --file-border: #ffc107;
51
+ --script-bg: #cce5ff;
52
+ --script-border: #4a6baf;
53
+ }}
54
+ body {{
55
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
56
+ margin: 0;
57
+ padding: 20px;
58
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
59
+ min-height: 100vh;
60
+ }}
61
+ .container {{
62
+ max-width: 1400px;
63
+ margin: 0 auto;
64
+ background: white;
65
+ padding: 30px;
66
+ border-radius: 16px;
67
+ box-shadow: 0 10px 40px rgba(0,0,0,0.2);
68
+ }}
69
+ .header {{
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 15px;
73
+ margin-bottom: 25px;
74
+ padding-bottom: 15px;
75
+ border-bottom: 3px solid var(--script-border);
76
+ }}
77
+ .header-icon {{
78
+ width: 48px;
79
+ height: 48px;
80
+ background: var(--script-border);
81
+ border-radius: 12px;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: center;
85
+ color: white;
86
+ font-size: 24px;
87
+ }}
88
+ h1 {{
89
+ color: #333;
90
+ margin: 0;
91
+ font-size: 1.8rem;
92
+ }}
93
+ .legend {{
94
+ display: flex;
95
+ flex-wrap: wrap;
96
+ gap: 20px;
97
+ margin: 20px 0;
98
+ padding: 15px;
99
+ background: linear-gradient(to right, #f8f9fa, #e9ecef);
100
+ border-radius: 12px;
101
+ border: 1px solid #dee2e6;
102
+ }}
103
+ .legend-item {{
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 10px;
107
+ padding: 8px 15px;
108
+ background: white;
109
+ border-radius: 8px;
110
+ box-shadow: 0 2px 4px rgba(0,0,0,0.05);
111
+ }}
112
+ .legend-icon {{
113
+ width: 28px;
114
+ height: 28px;
115
+ border-radius: 6px;
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: center;
119
+ font-size: 14px;
120
+ }}
121
+ .legend-icon.verified {{
122
+ background: var(--verified-bg);
123
+ color: var(--verified-text);
124
+ border: 2px solid var(--verified-border);
125
+ }}
126
+ .legend-icon.from-scratch {{
127
+ background: var(--verified-bg);
128
+ color: var(--verified-text);
129
+ border: 3px solid var(--verified-border);
130
+ box-shadow: 0 0 0 2px var(--verified-bg);
131
+ }}
132
+ .legend-icon.failed {{
133
+ background: var(--failed-bg);
134
+ color: var(--failed-text);
135
+ border: 2px solid var(--failed-border);
136
+ }}
137
+ .legend-icon.file {{
138
+ background: var(--file-bg);
139
+ color: #856404;
140
+ border: 2px solid var(--file-border);
141
+ }}
142
+ .legend-icon.script {{
143
+ background: var(--script-bg);
144
+ color: #004085;
145
+ border: 2px solid var(--script-border);
146
+ }}
147
+ .legend-text {{
148
+ font-size: 0.9rem;
149
+ color: #495057;
150
+ }}
151
+ .mermaid {{
152
+ margin: 25px 0;
153
+ padding: 20px;
154
+ background: #fafafa;
155
+ border-radius: 12px;
156
+ border: 1px solid #e9ecef;
157
+ overflow-x: auto;
158
+ }}
159
+ .footer {{
160
+ margin-top: 25px;
161
+ padding-top: 15px;
162
+ border-top: 1px solid #e9ecef;
163
+ display: flex;
164
+ justify-content: space-between;
165
+ align-items: center;
166
+ color: #6c757d;
167
+ font-size: 0.85rem;
168
+ }}
169
+ .footer-brand {{
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 8px;
173
+ }}
174
+ .footer-brand i {{
175
+ color: var(--script-border);
176
+ }}
177
+ </style>
178
+ </head>
179
+ <body>
180
+ <div class="container">
181
+ <div class="header">
182
+ <div class="header-icon">
183
+ <i class="fas fa-project-diagram"></i>
184
+ </div>
185
+ <h1>{title}</h1>
186
+ </div>
187
+ <div class="legend">
188
+ <div class="legend-item">
189
+ <span style="font-size:1.2em">🐍</span>
190
+ <span class="legend-text">Python</span>
191
+ </div>
192
+ <div class="legend-item">
193
+ <span style="font-size:1.2em">📊</span>
194
+ <span class="legend-text">CSV</span>
195
+ </div>
196
+ <div class="legend-item">
197
+ <span style="font-size:1.2em">📋</span>
198
+ <span class="legend-text">JSON</span>
199
+ </div>
200
+ <div class="legend-item">
201
+ <span style="font-size:1.2em">⚙️</span>
202
+ <span class="legend-text">Config</span>
203
+ </div>
204
+ <div class="legend-item">
205
+ <div class="legend-icon verified"><i class="fas fa-check"></i></div>
206
+ <span class="legend-text">Verified</span>
207
+ </div>
208
+ <div class="legend-item">
209
+ <div class="legend-icon from-scratch"><i class="fas fa-check-double"></i></div>
210
+ <span class="legend-text">From-scratch</span>
211
+ </div>
212
+ <div class="legend-item">
213
+ <div class="legend-icon failed"><i class="fas fa-times"></i></div>
214
+ <span class="legend-text">Failed</span>
215
+ </div>
216
+ </div>
217
+ <div class="mermaid">
218
+ {mermaid_code}
219
+ </div>
220
+ <div class="footer">
221
+ <div class="footer-brand">
222
+ <i class="fas fa-flask"></i>
223
+ <span>Generated by SciTeX Verify</span>
224
+ </div>
225
+ <div>
226
+ <i class="far fa-clock"></i> Generated at: {timestamp}
227
+ </div>
228
+ </div>
229
+ </div>
230
+ <script>
231
+ mermaid.initialize({{
232
+ startOnLoad: true,
233
+ theme: 'default',
234
+ flowchart: {{
235
+ curve: 'basis',
236
+ padding: 20,
237
+ nodeSpacing: 50,
238
+ rankSpacing: 60
239
+ }}
240
+ }});
241
+ </script>
242
+ </body>
243
+ </html>"""
244
+
245
+
246
+ # EOF
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env python3
2
+ # Timestamp: "2026-02-01 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_viz/_utils.py
4
+ """Utility functions for verification visualization."""
5
+
6
+ from __future__ import annotations
7
+
8
+ from typing import Any, Dict, List
9
+
10
+ from .._chain import VerificationStatus, verify_run
11
+ from ._colors import Colors
12
+ from ._format import format_run_detailed
13
+
14
+
15
+ def print_verification_summary(
16
+ runs: List[Dict[str, Any]],
17
+ show_all: bool = False,
18
+ ) -> None:
19
+ """
20
+ Print a summary of verification status to stdout.
21
+
22
+ Parameters
23
+ ----------
24
+ runs : list of dict
25
+ List of run records
26
+ show_all : bool
27
+ Show all runs (not just problematic ones)
28
+ """
29
+ verified = 0
30
+ mismatched = 0
31
+ missing = 0
32
+
33
+ print(f"\n{Colors.BOLD}Verification Summary{Colors.RESET}")
34
+ print("=" * 50)
35
+
36
+ for run in runs:
37
+ v = verify_run(run["session_id"])
38
+ if v.status == VerificationStatus.VERIFIED:
39
+ verified += 1
40
+ if show_all:
41
+ print(format_run_detailed(v))
42
+ elif v.status == VerificationStatus.MISMATCH:
43
+ mismatched += 1
44
+ print(format_run_detailed(v))
45
+ else:
46
+ missing += 1
47
+ print(format_run_detailed(v))
48
+
49
+ print()
50
+ print(f"{Colors.GREEN}●{Colors.RESET} Verified: {verified}")
51
+ print(f"{Colors.RED}●{Colors.RESET} Mismatch: {mismatched}")
52
+ print(f"{Colors.YELLOW}○{Colors.RESET} Missing: {missing}")
53
+ print()
54
+
55
+
56
+ # EOF
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scitex
3
- Version: 2.16.1
3
+ Version: 2.17.0
4
4
  Summary: A comprehensive Python library for scientific computing and data analysis
5
5
  Project-URL: Homepage, https://github.com/ywatanabe1989/scitex-python
6
6
  Project-URL: Documentation, https://scitex.readthedocs.io
@@ -9,13 +9,13 @@ scitex/errors.py,sha256=Pxk8TKpGRk_QBFVB46H7k1Uxetja0OEdYjJjV_lrxRM,2874
9
9
  scitex/mcp_server.py,sha256=VNjs3N21x3_yAzfR8HhuFJJOvYOBHgvJo4tKDQdQsLE,6081
10
10
  scitex/units.py,sha256=lm2SH4PGXz-22tjUoBQhvKJDKmPD01ykSFWoCaFC384,10356
11
11
  scitex/_mcp_resources/__init__.py,sha256=RomYv2wi1PYC8Z3ymAv46q0HygVErrSlViigLTWEuLY,1368
12
- scitex/_mcp_resources/_cheatsheet.py,sha256=pdwzAB3IEr7UHkFv0D0-TJGeHF6ENtuq6NHeneLgKo8,3883
12
+ scitex/_mcp_resources/_cheatsheet.py,sha256=RQJxq3MEfgUGMaF9pJ_fOw-ul5TSE32lIzxv_kOOyBY,3884
13
13
  scitex/_mcp_resources/_figrecipe.py,sha256=A8oK3FwDqSNYyYI4jwfNJ2yiH_8XVnfFjoGJtuvdDLU,3581
14
14
  scitex/_mcp_resources/_formats.py,sha256=EyNZKtmX6dg6vK1Gk0EmrSSKH5d9yc3RMqZtSP-Op0I,2923
15
- scitex/_mcp_resources/_modules.py,sha256=17LZpOPSmr9XwgGJg2vRgEK596S5FoSYb320vgm9x-k,8702
15
+ scitex/_mcp_resources/_modules.py,sha256=irUo0V5ZLDiOCTw9lm8UoYXJ0jA07Cdxhq6QsdWcH68,8703
16
16
  scitex/_mcp_resources/_scholar.py,sha256=RSYt7j6bcbKtR-tOtvCtdE6J3IS8C925_c34t0Z1Es8,4689
17
17
  scitex/_mcp_resources/_session.py,sha256=lbe9W3cfPOyoq6bPOeN-jB8MwI4DnRWMpxHmpfn97SM,4590
18
- scitex/_mcp_tools/__init__.py,sha256=zFHC9td0__88O41gBlL1Fh07R2m48AYSpUVd_1dZ6Zc,1305
18
+ scitex/_mcp_tools/__init__.py,sha256=w73wqTagrlMAuQxhpUM3PPSvI8Ue04bq7NiuO3e4kuc,1378
19
19
  scitex/_mcp_tools/audio.py,sha256=EZ7lwz_VvrjSl1bhAUXzFgXCD141A6VfrW0_NOYtxvU,4750
20
20
  scitex/_mcp_tools/canvas.py,sha256=KG6JfguRYfatnQyj2rD8NC_ettjvq5IAL9ggBrrXoLM,4877
21
21
  scitex/_mcp_tools/capture.py,sha256=k7pwuB1vdP-VCYjutajEZEsvVAKY-8_mEYrYGWXgOo8,5658
@@ -28,6 +28,7 @@ scitex/_mcp_tools/social.py,sha256=wyyHCybx0tCUfIEGrGYhxj1thlH-dcIeq05TtUP9RFk,8
28
28
  scitex/_mcp_tools/stats.py,sha256=U2pGC0NTfzb0stKGafVNdgZhIYovYi6ti1EoG4f4dn4,6139
29
29
  scitex/_mcp_tools/template.py,sha256=NhfIaVYo7JvssZk_dUvzosvcc-qjnxFr69dV1DmAlgY,3102
30
30
  scitex/_mcp_tools/ui.py,sha256=MC9gA0UapD68S1uPJtWq5Zfua6IDQKV-QL3rkrzrArA,2320
31
+ scitex/_mcp_tools/verify.py,sha256=Iy3WfQytdukdQ7yK8T3fE6XtYfgMhUYsfKzcK0yANro,7541
31
32
  scitex/_mcp_tools/writer.py,sha256=uNbmenb5jMGKJnJ2hzm6JSQof2sYl1GmbCtuYcJL60k,863
32
33
  scitex/ai/README.md,sha256=EdRrmZRt2ARgVKQgKO2YqMktb9MIqZK35RHAu7NskmY,7060
33
34
  scitex/ai/__init__.py,sha256=hHNbcIXyMAjaLqCoLhyKKc6uWc5dz8jVxrfcy6bTS6A,1822
@@ -391,7 +392,7 @@ scitex/cli/config.py,sha256=J-oJL9MJ8Ef0mKxlctlvRDbS7eHeOyb6BImZq_PTVbc,6216
391
392
  scitex/cli/convert.py,sha256=W6Z9gaVBTPD5BhRcHWb-v3AHYcDmqvMUetu5NusP8lE,12587
392
393
  scitex/cli/dataset.py,sha256=Hw8CtlsCbYEYy3H5sWR82gRJZBOU5yKYpLjePEwmKrs,1872
393
394
  scitex/cli/introspect.py,sha256=rzwtZi6xn3jwT__wsNTEx6BcEtkfd4RfJCjVdQ4S4dQ,18659
394
- scitex/cli/main.py,sha256=yvMR3cixQT4hm5I5ZtwnT2IZB_tE0bSxbLiNE02Hk-g,10237
395
+ scitex/cli/main.py,sha256=6OSQNh40bW8iX1COhxcx7SAX8r84vnYqUcwt3sObD6w,10280
395
396
  scitex/cli/mcp.py,sha256=Ebcu9QxVCS_s8QaKdU3IBuexAbF3bmUAR_9xwJ2DqpI,17881
396
397
  scitex/cli/plt.py,sha256=nEIA4-niMAArYNXArQbVBBkyO6DA8sdf8PSzdEnV1bw,11492
397
398
  scitex/cli/repro.py,sha256=kdqp01--8XXFPU_JBqmaCml5O7mqly76basQXQ8IGxs,7628
@@ -401,6 +402,7 @@ scitex/cli/social.py,sha256=fsLuU8MyAaLo8cArh0EuzHz19qo7av3N09sqD-sArho,9612
401
402
  scitex/cli/stats.py,sha256=2n5iz5CXKBqqQk-f-HdOYTs1abYAYMCRPw2O7ZwYFY8,14443
402
403
  scitex/cli/template.py,sha256=omoT2qzWtyqJYqrIqJ74uyDgoQTL667ONSbwSQU4sb8,12015
403
404
  scitex/cli/tex.py,sha256=d_Fh9PXObuyjMgQ_Ap60aXwAztJbY3Pd2SvfV92toBg,9222
405
+ scitex/cli/verify.py,sha256=8bzXa5q-h2voMlDTwFjKtKcfvI9S5lgdFCLCemVugpw,15271
404
406
  scitex/cli/web.py,sha256=_XwnlsOm2MD1eyJVycfsdki4IcDnglXTO5IkZ-eb3xA,13482
405
407
  scitex/cli/writer.py,sha256=lApUnUQrclbufEMwD4m4MKMDg3ZkCBe0kTS9WuH4hsM,1953
406
408
  scitex/cli/scholar/__init__.py,sha256=zrQyQk_ixECQrAmydl9uS7-uuImegFiBf5Gz4ywWltQ,8190
@@ -515,7 +517,7 @@ scitex/dev/_reload.py,sha256=RKmVNcHsdZtDslj11xn02M4HSOKey0Naj-IHlnj4-GM,1361
515
517
  scitex/dev/cv/__init__.py,sha256=_34yhCuVmgrxz7DLFPyvZPtJF-AMGXfvtGv_G-LJop0,1264
516
518
  scitex/dev/cv/_compose.py,sha256=VJFU0igwTjV2wqqdDOWY4cvNJrFtq8F0sERMvzRpjHA,8882
517
519
  scitex/dev/cv/_title_card.py,sha256=42iuVkVyT-452S4gWoxwJU87jIHDJUl_bwrUd4GBrt0,8275
518
- scitex/dev/plt/__init__.py,sha256=Ngm0VIJA3CWdgyGvNTxtPHYbzkR2lZYFWctEJWHfCBo,9855
520
+ scitex/dev/plt/__init__.py,sha256=Il0bLME0jIPOYGwg27bdb_Fqc8y7MdjwRZ3LcdpFR0o,9856
519
521
  scitex/dev/plt/plot_mpl_axhline.py,sha256=ECGTgIGgpU82llOHVqur0gzSl1NUHjvyaB85cZewKW8,707
520
522
  scitex/dev/plt/plot_mpl_axhspan.py,sha256=WetEGSzRbppTvn5VprGNglKuzLMoM8tFXg_N0jMFgFM,704
521
523
  scitex/dev/plt/plot_mpl_axvline.py,sha256=hLCis2B5ruGv9Pr7uJ4W15NcwiCVtchclZK_1PyDirc,700
@@ -644,9 +646,9 @@ scitex/dev/plt/demo_plotters/plot_stx_scatter.py,sha256=yJnZE0aL5Z0armnKyxCgdSIf
644
646
  scitex/dev/plt/demo_plotters/plot_stx_shaded_line.py,sha256=Ss4RD0qxO_uH1h_NL_meSH1-_ZXfOKnV1MAT48tegnI,718
645
647
  scitex/dev/plt/demo_plotters/plot_stx_violin.py,sha256=oEAWE4RwG7SQ3JlVuzfSbTFDF02VRb_vE4qBLU3tMu4,680
646
648
  scitex/dev/plt/demo_plotters/plot_stx_violinplot.py,sha256=wafuzIKs9WJRfXcH4bxxuigqCh75nxcZDfFq-9P1zxA,687
647
- scitex/dev/plt/mpl/get_dir_ax.py,sha256=4Q76V5r0qkSjMoxL1YWZ7b2vBVderdvw9DL8jtskavw,893
648
- scitex/dev/plt/mpl/get_signatures.py,sha256=-o9bjHvcvDUizlQrPIVtk9y_LyW9lh3C8SdLHXwyRNA,4810
649
- scitex/dev/plt/mpl/get_signatures_details.py,sha256=o1qPJqgyhNkUWwYra3y6pfw8ZeCguFKIHhFU4K2KrmY,19196
649
+ scitex/dev/plt/mpl/get_dir_ax.py,sha256=VdiJwyx6RguSR0nf8rTeZDyHbS-X-V2uf6Hh4vh64R8,894
650
+ scitex/dev/plt/mpl/get_signatures.py,sha256=SxenIbpS0OLaGro23yqxYCgaRRiOTkxizjtxdsjB5E0,4811
651
+ scitex/dev/plt/mpl/get_signatures_details.py,sha256=De7-QDhl3bhG8F3jW07jojp2N4SG31q2D4M7yqp4HQI,19197
650
652
  scitex/diagram/README.md,sha256=6NDrGTze_CVJ7qNcQAFjz9i-llQhf9uZVYO34iYqAzw,4836
651
653
  scitex/diagram/__init__.py,sha256=5nFKqI4g9NsSiXlCLMBSr9FtrVVdAv3T1v9_J6WYw-I,1623
652
654
  scitex/diagram/mcp_server.py,sha256=veXwMdUbS63MEikXu0rulsFyIdSP44f6MexDwEj6PuU,848
@@ -768,7 +770,7 @@ scitex/io/_cache.py,sha256=2T10CGtFaxwTGICtFvWWEAhpENlgCMJ1cEqIm2nyTSo,2931
768
770
  scitex/io/_flush.py,sha256=jwrMub6mKqvFPcwAN_fm0fYG6EbVbtl69iYTItG8_eE,562
769
771
  scitex/io/_glob.py,sha256=HS95I9UhxELzhGtawqhgSForIekNBDYdy3335mr46mQ,3541
770
772
  scitex/io/_json2md.py,sha256=zk4fPWbFqZTp8jd62zctR0ci9ZVeR2hMeyhAQcQr1HY,3259
771
- scitex/io/_load.py,sha256=fyu7GsPh1P2Jsrd80mzYvRQXKUcXrNQVMkARA9GrSfw,15014
773
+ scitex/io/_load.py,sha256=kzwsEV3r1dugMRwex59m3E7e-GbvBY3E4lGvtrT3KvU,15261
772
774
  scitex/io/_load_cache.py,sha256=P5MkAAOFzzG9e50XRV4DWdqvsLY1F9d4-512nFYFdd8,7432
773
775
  scitex/io/_load_configs.py,sha256=BUwqz1ngk5FKszaC69nVaY1t2r4YDQlkK2GJfp6Pfpg,5714
774
776
  scitex/io/_metadata.py,sha256=_Xw8YtDWc8T2tWBIwXB6j3fjpUQz2c3M8qM9UhSQXzk,1172
@@ -776,7 +778,7 @@ scitex/io/_mv_to_tmp.py,sha256=oNwVn4WliWX2dFsSnkrA6B7Yn-BNX6O5hHrCbjXWufg,421
776
778
  scitex/io/_path.py,sha256=mqbs2Y2kJP-IHwvdtnJs8vyime9i0QY8bh3IyVEP3qA,7803
777
779
  scitex/io/_qr_utils.py,sha256=4BcTQ97McNTAt5_3TsG5BQcWo6Cc-BTu9BxIy97ofoY,2047
778
780
  scitex/io/_reload.py,sha256=k3FSMO-ts0sAqNVYroVAG5rxk7haIRtyDbPl1ZvLIfw,2780
779
- scitex/io/_save.py,sha256=0hO1KHiGV7fyQZ12vCQrmBiXIDupqwpAG4wNY0mk61M,15584
781
+ scitex/io/_save.py,sha256=yxQUCUI-p4fj-SxpZtP_PdN2U-CwhqZBsRqsL6r426g,15978
780
782
  scitex/io/_load_modules/_H5Explorer.py,sha256=AkFpSMvAQFAuZ1FH6M4nHhH2TAsuxpvdsiihRUjmk54,10281
781
783
  scitex/io/_load_modules/_ZarrExplorer.py,sha256=nh9WaxnVTSU5hK7fsZrj64pCiJBD8vkacBV3TaKpFW0,3320
782
784
  scitex/io/_load_modules/__init__.py,sha256=4uPppcQMBc-7Yjy4k1MF7tvJcHiQyP-xS1L1SE9et80,1177
@@ -2400,12 +2402,17 @@ scitex/security/README.md,sha256=nCpdu1uUPH1i21Pg9JgykHEL5O5xh6I8IrFmvuk0_hc,570
2400
2402
  scitex/security/__init__.py,sha256=mpeRJL-Je6ymi9MUk1Eq13c2mClOShkUO83Mdn55Bms,747
2401
2403
  scitex/security/cli.py,sha256=cmI88lVnHgRaj91-Ig6qUY6_fhWM2bwSoOZiVA2G0vU,3535
2402
2404
  scitex/security/github.py,sha256=7Hpmvfjr7iFfEy16p1nq3cKGAA2XJ995BhkujCTkjfU,11094
2403
- scitex/session/README.md,sha256=Ntrjv2Sn-tViH8Kq1XYDM9kyRF9FafTkruwrVo_Wv6Q,6031
2404
- scitex/session/__init__.py,sha256=XDG47ebIRxTpRXA9A7ytWI-RlzIot0LQzNxRBDI2pPE,1926
2405
- scitex/session/_decorator.py,sha256=RDU8uwUiOo78yYFURoSfP42pae3zft1hfCKpB9uE1E8,20345
2406
- scitex/session/_lifecycle.py,sha256=7KKVYyckAwfzBZ_34fhf9_bpQAYFiBV3sNOaDp9FYBM,25898
2407
- scitex/session/_manager.py,sha256=-0SPAmfVq3LvMGR2oWhqklI5hN8IzJhgBjVVrpfwlvs,2772
2408
- scitex/session/template.py,sha256=R3S61pr2zaNEoRmvlftDEdc6g32gQHjOBDj-T04Chm8,519
2405
+ scitex/session/README.md,sha256=a1eiC2fvcYAPZCuxTvjCiTL-EQFTZZ4Al-hP_XpGXfc,6033
2406
+ scitex/session/__init__.py,sha256=e3DNGUB5bYPqOi68U-wsxhFoQMxBho1oj3aBv8IO0EY,1995
2407
+ scitex/session/_decorator.py,sha256=s9sA9fbRHhMtIdBcqYv6VAdwJBC7-5HB6tb_TUYYLmQ,20663
2408
+ scitex/session/_manager.py,sha256=FOWukNzle1-eJNRNvizp2-42eyCyvzCBWJuJypZYhiU,3754
2409
+ scitex/session/template.py,sha256=HBCEn3Vt-bQHOZ8kBhGwavwrtWVBhBmnldIVxwgMnQk,527
2410
+ scitex/session/_lifecycle/__init__.py,sha256=nwuXQuZdE-exhCdv3-wsv7yLMib3_VkGgFq9GgGRPEA,626
2411
+ scitex/session/_lifecycle/_close.py,sha256=hariScEV1OP61EEsQT3EU6uY8cNWbiu8uyvUIm4YHNA,6658
2412
+ scitex/session/_lifecycle/_config.py,sha256=YqmmpPYwL8fGBG52q5xiVMd9ykaFfTuAzJVwnRZExfI,2866
2413
+ scitex/session/_lifecycle/_matplotlib.py,sha256=tB8zgMaYTeXmBuTyPdsmlBtR4MVprb5S4bQ06ocmWcg,2357
2414
+ scitex/session/_lifecycle/_start.py,sha256=uUtNBK84n0Lq1ptYNEHs-qWuvP5zbsn6ojM-RznaJPk,7561
2415
+ scitex/session/_lifecycle/_utils.py,sha256=166NhQrHifIxOC9nJL-rs_tHZvBMW3Z3cWNsdAsW0es,4948
2409
2416
  scitex/sh/README.md,sha256=6uWWV0SzNqXlgYWBxQ75XIKIUV2lsBLiuxQrgkwxEJk,1406
2410
2417
  scitex/sh/__init__.py,sha256=B-aWVHxSwGdKtBJAonqZGPBhJ92VczftKaQC6nyc_Kc,2684
2411
2418
  scitex/sh/_execute.py,sha256=Sm3oCL2lj66V2qCmzRQ_FmF5DatDJlxH5Gm0H-pvZ5A,6951
@@ -2525,9 +2532,9 @@ scitex/template/_templates/config.py,sha256=s3kjKoLkuAg0_POzAQ-KSAWOiC_eDWW8jVb2
2525
2532
  scitex/template/_templates/diagram.py,sha256=RReJvmX2ZKaDHPFBxUoc4a0sZ9lAX37HwJ7DKEq5k_o,7165
2526
2533
  scitex/template/_templates/io.py,sha256=tk1uOOf6bwsXDyo_yK6LYy6Qw1jbD_0ObEJmEAMzdes,2763
2527
2534
  scitex/template/_templates/module.py,sha256=xCM5P9JY0ErtXtknLxkkLy7QLYObTIxctlKpOxy6Igc,873
2528
- scitex/template/_templates/plt.py,sha256=PTpJ5klkt_w0wJBrVobGoHURSbfxyHqPqQpU02LS0gs,5932
2535
+ scitex/template/_templates/plt.py,sha256=vmVLYzlRQPYagc2-YA8oCj8W9MOIHBCUaoHJdQxLrJo,5933
2529
2536
  scitex/template/_templates/scholar.py,sha256=t4hgVi-FgYotBjj2j_7MZFWrCpYUmjV0Cnz2oLkSKGw,7620
2530
- scitex/template/_templates/session.py,sha256=Hauc8dPiJ6K7RYgCxG56I1lfQ1vCLyM3bHxe4_UzG5E,4282
2537
+ scitex/template/_templates/session.py,sha256=Cw0IUTu-7b-cDXDnnyY_0dQgM7DmtKB4W45rijU2c7s,4283
2531
2538
  scitex/template/_templates/session_minimal.py,sha256=xy6QBUkOtAcK_pwxL6734q8DE-ej-OiefD-UgDi3Qqg,736
2532
2539
  scitex/template/_templates/session_plot.py,sha256=sMl1LvI4VpecgVRd8ryy-hqPRSJvQr2lgW7T5siGtlI,1553
2533
2540
  scitex/template/_templates/session_stats.py,sha256=x7EbxYQ-400pwaJWoVa17lntmJXo6skjdGqDZxTjPg0,2067
@@ -2569,6 +2576,23 @@ scitex/utils/_search.py,sha256=whVnFTysuE9JgYMq6IG7l3Q68dtXb__ZZ0TCsboQPYk,3969
2569
2576
  scitex/utils/_verify_scitex_format.py,sha256=uGf68LWA_ZNlgEqwqi0p9O_W-1rayL5XscNpV-5jPQc,17244
2570
2577
  scitex/utils/_verify_scitex_format_v01.py,sha256=5ibsB_M2bPyAG1yYzZiMZysYCxr5JXuNXIWoWd87k9s,10660
2571
2578
  scitex/utils/template.py,sha256=-Th6cIsAJNVSGS7o1wRtDeWwvLGTLk11Ocv1MQWeaIY,2493
2579
+ scitex/verify/README.md,sha256=4XgXXj2ooNBUUvIvDLhbyPbQ1LAHPllE0SWNHY09lSE,7907
2580
+ scitex/verify/__init__.py,sha256=GTG-j9bHw3WEc5nAAeXyIM0SBOf8VOK_8f1mTxOvYdc,5000
2581
+ scitex/verify/_chain.py,sha256=BZpgczN0b0t7i-3WXNmI1Yf0odmCdOvQz1mrrVyfgok,10038
2582
+ scitex/verify/_db.py,sha256=lezrlc_s0Rd107iHPafP0u69iGIM0MQgBuUAuMb-tzs,18488
2583
+ scitex/verify/_hash.py,sha256=0KLzhNVGZLoenXbXunxCXth4T57y7qNbOJDwKIxPass,4387
2584
+ scitex/verify/_integration.py,sha256=mgBrAYFYf0CWzvitrAu3rcXzPfKY7ECDV5Hqim-9Ayg,3029
2585
+ scitex/verify/_rerun.py,sha256=7Oc3ld-h8_E5pkxWIfy_hzsbQM-ZjWU9NJIJcGDUCbs,7988
2586
+ scitex/verify/_tracker.py,sha256=xTuqS4MDj-K6WjZmBgLENJ7BhrmPPTYV7wbkLk0e6BA,8753
2587
+ scitex/verify/_visualize.py,sha256=62TN6pd_rTiAD95mpHiLBpZe-UfUkOS-fDE2s7e9mG0,1092
2588
+ scitex/verify/_viz/__init__.py,sha256=RBP4peOqcH9YUlJQoIgsLity0CL0ue2Bw-oYrj8MSVU,1486
2589
+ scitex/verify/_viz/_colors.py,sha256=LsXQAucol6MFkxOewLyOElldHEGfX0mMkUDe0KDcI0g,2257
2590
+ scitex/verify/_viz/_format.py,sha256=MFAJapdJ5dFOsAtXbELuQxYbvQtLP16H16v7nC-dprY,9188
2591
+ scitex/verify/_viz/_json.py,sha256=WLBDlveTsJJjpedZ6W0cbu9ILvGatOKEL-Ne2HgtQZY,6044
2592
+ scitex/verify/_viz/_mermaid.py,sha256=2dUKSOmLkEKLTyZLas8E3pa-TyIzPSMkBSedM3Obi84,13811
2593
+ scitex/verify/_viz/_plotly.py,sha256=VHYhU7UciloMXaEw36rupng6AJ9P3gZAJxBuQBUVrhY,5287
2594
+ scitex/verify/_viz/_templates.py,sha256=HDoQ_l2hEHxTPuA5msGV_pqosaE_3wrbzK--787vyLI,7449
2595
+ scitex/verify/_viz/_utils.py,sha256=wFQmLcEvRDvCcTS6--OPB-oLqpfwv2w4-VeSV6dA6aU,1507
2572
2596
  scitex/web/__init__.py,sha256=MwORZLyf0uTiePNJ08KWPQatOA_FbqUiT_nbwY0KBJ4,1167
2573
2597
  scitex/web/_scraping.py,sha256=6jfguvscysZySpuRIQOaq_R8mSOMUloekdbYxKJNY-g,4336
2574
2598
  scitex/web/_search_pubmed.py,sha256=tiRAeV8V5L-0G8pkIheIaY5_46KCYtbSwj4FHFU0RB0,15285
@@ -2576,8 +2600,8 @@ scitex/web/_summarize_url.py,sha256=PpWBk727pjC_yivI_RVNU_RMxjV_jrqlMNaD6kXQAPk,
2576
2600
  scitex/web/download_images.py,sha256=g4sxWzg0ip5Wig7ElPo6fDz5DdXKyJnAsBFwIYoQI6g,9473
2577
2601
  scitex/writer/README.md,sha256=RqUMOJD7wUiQjWoiLSf_hl_Y0IAE3_xPxhlp941zYe4,1299
2578
2602
  scitex/writer/__init__.py,sha256=jQqdIyvQhknySoUAMKreBhAa1KwZ0ieW8SYCppBukts,3301
2579
- scitex-2.16.1.dist-info/METADATA,sha256=Kq0j5a18i7V8Xbe6rlRChbMkU_NC_WgnCfzI4hXx-wQ,26534
2580
- scitex-2.16.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
2581
- scitex-2.16.1.dist-info/entry_points.txt,sha256=ZtDrHnPNMnsSmAnQoCHNmk0xKotNyR2X_YFDDteupW8,497
2582
- scitex-2.16.1.dist-info/licenses/LICENSE,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
2583
- scitex-2.16.1.dist-info/RECORD,,
2603
+ scitex-2.17.0.dist-info/METADATA,sha256=m7BWKnGQz-nsEgjSsDYDHnrDDKKYBDCt0UT3TB5Tdj8,26534
2604
+ scitex-2.17.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
2605
+ scitex-2.17.0.dist-info/entry_points.txt,sha256=ZtDrHnPNMnsSmAnQoCHNmk0xKotNyR2X_YFDDteupW8,497
2606
+ scitex-2.17.0.dist-info/licenses/LICENSE,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
2607
+ scitex-2.17.0.dist-info/RECORD,,