scitex 2.10.2__py3-none-any.whl → 2.11.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 (363) hide show
  1. scitex/__init__.py +1 -4
  2. scitex/__version__.py +1 -1
  3. scitex/_install_guide.py +14 -2
  4. scitex/bridge/_figrecipe.py +1 -1
  5. scitex/bridge/_helpers.py +1 -1
  6. scitex/bridge/_plt_vis.py +1 -1
  7. scitex/bridge/_stats_plt.py +1 -1
  8. scitex/bridge/_stats_vis.py +2 -2
  9. scitex/{fig → canvas}/__init__.py +84 -96
  10. scitex/{fig → canvas}/backend/_parser.py +1 -1
  11. scitex/{fig → canvas}/canvas.py +13 -14
  12. scitex/{fts/_fig/_editor → canvas/editor}/_defaults.py +2 -2
  13. scitex/{fig → canvas}/editor/edit/__init__.py +11 -14
  14. scitex/{fig → canvas}/editor/edit/bundle_resolver.py +56 -48
  15. scitex/{fig → canvas}/editor/edit/editor_launcher.py +79 -26
  16. scitex/{fts/_fig/_editor/_cui/_panel_loader.py → canvas/editor/edit/panel_loader.py} +8 -8
  17. scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_bbox.py +2 -1
  18. scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_core.py +84 -84
  19. scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_renderer.py +7 -6
  20. scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/static/css/features/canvas.css +2 -2
  21. scitex/{fig → canvas}/editor/flask_editor/static/css/features/panel-grid.css +1 -1
  22. scitex/{fig → canvas}/editor/flask_editor/static/js/core/api.js +3 -4
  23. scitex/{fig → canvas}/editor/flask_editor/static/js/editor/preview.js +5 -5
  24. scitex/{fig → canvas}/editor/flask_editor/templates/_html.py +3 -3
  25. scitex/{fig → canvas}/editor/flask_editor/templates/_scripts.py +10 -10
  26. scitex/{fig → canvas}/editor/flask_editor/templates/_styles.py +3 -3
  27. scitex/{fig → canvas}/io/__init__.py +32 -38
  28. scitex/{fig → canvas}/io/_bundle.py +217 -154
  29. scitex/{fig → canvas}/io/_canvas.py +1 -1
  30. scitex/{fig → canvas}/io/_data.py +1 -1
  31. scitex/{fig → canvas}/io/_export.py +1 -1
  32. scitex/{fig → canvas}/io/_load.py +1 -1
  33. scitex/{fig → canvas}/io/_panel.py +1 -1
  34. scitex/{fig → canvas}/io/_save.py +1 -1
  35. scitex/{fig → canvas}/model/__init__.py +1 -1
  36. scitex/{fig → canvas}/model/_annotations.py +1 -1
  37. scitex/{fig → canvas}/model/_axes.py +1 -1
  38. scitex/{fig → canvas}/model/_figure.py +1 -1
  39. scitex/{fig → canvas}/model/_guides.py +1 -1
  40. scitex/{fig → canvas}/model/_plot.py +1 -1
  41. scitex/{fig → canvas}/model/_styles.py +1 -1
  42. scitex/{fig → canvas}/utils/__init__.py +1 -1
  43. scitex/cli/convert.py +10 -6
  44. scitex/diagram/README.md +7 -7
  45. scitex/io/__init__.py +7 -19
  46. scitex/io/_load.py +15 -19
  47. scitex/io/_load_modules/_canvas.py +2 -2
  48. scitex/io/_load_modules/_con.py +5 -5
  49. scitex/io/_load_modules/_eeg.py +16 -12
  50. scitex/io/_save.py +11 -16
  51. scitex/io/_save_modules/__init__.py +6 -10
  52. scitex/io/_save_modules/_canvas.py +3 -3
  53. scitex/io/_save_modules/_plot_bundle.py +112 -0
  54. scitex/io/_save_modules/{_pltz_stx.py → _plot_scitex.py} +7 -7
  55. scitex/io/_save_modules/_stx_bundle.py +16 -16
  56. scitex/io/bundle/README.md +89 -80
  57. scitex/{fts/_bundle/_FTS.py → io/bundle/_Bundle.py} +197 -95
  58. scitex/io/bundle/__init__.py +67 -35
  59. scitex/{fts/_bundle → io/bundle}/_children.py +32 -40
  60. scitex/io/bundle/_core.py +184 -97
  61. scitex/{fts/_bundle/_dataclasses/_Node.py → io/bundle/_dataclasses/_Spec.py} +29 -23
  62. scitex/{fts/_bundle/_dataclasses/_NodeRefs.py → io/bundle/_dataclasses/_SpecRefs.py} +6 -6
  63. scitex/{fts/_bundle → io/bundle}/_dataclasses/__init__.py +4 -4
  64. scitex/{fts/_bundle → io/bundle}/_loader.py +19 -19
  65. scitex/io/bundle/_manifest.py +99 -0
  66. scitex/{fts/_bundle → io/bundle}/_mpl_helpers.py +119 -28
  67. scitex/io/bundle/_nested.py +113 -100
  68. scitex/{fts/_bundle → io/bundle}/_saver.py +13 -14
  69. scitex/{fts/_bundle → io/bundle}/_storage.py +3 -3
  70. scitex/io/bundle/_types.py +41 -16
  71. scitex/{fts/_bundle → io/bundle}/_validation.py +20 -18
  72. scitex/io/bundle/_zip.py +21 -31
  73. scitex/{fts/_kinds → io/bundle/kinds}/_plot/_backend/_parser.py +1 -1
  74. scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Annotations.py +1 -1
  75. scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Axes.py +1 -1
  76. scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Figure.py +1 -1
  77. scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_Guides.py +1 -1
  78. scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Plot.py +1 -1
  79. scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_Styles.py +1 -1
  80. scitex/{fts/_kinds → io/bundle/kinds}/_plot/_utils/_plot_layout.py +1 -1
  81. scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/__init__.py +1 -1
  82. scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_editor/_app.py +1 -1
  83. scitex/{fts/_tables → io/bundle/kinds/_table}/_latex/_export.py +1 -1
  84. scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_figure_exporter.py +1 -1
  85. scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_table_exporter.py +1 -1
  86. scitex/io/bundle/schemas/__init__.py +30 -0
  87. scitex/parallel/_run.py +5 -4
  88. scitex/path/_find.py +60 -83
  89. scitex/path/_get_module_path.py +23 -21
  90. scitex/path/_get_spath.py +6 -27
  91. scitex/path/_getsize.py +23 -9
  92. scitex/path/_increment_version.py +31 -38
  93. scitex/path/_mk_spath.py +26 -29
  94. scitex/path/_path.py +5 -12
  95. scitex/path/_split.py +27 -15
  96. scitex/path/_this_path.py +23 -9
  97. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +2 -1
  98. scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +2 -2
  99. scitex/plt/gallery/_generate.py +76 -50
  100. scitex/plt/io/__init__.py +17 -19
  101. scitex/plt/io/_bundle.py +99 -52
  102. scitex/plt/io/_layered_bundle.py +303 -168
  103. scitex/plt/utils/_csv_column_naming.py +250 -118
  104. scitex/schema/__init__.py +69 -73
  105. scitex/schema/_canvas.py +1 -1
  106. scitex/schema/_stats.py +2 -2
  107. scitex/stats/__init__.py +30 -33
  108. scitex/stats/_schema.py +1 -1
  109. scitex/stats/io/__init__.py +10 -11
  110. scitex/stats/io/_bundle.py +16 -16
  111. {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/METADATA +191 -72
  112. {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/RECORD +237 -360
  113. scitex/fig/editor/_defaults.py +0 -300
  114. scitex/fig/editor/edit/panel_loader.py +0 -232
  115. scitex/fig/editor/flask_editor/_bbox.py +0 -1299
  116. scitex/fig/editor/flask_editor/_core.py +0 -1429
  117. scitex/fig/editor/flask_editor/_renderer.py +0 -813
  118. scitex/fig/editor/flask_editor/static/css/features/canvas.css +0 -176
  119. scitex/fts/README.md +0 -262
  120. scitex/fts/TODO.md +0 -66
  121. scitex/fts/__init__.py +0 -90
  122. scitex/fts/_bundle/README_IN_BUNDLE.md +0 -102
  123. scitex/fts/_bundle/__init__.py +0 -38
  124. scitex/fts/_bundle/_utils/__init__.py +0 -55
  125. scitex/fts/_bundle/_utils/_const.py +0 -26
  126. scitex/fts/_bundle/_utils/_errors.py +0 -73
  127. scitex/fts/_bundle/_utils/_generate.py +0 -21
  128. scitex/fts/_bundle/_utils/_types.py +0 -76
  129. scitex/fts/_bundle/_zipbundle.py +0 -165
  130. scitex/fts/_fig/__init__.py +0 -22
  131. scitex/fts/_fig/_backend/_parser.py +0 -188
  132. scitex/fts/_fig/_editor/__init__.py +0 -14
  133. scitex/fts/_fig/_editor/_cui/__init__.py +0 -33
  134. scitex/fts/_fig/_editor/_cui/_backend_detector.py +0 -39
  135. scitex/fts/_fig/_editor/_cui/_bundle_resolver.py +0 -366
  136. scitex/fts/_fig/_editor/_cui/_editor_launcher.py +0 -175
  137. scitex/fts/_fig/_editor/_cui/_manual_handler.py +0 -52
  138. scitex/fts/_fig/_editor/_cui/_path_resolver.py +0 -66
  139. scitex/fts/_fig/_editor/_gui/__init__.py +0 -11
  140. scitex/fts/_fig/_editor/_gui/_flask_editor/__init__.py +0 -20
  141. scitex/fts/_fig/_editor/_gui/_flask_editor/_plotter.py +0 -664
  142. scitex/fts/_fig/_editor/_gui/_flask_editor/_utils.py +0 -79
  143. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/reset.css +0 -41
  144. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/typography.css +0 -16
  145. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/variables.css +0 -85
  146. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/buttons.css +0 -217
  147. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/context-menu.css +0 -93
  148. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/dropdown.css +0 -57
  149. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/forms.css +0 -112
  150. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/modal.css +0 -59
  151. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/sections.css +0 -212
  152. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/element-inspector.css +0 -190
  153. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/loading.css +0 -59
  154. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/overlay.css +0 -45
  155. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/panel-grid.css +0 -95
  156. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/selection.css +0 -101
  157. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/statistics.css +0 -138
  158. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/index.css +0 -31
  159. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/container.css +0 -7
  160. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/controls.css +0 -56
  161. scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/preview.css +0 -78
  162. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/axis.js +0 -314
  163. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/basic.js +0 -107
  164. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/distribute.js +0 -54
  165. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/canvas.js +0 -172
  166. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/dragging.js +0 -258
  167. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/resize.js +0 -48
  168. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/selection.js +0 -71
  169. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/api.js +0 -288
  170. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/state.js +0 -143
  171. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/utils.js +0 -245
  172. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/dev/element-inspector.js +0 -992
  173. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/bbox.js +0 -339
  174. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/element-drag.js +0 -286
  175. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/overlay.js +0 -371
  176. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/preview.js +0 -293
  177. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/main.js +0 -426
  178. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/context-menu.js +0 -152
  179. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/keyboard.js +0 -265
  180. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/controls.js +0 -184
  181. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/download.js +0 -57
  182. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/help.js +0 -100
  183. scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/theme.js +0 -34
  184. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/__init__.py +0 -124
  185. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_html.py +0 -851
  186. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_scripts.py +0 -4932
  187. scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_styles.py +0 -1657
  188. scitex/fts/_fig/_editor/_gui/_flask_editor.py +0 -36
  189. scitex/fts/_fig/_models/_Annotations.py +0 -115
  190. scitex/fts/_fig/_models/_Axes.py +0 -152
  191. scitex/fts/_fig/_models/_Figure.py +0 -138
  192. scitex/fts/_fig/_models/_Plot.py +0 -123
  193. scitex/fts/_fig/_utils/_plot_layout.py +0 -397
  194. scitex/fts/_kinds/_figure/_composite.py +0 -345
  195. scitex/fts/_kinds/_plot/_backend/__init__.py +0 -53
  196. scitex/fts/_kinds/_plot/_backend/_export.py +0 -165
  197. scitex/fts/_kinds/_plot/_backend/_render.py +0 -538
  198. scitex/fts/_kinds/_plot/_dataclasses/_ChannelEncoding.py +0 -46
  199. scitex/fts/_kinds/_plot/_dataclasses/_Encoding.py +0 -82
  200. scitex/fts/_kinds/_plot/_dataclasses/_Theme.py +0 -441
  201. scitex/fts/_kinds/_plot/_dataclasses/_TraceEncoding.py +0 -52
  202. scitex/fts/_kinds/_plot/_dataclasses/__init__.py +0 -47
  203. scitex/fts/_kinds/_plot/_models/_Guides.py +0 -104
  204. scitex/fts/_kinds/_plot/_models/_Styles.py +0 -245
  205. scitex/fts/_kinds/_plot/_models/__init__.py +0 -80
  206. scitex/fts/_kinds/_plot/_models/_plot_types/__init__.py +0 -156
  207. scitex/fts/_kinds/_plot/_models/_plot_types/_bar.py +0 -43
  208. scitex/fts/_kinds/_plot/_models/_plot_types/_box.py +0 -38
  209. scitex/fts/_kinds/_plot/_models/_plot_types/_distribution.py +0 -36
  210. scitex/fts/_kinds/_plot/_models/_plot_types/_errorbar.py +0 -60
  211. scitex/fts/_kinds/_plot/_models/_plot_types/_histogram.py +0 -30
  212. scitex/fts/_kinds/_plot/_models/_plot_types/_image.py +0 -61
  213. scitex/fts/_kinds/_plot/_models/_plot_types/_line.py +0 -57
  214. scitex/fts/_kinds/_plot/_models/_plot_types/_scatter.py +0 -30
  215. scitex/fts/_kinds/_plot/_models/_plot_types/_seaborn.py +0 -121
  216. scitex/fts/_kinds/_plot/_models/_plot_types/_violin.py +0 -36
  217. scitex/fts/_kinds/_plot/_utils/__init__.py +0 -129
  218. scitex/fts/_kinds/_plot/_utils/_auto_layout.py +0 -127
  219. scitex/fts/_kinds/_plot/_utils/_calc_bounds.py +0 -111
  220. scitex/fts/_kinds/_plot/_utils/_const_sizes.py +0 -48
  221. scitex/fts/_kinds/_plot/_utils/_convert_coords.py +0 -77
  222. scitex/fts/_kinds/_plot/_utils/_get_template.py +0 -178
  223. scitex/fts/_kinds/_plot/_utils/_normalize.py +0 -73
  224. scitex/fts/_kinds/_plot/_utils/_validate.py +0 -197
  225. scitex/fts/_kinds/_table/_latex/_export.py +0 -279
  226. scitex/fts/_stats/__init__.py +0 -48
  227. scitex/fts/_stats/_dataclasses/_Stats.py +0 -423
  228. scitex/fts/_stats/_dataclasses/__init__.py +0 -48
  229. scitex/fts/_tables/__init__.py +0 -65
  230. scitex/fts/_tables/_latex/__init__.py +0 -93
  231. scitex/fts/_tables/_latex/_editor/__init__.py +0 -11
  232. scitex/fts/_tables/_latex/_editor/_app.py +0 -725
  233. scitex/fts/_tables/_latex/_figure_exporter.py +0 -153
  234. scitex/fts/_tables/_latex/_stats_formatter.py +0 -274
  235. scitex/fts/_tables/_latex/_table_exporter.py +0 -362
  236. scitex/fts/_tables/_latex/_utils.py +0 -369
  237. scitex/fts/_tables/_latex/_validator.py +0 -445
  238. scitex/io/_save_modules/_pltz_bundle.py +0 -356
  239. /scitex/{fig → canvas}/README.md +0 -0
  240. /scitex/{fig → canvas}/backend/__init__.py +0 -0
  241. /scitex/{fig → canvas}/backend/_export.py +0 -0
  242. /scitex/{fig → canvas}/backend/_render.py +0 -0
  243. /scitex/{fig → canvas}/docs/CANVAS_ARCHITECTURE.md +0 -0
  244. /scitex/{fig → canvas}/editor/__init__.py +0 -0
  245. /scitex/{fig → canvas}/editor/_dearpygui_editor.py +0 -0
  246. /scitex/{fig → canvas}/editor/_flask_editor.py +0 -0
  247. /scitex/{fig → canvas}/editor/_mpl_editor.py +0 -0
  248. /scitex/{fig → canvas}/editor/_qt_editor.py +0 -0
  249. /scitex/{fig → canvas}/editor/_tkinter_editor.py +0 -0
  250. /scitex/{fig → canvas}/editor/edit/backend_detector.py +0 -0
  251. /scitex/{fig → canvas}/editor/edit/manual_handler.py +0 -0
  252. /scitex/{fig → canvas}/editor/edit/path_resolver.py +0 -0
  253. /scitex/{fig → canvas}/editor/flask_editor/__init__.py +0 -0
  254. /scitex/{fig → canvas}/editor/flask_editor/_plotter.py +0 -0
  255. /scitex/{fig → canvas}/editor/flask_editor/_utils.py +0 -0
  256. /scitex/{fig → canvas}/editor/flask_editor/static/css/base/reset.css +0 -0
  257. /scitex/{fig → canvas}/editor/flask_editor/static/css/base/typography.css +0 -0
  258. /scitex/{fig → canvas}/editor/flask_editor/static/css/base/variables.css +0 -0
  259. /scitex/{fig → canvas}/editor/flask_editor/static/css/components/buttons.css +0 -0
  260. /scitex/{fig → canvas}/editor/flask_editor/static/css/components/context-menu.css +0 -0
  261. /scitex/{fig → canvas}/editor/flask_editor/static/css/components/dropdown.css +0 -0
  262. /scitex/{fig → canvas}/editor/flask_editor/static/css/components/forms.css +0 -0
  263. /scitex/{fig → canvas}/editor/flask_editor/static/css/components/modal.css +0 -0
  264. /scitex/{fig → canvas}/editor/flask_editor/static/css/components/sections.css +0 -0
  265. /scitex/{fig → canvas}/editor/flask_editor/static/css/features/element-inspector.css +0 -0
  266. /scitex/{fig → canvas}/editor/flask_editor/static/css/features/loading.css +0 -0
  267. /scitex/{fig → canvas}/editor/flask_editor/static/css/features/overlay.css +0 -0
  268. /scitex/{fig → canvas}/editor/flask_editor/static/css/features/selection.css +0 -0
  269. /scitex/{fig → canvas}/editor/flask_editor/static/css/features/statistics.css +0 -0
  270. /scitex/{fig → canvas}/editor/flask_editor/static/css/index.css +0 -0
  271. /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/container.css +0 -0
  272. /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/controls.css +0 -0
  273. /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/preview.css +0 -0
  274. /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/axis.js +0 -0
  275. /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/basic.js +0 -0
  276. /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/distribute.js +0 -0
  277. /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/canvas.js +0 -0
  278. /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/dragging.js +0 -0
  279. /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/resize.js +0 -0
  280. /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/selection.js +0 -0
  281. /scitex/{fig → canvas}/editor/flask_editor/static/js/core/state.js +0 -0
  282. /scitex/{fig → canvas}/editor/flask_editor/static/js/core/utils.js +0 -0
  283. /scitex/{fig → canvas}/editor/flask_editor/static/js/dev/element-inspector.js +0 -0
  284. /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/bbox.js +0 -0
  285. /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/element-drag.js +0 -0
  286. /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/overlay.js +0 -0
  287. /scitex/{fig → canvas}/editor/flask_editor/static/js/main.js +0 -0
  288. /scitex/{fig → canvas}/editor/flask_editor/static/js/shortcuts/context-menu.js +0 -0
  289. /scitex/{fig → canvas}/editor/flask_editor/static/js/shortcuts/keyboard.js +0 -0
  290. /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/controls.js +0 -0
  291. /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/download.js +0 -0
  292. /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/help.js +0 -0
  293. /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/theme.js +0 -0
  294. /scitex/{fig → canvas}/editor/flask_editor/templates/__init__.py +0 -0
  295. /scitex/{fig → canvas}/io/_directory.py +0 -0
  296. /scitex/{fig → canvas}/model/_plot_types.py +0 -0
  297. /scitex/{fig → canvas}/utils/_defaults.py +0 -0
  298. /scitex/{fig → canvas}/utils/_validate.py +0 -0
  299. /scitex/{fts/_bundle → io/bundle}/_conversion/__init__.py +0 -0
  300. /scitex/{fts/_bundle → io/bundle}/_conversion/_bundle2dict.py +0 -0
  301. /scitex/{fts/_bundle → io/bundle}/_conversion/_dict2bundle.py +0 -0
  302. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_Axes.py +0 -0
  303. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_BBox.py +0 -0
  304. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_ColumnDef.py +0 -0
  305. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataFormat.py +0 -0
  306. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataInfo.py +0 -0
  307. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataSource.py +0 -0
  308. /scitex/{fts/_bundle → io/bundle}/_dataclasses/_SizeMM.py +0 -0
  309. /scitex/{fts/_bundle → io/bundle}/_extractors/__init__.py +0 -0
  310. /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_bar.py +0 -0
  311. /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_line.py +0 -0
  312. /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_scatter.py +0 -0
  313. /scitex/{fts/_kinds → io/bundle/kinds}/__init__.py +0 -0
  314. /scitex/{fts/_kinds → io/bundle/kinds}/_figure/__init__.py +0 -0
  315. /scitex/{fts/_fig → io/bundle/kinds/_figure}/_composite.py +0 -0
  316. /scitex/{fts/_kinds → io/bundle/kinds}/_plot/__init__.py +0 -0
  317. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/__init__.py +0 -0
  318. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/_export.py +0 -0
  319. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/_render.py +0 -0
  320. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_ChannelEncoding.py +0 -0
  321. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_Encoding.py +0 -0
  322. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_Theme.py +0 -0
  323. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_TraceEncoding.py +0 -0
  324. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/__init__.py +0 -0
  325. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/__init__.py +0 -0
  326. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/__init__.py +0 -0
  327. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_bar.py +0 -0
  328. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_box.py +0 -0
  329. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_distribution.py +0 -0
  330. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_errorbar.py +0 -0
  331. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_histogram.py +0 -0
  332. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_image.py +0 -0
  333. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_line.py +0 -0
  334. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_scatter.py +0 -0
  335. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_seaborn.py +0 -0
  336. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_violin.py +0 -0
  337. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/__init__.py +0 -0
  338. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_auto_layout.py +0 -0
  339. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_calc_bounds.py +0 -0
  340. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_const_sizes.py +0 -0
  341. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_convert_coords.py +0 -0
  342. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_get_template.py +0 -0
  343. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_normalize.py +0 -0
  344. /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_validate.py +0 -0
  345. /scitex/{fts/_kinds → io/bundle/kinds}/_shape/__init__.py +0 -0
  346. /scitex/{fts/_kinds → io/bundle/kinds}/_stats/__init__.py +0 -0
  347. /scitex/{fts/_kinds → io/bundle/kinds}/_stats/_dataclasses/_Stats.py +0 -0
  348. /scitex/{fts/_kinds → io/bundle/kinds}/_stats/_dataclasses/__init__.py +0 -0
  349. /scitex/{fts/_kinds → io/bundle/kinds}/_table/__init__.py +0 -0
  350. /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_editor/__init__.py +0 -0
  351. /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_stats_formatter.py +0 -0
  352. /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_utils.py +0 -0
  353. /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_validator.py +0 -0
  354. /scitex/{fts/_kinds → io/bundle/kinds}/_text/__init__.py +0 -0
  355. /scitex/{fts/_schemas → io/bundle/schemas}/data_info.schema.json +0 -0
  356. /scitex/{fts/_schemas → io/bundle/schemas}/encoding.schema.json +0 -0
  357. /scitex/{fts/_schemas → io/bundle/schemas}/node.schema.json +0 -0
  358. /scitex/{fts/_schemas → io/bundle/schemas}/render_manifest.schema.json +0 -0
  359. /scitex/{fts/_schemas → io/bundle/schemas}/stats.schema.json +0 -0
  360. /scitex/{fts/_schemas → io/bundle/schemas}/theme.schema.json +0 -0
  361. {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/WHEEL +0 -0
  362. {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/entry_points.txt +0 -0
  363. {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,46 +1,48 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-14 07:39:32 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_get_module_path.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_get_module_path.py
5
4
 
5
+ """Module path utilities."""
6
+
7
+ import importlib.util
8
+ from pathlib import Path
6
9
 
7
- def get_data_path_from_a_package(package_str, resource):
8
- """
9
- Get the path to a data file within a package.
10
10
 
11
- This function finds the path to a data file within a package's data directory.
11
+ def get_data_path_from_a_package(package_str: str, resource: str) -> Path:
12
+ """Get the path to a data file within a package.
12
13
 
13
- Parameters:
14
- -----------
14
+ Parameters
15
+ ----------
15
16
  package_str : str
16
17
  The name of the package as a string.
17
18
  resource : str
18
19
  The name of the resource file within the package's data directory.
19
20
 
20
- Returns:
21
- --------
22
- str
21
+ Returns
22
+ -------
23
+ Path
23
24
  The full path to the resource file.
24
25
 
25
- Raises:
26
- -------
26
+ Raises
27
+ ------
27
28
  ImportError
28
29
  If the specified package cannot be found.
29
30
  FileNotFoundError
30
31
  If the resource file does not exist in the package's data directory.
31
32
  """
32
- import importlib
33
- import os
34
- import sys
35
-
36
33
  spec = importlib.util.find_spec(package_str)
37
34
  if spec is None:
38
35
  raise ImportError(f"Package '{package_str}' not found")
39
36
 
40
- data_dir = os.path.join(spec.origin.split("src")[0], "data")
41
- resource_path = os.path.join(data_dir, resource)
37
+ origin = Path(spec.origin)
38
+ data_dir = origin.parents[0]
39
+ while "src" not in str(data_dir) and data_dir != data_dir.parent:
40
+ data_dir = data_dir.parent
41
+ data_dir = data_dir.parent / "data"
42
+
43
+ resource_path = data_dir / resource
42
44
 
43
- if not os.path.exists(resource_path):
45
+ if not resource_path.exists():
44
46
  raise FileNotFoundError(
45
47
  f"Resource '{resource}' not found in package '{package_str}'"
46
48
  )
scitex/path/_get_spath.py CHANGED
@@ -1,34 +1,13 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 20:51:29 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_get_spath.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_get_spath.py
5
4
 
6
- import inspect
7
- import os
5
+ """Save path utilities - deprecated, use _mk_spath.py instead."""
8
6
 
9
- from ._split import split
7
+ from ._mk_spath import mk_spath
10
8
 
11
-
12
- def get_spath(sfname=".", makedirs=False):
13
- # if __IPYTHON__:
14
- # THIS_FILE = f'/tmp/{os.getenv("USER")}.py'
15
- # else:
16
- # THIS_FILE = inspect.stack()[1].filename
17
-
18
- THIS_FILE = inspect.stack()[1].filename
19
- if "ipython" in __file__: # for ipython
20
- THIS_FILE = f"/tmp/{os.getenv('USER')}.py"
21
-
22
- ## spath
23
- fpath = __file__
24
- fdir, fname, _ = split(fpath)
25
- sdir = fdir + fname + "/"
26
- spath = sdir + sfname
27
-
28
- if makedirs:
29
- os.makedirs(split(spath)[0], exist_ok=True)
30
-
31
- return spath
9
+ # Alias for backward compatibility
10
+ get_spath = mk_spath
32
11
 
33
12
 
34
13
  # EOF
scitex/path/_getsize.py CHANGED
@@ -1,18 +1,32 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 19:54:02 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_getsize.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_getsize.py
5
4
 
6
- import os
5
+ """File size utilities."""
6
+
7
+ from pathlib import Path
8
+ from typing import Union
7
9
 
8
10
  import numpy as np
9
11
 
10
12
 
11
- def getsize(path):
12
- if os.path.exists(path):
13
- return os.path.getsize(path)
14
- else:
15
- return np.nan
13
+ def getsize(path: Union[str, Path]) -> Union[int, float]:
14
+ """Get file size in bytes.
15
+
16
+ Parameters
17
+ ----------
18
+ path : str or Path
19
+ Path to file.
20
+
21
+ Returns
22
+ -------
23
+ int or float
24
+ File size in bytes, or np.nan if file doesn't exist.
25
+ """
26
+ path = Path(path)
27
+ if path.exists():
28
+ return path.stat().st_size
29
+ return np.nan
16
30
 
17
31
 
18
32
  # EOF
@@ -1,23 +1,28 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 19:45:32 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_increment_version.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_increment_version.py
4
+
5
+ """File versioning utilities."""
5
6
 
6
- import os
7
7
  import re
8
- from glob import glob
8
+ from pathlib import Path
9
+ from typing import Union
9
10
 
10
11
 
11
- def increment_version(dirname, fname, ext, version_prefix="_v"):
12
- """
13
- Generate the next version of a filename based on existing versioned files.
12
+ def increment_version(
13
+ dirname: Union[str, Path],
14
+ fname: str,
15
+ ext: str,
16
+ version_prefix: str = "_v",
17
+ ) -> Path:
18
+ """Generate the next version of a filename based on existing versioned files.
14
19
 
15
20
  This function searches for files in the given directory that match the pattern:
16
21
  {fname}{version_prefix}{number}{ext} and returns the path for the next version.
17
22
 
18
- Parameters:
19
- -----------
20
- dirname : str
23
+ Parameters
24
+ ----------
25
+ dirname : str or Path
21
26
  The directory to search in and where the new file will be created.
22
27
  fname : str
23
28
  The base filename without version number or extension.
@@ -26,62 +31,50 @@ def increment_version(dirname, fname, ext, version_prefix="_v"):
26
31
  version_prefix : str, optional
27
32
  The prefix used before the version number. Default is '_v'.
28
33
 
29
- Returns:
30
- --------
31
- str
34
+ Returns
35
+ -------
36
+ Path
32
37
  The full path for the next version of the file.
33
38
 
34
- Example:
35
- --------
39
+ Example
40
+ -------
36
41
  >>> increment_version('/path/to/dir', 'myfile', '.txt')
37
- '/path/to/dir/myfile_v004.txt'
42
+ Path('/path/to/dir/myfile_v004.txt')
38
43
 
39
- Notes:
40
- ------
44
+ Notes
45
+ -----
41
46
  - If no existing versioned files are found, it starts with version 001.
42
47
  - The version number is always formatted with at least 3 digits.
43
48
  """
44
- # Create a regex pattern to match the version number in the filename
49
+ dirname = Path(dirname)
50
+
45
51
  version_pattern = re.compile(
46
52
  rf"({re.escape(fname)}{re.escape(version_prefix)})(\d+)({re.escape(ext)})$"
47
53
  )
48
54
 
49
- # Construct the glob pattern to find all files that match the pattern
50
- glob_pattern = os.path.join(dirname, f"{fname}{version_prefix}*{ext}")
55
+ glob_pattern = f"{fname}{version_prefix}*{ext}"
56
+ files = list(dirname.glob(glob_pattern))
51
57
 
52
- # Use glob to find all files that match the pattern
53
- files = glob(glob_pattern)
54
-
55
- # Initialize the highest version number
56
58
  highest_version = 0
57
59
  base, suffix = None, None
58
60
 
59
- # Loop through the files to find the highest version number
60
61
  for file in files:
61
- filename = os.path.basename(file)
62
- match = version_pattern.search(filename)
62
+ match = version_pattern.search(file.name)
63
63
  if match:
64
64
  base, version_str, suffix = match.groups()
65
65
  version_num = int(version_str)
66
66
  if version_num > highest_version:
67
67
  highest_version = version_num
68
68
 
69
- # If no versioned files were found, use the provided filename and extension
70
69
  if base is None or suffix is None:
71
70
  base = f"{fname}{version_prefix}"
72
71
  suffix = ext
73
- highest_version = 0 # No previous versions
72
+ highest_version = 0
74
73
 
75
- # Increment the highest version number
76
74
  next_version_number = highest_version + 1
77
-
78
- # Format the next version number with the same number of digits as the original
79
75
  next_version_str = f"{base}{next_version_number:03d}{suffix}"
80
76
 
81
- # Combine the directory and new filename to create the full path
82
- next_filepath = os.path.join(dirname, next_version_str)
83
-
84
- return next_filepath
77
+ return dirname / next_version_str
85
78
 
86
79
 
87
80
  # EOF
scitex/path/_mk_spath.py CHANGED
@@ -1,49 +1,46 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 20:59:46 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_mk_spath.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_mk_spath.py
4
+
5
+ """Save path creation utilities."""
5
6
 
6
7
  import inspect
7
8
  import os
8
-
9
- from ._split import split
9
+ from pathlib import Path
10
+ from typing import Union
10
11
 
11
12
 
12
- def mk_spath(sfname, makedirs=False):
13
- """
14
- Create a save path based on the calling script's location.
13
+ def mk_spath(sfname: Union[str, Path], makedirs: bool = False) -> Path:
14
+ """Create a save path based on the calling script's location.
15
15
 
16
- Parameters:
17
- -----------
18
- sfname : str
16
+ Parameters
17
+ ----------
18
+ sfname : str or Path
19
19
  The name of the file to be saved.
20
20
  makedirs : bool, optional
21
- If True, create the directory structure for the save path. Default is False.
21
+ If True, create the directory structure for the save path.
22
22
 
23
- Returns:
24
- --------
25
- str
23
+ Returns
24
+ -------
25
+ Path
26
26
  The full save path for the file.
27
27
 
28
- Example:
29
- --------
30
- >>> import scitex.io._path as path
31
- >>> spath = path.mk_spath('output.txt', makedirs=True)
28
+ Example
29
+ -------
30
+ >>> spath = mk_spath('output.txt', makedirs=True)
32
31
  >>> print(spath)
33
- '/path/to/current/script/output.txt'
32
+ Path('/path/to/current/script_out/output.txt')
34
33
  """
35
- THIS_FILE = inspect.stack()[1].filename
36
- if "ipython" in __file__: # for ipython
37
- THIS_FILE = f"/tmp/fake-{os.getenv('USER')}.py"
34
+ caller_file = inspect.stack()[1].filename
35
+ if "ipython" in caller_file.lower():
36
+ caller_file = f"/tmp/fake-{os.getenv('USER')}.py"
38
37
 
39
- ## spath
40
- fpath = __file__
41
- fdir, fname, _ = split(fpath)
42
- sdir = fdir + fname + "/"
43
- spath = sdir + sfname
38
+ fpath = Path(caller_file)
39
+ sdir = fpath.parent / f"{fpath.stem}_out"
40
+ spath = sdir / sfname
44
41
 
45
42
  if makedirs:
46
- os.makedirs(split(spath)[0], exist_ok=True)
43
+ spath.parent.mkdir(parents=True, exist_ok=True)
47
44
 
48
45
  return spath
49
46
 
scitex/path/_path.py CHANGED
@@ -1,19 +1,12 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 20:46:35 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_path.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_path.py
5
4
 
6
- import inspect
5
+ """Path utilities - deprecated, use _this_path.py instead."""
7
6
 
7
+ from ._this_path import get_this_path, this_path
8
8
 
9
- def this_path(when_ipython="/tmp/fake.py"):
10
- THIS_FILE = inspect.stack()[1].filename
11
- if "ipython" in __file__:
12
- THIS_FILE = when_ipython
13
- return __file__
14
-
15
-
16
- get_this_path = this_path
9
+ __all__ = ["this_path", "get_this_path"]
17
10
 
18
11
 
19
12
  # EOF
scitex/path/_split.py CHANGED
@@ -1,23 +1,35 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 16:18:06 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_split.py
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_split.py
5
4
 
6
- import os
5
+ """Path splitting utilities."""
7
6
 
7
+ from pathlib import Path
8
+ from typing import Tuple, Union
8
9
 
9
- def split(fpath):
10
- """Split a file path to (1) the directory path, (2) the file name, and (3) the file extention
11
- Example:
12
- dirname, fname, ext = split('../data/01/day1/split_octave/2kHz_mat/tt8-2.mat')
13
- print(dirname) # '../data/01/day1/split_octave/2kHz_mat/'
14
- print(fname) # 'tt8-2'
15
- print(ext) # '.mat'
10
+
11
+ def split(fpath: Union[str, Path]) -> Tuple[Path, str, str]:
12
+ """Split a file path into directory, filename, and extension.
13
+
14
+ Parameters
15
+ ----------
16
+ fpath : str or Path
17
+ File path to split.
18
+
19
+ Returns
20
+ -------
21
+ tuple of (Path, str, str)
22
+ (directory, filename without extension, extension)
23
+
24
+ Example
25
+ -------
26
+ >>> dirname, fname, ext = split('../data/01/day1/tt8-2.mat')
27
+ >>> print(dirname) # Path('../data/01/day1')
28
+ >>> print(fname) # 'tt8-2'
29
+ >>> print(ext) # '.mat'
16
30
  """
17
- dirname = os.path.dirname(fpath) + "/"
18
- base = os.path.basename(fpath)
19
- fname, ext = os.path.splitext(base)
20
- return dirname, fname, ext
31
+ path = Path(fpath)
32
+ return path.parent, path.stem, path.suffix
21
33
 
22
34
 
23
35
  # EOF
scitex/path/_this_path.py CHANGED
@@ -1,19 +1,33 @@
1
1
  #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # Time-stamp: "2024-11-02 16:22:21 (ywatanabe)"
4
- # File: ./scitex_repo/src/scitex/path/_this_path.py
5
- #!/usr/bin/env python3
2
+ # Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
3
+ # File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_this_path.py
4
+
5
+ """Get current file path utilities."""
6
6
 
7
7
  import inspect
8
+ from pathlib import Path
9
+
8
10
 
11
+ def this_path(ipython_fake_path: str = "/tmp/fake.py") -> Path:
12
+ """Get the path of the calling script.
9
13
 
10
- def this_path(ipython_fake_path="/tmp/fake.py"):
11
- THIS_FILE = inspect.stack()[1].filename
12
- if "ipython" in __file__:
13
- THIS_FILE = ipython_fake_path
14
- return __file__
14
+ Parameters
15
+ ----------
16
+ ipython_fake_path : str
17
+ Fake path to return when running in IPython.
18
+
19
+ Returns
20
+ -------
21
+ Path
22
+ Path to the calling script.
23
+ """
24
+ caller_file = inspect.stack()[1].filename
25
+ if "ipython" in caller_file.lower():
26
+ return Path(ipython_fake_path)
27
+ return Path(caller_file)
15
28
 
16
29
 
17
30
  get_this_path = this_path
18
31
 
32
+
19
33
  # EOF
@@ -16,7 +16,7 @@ API Layer Design:
16
16
  -----------------
17
17
  stx_* (SciTeX canonical):
18
18
  - Full tracking, metadata, and reproducibility support
19
- - Output connects to .pltz / .figz format
19
+ - Output connects to .plot / .figure format
20
20
  - Purpose: publication / reproducibility
21
21
 
22
22
  mpl_* (Matplotlib compatibility - see _RawMatplotlibMixin):
@@ -53,6 +53,7 @@ class MatplotlibPlotMixin(
53
53
  - StatisticalPlotMixin: Statistical line plots and distributions
54
54
  - StxAliasesMixin: stx_ prefixed matplotlib aliases
55
55
  """
56
+
56
57
  pass
57
58
 
58
59
 
@@ -19,7 +19,7 @@ stx_* (SciTeX Canonical)
19
19
  - Purpose: publication / reproducibility
20
20
  - Features:
21
21
  * Full tracking and metadata support
22
- * Output connects to .pltz / .figz formats
22
+ * Output connects to .plot / .figure formats
23
23
  * Automatic styling according to SciTeX style
24
24
  * Primary API - recommended for final figures
25
25
 
@@ -83,7 +83,7 @@ __DIR__ = os.path.dirname(__FILE__)
83
83
 
84
84
  from ._AdjustmentMixin import AdjustmentMixin
85
85
  from ._MatplotlibPlotMixin import MatplotlibPlotMixin
86
- from ._RawMatplotlibMixin import RawMatplotlibMixin, MPL_METHODS
86
+ from ._RawMatplotlibMixin import MPL_METHODS, RawMatplotlibMixin
87
87
  from ._SeabornMixin import SeabornMixin
88
88
  from ._TrackingMixin import TrackingMixin
89
89
  from ._UnitAwareMixin import UnitAwareMixin