scitex 2.14.0__py3-none-any.whl → 2.15.3__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 (264) hide show
  1. scitex/__init__.py +71 -17
  2. scitex/_env_loader.py +156 -0
  3. scitex/_mcp_resources/__init__.py +37 -0
  4. scitex/_mcp_resources/_cheatsheet.py +135 -0
  5. scitex/_mcp_resources/_figrecipe.py +138 -0
  6. scitex/_mcp_resources/_formats.py +102 -0
  7. scitex/_mcp_resources/_modules.py +337 -0
  8. scitex/_mcp_resources/_session.py +149 -0
  9. scitex/_mcp_tools/__init__.py +4 -0
  10. scitex/_mcp_tools/audio.py +66 -0
  11. scitex/_mcp_tools/diagram.py +11 -95
  12. scitex/_mcp_tools/introspect.py +210 -0
  13. scitex/_mcp_tools/plt.py +260 -305
  14. scitex/_mcp_tools/scholar.py +74 -0
  15. scitex/_mcp_tools/social.py +27 -0
  16. scitex/_mcp_tools/template.py +24 -0
  17. scitex/_mcp_tools/writer.py +17 -210
  18. scitex/ai/_gen_ai/_PARAMS.py +10 -7
  19. scitex/ai/classification/reporters/_SingleClassificationReporter.py +45 -1603
  20. scitex/ai/classification/reporters/_mixins/__init__.py +36 -0
  21. scitex/ai/classification/reporters/_mixins/_constants.py +67 -0
  22. scitex/ai/classification/reporters/_mixins/_cv_summary.py +387 -0
  23. scitex/ai/classification/reporters/_mixins/_feature_importance.py +119 -0
  24. scitex/ai/classification/reporters/_mixins/_metrics.py +275 -0
  25. scitex/ai/classification/reporters/_mixins/_plotting.py +179 -0
  26. scitex/ai/classification/reporters/_mixins/_reports.py +153 -0
  27. scitex/ai/classification/reporters/_mixins/_storage.py +160 -0
  28. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +30 -1550
  29. scitex/ai/classification/timeseries/_sliding_window_core.py +467 -0
  30. scitex/ai/classification/timeseries/_sliding_window_plotting.py +369 -0
  31. scitex/audio/README.md +40 -36
  32. scitex/audio/__init__.py +129 -61
  33. scitex/audio/_branding.py +185 -0
  34. scitex/audio/_mcp/__init__.py +32 -0
  35. scitex/audio/_mcp/handlers.py +59 -6
  36. scitex/audio/_mcp/speak_handlers.py +238 -0
  37. scitex/audio/_relay.py +225 -0
  38. scitex/audio/_tts.py +18 -10
  39. scitex/audio/engines/base.py +17 -10
  40. scitex/audio/engines/elevenlabs_engine.py +7 -2
  41. scitex/audio/mcp_server.py +228 -75
  42. scitex/canvas/README.md +1 -1
  43. scitex/canvas/editor/_dearpygui/__init__.py +25 -0
  44. scitex/canvas/editor/_dearpygui/_editor.py +147 -0
  45. scitex/canvas/editor/_dearpygui/_handlers.py +476 -0
  46. scitex/canvas/editor/_dearpygui/_panels/__init__.py +17 -0
  47. scitex/canvas/editor/_dearpygui/_panels/_control.py +119 -0
  48. scitex/canvas/editor/_dearpygui/_panels/_element_controls.py +190 -0
  49. scitex/canvas/editor/_dearpygui/_panels/_preview.py +43 -0
  50. scitex/canvas/editor/_dearpygui/_panels/_sections.py +390 -0
  51. scitex/canvas/editor/_dearpygui/_plotting.py +187 -0
  52. scitex/canvas/editor/_dearpygui/_rendering.py +504 -0
  53. scitex/canvas/editor/_dearpygui/_selection.py +295 -0
  54. scitex/canvas/editor/_dearpygui/_state.py +93 -0
  55. scitex/canvas/editor/_dearpygui/_utils.py +61 -0
  56. scitex/canvas/editor/flask_editor/_core/__init__.py +27 -0
  57. scitex/canvas/editor/flask_editor/_core/_bbox_extraction.py +200 -0
  58. scitex/canvas/editor/flask_editor/_core/_editor.py +173 -0
  59. scitex/canvas/editor/flask_editor/_core/_export_helpers.py +353 -0
  60. scitex/canvas/editor/flask_editor/_core/_routes_basic.py +190 -0
  61. scitex/canvas/editor/flask_editor/_core/_routes_export.py +332 -0
  62. scitex/canvas/editor/flask_editor/_core/_routes_panels.py +252 -0
  63. scitex/canvas/editor/flask_editor/_core/_routes_save.py +218 -0
  64. scitex/canvas/editor/flask_editor/_core.py +25 -1684
  65. scitex/canvas/editor/flask_editor/templates/__init__.py +32 -70
  66. scitex/cli/__init__.py +38 -43
  67. scitex/cli/audio.py +160 -41
  68. scitex/cli/capture.py +133 -20
  69. scitex/cli/introspect.py +488 -0
  70. scitex/cli/main.py +200 -109
  71. scitex/cli/mcp.py +60 -34
  72. scitex/cli/plt.py +414 -0
  73. scitex/cli/repro.py +15 -8
  74. scitex/cli/resource.py +15 -8
  75. scitex/cli/scholar/__init__.py +154 -8
  76. scitex/cli/scholar/_crossref_scitex.py +296 -0
  77. scitex/cli/scholar/_fetch.py +25 -3
  78. scitex/cli/social.py +355 -0
  79. scitex/cli/stats.py +136 -11
  80. scitex/cli/template.py +129 -12
  81. scitex/cli/tex.py +15 -8
  82. scitex/cli/writer.py +49 -299
  83. scitex/cloud/__init__.py +41 -2
  84. scitex/config/README.md +1 -1
  85. scitex/config/__init__.py +16 -2
  86. scitex/config/_env_registry.py +256 -0
  87. scitex/context/__init__.py +22 -0
  88. scitex/dev/__init__.py +20 -1
  89. scitex/diagram/__init__.py +42 -19
  90. scitex/diagram/mcp_server.py +13 -125
  91. scitex/gen/__init__.py +50 -14
  92. scitex/gen/_list_packages.py +4 -4
  93. scitex/introspect/__init__.py +82 -0
  94. scitex/introspect/_call_graph.py +303 -0
  95. scitex/introspect/_class_hierarchy.py +163 -0
  96. scitex/introspect/_core.py +41 -0
  97. scitex/introspect/_docstring.py +131 -0
  98. scitex/introspect/_examples.py +113 -0
  99. scitex/introspect/_imports.py +271 -0
  100. scitex/{gen/_inspect_module.py → introspect/_list_api.py} +48 -56
  101. scitex/introspect/_mcp/__init__.py +41 -0
  102. scitex/introspect/_mcp/handlers.py +233 -0
  103. scitex/introspect/_members.py +155 -0
  104. scitex/introspect/_resolve.py +89 -0
  105. scitex/introspect/_signature.py +131 -0
  106. scitex/introspect/_source.py +80 -0
  107. scitex/introspect/_type_hints.py +172 -0
  108. scitex/io/_save.py +1 -2
  109. scitex/io/bundle/README.md +1 -1
  110. scitex/logging/_formatters.py +19 -9
  111. scitex/mcp_server.py +98 -5
  112. scitex/os/__init__.py +4 -0
  113. scitex/{gen → os}/_check_host.py +4 -5
  114. scitex/plt/__init__.py +245 -550
  115. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +5 -10
  116. scitex/plt/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
  117. scitex/plt/gallery/README.md +1 -1
  118. scitex/plt/utils/_hitmap/__init__.py +82 -0
  119. scitex/plt/utils/_hitmap/_artist_extraction.py +343 -0
  120. scitex/plt/utils/_hitmap/_color_application.py +346 -0
  121. scitex/plt/utils/_hitmap/_color_conversion.py +121 -0
  122. scitex/plt/utils/_hitmap/_constants.py +40 -0
  123. scitex/plt/utils/_hitmap/_hitmap_core.py +334 -0
  124. scitex/plt/utils/_hitmap/_path_extraction.py +357 -0
  125. scitex/plt/utils/_hitmap/_query.py +113 -0
  126. scitex/plt/utils/_hitmap.py +46 -1616
  127. scitex/plt/utils/_metadata/__init__.py +80 -0
  128. scitex/plt/utils/_metadata/_artists/__init__.py +25 -0
  129. scitex/plt/utils/_metadata/_artists/_base.py +195 -0
  130. scitex/plt/utils/_metadata/_artists/_collections.py +356 -0
  131. scitex/plt/utils/_metadata/_artists/_extract.py +57 -0
  132. scitex/plt/utils/_metadata/_artists/_images.py +80 -0
  133. scitex/plt/utils/_metadata/_artists/_lines.py +261 -0
  134. scitex/plt/utils/_metadata/_artists/_patches.py +247 -0
  135. scitex/plt/utils/_metadata/_artists/_text.py +106 -0
  136. scitex/plt/utils/_metadata/_csv.py +416 -0
  137. scitex/plt/utils/_metadata/_detect.py +225 -0
  138. scitex/plt/utils/_metadata/_legend.py +127 -0
  139. scitex/plt/utils/_metadata/_rounding.py +117 -0
  140. scitex/plt/utils/_metadata/_verification.py +202 -0
  141. scitex/schema/README.md +1 -1
  142. scitex/scholar/__init__.py +8 -0
  143. scitex/scholar/_mcp/crossref_handlers.py +265 -0
  144. scitex/scholar/core/Scholar.py +63 -1700
  145. scitex/scholar/core/_mixins/__init__.py +36 -0
  146. scitex/scholar/core/_mixins/_enrichers.py +270 -0
  147. scitex/scholar/core/_mixins/_library_handlers.py +100 -0
  148. scitex/scholar/core/_mixins/_loaders.py +103 -0
  149. scitex/scholar/core/_mixins/_pdf_download.py +375 -0
  150. scitex/scholar/core/_mixins/_pipeline.py +312 -0
  151. scitex/scholar/core/_mixins/_project_handlers.py +125 -0
  152. scitex/scholar/core/_mixins/_savers.py +69 -0
  153. scitex/scholar/core/_mixins/_search.py +103 -0
  154. scitex/scholar/core/_mixins/_services.py +88 -0
  155. scitex/scholar/core/_mixins/_url_finding.py +105 -0
  156. scitex/scholar/crossref_scitex.py +367 -0
  157. scitex/scholar/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
  158. scitex/scholar/examples/00_run_all.sh +120 -0
  159. scitex/scholar/jobs/_executors.py +27 -3
  160. scitex/scholar/pdf_download/ScholarPDFDownloader.py +38 -416
  161. scitex/scholar/pdf_download/_cli.py +154 -0
  162. scitex/scholar/pdf_download/strategies/__init__.py +11 -8
  163. scitex/scholar/pdf_download/strategies/manual_download_fallback.py +80 -3
  164. scitex/scholar/pipelines/ScholarPipelineBibTeX.py +73 -121
  165. scitex/scholar/pipelines/ScholarPipelineParallel.py +80 -138
  166. scitex/scholar/pipelines/ScholarPipelineSingle.py +43 -63
  167. scitex/scholar/pipelines/_single_steps.py +71 -36
  168. scitex/scholar/storage/_LibraryManager.py +97 -1695
  169. scitex/scholar/storage/_mixins/__init__.py +30 -0
  170. scitex/scholar/storage/_mixins/_bibtex_handlers.py +128 -0
  171. scitex/scholar/storage/_mixins/_library_operations.py +218 -0
  172. scitex/scholar/storage/_mixins/_metadata_conversion.py +226 -0
  173. scitex/scholar/storage/_mixins/_paper_saving.py +456 -0
  174. scitex/scholar/storage/_mixins/_resolution.py +376 -0
  175. scitex/scholar/storage/_mixins/_storage_helpers.py +121 -0
  176. scitex/scholar/storage/_mixins/_symlink_handlers.py +226 -0
  177. scitex/security/README.md +3 -3
  178. scitex/session/README.md +1 -1
  179. scitex/session/__init__.py +26 -7
  180. scitex/session/_decorator.py +1 -1
  181. scitex/sh/README.md +1 -1
  182. scitex/sh/__init__.py +7 -4
  183. scitex/social/__init__.py +155 -0
  184. scitex/social/docs/EXTERNAL_PACKAGE_BRANDING.md +149 -0
  185. scitex/stats/_mcp/_handlers/__init__.py +31 -0
  186. scitex/stats/_mcp/_handlers/_corrections.py +113 -0
  187. scitex/stats/_mcp/_handlers/_descriptive.py +78 -0
  188. scitex/stats/_mcp/_handlers/_effect_size.py +106 -0
  189. scitex/stats/_mcp/_handlers/_format.py +94 -0
  190. scitex/stats/_mcp/_handlers/_normality.py +110 -0
  191. scitex/stats/_mcp/_handlers/_posthoc.py +224 -0
  192. scitex/stats/_mcp/_handlers/_power.py +247 -0
  193. scitex/stats/_mcp/_handlers/_recommend.py +102 -0
  194. scitex/stats/_mcp/_handlers/_run_test.py +279 -0
  195. scitex/stats/_mcp/_handlers/_stars.py +48 -0
  196. scitex/stats/_mcp/handlers.py +19 -1171
  197. scitex/stats/auto/_stat_style.py +175 -0
  198. scitex/stats/auto/_style_definitions.py +411 -0
  199. scitex/stats/auto/_styles.py +22 -620
  200. scitex/stats/descriptive/__init__.py +11 -8
  201. scitex/stats/descriptive/_ci.py +39 -0
  202. scitex/stats/power/_power.py +15 -4
  203. scitex/str/__init__.py +2 -1
  204. scitex/str/_title_case.py +63 -0
  205. scitex/template/README.md +1 -1
  206. scitex/template/__init__.py +25 -10
  207. scitex/template/_code_templates.py +147 -0
  208. scitex/template/_mcp/handlers.py +81 -0
  209. scitex/template/_mcp/tool_schemas.py +55 -0
  210. scitex/template/_templates/__init__.py +51 -0
  211. scitex/template/_templates/audio.py +233 -0
  212. scitex/template/_templates/canvas.py +312 -0
  213. scitex/template/_templates/capture.py +268 -0
  214. scitex/template/_templates/config.py +43 -0
  215. scitex/template/_templates/diagram.py +294 -0
  216. scitex/template/_templates/io.py +107 -0
  217. scitex/template/_templates/module.py +53 -0
  218. scitex/template/_templates/plt.py +202 -0
  219. scitex/template/_templates/scholar.py +267 -0
  220. scitex/template/_templates/session.py +130 -0
  221. scitex/template/_templates/session_minimal.py +43 -0
  222. scitex/template/_templates/session_plot.py +67 -0
  223. scitex/template/_templates/session_stats.py +77 -0
  224. scitex/template/_templates/stats.py +323 -0
  225. scitex/template/_templates/writer.py +296 -0
  226. scitex/template/clone_writer_directory.py +5 -5
  227. scitex/ui/_backends/_email.py +10 -2
  228. scitex/ui/_backends/_webhook.py +5 -1
  229. scitex/web/_search_pubmed.py +10 -6
  230. scitex/writer/README.md +1 -1
  231. scitex/writer/__init__.py +43 -34
  232. scitex/writer/_mcp/handlers.py +11 -744
  233. scitex/writer/_mcp/tool_schemas.py +5 -335
  234. scitex-2.15.3.dist-info/METADATA +667 -0
  235. {scitex-2.14.0.dist-info → scitex-2.15.3.dist-info}/RECORD +241 -120
  236. scitex/canvas/editor/flask_editor/templates/_scripts.py +0 -4933
  237. scitex/canvas/editor/flask_editor/templates/_styles.py +0 -1658
  238. scitex/diagram/_compile.py +0 -312
  239. scitex/diagram/_diagram.py +0 -355
  240. scitex/diagram/_mcp/__init__.py +0 -4
  241. scitex/diagram/_mcp/handlers.py +0 -400
  242. scitex/diagram/_mcp/tool_schemas.py +0 -157
  243. scitex/diagram/_presets.py +0 -173
  244. scitex/diagram/_schema.py +0 -182
  245. scitex/diagram/_split.py +0 -278
  246. scitex/gen/_ci.py +0 -12
  247. scitex/gen/_title_case.py +0 -89
  248. scitex/plt/_mcp/__init__.py +0 -4
  249. scitex/plt/_mcp/_handlers_annotation.py +0 -102
  250. scitex/plt/_mcp/_handlers_figure.py +0 -195
  251. scitex/plt/_mcp/_handlers_plot.py +0 -252
  252. scitex/plt/_mcp/_handlers_style.py +0 -219
  253. scitex/plt/_mcp/handlers.py +0 -74
  254. scitex/plt/_mcp/tool_schemas.py +0 -497
  255. scitex/plt/mcp_server.py +0 -231
  256. scitex/scholar/examples/SUGGESTIONS.md +0 -865
  257. scitex/scholar/examples/dev.py +0 -38
  258. scitex-2.14.0.dist-info/METADATA +0 -1238
  259. /scitex/{gen → context}/_detect_environment.py +0 -0
  260. /scitex/{gen → context}/_get_notebook_path.py +0 -0
  261. /scitex/{gen/_shell.py → sh/_shell_legacy.py} +0 -0
  262. {scitex-2.14.0.dist-info → scitex-2.15.3.dist-info}/WHEEL +0 -0
  263. {scitex-2.14.0.dist-info → scitex-2.15.3.dist-info}/entry_points.txt +0 -0
  264. {scitex-2.14.0.dist-info → scitex-2.15.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,219 +0,0 @@
1
- #!/usr/bin/env python3
2
- # Timestamp: 2026-01-13
3
- # File: src/scitex/plt/_mcp/_handlers_style.py
4
-
5
- """Style-related MCP handlers for SciTeX plt module."""
6
-
7
- from __future__ import annotations
8
-
9
- from typing import Optional
10
-
11
-
12
- async def get_style_handler() -> dict:
13
- """Get current SciTeX publication style configuration."""
14
- try:
15
- from scitex.plt.styles.presets import get_style
16
-
17
- style = get_style()
18
-
19
- return {
20
- "success": True,
21
- "style": style,
22
- "description": "Current SciTeX publication style configuration",
23
- }
24
- except Exception as e:
25
- return {"success": False, "error": str(e)}
26
-
27
-
28
- async def set_style_handler(
29
- axes_width_mm: Optional[float] = None,
30
- axes_height_mm: Optional[float] = None,
31
- margin_left_mm: Optional[float] = None,
32
- margin_right_mm: Optional[float] = None,
33
- margin_top_mm: Optional[float] = None,
34
- margin_bottom_mm: Optional[float] = None,
35
- dpi: Optional[int] = None,
36
- axis_font_size_pt: Optional[float] = None,
37
- tick_font_size_pt: Optional[float] = None,
38
- title_font_size_pt: Optional[float] = None,
39
- legend_font_size_pt: Optional[float] = None,
40
- trace_thickness_mm: Optional[float] = None,
41
- reset: bool = False,
42
- ) -> dict:
43
- """Set global style overrides for publication figures."""
44
- try:
45
- from scitex.plt.styles.presets import get_style, set_style
46
-
47
- if reset:
48
- set_style(None)
49
-
50
- style_updates = {}
51
- if axes_width_mm is not None:
52
- style_updates["axes_width_mm"] = axes_width_mm
53
- if axes_height_mm is not None:
54
- style_updates["axes_height_mm"] = axes_height_mm
55
- if margin_left_mm is not None:
56
- style_updates["margin_left_mm"] = margin_left_mm
57
- if margin_right_mm is not None:
58
- style_updates["margin_right_mm"] = margin_right_mm
59
- if margin_top_mm is not None:
60
- style_updates["margin_top_mm"] = margin_top_mm
61
- if margin_bottom_mm is not None:
62
- style_updates["margin_bottom_mm"] = margin_bottom_mm
63
- if dpi is not None:
64
- style_updates["dpi"] = dpi
65
- if axis_font_size_pt is not None:
66
- style_updates["axis_font_size_pt"] = axis_font_size_pt
67
- if tick_font_size_pt is not None:
68
- style_updates["tick_font_size_pt"] = tick_font_size_pt
69
- if title_font_size_pt is not None:
70
- style_updates["title_font_size_pt"] = title_font_size_pt
71
- if legend_font_size_pt is not None:
72
- style_updates["legend_font_size_pt"] = legend_font_size_pt
73
- if trace_thickness_mm is not None:
74
- style_updates["trace_thickness_mm"] = trace_thickness_mm
75
-
76
- if style_updates:
77
- set_style(style_updates)
78
-
79
- final_style = get_style()
80
-
81
- return {
82
- "success": True,
83
- "updated_parameters": list(style_updates.keys()),
84
- "style": final_style,
85
- "message": f"Updated {len(style_updates)} style parameters",
86
- }
87
- except Exception as e:
88
- return {"success": False, "error": str(e)}
89
-
90
-
91
- async def list_presets_handler() -> dict:
92
- """List available publication style presets."""
93
- try:
94
- presets = [
95
- {
96
- "name": "SCITEX_STYLE",
97
- "description": "Default SciTeX publication style",
98
- "axes_size_mm": "40x28",
99
- "dpi": 300,
100
- "font_sizes_pt": {"axis": 7, "tick": 7, "title": 8, "legend": 6},
101
- },
102
- {
103
- "name": "nature",
104
- "description": "Nature journal style (single column)",
105
- "axes_size_mm": "89x60",
106
- "dpi": 300,
107
- "notes": "Single column width: 89mm",
108
- },
109
- {
110
- "name": "science",
111
- "description": "Science journal style",
112
- "axes_size_mm": "85x60",
113
- "dpi": 300,
114
- "notes": "Single column width: 85mm",
115
- },
116
- {
117
- "name": "pnas",
118
- "description": "PNAS journal style",
119
- "axes_size_mm": "87x60",
120
- "dpi": 300,
121
- "notes": "Single column width: 8.7cm",
122
- },
123
- {
124
- "name": "ieee",
125
- "description": "IEEE journal style",
126
- "axes_size_mm": "88x60",
127
- "dpi": 300,
128
- "notes": "Single column width: 3.5 inches",
129
- },
130
- ]
131
-
132
- return {
133
- "success": True,
134
- "count": len(presets),
135
- "presets": presets,
136
- "usage": "Use set_style() to apply custom dimensions",
137
- }
138
- except Exception as e:
139
- return {"success": False, "error": str(e)}
140
-
141
-
142
- async def get_dpi_settings_handler() -> dict:
143
- """Get DPI settings for different output contexts."""
144
- try:
145
- from scitex.plt.styles.presets import (
146
- get_default_dpi,
147
- get_display_dpi,
148
- get_preview_dpi,
149
- )
150
-
151
- return {
152
- "success": True,
153
- "dpi_settings": {
154
- "save": {
155
- "value": get_default_dpi(),
156
- "description": "Publication-quality output (high resolution)",
157
- },
158
- "display": {
159
- "value": get_display_dpi(),
160
- "description": "Screen display (lower resolution for speed)",
161
- },
162
- "preview": {
163
- "value": get_preview_dpi(),
164
- "description": "Editor previews and thumbnails",
165
- },
166
- },
167
- "recommendation": "Use 'save' DPI for final figures, 'display' for iterating",
168
- }
169
- except Exception as e:
170
- return {"success": False, "error": str(e)}
171
-
172
-
173
- async def get_color_palette_handler(format: str = "hex") -> dict:
174
- """Get the SciTeX color palette."""
175
- try:
176
- from scitex.plt import color as color_module
177
-
178
- params = getattr(color_module, "PARAMS", {})
179
- rgba_cycle = params.get("RGBA_NORM_FOR_CYCLE", {})
180
-
181
- colors = {}
182
- for name, rgba in rgba_cycle.items():
183
- if format == "hex":
184
- r, g, b = int(rgba[0] * 255), int(rgba[1] * 255), int(rgba[2] * 255)
185
- colors[name] = f"#{r:02x}{g:02x}{b:02x}"
186
- elif format == "rgb":
187
- colors[name] = {
188
- "r": int(rgba[0] * 255),
189
- "g": int(rgba[1] * 255),
190
- "b": int(rgba[2] * 255),
191
- }
192
- else: # rgba
193
- colors[name] = {
194
- "r": rgba[0],
195
- "g": rgba[1],
196
- "b": rgba[2],
197
- "a": rgba[3] if len(rgba) > 3 else 1.0,
198
- }
199
-
200
- return {
201
- "success": True,
202
- "format": format,
203
- "count": len(colors),
204
- "colors": colors,
205
- "usage": "Colors are used in matplotlib's default color cycle",
206
- }
207
- except Exception as e:
208
- return {"success": False, "error": str(e)}
209
-
210
-
211
- __all__ = [
212
- "get_style_handler",
213
- "set_style_handler",
214
- "list_presets_handler",
215
- "get_dpi_settings_handler",
216
- "get_color_palette_handler",
217
- ]
218
-
219
- # EOF
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env python3
2
- # Timestamp: 2026-01-13
3
- # File: src/scitex/plt/_mcp/handlers.py
4
-
5
- """MCP Handler implementations for SciTeX plt module.
6
-
7
- Provides async handlers for publication-quality plotting operations.
8
- This module re-exports handlers from submodules for backward compatibility.
9
- """
10
-
11
- from __future__ import annotations
12
-
13
- # Re-export annotation handlers
14
- from ._handlers_annotation import (
15
- add_panel_label_handler,
16
- add_significance_handler,
17
- )
18
-
19
- # Re-export figure registry and helper
20
- # Re-export figure management handlers
21
- from ._handlers_figure import (
22
- _FIGURE_REGISTRY,
23
- _get_axes,
24
- close_figure_handler,
25
- create_figure_handler,
26
- crop_figure_handler,
27
- save_figure_handler,
28
- )
29
-
30
- # Re-export plot handlers
31
- from ._handlers_plot import (
32
- plot_bar_handler,
33
- plot_box_handler,
34
- plot_line_handler,
35
- plot_scatter_handler,
36
- plot_violin_handler,
37
- )
38
-
39
- # Re-export style handlers
40
- from ._handlers_style import (
41
- get_color_palette_handler,
42
- get_dpi_settings_handler,
43
- get_style_handler,
44
- list_presets_handler,
45
- set_style_handler,
46
- )
47
-
48
- __all__ = [
49
- # Style handlers
50
- "get_style_handler",
51
- "set_style_handler",
52
- "list_presets_handler",
53
- "get_dpi_settings_handler",
54
- "get_color_palette_handler",
55
- # Figure management
56
- "create_figure_handler",
57
- "crop_figure_handler",
58
- "save_figure_handler",
59
- "close_figure_handler",
60
- # Plot handlers
61
- "plot_bar_handler",
62
- "plot_scatter_handler",
63
- "plot_line_handler",
64
- "plot_box_handler",
65
- "plot_violin_handler",
66
- # Annotation handlers
67
- "add_significance_handler",
68
- "add_panel_label_handler",
69
- # Internal (for submodules)
70
- "_FIGURE_REGISTRY",
71
- "_get_axes",
72
- ]
73
-
74
- # EOF