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.
- scitex/__init__.py +1 -4
- scitex/__version__.py +1 -1
- scitex/_install_guide.py +14 -2
- scitex/bridge/_figrecipe.py +1 -1
- scitex/bridge/_helpers.py +1 -1
- scitex/bridge/_plt_vis.py +1 -1
- scitex/bridge/_stats_plt.py +1 -1
- scitex/bridge/_stats_vis.py +2 -2
- scitex/{fig → canvas}/__init__.py +84 -96
- scitex/{fig → canvas}/backend/_parser.py +1 -1
- scitex/{fig → canvas}/canvas.py +13 -14
- scitex/{fts/_fig/_editor → canvas/editor}/_defaults.py +2 -2
- scitex/{fig → canvas}/editor/edit/__init__.py +11 -14
- scitex/{fig → canvas}/editor/edit/bundle_resolver.py +56 -48
- scitex/{fig → canvas}/editor/edit/editor_launcher.py +79 -26
- scitex/{fts/_fig/_editor/_cui/_panel_loader.py → canvas/editor/edit/panel_loader.py} +8 -8
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_bbox.py +2 -1
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_core.py +84 -84
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/_renderer.py +7 -6
- scitex/{fts/_fig/_editor/_gui/_flask_editor → canvas/editor/flask_editor}/static/css/features/canvas.css +2 -2
- scitex/{fig → canvas}/editor/flask_editor/static/css/features/panel-grid.css +1 -1
- scitex/{fig → canvas}/editor/flask_editor/static/js/core/api.js +3 -4
- scitex/{fig → canvas}/editor/flask_editor/static/js/editor/preview.js +5 -5
- scitex/{fig → canvas}/editor/flask_editor/templates/_html.py +3 -3
- scitex/{fig → canvas}/editor/flask_editor/templates/_scripts.py +10 -10
- scitex/{fig → canvas}/editor/flask_editor/templates/_styles.py +3 -3
- scitex/{fig → canvas}/io/__init__.py +32 -38
- scitex/{fig → canvas}/io/_bundle.py +217 -154
- scitex/{fig → canvas}/io/_canvas.py +1 -1
- scitex/{fig → canvas}/io/_data.py +1 -1
- scitex/{fig → canvas}/io/_export.py +1 -1
- scitex/{fig → canvas}/io/_load.py +1 -1
- scitex/{fig → canvas}/io/_panel.py +1 -1
- scitex/{fig → canvas}/io/_save.py +1 -1
- scitex/{fig → canvas}/model/__init__.py +1 -1
- scitex/{fig → canvas}/model/_annotations.py +1 -1
- scitex/{fig → canvas}/model/_axes.py +1 -1
- scitex/{fig → canvas}/model/_figure.py +1 -1
- scitex/{fig → canvas}/model/_guides.py +1 -1
- scitex/{fig → canvas}/model/_plot.py +1 -1
- scitex/{fig → canvas}/model/_styles.py +1 -1
- scitex/{fig → canvas}/utils/__init__.py +1 -1
- scitex/cli/convert.py +10 -6
- scitex/diagram/README.md +7 -7
- scitex/io/__init__.py +7 -19
- scitex/io/_load.py +15 -19
- scitex/io/_load_modules/_canvas.py +2 -2
- scitex/io/_load_modules/_con.py +5 -5
- scitex/io/_load_modules/_eeg.py +16 -12
- scitex/io/_save.py +11 -16
- scitex/io/_save_modules/__init__.py +6 -10
- scitex/io/_save_modules/_canvas.py +3 -3
- scitex/io/_save_modules/_plot_bundle.py +112 -0
- scitex/io/_save_modules/{_pltz_stx.py → _plot_scitex.py} +7 -7
- scitex/io/_save_modules/_stx_bundle.py +16 -16
- scitex/io/bundle/README.md +89 -80
- scitex/{fts/_bundle/_FTS.py → io/bundle/_Bundle.py} +197 -95
- scitex/io/bundle/__init__.py +67 -35
- scitex/{fts/_bundle → io/bundle}/_children.py +32 -40
- scitex/io/bundle/_core.py +184 -97
- scitex/{fts/_bundle/_dataclasses/_Node.py → io/bundle/_dataclasses/_Spec.py} +29 -23
- scitex/{fts/_bundle/_dataclasses/_NodeRefs.py → io/bundle/_dataclasses/_SpecRefs.py} +6 -6
- scitex/{fts/_bundle → io/bundle}/_dataclasses/__init__.py +4 -4
- scitex/{fts/_bundle → io/bundle}/_loader.py +19 -19
- scitex/io/bundle/_manifest.py +99 -0
- scitex/{fts/_bundle → io/bundle}/_mpl_helpers.py +119 -28
- scitex/io/bundle/_nested.py +113 -100
- scitex/{fts/_bundle → io/bundle}/_saver.py +13 -14
- scitex/{fts/_bundle → io/bundle}/_storage.py +3 -3
- scitex/io/bundle/_types.py +41 -16
- scitex/{fts/_bundle → io/bundle}/_validation.py +20 -18
- scitex/io/bundle/_zip.py +21 -31
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_backend/_parser.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Annotations.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Axes.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Figure.py +1 -1
- scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_Guides.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_models/_Plot.py +1 -1
- scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_Styles.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_plot/_utils/_plot_layout.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/__init__.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_editor/_app.py +1 -1
- scitex/{fts/_tables → io/bundle/kinds/_table}/_latex/_export.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_figure_exporter.py +1 -1
- scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_table_exporter.py +1 -1
- scitex/io/bundle/schemas/__init__.py +30 -0
- scitex/parallel/_run.py +5 -4
- scitex/path/_find.py +60 -83
- scitex/path/_get_module_path.py +23 -21
- scitex/path/_get_spath.py +6 -27
- scitex/path/_getsize.py +23 -9
- scitex/path/_increment_version.py +31 -38
- scitex/path/_mk_spath.py +26 -29
- scitex/path/_path.py +5 -12
- scitex/path/_split.py +27 -15
- scitex/path/_this_path.py +23 -9
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +2 -1
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +2 -2
- scitex/plt/gallery/_generate.py +76 -50
- scitex/plt/io/__init__.py +17 -19
- scitex/plt/io/_bundle.py +99 -52
- scitex/plt/io/_layered_bundle.py +303 -168
- scitex/plt/utils/_csv_column_naming.py +250 -118
- scitex/schema/__init__.py +69 -73
- scitex/schema/_canvas.py +1 -1
- scitex/schema/_stats.py +2 -2
- scitex/stats/__init__.py +30 -33
- scitex/stats/_schema.py +1 -1
- scitex/stats/io/__init__.py +10 -11
- scitex/stats/io/_bundle.py +16 -16
- {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/METADATA +191 -72
- {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/RECORD +237 -360
- scitex/fig/editor/_defaults.py +0 -300
- scitex/fig/editor/edit/panel_loader.py +0 -232
- scitex/fig/editor/flask_editor/_bbox.py +0 -1299
- scitex/fig/editor/flask_editor/_core.py +0 -1429
- scitex/fig/editor/flask_editor/_renderer.py +0 -813
- scitex/fig/editor/flask_editor/static/css/features/canvas.css +0 -176
- scitex/fts/README.md +0 -262
- scitex/fts/TODO.md +0 -66
- scitex/fts/__init__.py +0 -90
- scitex/fts/_bundle/README_IN_BUNDLE.md +0 -102
- scitex/fts/_bundle/__init__.py +0 -38
- scitex/fts/_bundle/_utils/__init__.py +0 -55
- scitex/fts/_bundle/_utils/_const.py +0 -26
- scitex/fts/_bundle/_utils/_errors.py +0 -73
- scitex/fts/_bundle/_utils/_generate.py +0 -21
- scitex/fts/_bundle/_utils/_types.py +0 -76
- scitex/fts/_bundle/_zipbundle.py +0 -165
- scitex/fts/_fig/__init__.py +0 -22
- scitex/fts/_fig/_backend/_parser.py +0 -188
- scitex/fts/_fig/_editor/__init__.py +0 -14
- scitex/fts/_fig/_editor/_cui/__init__.py +0 -33
- scitex/fts/_fig/_editor/_cui/_backend_detector.py +0 -39
- scitex/fts/_fig/_editor/_cui/_bundle_resolver.py +0 -366
- scitex/fts/_fig/_editor/_cui/_editor_launcher.py +0 -175
- scitex/fts/_fig/_editor/_cui/_manual_handler.py +0 -52
- scitex/fts/_fig/_editor/_cui/_path_resolver.py +0 -66
- scitex/fts/_fig/_editor/_gui/__init__.py +0 -11
- scitex/fts/_fig/_editor/_gui/_flask_editor/__init__.py +0 -20
- scitex/fts/_fig/_editor/_gui/_flask_editor/_plotter.py +0 -664
- scitex/fts/_fig/_editor/_gui/_flask_editor/_utils.py +0 -79
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/reset.css +0 -41
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/typography.css +0 -16
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/base/variables.css +0 -85
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/buttons.css +0 -217
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/context-menu.css +0 -93
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/dropdown.css +0 -57
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/forms.css +0 -112
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/modal.css +0 -59
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/components/sections.css +0 -212
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/element-inspector.css +0 -190
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/loading.css +0 -59
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/overlay.css +0 -45
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/panel-grid.css +0 -95
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/selection.css +0 -101
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/features/statistics.css +0 -138
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/index.css +0 -31
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/container.css +0 -7
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/controls.css +0 -56
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/css/layout/preview.css +0 -78
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/axis.js +0 -314
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/basic.js +0 -107
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/alignment/distribute.js +0 -54
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/canvas.js +0 -172
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/dragging.js +0 -258
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/resize.js +0 -48
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/canvas/selection.js +0 -71
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/api.js +0 -288
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/state.js +0 -143
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/core/utils.js +0 -245
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/dev/element-inspector.js +0 -992
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/bbox.js +0 -339
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/element-drag.js +0 -286
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/overlay.js +0 -371
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/editor/preview.js +0 -293
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/main.js +0 -426
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/context-menu.js +0 -152
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/shortcuts/keyboard.js +0 -265
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/controls.js +0 -184
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/download.js +0 -57
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/help.js +0 -100
- scitex/fts/_fig/_editor/_gui/_flask_editor/static/js/ui/theme.js +0 -34
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/__init__.py +0 -124
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_html.py +0 -851
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_scripts.py +0 -4932
- scitex/fts/_fig/_editor/_gui/_flask_editor/templates/_styles.py +0 -1657
- scitex/fts/_fig/_editor/_gui/_flask_editor.py +0 -36
- scitex/fts/_fig/_models/_Annotations.py +0 -115
- scitex/fts/_fig/_models/_Axes.py +0 -152
- scitex/fts/_fig/_models/_Figure.py +0 -138
- scitex/fts/_fig/_models/_Plot.py +0 -123
- scitex/fts/_fig/_utils/_plot_layout.py +0 -397
- scitex/fts/_kinds/_figure/_composite.py +0 -345
- scitex/fts/_kinds/_plot/_backend/__init__.py +0 -53
- scitex/fts/_kinds/_plot/_backend/_export.py +0 -165
- scitex/fts/_kinds/_plot/_backend/_render.py +0 -538
- scitex/fts/_kinds/_plot/_dataclasses/_ChannelEncoding.py +0 -46
- scitex/fts/_kinds/_plot/_dataclasses/_Encoding.py +0 -82
- scitex/fts/_kinds/_plot/_dataclasses/_Theme.py +0 -441
- scitex/fts/_kinds/_plot/_dataclasses/_TraceEncoding.py +0 -52
- scitex/fts/_kinds/_plot/_dataclasses/__init__.py +0 -47
- scitex/fts/_kinds/_plot/_models/_Guides.py +0 -104
- scitex/fts/_kinds/_plot/_models/_Styles.py +0 -245
- scitex/fts/_kinds/_plot/_models/__init__.py +0 -80
- scitex/fts/_kinds/_plot/_models/_plot_types/__init__.py +0 -156
- scitex/fts/_kinds/_plot/_models/_plot_types/_bar.py +0 -43
- scitex/fts/_kinds/_plot/_models/_plot_types/_box.py +0 -38
- scitex/fts/_kinds/_plot/_models/_plot_types/_distribution.py +0 -36
- scitex/fts/_kinds/_plot/_models/_plot_types/_errorbar.py +0 -60
- scitex/fts/_kinds/_plot/_models/_plot_types/_histogram.py +0 -30
- scitex/fts/_kinds/_plot/_models/_plot_types/_image.py +0 -61
- scitex/fts/_kinds/_plot/_models/_plot_types/_line.py +0 -57
- scitex/fts/_kinds/_plot/_models/_plot_types/_scatter.py +0 -30
- scitex/fts/_kinds/_plot/_models/_plot_types/_seaborn.py +0 -121
- scitex/fts/_kinds/_plot/_models/_plot_types/_violin.py +0 -36
- scitex/fts/_kinds/_plot/_utils/__init__.py +0 -129
- scitex/fts/_kinds/_plot/_utils/_auto_layout.py +0 -127
- scitex/fts/_kinds/_plot/_utils/_calc_bounds.py +0 -111
- scitex/fts/_kinds/_plot/_utils/_const_sizes.py +0 -48
- scitex/fts/_kinds/_plot/_utils/_convert_coords.py +0 -77
- scitex/fts/_kinds/_plot/_utils/_get_template.py +0 -178
- scitex/fts/_kinds/_plot/_utils/_normalize.py +0 -73
- scitex/fts/_kinds/_plot/_utils/_validate.py +0 -197
- scitex/fts/_kinds/_table/_latex/_export.py +0 -279
- scitex/fts/_stats/__init__.py +0 -48
- scitex/fts/_stats/_dataclasses/_Stats.py +0 -423
- scitex/fts/_stats/_dataclasses/__init__.py +0 -48
- scitex/fts/_tables/__init__.py +0 -65
- scitex/fts/_tables/_latex/__init__.py +0 -93
- scitex/fts/_tables/_latex/_editor/__init__.py +0 -11
- scitex/fts/_tables/_latex/_editor/_app.py +0 -725
- scitex/fts/_tables/_latex/_figure_exporter.py +0 -153
- scitex/fts/_tables/_latex/_stats_formatter.py +0 -274
- scitex/fts/_tables/_latex/_table_exporter.py +0 -362
- scitex/fts/_tables/_latex/_utils.py +0 -369
- scitex/fts/_tables/_latex/_validator.py +0 -445
- scitex/io/_save_modules/_pltz_bundle.py +0 -356
- /scitex/{fig → canvas}/README.md +0 -0
- /scitex/{fig → canvas}/backend/__init__.py +0 -0
- /scitex/{fig → canvas}/backend/_export.py +0 -0
- /scitex/{fig → canvas}/backend/_render.py +0 -0
- /scitex/{fig → canvas}/docs/CANVAS_ARCHITECTURE.md +0 -0
- /scitex/{fig → canvas}/editor/__init__.py +0 -0
- /scitex/{fig → canvas}/editor/_dearpygui_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_flask_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_mpl_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_qt_editor.py +0 -0
- /scitex/{fig → canvas}/editor/_tkinter_editor.py +0 -0
- /scitex/{fig → canvas}/editor/edit/backend_detector.py +0 -0
- /scitex/{fig → canvas}/editor/edit/manual_handler.py +0 -0
- /scitex/{fig → canvas}/editor/edit/path_resolver.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/__init__.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/_plotter.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/_utils.py +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/base/reset.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/base/typography.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/base/variables.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/buttons.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/context-menu.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/dropdown.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/forms.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/modal.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/components/sections.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/element-inspector.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/loading.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/overlay.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/selection.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/features/statistics.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/index.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/container.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/controls.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/css/layout/preview.css +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/axis.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/basic.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/alignment/distribute.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/canvas.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/dragging.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/resize.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/canvas/selection.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/core/state.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/core/utils.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/dev/element-inspector.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/bbox.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/element-drag.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/editor/overlay.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/main.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/shortcuts/context-menu.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/shortcuts/keyboard.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/controls.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/download.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/help.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/static/js/ui/theme.js +0 -0
- /scitex/{fig → canvas}/editor/flask_editor/templates/__init__.py +0 -0
- /scitex/{fig → canvas}/io/_directory.py +0 -0
- /scitex/{fig → canvas}/model/_plot_types.py +0 -0
- /scitex/{fig → canvas}/utils/_defaults.py +0 -0
- /scitex/{fig → canvas}/utils/_validate.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_conversion/__init__.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_conversion/_bundle2dict.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_conversion/_dict2bundle.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_Axes.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_BBox.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_ColumnDef.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataFormat.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataInfo.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_DataSource.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_dataclasses/_SizeMM.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/__init__.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_bar.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_line.py +0 -0
- /scitex/{fts/_bundle → io/bundle}/_extractors/_extract_scatter.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_figure/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_figure}/_composite.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_plot/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/_export.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_backend/_render.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_ChannelEncoding.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_Encoding.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_Theme.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/_TraceEncoding.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_dataclasses/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_bar.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_box.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_distribution.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_errorbar.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_histogram.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_image.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_line.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_scatter.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_seaborn.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_models/_plot_types/_violin.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/__init__.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_auto_layout.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_calc_bounds.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_const_sizes.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_convert_coords.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_get_template.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_normalize.py +0 -0
- /scitex/{fts/_fig → io/bundle/kinds/_plot}/_utils/_validate.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_shape/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_stats/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_stats/_dataclasses/_Stats.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_stats/_dataclasses/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_editor/__init__.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_stats_formatter.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_utils.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_table/_latex/_validator.py +0 -0
- /scitex/{fts/_kinds → io/bundle/kinds}/_text/__init__.py +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/data_info.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/encoding.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/node.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/render_manifest.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/stats.schema.json +0 -0
- /scitex/{fts/_schemas → io/bundle/schemas}/theme.schema.json +0 -0
- {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/WHEEL +0 -0
- {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/entry_points.txt +0 -0
- {scitex-2.10.2.dist-info → scitex-2.11.0.dist-info}/licenses/LICENSE +0 -0
scitex/path/_get_module_path.py
CHANGED
|
@@ -1,46 +1,48 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
#
|
|
3
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
41
|
-
|
|
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
|
|
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
|
-
#
|
|
3
|
-
#
|
|
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
|
-
|
|
7
|
-
import os
|
|
5
|
+
"""Save path utilities - deprecated, use _mk_spath.py instead."""
|
|
8
6
|
|
|
9
|
-
from .
|
|
7
|
+
from ._mk_spath import mk_spath
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
#
|
|
3
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
#
|
|
3
|
-
#
|
|
4
|
-
|
|
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
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Union
|
|
9
10
|
|
|
10
11
|
|
|
11
|
-
def increment_version(
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
#
|
|
3
|
-
#
|
|
4
|
-
|
|
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
|
|
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.
|
|
21
|
+
If True, create the directory structure for the save path.
|
|
22
22
|
|
|
23
|
-
Returns
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
Returns
|
|
24
|
+
-------
|
|
25
|
+
Path
|
|
26
26
|
The full save path for the file.
|
|
27
27
|
|
|
28
|
-
Example
|
|
29
|
-
|
|
30
|
-
>>>
|
|
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/
|
|
32
|
+
Path('/path/to/current/script_out/output.txt')
|
|
34
33
|
"""
|
|
35
|
-
|
|
36
|
-
if "ipython" in
|
|
37
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
3
|
-
#
|
|
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
|
-
|
|
5
|
+
"""Path utilities - deprecated, use _this_path.py instead."""
|
|
7
6
|
|
|
7
|
+
from ._this_path import get_this_path, this_path
|
|
8
8
|
|
|
9
|
-
|
|
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
|
-
#
|
|
3
|
-
#
|
|
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
|
-
|
|
5
|
+
"""Path splitting utilities."""
|
|
7
6
|
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Tuple, Union
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
18
|
-
|
|
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
|
-
#
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 .
|
|
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 .
|
|
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
|
|
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
|