From 41c76203b83c4b5d9d20e7bbdbe59ef0a4a35f85 Mon Sep 17 00:00:00 2001 From: Yusuke Watanabe Date: Sat, 6 Jun 2026 22:43:20 +0900 Subject: [PATCH] fix(ci): bundle src/scitex/_sphinx_html/ into wheel (PS-121/PS-128) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PS-121 audits that scitex-cloud can serve per-package docs from the in-wheel ``src//_sphinx_html/index.html`` bundle. This repo had no bundle checked in AND ``.gitignore`` actively excluded ``src/*/_sphinx_html/`` — the latter is PS-128, because hatchling's force-include path requires the directory to be tracked. Two-part fix: 1. Drop the ``src/*/_sphinx_html/`` line from .gitignore (PS-128). 2. Commit the freshly-built ``_sphinx_html/`` tree under ``src/scitex/`` (PS-121). The package directory is ``scitex``, not ``scitex_python``. Built locally with sphinx 9.1.0 + the canonical pinned doc stack (sphinx-rtd-theme, myst-parser, sphinx-copybutton, sphinx-autodoc-typehints, plus nbsphinx, matplotlib for gallery). The ``rtd-sphinx-build-on-ubuntu-latest.yml`` workflow already in place will keep the bundle refreshed on every push to main/develop going forward. Note: bundle is ~60 MB because the docs include the matplotlib gallery image set; ``.doctrees/`` and ``__intersphinx_cache__/`` intermediates have been stripped to keep the commit size down. Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitignore | 4 +- src/scitex/_sphinx_html/.buildinfo | 4 + src/scitex/_sphinx_html/.nojekyll | 0 src/scitex/_sphinx_html/_modules/index.html | 766 +++++ src/scitex/_sphinx_html/_modules/logging.html | 3019 +++++++++++++++++ .../_sphinx_html/_modules/scitex/cli.html | 888 +++++ .../_modules/scitex_app/_files_api.html | 870 +++++ .../_sphinx_html/_modules/scitex_app/sdk.html | 815 +++++ .../_modules/scitex_app/sdk/_protocol.html | 810 +++++ .../_modules/scitex_app/sdk/_tree.html | 821 +++++ .../_modules/scitex_audit/_runner.html | 801 +++++ .../_sphinx_html/_modules/scitex_clew.html | 1112 ++++++ .../_modules/scitex_clew/_claim.html | 1308 +++++++ .../_modules/scitex_clew/_examples.html | 775 +++++ .../_modules/scitex_clew/_hash.html | 865 +++++ .../scitex_clew/_observers/_session.html | 792 +++++ .../scitex_clew/_register_intermediate.html | 775 +++++ .../_modules/scitex_clew/_rerun.html | 1085 ++++++ .../_modules/scitex_clew/_stamp.html | 1096 ++++++ .../_modules/scitex_compat/_compat.html | 768 +++++ .../scitex_config/_PriorityConfig.html | 1061 ++++++ .../_modules/scitex_config/_ScitexConfig.html | 1028 ++++++ .../_modules/scitex_config/_env_loader.html | 853 +++++ .../_modules/scitex_config/_paths.html | 1033 ++++++ .../scitex_context/_detect_environment.html | 841 +++++ .../scitex_context/_get_notebook_path.html | 959 ++++++ .../scitex_context/_suppress_output.html | 714 ++++ .../_modules/scitex_cv/_draw.html | 925 +++++ .../_modules/scitex_cv/_filters.html | 903 +++++ .../_sphinx_html/_modules/scitex_cv/_io.html | 843 +++++ .../_modules/scitex_cv/_transform.html | 870 +++++ .../_modules/scitex_dev/_cli/_utils.html | 870 +++++ .../_modules/scitex_dev/_core/decorators.html | 746 ++++ .../_modules/scitex_dev/_core/errors.html | 823 +++++ .../_modules/scitex_dev/_core/imports.html | 789 +++++ .../scitex_dev/_core/side_effects.html | 717 ++++ .../_modules/scitex_dev/_core/types.html | 862 +++++ .../_modules/scitex_dev/_docs/docs.html | 1108 ++++++ .../_modules/scitex_dev/_docs/search.html | 1145 +++++++ .../scitex_dev/_ecosystem/_mcp/_utils.html | 838 +++++ .../_modules/scitex_dev/_release/fix.html | 1167 +++++++ .../scitex_dev/_release/versions.html | 1157 +++++++ .../_modules/scitex_dev/_sync/_local.html | 1206 +++++++ .../_modules/scitex_dev/_sync/_remote.html | 1028 ++++++ .../_modules/scitex_dev/_sync/_tags.html | 780 +++++ .../_modules/scitex_etc/_grid.html | 740 ++++ .../_modules/scitex_etc/_search.html | 813 +++++ .../_modules/scitex_etc/wait_key.html | 736 ++++ .../_SigMacro_processFigure_S.html | 805 +++++ .../scitex_gists/_SigMacro_toBlue.html | 849 +++++ .../_modules/scitex_logging/_Tee.html | 873 +++++ .../_modules/scitex_logging/_config.html | 851 +++++ .../_modules/scitex_logging/_context.html | 779 +++++ .../_modules/scitex_logging/_errors.html | 1286 +++++++ .../_modules/scitex_logging/_warnings.html | 968 ++++++ .../_sphinx_html/_modules/scitex_msword.html | 989 ++++++ .../_modules/scitex_msword/comments.html | 1031 ++++++ .../_modules/scitex_msword/diff.html | 955 ++++++ .../_modules/scitex_msword/highlights.html | 973 ++++++ .../_modules/scitex_msword/profiles.html | 1086 ++++++ .../_modules/scitex_msword/reader.html | 1461 ++++++++ .../_modules/scitex_msword/track_changes.html | 1160 +++++++ .../_modules/scitex_msword/utils.html | 986 ++++++ .../_modules/scitex_msword/writer.html | 1043 ++++++ .../_modules/scitex_notebook/_compile.html | 914 +++++ .../_modules/scitex_notebook/_convert.html | 955 ++++++ .../_modules/scitex_notebook/_parse.html | 756 +++++ .../_modules/scitex_notebook/_verify.html | 802 +++++ .../_modules/scitex_os/_check_host.html | 710 ++++ .../_sphinx_html/_modules/scitex_os/_mv.html | 726 ++++ .../_modules/scitex_parallel/_run.html | 769 +++++ .../_modules/scitex_path/_clean.html | 732 ++++ .../_modules/scitex_path/_find.html | 776 +++++ .../scitex_path/_get_module_path.html | 730 ++++ .../_modules/scitex_path/_getsize.html | 711 ++++ .../_modules/scitex_path/_mk_spath.html | 721 ++++ .../_modules/scitex_path/_split.html | 716 ++++ .../_modules/scitex_path/_symlink.html | 990 ++++++ .../_modules/scitex_path/_this_path.html | 703 ++++ .../_modules/scitex_path/_version.html | 785 +++++ .../_sphinx_html/_modules/scitex_repro.html | 751 ++++ .../scitex_repro/_RandomStateManager.html | 1316 +++++++ .../_modules/scitex_repro/_gen_ID.html | 735 ++++ .../_modules/scitex_repro/_gen_timestamp.html | 718 ++++ .../_modules/scitex_repro/_hash_array.html | 712 ++++ .../_modules/scitex_resource/_host.html | 832 +++++ .../_log_processor_usages.html | 906 +++++ .../_modules/scitex_resource/_machine.html | 747 ++++ .../scitex_resource/_specs/_metrics.html | 829 +++++ .../_specs/_processor_usages.html | 957 ++++++ .../scitex_resource/_specs/_specs.html | 949 ++++++ .../_modules/scitex_security/github.html | 1131 ++++++ .../_sphinx_html/_modules/scitex_ui.html | 741 ++++ .../_modules/scitex_ui/_registry.html | 700 ++++ .../results/_CompilationResult.html | 745 ++++ .../_dataclasses/tree/_ManuscriptTree.html | 758 +++++ .../_dataclasses/tree/_RevisionTree.html | 771 +++++ .../_dataclasses/tree/_SupplementaryTree.html | 775 +++++ .../_modules/scitex_writer/writer.html | 1056 ++++++ .../_sphinx_html/_sources/api/index.rst.txt | 33 + .../_sources/api/scitex.ai.rst.txt | 6 + .../_sources/api/scitex.clew.rst.txt | 6 + .../_sources/api/scitex.config.rst.txt | 6 + .../_sources/api/scitex.db.rst.txt | 6 + .../_sources/api/scitex.decorators.rst.txt | 6 + .../_sources/api/scitex.diagram.rst.txt | 6 + .../_sources/api/scitex.dict.rst.txt | 6 + .../_sources/api/scitex.dsp.rst.txt | 6 + .../_sources/api/scitex.gen.rst.txt | 6 + .../_sources/api/scitex.introspect.rst.txt | 6 + .../_sources/api/scitex.io.rst.txt | 6 + .../_sources/api/scitex.linter.rst.txt | 6 + .../_sources/api/scitex.logging.rst.txt | 6 + .../_sources/api/scitex.nn.rst.txt | 6 + .../_sources/api/scitex.path.rst.txt | 6 + .../_sources/api/scitex.pd.rst.txt | 6 + .../_sources/api/scitex.plt.rst.txt | 12 + .../_sources/api/scitex.repro.rst.txt | 6 + .../_sources/api/scitex.scholar.rst.txt | 6 + .../_sources/api/scitex.session.rst.txt | 8 + .../_sources/api/scitex.social.rst.txt | 6 + .../_sources/api/scitex.stats.rst.txt | 6 + .../_sources/api/scitex.str.rst.txt | 6 + .../_sources/api/scitex.template.rst.txt | 6 + .../_sources/api/scitex.writer.rst.txt | 6 + .../_sources/core_concepts.rst.txt | 181 + .../_sphinx_html/_sources/gallery.rst.txt | 206 ++ .../_sphinx_html/_sources/index.rst.txt | 78 + .../_sources/installation.rst.txt | 166 + .../_sphinx_html/_sources/modules/ai.rst.txt | 81 + .../_sphinx_html/_sources/modules/app.rst.txt | 4 + .../_sources/modules/audio.rst.txt | 4 + .../_sources/modules/audit.rst.txt | 4 + .../_sources/modules/benchmark.rst.txt | 4 + .../_sources/modules/bridge.rst.txt | 4 + .../_sources/modules/browser.rst.txt | 4 + .../_sources/modules/canvas.rst.txt | 4 + .../_sources/modules/capture.rst.txt | 4 + .../_sources/modules/clew.rst.txt | 93 + .../_sphinx_html/_sources/modules/cli.rst.txt | 4 + .../_sources/modules/cloud.rst.txt | 4 + .../_sources/modules/compat.rst.txt | 4 + .../_sources/modules/config.rst.txt | 87 + .../_sources/modules/container.rst.txt | 4 + .../_sources/modules/context.rst.txt | 4 + .../_sphinx_html/_sources/modules/cv.rst.txt | 4 + .../_sources/modules/dataset.rst.txt | 4 + .../_sources/modules/datetime.rst.txt | 4 + .../_sphinx_html/_sources/modules/db.rst.txt | 4 + .../_sources/modules/decorators.rst.txt | 79 + .../_sphinx_html/_sources/modules/dev.rst.txt | 4 + .../_sources/modules/diagram.rst.txt | 98 + .../_sources/modules/dict.rst.txt | 4 + .../_sphinx_html/_sources/modules/dsp.rst.txt | 74 + .../_sphinx_html/_sources/modules/etc.rst.txt | 4 + .../_sources/modules/events.rst.txt | 4 + .../_sphinx_html/_sources/modules/gen.rst.txt | 36 + .../_sources/modules/gists.rst.txt | 4 + .../_sphinx_html/_sources/modules/git.rst.txt | 4 + .../_sources/modules/index.rst.txt | 111 + .../_sources/modules/introspect.rst.txt | 70 + .../_sphinx_html/_sources/modules/io.rst.txt | 115 + .../_sources/modules/linalg.rst.txt | 4 + .../_sources/modules/linter.rst.txt | 131 + .../_sources/modules/logging.rst.txt | 107 + .../_sources/modules/media.rst.txt | 4 + .../_sources/modules/module.rst.txt | 4 + .../_sources/modules/msword.rst.txt | 4 + .../_sphinx_html/_sources/modules/nn.rst.txt | 79 + .../_sources/modules/notebook.rst.txt | 4 + .../_sources/modules/notify.rst.txt | 4 + .../_sphinx_html/_sources/modules/os.rst.txt | 4 + .../_sources/modules/parallel.rst.txt | 4 + .../_sources/modules/path.rst.txt | 4 + .../_sphinx_html/_sources/modules/pd.rst.txt | 45 + .../_sphinx_html/_sources/modules/plt.rst.txt | 161 + .../_sources/modules/project.rst.txt | 4 + .../_sources/modules/repro.rst.txt | 70 + .../_sources/modules/resource.rst.txt | 4 + .../_sphinx_html/_sources/modules/rng.rst.txt | 4 + .../_sources/modules/schema.rst.txt | 4 + .../_sources/modules/scholar.rst.txt | 131 + .../_sources/modules/security.rst.txt | 4 + .../_sources/modules/session.rst.txt | 210 ++ .../_sphinx_html/_sources/modules/sh.rst.txt | 4 + .../_sources/modules/social.rst.txt | 4 + .../_sources/modules/stats.rst.txt | 152 + .../_sphinx_html/_sources/modules/str.rst.txt | 4 + .../_sources/modules/template.rst.txt | 85 + .../_sphinx_html/_sources/modules/tex.rst.txt | 4 + .../_sources/modules/torch.rst.txt | 4 + .../_sources/modules/tunnel.rst.txt | 4 + .../_sources/modules/types.rst.txt | 4 + .../_sphinx_html/_sources/modules/ui.rst.txt | 4 + .../_sources/modules/utils.rst.txt | 4 + .../_sphinx_html/_sources/modules/web.rst.txt | 4 + .../_sources/modules/writer.rst.txt | 164 + .../_sphinx_html/_sources/quickstart.rst.txt | 231 ++ .../_sources/source/api/ai.rst.txt | 82 + .../_sources/source/api/app.rst.txt | 101 + .../_sources/source/api/audio.rst.txt | 78 + .../_sources/source/api/audit.rst.txt | 7 + .../_sources/source/api/benchmark.rst.txt | 7 + .../_sources/source/api/bridge.rst.txt | 7 + .../_sources/source/api/browser.rst.txt | 7 + .../_sources/source/api/canvas.rst.txt | 7 + .../_sources/source/api/capture.rst.txt | 81 + .../_sources/source/api/clew.rst.txt | 94 + .../_sources/source/api/cli.rst.txt | 7 + .../_sources/source/api/cloud.rst.txt | 123 + .../_sources/source/api/compat.rst.txt | 7 + .../_sources/source/api/config.rst.txt | 88 + .../_sources/source/api/container.rst.txt | 7 + .../_sources/source/api/context.rst.txt | 7 + .../_sources/source/api/cv.rst.txt | 7 + .../_sources/source/api/dataset.rst.txt | 125 + .../_sources/source/api/datetime.rst.txt | 7 + .../_sources/source/api/db.rst.txt | 7 + .../_sources/source/api/decorators.rst.txt | 80 + .../_sources/source/api/dev.rst.txt | 163 + .../_sources/source/api/diagram.rst.txt | 99 + .../_sources/source/api/dict.rst.txt | 7 + .../_sources/source/api/dsp.rst.txt | 75 + .../_sources/source/api/etc.rst.txt | 7 + .../_sources/source/api/events.rst.txt | 7 + .../_sources/source/api/gen.rst.txt | 38 + .../_sources/source/api/gists.rst.txt | 7 + .../_sources/source/api/git.rst.txt | 7 + .../_sources/source/api/index.rst.txt | 118 + .../_sources/source/api/introspect.rst.txt | 71 + .../_sources/source/api/io.rst.txt | 181 + .../_sources/source/api/linalg.rst.txt | 7 + .../_sources/source/api/linter.rst.txt | 191 ++ .../_sources/source/api/logging.rst.txt | 108 + .../_sources/source/api/media.rst.txt | 7 + .../_sources/source/api/module.rst.txt | 7 + .../_sources/source/api/msword.rst.txt | 7 + .../_sources/source/api/nn.rst.txt | 80 + .../_sources/source/api/notebook.rst.txt | 7 + .../_sources/source/api/notification.rst.txt | 134 + .../_sources/source/api/os.rst.txt | 7 + .../_sources/source/api/parallel.rst.txt | 7 + .../_sources/source/api/path.rst.txt | 7 + .../_sources/source/api/pd.rst.txt | 46 + .../_sources/source/api/plt.rst.txt | 243 ++ .../_sources/source/api/project.rst.txt | 7 + .../_sources/source/api/repro.rst.txt | 71 + .../_sources/source/api/resource.rst.txt | 7 + .../_sources/source/api/rng.rst.txt | 7 + .../_sources/source/api/schema.rst.txt | 7 + .../_sources/source/api/scholar.rst.txt | 133 + .../_sources/source/api/security.rst.txt | 7 + .../_sources/source/api/session.rst.txt | 213 ++ .../_sources/source/api/sh.rst.txt | 7 + .../_sources/source/api/social.rst.txt | 7 + .../_sources/source/api/stats.rst.txt | 153 + .../_sources/source/api/str.rst.txt | 7 + .../_sources/source/api/template.rst.txt | 144 + .../_sources/source/api/tex.rst.txt | 7 + .../_sources/source/api/torch.rst.txt | 7 + .../_sources/source/api/tunnel.rst.txt | 7 + .../_sources/source/api/types.rst.txt | 7 + .../_sources/source/api/ui.rst.txt | 7 + .../_sources/source/api/utils.rst.txt | 7 + .../_sources/source/api/web.rst.txt | 7 + .../_sources/source/api/writer.rst.txt | 166 + .../_sphinx_html/_sources/source/cli.rst.txt | 98 + .../_sources/source/concepts.rst.txt | 267 ++ .../_sources/source/ecosystem.rst.txt | 123 + .../_sources/source/gallery.rst.txt | 206 ++ .../_sources/source/index.rst.txt | 88 + .../_sources/source/installation.rst.txt | 166 + .../_sphinx_html/_sources/source/mcp.rst.txt | 152 + .../_sources/source/quickstart.rst.txt | 287 ++ .../_sphinx_javascript_frameworks_compat.js | 123 + .../_sphinx_html/_static/architecture.mmd | 35 + .../_sphinx_html/_static/base-stemmer.js | 476 +++ src/scitex/_sphinx_html/_static/basic.css | 906 +++++ .../_sphinx_html/_static/check-solid.svg | 4 + .../_sphinx_html/_static/clipboard.min.js | 7 + .../_sphinx_html/_static/copy-button.svg | 5 + .../_sphinx_html/_static/copybutton.css | 94 + src/scitex/_sphinx_html/_static/copybutton.js | 248 ++ .../_sphinx_html/_static/copybutton_funcs.js | 73 + .../_sphinx_html/_static/css/badge_only.css | 1 + .../css/fonts/Roboto-Slab-Regular.woff | Bin 0 -> 86288 bytes .../css/fonts/Roboto-Slab-Regular.woff2 | Bin 0 -> 66444 bytes .../_static/css/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../_static/css/fonts/fontawesome-webfont.svg | 2671 +++++++++++++++ .../_static/css/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../css/fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../css/fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../_static/css/fonts/lato-normal-italic.woff | Bin 0 -> 328412 bytes .../css/fonts/lato-normal-italic.woff2 | Bin 0 -> 195704 bytes .../_static/css/fonts/lato-normal.woff | Bin 0 -> 309192 bytes .../_static/css/fonts/lato-normal.woff2 | Bin 0 -> 182708 bytes src/scitex/_sphinx_html/_static/css/theme.css | 4 + src/scitex/_sphinx_html/_static/doctools.js | 150 + .../_static/documentation_options.js | 13 + .../_sphinx_html/_static/english-stemmer.js | 1066 ++++++ .../_static/fonts/Lato/lato-italic.eot | Bin 0 -> 268604 bytes .../_static/fonts/Lato/lato-italic.ttf | Bin 0 -> 639388 bytes .../_static/fonts/Lato/lato-italic.woff | Bin 0 -> 328412 bytes .../_static/fonts/Lato/lato-italic.woff2 | Bin 0 -> 195704 bytes .../_static/fonts/Lato/lato-regular.eot | Bin 0 -> 253461 bytes .../_static/fonts/Lato/lato-regular.ttf | Bin 0 -> 607720 bytes .../_static/fonts/Lato/lato-regular.woff | Bin 0 -> 309192 bytes .../_static/fonts/Lato/lato-regular.woff2 | Bin 0 -> 182708 bytes .../RobotoSlab/roboto-slab-v7-regular.eot | Bin 0 -> 78331 bytes .../RobotoSlab/roboto-slab-v7-regular.ttf | Bin 0 -> 169064 bytes .../RobotoSlab/roboto-slab-v7-regular.woff | Bin 0 -> 86288 bytes .../RobotoSlab/roboto-slab-v7-regular.woff2 | Bin 0 -> 66444 bytes .../_static/gallery/area/fill_between.json | 131 + .../_static/gallery/area/fill_betweenx.json | 117 + .../gallery/area/stx_fill_between.json | 131 + .../_static/gallery/area/stx_fillv.json | 131 + .../_static/gallery/categorical/bar.json | 119 + .../_static/gallery/categorical/barh.json | 119 + .../_static/gallery/categorical/boxplot.json | 307 ++ .../_static/gallery/categorical/stx_bar.json | 119 + .../_static/gallery/categorical/stx_barh.json | 119 + .../_static/gallery/categorical/stx_box.json | 369 ++ .../gallery/categorical/stx_boxplot.json | 369 ++ .../gallery/categorical/stx_violin.json | 217 ++ .../gallery/categorical/stx_violinplot.json | 217 ++ .../gallery/categorical/violinplot.json | 369 ++ .../_static/gallery/contour/contour.json | 119 + .../_static/gallery/contour/contourf.json | 119 + .../_static/gallery/contour/stx_contour.json | 119 + .../_static/gallery/distribution/hist.json | 119 + .../_static/gallery/distribution/hist2d.json | 117 + .../gallery/distribution/stx_ecdf.json | 131 + .../gallery/distribution/stx_joyplot.json | 171 + .../_static/gallery/distribution/stx_kde.json | 131 + .../_static/gallery/grid/imshow.json | 119 + .../_static/gallery/grid/matshow.json | 119 + .../_static/gallery/grid/stx_conf_mat.json | 117 + .../_static/gallery/grid/stx_heatmap.json | 119 + .../_static/gallery/grid/stx_image.json | 119 + .../_static/gallery/grid/stx_imshow.json | 119 + .../_static/gallery/line/plot.json | 152 + .../_static/gallery/line/step.json | 131 + .../_static/gallery/line/stx_line.json | 140 + .../_static/gallery/line/stx_shaded_line.json | 131 + .../_static/gallery/scatter/hexbin.json | 117 + .../_static/gallery/scatter/scatter.json | 119 + .../_static/gallery/scatter/stem.json | 143 + .../_static/gallery/scatter/stx_scatter.json | 119 + .../_static/gallery/special/pie.json | 117 + .../_static/gallery/special/stx_raster.json | 117 + .../gallery/special/stx_rectangle.json | 131 + .../_static/gallery/statistical/errorbar.json | 157 + .../gallery/statistical/stx_errorbar.json | 157 + .../gallery/statistical/stx_mean_ci.json | 131 + .../gallery/statistical/stx_mean_std.json | 131 + .../gallery/statistical/stx_median_iqr.json | 131 + .../_static/gallery/vector/quiver.json | 117 + .../_static/gallery/vector/streamplot.json | 119 + src/scitex/_sphinx_html/_static/jquery.js | 2 + .../_sphinx_html/_static/js/badge_only.js | 1 + src/scitex/_sphinx_html/_static/js/theme.js | 1 + .../_sphinx_html/_static/js/versions.js | 228 ++ .../_sphinx_html/_static/language_data.js | 13 + .../_static/nbsphinx-broken-thumbnail.svg | 9 + .../_static/nbsphinx-code-cells.css | 259 ++ .../_sphinx_html/_static/nbsphinx-gallery.css | 31 + .../_static/nbsphinx-no-thumbnail.svg | 9 + src/scitex/_sphinx_html/_static/pygments.css | 75 + .../_sphinx_html/_static/searchtools.js | 693 ++++ .../_static/session_lifecycle.mmd | 20 + .../_sphinx_html/_static/sphinx_highlight.js | 159 + src/scitex/_sphinx_html/_static/workflow.mmd | 21 + src/scitex/_sphinx_html/api/index.html | 709 ++++ src/scitex/_sphinx_html/api/scitex.ai.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.clew.html | 1200 +++++++ .../_sphinx_html/api/scitex.config.html | 1330 ++++++++ src/scitex/_sphinx_html/api/scitex.db.html | 680 ++++ .../_sphinx_html/api/scitex.decorators.html | 680 ++++ .../_sphinx_html/api/scitex.diagram.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.dict.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.dsp.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.gen.html | 680 ++++ .../_sphinx_html/api/scitex.introspect.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.io.html | 680 ++++ .../_sphinx_html/api/scitex.linter.html | 680 ++++ .../_sphinx_html/api/scitex.logging.html | 1272 +++++++ src/scitex/_sphinx_html/api/scitex.nn.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.path.html | 1146 +++++++ src/scitex/_sphinx_html/api/scitex.pd.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.plt.html | 686 ++++ src/scitex/_sphinx_html/api/scitex.repro.html | 1139 +++++++ .../_sphinx_html/api/scitex.scholar.html | 680 ++++ .../_sphinx_html/api/scitex.session.html | 680 ++++ .../_sphinx_html/api/scitex.social.html | 678 ++++ src/scitex/_sphinx_html/api/scitex.stats.html | 680 ++++ src/scitex/_sphinx_html/api/scitex.str.html | 680 ++++ .../_sphinx_html/api/scitex.template.html | 680 ++++ .../_sphinx_html/api/scitex.writer.html | 1136 +++++++ src/scitex/_sphinx_html/core_concepts.html | 856 +++++ src/scitex/_sphinx_html/gallery.html | 1023 ++++++ src/scitex/_sphinx_html/genindex.html | 2550 ++++++++++++++ src/scitex/_sphinx_html/index.html | 843 +++++ src/scitex/_sphinx_html/installation.html | 845 +++++ src/scitex/_sphinx_html/modules/ai.html | 760 +++++ src/scitex/_sphinx_html/modules/app.html | 681 ++++ src/scitex/_sphinx_html/modules/audio.html | 681 ++++ src/scitex/_sphinx_html/modules/audit.html | 681 ++++ .../_sphinx_html/modules/benchmark.html | 681 ++++ src/scitex/_sphinx_html/modules/bridge.html | 681 ++++ src/scitex/_sphinx_html/modules/browser.html | 681 ++++ src/scitex/_sphinx_html/modules/canvas.html | 681 ++++ src/scitex/_sphinx_html/modules/capture.html | 681 ++++ src/scitex/_sphinx_html/modules/clew.html | 768 +++++ src/scitex/_sphinx_html/modules/cli.html | 681 ++++ src/scitex/_sphinx_html/modules/cloud.html | 681 ++++ src/scitex/_sphinx_html/modules/compat.html | 681 ++++ src/scitex/_sphinx_html/modules/config.html | 758 +++++ .../_sphinx_html/modules/container.html | 681 ++++ src/scitex/_sphinx_html/modules/context.html | 681 ++++ src/scitex/_sphinx_html/modules/cv.html | 681 ++++ src/scitex/_sphinx_html/modules/dataset.html | 681 ++++ src/scitex/_sphinx_html/modules/datetime.html | 681 ++++ src/scitex/_sphinx_html/modules/db.html | 681 ++++ .../_sphinx_html/modules/decorators.html | 756 +++++ src/scitex/_sphinx_html/modules/dev.html | 681 ++++ src/scitex/_sphinx_html/modules/diagram.html | 775 +++++ src/scitex/_sphinx_html/modules/dict.html | 681 ++++ src/scitex/_sphinx_html/modules/dsp.html | 749 ++++ src/scitex/_sphinx_html/modules/etc.html | 681 ++++ src/scitex/_sphinx_html/modules/events.html | 681 ++++ src/scitex/_sphinx_html/modules/gen.html | 711 ++++ src/scitex/_sphinx_html/modules/gists.html | 681 ++++ src/scitex/_sphinx_html/modules/git.html | 681 ++++ src/scitex/_sphinx_html/modules/index.html | 946 ++++++ .../_sphinx_html/modules/introspect.html | 746 ++++ src/scitex/_sphinx_html/modules/io.html | 803 +++++ src/scitex/_sphinx_html/modules/linalg.html | 681 ++++ src/scitex/_sphinx_html/modules/linter.html | 802 +++++ src/scitex/_sphinx_html/modules/logging.html | 795 +++++ src/scitex/_sphinx_html/modules/media.html | 681 ++++ src/scitex/_sphinx_html/modules/module.html | 681 ++++ src/scitex/_sphinx_html/modules/msword.html | 681 ++++ src/scitex/_sphinx_html/modules/nn.html | 757 +++++ src/scitex/_sphinx_html/modules/notebook.html | 681 ++++ src/scitex/_sphinx_html/modules/notify.html | 681 ++++ src/scitex/_sphinx_html/modules/os.html | 681 ++++ src/scitex/_sphinx_html/modules/parallel.html | 681 ++++ src/scitex/_sphinx_html/modules/path.html | 681 ++++ src/scitex/_sphinx_html/modules/pd.html | 721 ++++ src/scitex/_sphinx_html/modules/plt.html | 838 +++++ src/scitex/_sphinx_html/modules/project.html | 681 ++++ src/scitex/_sphinx_html/modules/repro.html | 743 ++++ src/scitex/_sphinx_html/modules/resource.html | 681 ++++ src/scitex/_sphinx_html/modules/rng.html | 681 ++++ src/scitex/_sphinx_html/modules/schema.html | 681 ++++ src/scitex/_sphinx_html/modules/scholar.html | 801 +++++ src/scitex/_sphinx_html/modules/security.html | 681 ++++ src/scitex/_sphinx_html/modules/session.html | 890 +++++ src/scitex/_sphinx_html/modules/sh.html | 681 ++++ src/scitex/_sphinx_html/modules/social.html | 681 ++++ src/scitex/_sphinx_html/modules/stats.html | 820 +++++ src/scitex/_sphinx_html/modules/str.html | 681 ++++ src/scitex/_sphinx_html/modules/template.html | 779 +++++ src/scitex/_sphinx_html/modules/tex.html | 681 ++++ src/scitex/_sphinx_html/modules/torch.html | 681 ++++ src/scitex/_sphinx_html/modules/tunnel.html | 681 ++++ src/scitex/_sphinx_html/modules/types.html | 681 ++++ src/scitex/_sphinx_html/modules/ui.html | 681 ++++ src/scitex/_sphinx_html/modules/utils.html | 681 ++++ src/scitex/_sphinx_html/modules/web.html | 681 ++++ src/scitex/_sphinx_html/modules/writer.html | 825 +++++ src/scitex/_sphinx_html/objects.inv | Bin 0 -> 28361 bytes src/scitex/_sphinx_html/py-modindex.html | 1015 ++++++ src/scitex/_sphinx_html/quickstart.html | 907 +++++ src/scitex/_sphinx_html/search.html | 690 ++++ src/scitex/_sphinx_html/searchindex.js | 1 + src/scitex/_sphinx_html/source/api/ai.html | 753 ++++ src/scitex/_sphinx_html/source/api/app.html | 1094 ++++++ src/scitex/_sphinx_html/source/api/audio.html | 735 ++++ src/scitex/_sphinx_html/source/api/audit.html | 705 ++++ .../_sphinx_html/source/api/benchmark.html | 674 ++++ .../_sphinx_html/source/api/bridge.html | 674 ++++ .../_sphinx_html/source/api/browser.html | 674 ++++ .../_sphinx_html/source/api/canvas.html | 674 ++++ .../_sphinx_html/source/api/capture.html | 738 ++++ src/scitex/_sphinx_html/source/api/clew.html | 1281 +++++++ src/scitex/_sphinx_html/source/api/cli.html | 737 ++++ src/scitex/_sphinx_html/source/api/cloud.html | 778 +++++ .../_sphinx_html/source/api/compat.html | 702 ++++ .../_sphinx_html/source/api/config.html | 1403 ++++++++ .../_sphinx_html/source/api/container.html | 674 ++++ .../_sphinx_html/source/api/context.html | 856 +++++ src/scitex/_sphinx_html/source/api/cv.html | 1147 +++++++ .../_sphinx_html/source/api/dataset.html | 790 +++++ .../_sphinx_html/source/api/datetime.html | 674 ++++ src/scitex/_sphinx_html/source/api/db.html | 674 ++++ .../_sphinx_html/source/api/decorators.html | 749 ++++ src/scitex/_sphinx_html/source/api/dev.html | 1800 ++++++++++ .../_sphinx_html/source/api/diagram.html | 768 +++++ src/scitex/_sphinx_html/source/api/dict.html | 674 ++++ src/scitex/_sphinx_html/source/api/dsp.html | 742 ++++ src/scitex/_sphinx_html/source/api/etc.html | 777 +++++ .../_sphinx_html/source/api/events.html | 674 ++++ src/scitex/_sphinx_html/source/api/gen.html | 704 ++++ src/scitex/_sphinx_html/source/api/gists.html | 701 ++++ src/scitex/_sphinx_html/source/api/git.html | 674 ++++ src/scitex/_sphinx_html/source/api/index.html | 1181 +++++++ .../_sphinx_html/source/api/introspect.html | 739 ++++ src/scitex/_sphinx_html/source/api/io.html | 847 +++++ .../_sphinx_html/source/api/linalg.html | 674 ++++ .../_sphinx_html/source/api/linter.html | 853 +++++ .../_sphinx_html/source/api/logging.html | 1341 ++++++++ src/scitex/_sphinx_html/source/api/media.html | 686 ++++ .../_sphinx_html/source/api/module.html | 674 ++++ .../_sphinx_html/source/api/msword.html | 1798 ++++++++++ src/scitex/_sphinx_html/source/api/nn.html | 750 ++++ .../_sphinx_html/source/api/notebook.html | 915 +++++ .../_sphinx_html/source/api/notification.html | 800 +++++ src/scitex/_sphinx_html/source/api/os.html | 697 ++++ .../_sphinx_html/source/api/parallel.html | 707 ++++ src/scitex/_sphinx_html/source/api/path.html | 1140 +++++++ src/scitex/_sphinx_html/source/api/pd.html | 714 ++++ src/scitex/_sphinx_html/source/api/plt.html | 1104 ++++++ .../_sphinx_html/source/api/project.html | 674 ++++ src/scitex/_sphinx_html/source/api/repro.html | 1194 +++++++ .../_sphinx_html/source/api/resource.html | 888 +++++ src/scitex/_sphinx_html/source/api/rng.html | 1133 +++++++ .../_sphinx_html/source/api/schema.html | 674 ++++ .../_sphinx_html/source/api/scholar.html | 794 +++++ .../_sphinx_html/source/api/security.html | 774 +++++ .../_sphinx_html/source/api/session.html | 883 +++++ src/scitex/_sphinx_html/source/api/sh.html | 674 ++++ .../_sphinx_html/source/api/social.html | 674 ++++ src/scitex/_sphinx_html/source/api/stats.html | 813 +++++ src/scitex/_sphinx_html/source/api/str.html | 674 ++++ .../_sphinx_html/source/api/template.html | 824 +++++ src/scitex/_sphinx_html/source/api/tex.html | 674 ++++ src/scitex/_sphinx_html/source/api/torch.html | 674 ++++ .../_sphinx_html/source/api/tunnel.html | 674 ++++ src/scitex/_sphinx_html/source/api/types.html | 674 ++++ src/scitex/_sphinx_html/source/api/ui.html | 734 ++++ src/scitex/_sphinx_html/source/api/utils.html | 674 ++++ src/scitex/_sphinx_html/source/api/web.html | 674 ++++ .../_sphinx_html/source/api/writer.html | 1274 +++++++ src/scitex/_sphinx_html/source/cli.html | 752 ++++ src/scitex/_sphinx_html/source/concepts.html | 902 +++++ src/scitex/_sphinx_html/source/ecosystem.html | 813 +++++ src/scitex/_sphinx_html/source/gallery.html | 1018 ++++++ src/scitex/_sphinx_html/source/index.html | 877 +++++ .../_sphinx_html/source/installation.html | 840 +++++ src/scitex/_sphinx_html/source/mcp.html | 832 +++++ .../_sphinx_html/source/quickstart.html | 922 +++++ 552 files changed, 252479 insertions(+), 2 deletions(-) create mode 100644 src/scitex/_sphinx_html/.buildinfo create mode 100644 src/scitex/_sphinx_html/.nojekyll create mode 100644 src/scitex/_sphinx_html/_modules/index.html create mode 100644 src/scitex/_sphinx_html/_modules/logging.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex/cli.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_app/_files_api.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_app/sdk.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_app/sdk/_protocol.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_app/sdk/_tree.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_audit/_runner.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_claim.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_examples.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_hash.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_observers/_session.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_register_intermediate.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_rerun.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_clew/_stamp.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_compat/_compat.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_config/_PriorityConfig.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_config/_ScitexConfig.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_config/_env_loader.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_config/_paths.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_context/_detect_environment.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_context/_get_notebook_path.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_context/_suppress_output.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_cv/_draw.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_cv/_filters.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_cv/_io.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_cv/_transform.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_cli/_utils.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_core/decorators.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_core/errors.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_core/imports.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_core/side_effects.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_core/types.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_docs/docs.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_docs/search.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_ecosystem/_mcp/_utils.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_release/fix.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_release/versions.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_local.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_remote.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_tags.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_etc/_grid.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_etc/_search.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_etc/wait_key.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_processFigure_S.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_toBlue.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_logging/_Tee.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_logging/_config.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_logging/_context.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_logging/_errors.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_logging/_warnings.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/comments.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/diff.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/highlights.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/profiles.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/reader.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/track_changes.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/utils.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_msword/writer.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_notebook/_compile.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_notebook/_convert.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_notebook/_parse.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_notebook/_verify.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_os/_check_host.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_os/_mv.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_parallel/_run.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_clean.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_find.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_get_module_path.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_getsize.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_mk_spath.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_split.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_symlink.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_this_path.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_path/_version.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_repro.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_repro/_RandomStateManager.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_repro/_gen_ID.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_repro/_gen_timestamp.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_repro/_hash_array.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_resource/_host.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_resource/_log_processor_usages.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_resource/_machine.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_metrics.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_processor_usages.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_specs.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_security/github.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_ui.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_ui/_registry.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/results/_CompilationResult.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_ManuscriptTree.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_RevisionTree.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_SupplementaryTree.html create mode 100644 src/scitex/_sphinx_html/_modules/scitex_writer/writer.html create mode 100644 src/scitex/_sphinx_html/_sources/api/index.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.ai.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.clew.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.config.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.db.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.decorators.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.diagram.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.dict.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.dsp.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.gen.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.introspect.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.io.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.linter.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.logging.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.nn.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.path.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.pd.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.plt.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.repro.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.scholar.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.session.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.social.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.stats.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.str.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.template.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/api/scitex.writer.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/core_concepts.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/gallery.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/index.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/installation.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/ai.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/app.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/audio.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/audit.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/benchmark.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/bridge.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/browser.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/canvas.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/capture.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/clew.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/cli.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/cloud.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/compat.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/config.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/container.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/context.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/cv.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/dataset.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/datetime.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/db.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/decorators.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/dev.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/diagram.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/dict.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/dsp.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/etc.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/events.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/gen.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/gists.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/git.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/index.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/introspect.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/io.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/linalg.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/linter.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/logging.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/media.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/module.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/msword.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/nn.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/notebook.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/notify.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/os.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/parallel.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/path.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/pd.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/plt.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/project.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/repro.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/resource.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/rng.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/schema.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/scholar.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/security.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/session.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/sh.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/social.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/stats.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/str.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/template.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/tex.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/torch.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/tunnel.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/types.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/ui.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/utils.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/web.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/modules/writer.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/quickstart.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/ai.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/app.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/audio.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/audit.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/benchmark.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/bridge.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/browser.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/canvas.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/capture.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/clew.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/cli.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/cloud.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/compat.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/config.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/container.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/context.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/cv.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/dataset.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/datetime.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/db.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/decorators.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/dev.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/diagram.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/dict.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/dsp.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/etc.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/events.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/gen.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/gists.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/git.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/index.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/introspect.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/io.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/linalg.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/linter.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/logging.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/media.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/module.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/msword.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/nn.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/notebook.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/notification.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/os.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/parallel.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/path.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/pd.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/plt.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/project.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/repro.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/resource.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/rng.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/schema.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/scholar.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/security.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/session.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/sh.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/social.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/stats.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/str.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/template.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/tex.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/torch.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/tunnel.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/types.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/ui.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/utils.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/web.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/api/writer.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/cli.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/concepts.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/ecosystem.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/gallery.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/index.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/installation.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/mcp.rst.txt create mode 100644 src/scitex/_sphinx_html/_sources/source/quickstart.rst.txt create mode 100644 src/scitex/_sphinx_html/_static/_sphinx_javascript_frameworks_compat.js create mode 100644 src/scitex/_sphinx_html/_static/architecture.mmd create mode 100644 src/scitex/_sphinx_html/_static/base-stemmer.js create mode 100644 src/scitex/_sphinx_html/_static/basic.css create mode 100644 src/scitex/_sphinx_html/_static/check-solid.svg create mode 100644 src/scitex/_sphinx_html/_static/clipboard.min.js create mode 100644 src/scitex/_sphinx_html/_static/copy-button.svg create mode 100644 src/scitex/_sphinx_html/_static/copybutton.css create mode 100644 src/scitex/_sphinx_html/_static/copybutton.js create mode 100644 src/scitex/_sphinx_html/_static/copybutton_funcs.js create mode 100644 src/scitex/_sphinx_html/_static/css/badge_only.css create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/Roboto-Slab-Regular.woff create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/Roboto-Slab-Regular.woff2 create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/fontawesome-webfont.eot create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/fontawesome-webfont.svg create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/fontawesome-webfont.ttf create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/fontawesome-webfont.woff create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/fontawesome-webfont.woff2 create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/lato-normal-italic.woff create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/lato-normal-italic.woff2 create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/lato-normal.woff create mode 100644 src/scitex/_sphinx_html/_static/css/fonts/lato-normal.woff2 create mode 100644 src/scitex/_sphinx_html/_static/css/theme.css create mode 100644 src/scitex/_sphinx_html/_static/doctools.js create mode 100644 src/scitex/_sphinx_html/_static/documentation_options.js create mode 100644 src/scitex/_sphinx_html/_static/english-stemmer.js create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.eot create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.ttf create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.woff create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.woff2 create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.eot create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.ttf create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.woff create mode 100644 src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.woff2 create mode 100644 src/scitex/_sphinx_html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot create mode 100644 src/scitex/_sphinx_html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf create mode 100644 src/scitex/_sphinx_html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff create mode 100644 src/scitex/_sphinx_html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 create mode 100644 src/scitex/_sphinx_html/_static/gallery/area/fill_between.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/area/fill_betweenx.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/area/stx_fill_between.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/area/stx_fillv.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/bar.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/barh.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/boxplot.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/stx_bar.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/stx_barh.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/stx_box.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/stx_boxplot.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/stx_violin.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/stx_violinplot.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/categorical/violinplot.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/contour/contour.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/contour/contourf.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/contour/stx_contour.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/distribution/hist.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/distribution/hist2d.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/distribution/stx_ecdf.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/distribution/stx_joyplot.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/distribution/stx_kde.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/grid/imshow.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/grid/matshow.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/grid/stx_conf_mat.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/grid/stx_heatmap.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/grid/stx_image.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/grid/stx_imshow.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/line/plot.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/line/step.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/line/stx_line.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/line/stx_shaded_line.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/scatter/hexbin.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/scatter/scatter.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/scatter/stem.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/scatter/stx_scatter.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/special/pie.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/special/stx_raster.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/special/stx_rectangle.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/statistical/errorbar.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/statistical/stx_errorbar.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/statistical/stx_mean_ci.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/statistical/stx_mean_std.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/statistical/stx_median_iqr.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/vector/quiver.json create mode 100644 src/scitex/_sphinx_html/_static/gallery/vector/streamplot.json create mode 100644 src/scitex/_sphinx_html/_static/jquery.js create mode 100644 src/scitex/_sphinx_html/_static/js/badge_only.js create mode 100644 src/scitex/_sphinx_html/_static/js/theme.js create mode 100644 src/scitex/_sphinx_html/_static/js/versions.js create mode 100644 src/scitex/_sphinx_html/_static/language_data.js create mode 100644 src/scitex/_sphinx_html/_static/nbsphinx-broken-thumbnail.svg create mode 100644 src/scitex/_sphinx_html/_static/nbsphinx-code-cells.css create mode 100644 src/scitex/_sphinx_html/_static/nbsphinx-gallery.css create mode 100644 src/scitex/_sphinx_html/_static/nbsphinx-no-thumbnail.svg create mode 100644 src/scitex/_sphinx_html/_static/pygments.css create mode 100644 src/scitex/_sphinx_html/_static/searchtools.js create mode 100644 src/scitex/_sphinx_html/_static/session_lifecycle.mmd create mode 100644 src/scitex/_sphinx_html/_static/sphinx_highlight.js create mode 100644 src/scitex/_sphinx_html/_static/workflow.mmd create mode 100644 src/scitex/_sphinx_html/api/index.html create mode 100644 src/scitex/_sphinx_html/api/scitex.ai.html create mode 100644 src/scitex/_sphinx_html/api/scitex.clew.html create mode 100644 src/scitex/_sphinx_html/api/scitex.config.html create mode 100644 src/scitex/_sphinx_html/api/scitex.db.html create mode 100644 src/scitex/_sphinx_html/api/scitex.decorators.html create mode 100644 src/scitex/_sphinx_html/api/scitex.diagram.html create mode 100644 src/scitex/_sphinx_html/api/scitex.dict.html create mode 100644 src/scitex/_sphinx_html/api/scitex.dsp.html create mode 100644 src/scitex/_sphinx_html/api/scitex.gen.html create mode 100644 src/scitex/_sphinx_html/api/scitex.introspect.html create mode 100644 src/scitex/_sphinx_html/api/scitex.io.html create mode 100644 src/scitex/_sphinx_html/api/scitex.linter.html create mode 100644 src/scitex/_sphinx_html/api/scitex.logging.html create mode 100644 src/scitex/_sphinx_html/api/scitex.nn.html create mode 100644 src/scitex/_sphinx_html/api/scitex.path.html create mode 100644 src/scitex/_sphinx_html/api/scitex.pd.html create mode 100644 src/scitex/_sphinx_html/api/scitex.plt.html create mode 100644 src/scitex/_sphinx_html/api/scitex.repro.html create mode 100644 src/scitex/_sphinx_html/api/scitex.scholar.html create mode 100644 src/scitex/_sphinx_html/api/scitex.session.html create mode 100644 src/scitex/_sphinx_html/api/scitex.social.html create mode 100644 src/scitex/_sphinx_html/api/scitex.stats.html create mode 100644 src/scitex/_sphinx_html/api/scitex.str.html create mode 100644 src/scitex/_sphinx_html/api/scitex.template.html create mode 100644 src/scitex/_sphinx_html/api/scitex.writer.html create mode 100644 src/scitex/_sphinx_html/core_concepts.html create mode 100644 src/scitex/_sphinx_html/gallery.html create mode 100644 src/scitex/_sphinx_html/genindex.html create mode 100644 src/scitex/_sphinx_html/index.html create mode 100644 src/scitex/_sphinx_html/installation.html create mode 100644 src/scitex/_sphinx_html/modules/ai.html create mode 100644 src/scitex/_sphinx_html/modules/app.html create mode 100644 src/scitex/_sphinx_html/modules/audio.html create mode 100644 src/scitex/_sphinx_html/modules/audit.html create mode 100644 src/scitex/_sphinx_html/modules/benchmark.html create mode 100644 src/scitex/_sphinx_html/modules/bridge.html create mode 100644 src/scitex/_sphinx_html/modules/browser.html create mode 100644 src/scitex/_sphinx_html/modules/canvas.html create mode 100644 src/scitex/_sphinx_html/modules/capture.html create mode 100644 src/scitex/_sphinx_html/modules/clew.html create mode 100644 src/scitex/_sphinx_html/modules/cli.html create mode 100644 src/scitex/_sphinx_html/modules/cloud.html create mode 100644 src/scitex/_sphinx_html/modules/compat.html create mode 100644 src/scitex/_sphinx_html/modules/config.html create mode 100644 src/scitex/_sphinx_html/modules/container.html create mode 100644 src/scitex/_sphinx_html/modules/context.html create mode 100644 src/scitex/_sphinx_html/modules/cv.html create mode 100644 src/scitex/_sphinx_html/modules/dataset.html create mode 100644 src/scitex/_sphinx_html/modules/datetime.html create mode 100644 src/scitex/_sphinx_html/modules/db.html create mode 100644 src/scitex/_sphinx_html/modules/decorators.html create mode 100644 src/scitex/_sphinx_html/modules/dev.html create mode 100644 src/scitex/_sphinx_html/modules/diagram.html create mode 100644 src/scitex/_sphinx_html/modules/dict.html create mode 100644 src/scitex/_sphinx_html/modules/dsp.html create mode 100644 src/scitex/_sphinx_html/modules/etc.html create mode 100644 src/scitex/_sphinx_html/modules/events.html create mode 100644 src/scitex/_sphinx_html/modules/gen.html create mode 100644 src/scitex/_sphinx_html/modules/gists.html create mode 100644 src/scitex/_sphinx_html/modules/git.html create mode 100644 src/scitex/_sphinx_html/modules/index.html create mode 100644 src/scitex/_sphinx_html/modules/introspect.html create mode 100644 src/scitex/_sphinx_html/modules/io.html create mode 100644 src/scitex/_sphinx_html/modules/linalg.html create mode 100644 src/scitex/_sphinx_html/modules/linter.html create mode 100644 src/scitex/_sphinx_html/modules/logging.html create mode 100644 src/scitex/_sphinx_html/modules/media.html create mode 100644 src/scitex/_sphinx_html/modules/module.html create mode 100644 src/scitex/_sphinx_html/modules/msword.html create mode 100644 src/scitex/_sphinx_html/modules/nn.html create mode 100644 src/scitex/_sphinx_html/modules/notebook.html create mode 100644 src/scitex/_sphinx_html/modules/notify.html create mode 100644 src/scitex/_sphinx_html/modules/os.html create mode 100644 src/scitex/_sphinx_html/modules/parallel.html create mode 100644 src/scitex/_sphinx_html/modules/path.html create mode 100644 src/scitex/_sphinx_html/modules/pd.html create mode 100644 src/scitex/_sphinx_html/modules/plt.html create mode 100644 src/scitex/_sphinx_html/modules/project.html create mode 100644 src/scitex/_sphinx_html/modules/repro.html create mode 100644 src/scitex/_sphinx_html/modules/resource.html create mode 100644 src/scitex/_sphinx_html/modules/rng.html create mode 100644 src/scitex/_sphinx_html/modules/schema.html create mode 100644 src/scitex/_sphinx_html/modules/scholar.html create mode 100644 src/scitex/_sphinx_html/modules/security.html create mode 100644 src/scitex/_sphinx_html/modules/session.html create mode 100644 src/scitex/_sphinx_html/modules/sh.html create mode 100644 src/scitex/_sphinx_html/modules/social.html create mode 100644 src/scitex/_sphinx_html/modules/stats.html create mode 100644 src/scitex/_sphinx_html/modules/str.html create mode 100644 src/scitex/_sphinx_html/modules/template.html create mode 100644 src/scitex/_sphinx_html/modules/tex.html create mode 100644 src/scitex/_sphinx_html/modules/torch.html create mode 100644 src/scitex/_sphinx_html/modules/tunnel.html create mode 100644 src/scitex/_sphinx_html/modules/types.html create mode 100644 src/scitex/_sphinx_html/modules/ui.html create mode 100644 src/scitex/_sphinx_html/modules/utils.html create mode 100644 src/scitex/_sphinx_html/modules/web.html create mode 100644 src/scitex/_sphinx_html/modules/writer.html create mode 100644 src/scitex/_sphinx_html/objects.inv create mode 100644 src/scitex/_sphinx_html/py-modindex.html create mode 100644 src/scitex/_sphinx_html/quickstart.html create mode 100644 src/scitex/_sphinx_html/search.html create mode 100644 src/scitex/_sphinx_html/searchindex.js create mode 100644 src/scitex/_sphinx_html/source/api/ai.html create mode 100644 src/scitex/_sphinx_html/source/api/app.html create mode 100644 src/scitex/_sphinx_html/source/api/audio.html create mode 100644 src/scitex/_sphinx_html/source/api/audit.html create mode 100644 src/scitex/_sphinx_html/source/api/benchmark.html create mode 100644 src/scitex/_sphinx_html/source/api/bridge.html create mode 100644 src/scitex/_sphinx_html/source/api/browser.html create mode 100644 src/scitex/_sphinx_html/source/api/canvas.html create mode 100644 src/scitex/_sphinx_html/source/api/capture.html create mode 100644 src/scitex/_sphinx_html/source/api/clew.html create mode 100644 src/scitex/_sphinx_html/source/api/cli.html create mode 100644 src/scitex/_sphinx_html/source/api/cloud.html create mode 100644 src/scitex/_sphinx_html/source/api/compat.html create mode 100644 src/scitex/_sphinx_html/source/api/config.html create mode 100644 src/scitex/_sphinx_html/source/api/container.html create mode 100644 src/scitex/_sphinx_html/source/api/context.html create mode 100644 src/scitex/_sphinx_html/source/api/cv.html create mode 100644 src/scitex/_sphinx_html/source/api/dataset.html create mode 100644 src/scitex/_sphinx_html/source/api/datetime.html create mode 100644 src/scitex/_sphinx_html/source/api/db.html create mode 100644 src/scitex/_sphinx_html/source/api/decorators.html create mode 100644 src/scitex/_sphinx_html/source/api/dev.html create mode 100644 src/scitex/_sphinx_html/source/api/diagram.html create mode 100644 src/scitex/_sphinx_html/source/api/dict.html create mode 100644 src/scitex/_sphinx_html/source/api/dsp.html create mode 100644 src/scitex/_sphinx_html/source/api/etc.html create mode 100644 src/scitex/_sphinx_html/source/api/events.html create mode 100644 src/scitex/_sphinx_html/source/api/gen.html create mode 100644 src/scitex/_sphinx_html/source/api/gists.html create mode 100644 src/scitex/_sphinx_html/source/api/git.html create mode 100644 src/scitex/_sphinx_html/source/api/index.html create mode 100644 src/scitex/_sphinx_html/source/api/introspect.html create mode 100644 src/scitex/_sphinx_html/source/api/io.html create mode 100644 src/scitex/_sphinx_html/source/api/linalg.html create mode 100644 src/scitex/_sphinx_html/source/api/linter.html create mode 100644 src/scitex/_sphinx_html/source/api/logging.html create mode 100644 src/scitex/_sphinx_html/source/api/media.html create mode 100644 src/scitex/_sphinx_html/source/api/module.html create mode 100644 src/scitex/_sphinx_html/source/api/msword.html create mode 100644 src/scitex/_sphinx_html/source/api/nn.html create mode 100644 src/scitex/_sphinx_html/source/api/notebook.html create mode 100644 src/scitex/_sphinx_html/source/api/notification.html create mode 100644 src/scitex/_sphinx_html/source/api/os.html create mode 100644 src/scitex/_sphinx_html/source/api/parallel.html create mode 100644 src/scitex/_sphinx_html/source/api/path.html create mode 100644 src/scitex/_sphinx_html/source/api/pd.html create mode 100644 src/scitex/_sphinx_html/source/api/plt.html create mode 100644 src/scitex/_sphinx_html/source/api/project.html create mode 100644 src/scitex/_sphinx_html/source/api/repro.html create mode 100644 src/scitex/_sphinx_html/source/api/resource.html create mode 100644 src/scitex/_sphinx_html/source/api/rng.html create mode 100644 src/scitex/_sphinx_html/source/api/schema.html create mode 100644 src/scitex/_sphinx_html/source/api/scholar.html create mode 100644 src/scitex/_sphinx_html/source/api/security.html create mode 100644 src/scitex/_sphinx_html/source/api/session.html create mode 100644 src/scitex/_sphinx_html/source/api/sh.html create mode 100644 src/scitex/_sphinx_html/source/api/social.html create mode 100644 src/scitex/_sphinx_html/source/api/stats.html create mode 100644 src/scitex/_sphinx_html/source/api/str.html create mode 100644 src/scitex/_sphinx_html/source/api/template.html create mode 100644 src/scitex/_sphinx_html/source/api/tex.html create mode 100644 src/scitex/_sphinx_html/source/api/torch.html create mode 100644 src/scitex/_sphinx_html/source/api/tunnel.html create mode 100644 src/scitex/_sphinx_html/source/api/types.html create mode 100644 src/scitex/_sphinx_html/source/api/ui.html create mode 100644 src/scitex/_sphinx_html/source/api/utils.html create mode 100644 src/scitex/_sphinx_html/source/api/web.html create mode 100644 src/scitex/_sphinx_html/source/api/writer.html create mode 100644 src/scitex/_sphinx_html/source/cli.html create mode 100644 src/scitex/_sphinx_html/source/concepts.html create mode 100644 src/scitex/_sphinx_html/source/ecosystem.html create mode 100644 src/scitex/_sphinx_html/source/gallery.html create mode 100644 src/scitex/_sphinx_html/source/index.html create mode 100644 src/scitex/_sphinx_html/source/installation.html create mode 100644 src/scitex/_sphinx_html/source/mcp.html create mode 100644 src/scitex/_sphinx_html/source/quickstart.html diff --git a/.gitignore b/.gitignore index 8c7536034..fd94b9ba4 100755 --- a/.gitignore +++ b/.gitignore @@ -944,8 +944,8 @@ MEMO.md CLAUDE.md docs/sphinx/_build/ -# Pre-built docs (generated by sphinx-build) -src/*/_sphinx_html/ +# PS-128: do NOT ignore src//_sphinx_html/ — scitex-cloud serves +# in-wheel docs from that path, so the bundle must be tracked. .playwright-cli/ .venv/ # Claude worktree symlink diff --git a/src/scitex/_sphinx_html/.buildinfo b/src/scitex/_sphinx_html/.buildinfo new file mode 100644 index 000000000..bac671ae1 --- /dev/null +++ b/src/scitex/_sphinx_html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 7dc761b96e0d37a6fb81bc449771db72 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/src/scitex/_sphinx_html/.nojekyll b/src/scitex/_sphinx_html/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/src/scitex/_sphinx_html/_modules/index.html b/src/scitex/_sphinx_html/_modules/index.html new file mode 100644 index 000000000..dd83ddd72 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/index.html @@ -0,0 +1,766 @@ + + + + + + + + Overview: module code — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ +

All modules for which code is available

+ + +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/logging.html b/src/scitex/_sphinx_html/_modules/logging.html new file mode 100644 index 000000000..86f6ad092 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/logging.html @@ -0,0 +1,3019 @@ + + + + + + + + logging — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for logging

+# Copyright 2001-2022 by Vinay Sajip. All Rights Reserved.
+#
+# Permission to use, copy, modify, and distribute this software and its
+# documentation for any purpose and without fee is hereby granted,
+# provided that the above copyright notice appear in all copies and that
+# both that copyright notice and this permission notice appear in
+# supporting documentation, and that the name of Vinay Sajip
+# not be used in advertising or publicity pertaining to distribution
+# of the software without specific, written prior permission.
+# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+"""
+Logging package for Python. Based on PEP 282 and comments thereto in
+comp.lang.python.
+
+Copyright (C) 2001-2022 Vinay Sajip. All Rights Reserved.
+
+To use, simply 'import logging' and log away!
+"""
+
+import sys, os, time, io, re, traceback, warnings, weakref, collections.abc
+
+from types import GenericAlias
+from string import Template
+from string import Formatter as StrFormatter
+
+
+__all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',
+           'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO',
+           'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', 'NullHandler',
+           'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig',
+           'captureWarnings', 'critical', 'debug', 'disable', 'error',
+           'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass',
+           'info', 'log', 'makeLogRecord', 'setLoggerClass', 'shutdown',
+           'warn', 'warning', 'getLogRecordFactory', 'setLogRecordFactory',
+           'lastResort', 'raiseExceptions', 'getLevelNamesMapping',
+           'getHandlerByName', 'getHandlerNames']
+
+import threading
+
+__author__  = "Vinay Sajip <vinay_sajip@red-dove.com>"
+__status__  = "production"
+# The following module attributes are no longer updated.
+__version__ = "0.5.1.2"
+__date__    = "07 February 2010"
+
+#---------------------------------------------------------------------------
+#   Miscellaneous module data
+#---------------------------------------------------------------------------
+
+#
+#_startTime is used as the base when calculating the relative time of events
+#
+_startTime = time.time()
+
+#
+#raiseExceptions is used to see if exceptions during handling should be
+#propagated
+#
+raiseExceptions = True
+
+#
+# If you don't want threading information in the log, set this to False
+#
+logThreads = True
+
+#
+# If you don't want multiprocessing information in the log, set this to False
+#
+logMultiprocessing = True
+
+#
+# If you don't want process information in the log, set this to False
+#
+logProcesses = True
+
+#
+# If you don't want asyncio task information in the log, set this to False
+#
+logAsyncioTasks = True
+
+#---------------------------------------------------------------------------
+#   Level related stuff
+#---------------------------------------------------------------------------
+#
+# Default levels and level names, these can be replaced with any positive set
+# of values having corresponding names. There is a pseudo-level, NOTSET, which
+# is only really there as a lower limit for user-defined levels. Handlers and
+# loggers are initialized with NOTSET so that they will log all messages, even
+# at user-defined levels.
+#
+
+CRITICAL = 50
+FATAL = CRITICAL
+ERROR = 40
+WARNING = 30
+WARN = WARNING
+INFO = 20
+DEBUG = 10
+NOTSET = 0
+
+_levelToName = {
+    CRITICAL: 'CRITICAL',
+    ERROR: 'ERROR',
+    WARNING: 'WARNING',
+    INFO: 'INFO',
+    DEBUG: 'DEBUG',
+    NOTSET: 'NOTSET',
+}
+_nameToLevel = {
+    'CRITICAL': CRITICAL,
+    'FATAL': FATAL,
+    'ERROR': ERROR,
+    'WARN': WARNING,
+    'WARNING': WARNING,
+    'INFO': INFO,
+    'DEBUG': DEBUG,
+    'NOTSET': NOTSET,
+}
+
+def getLevelNamesMapping():
+    return _nameToLevel.copy()
+
+def getLevelName(level):
+    """
+    Return the textual or numeric representation of logging level 'level'.
+
+    If the level is one of the predefined levels (CRITICAL, ERROR, WARNING,
+    INFO, DEBUG) then you get the corresponding string. If you have
+    associated levels with names using addLevelName then the name you have
+    associated with 'level' is returned.
+
+    If a numeric value corresponding to one of the defined levels is passed
+    in, the corresponding string representation is returned.
+
+    If a string representation of the level is passed in, the corresponding
+    numeric value is returned.
+
+    If no matching numeric or string value is passed in, the string
+    'Level %s' % level is returned.
+    """
+    # See Issues #22386, #27937 and #29220 for why it's this way
+    result = _levelToName.get(level)
+    if result is not None:
+        return result
+    result = _nameToLevel.get(level)
+    if result is not None:
+        return result
+    return "Level %s" % level
+
+def addLevelName(level, levelName):
+    """
+    Associate 'levelName' with 'level'.
+
+    This is used when converting levels to text during message formatting.
+    """
+    _acquireLock()
+    try:    #unlikely to cause an exception, but you never know...
+        _levelToName[level] = levelName
+        _nameToLevel[levelName] = level
+    finally:
+        _releaseLock()
+
+if hasattr(sys, "_getframe"):
+    currentframe = lambda: sys._getframe(1)
+else: #pragma: no cover
+    def currentframe():
+        """Return the frame object for the caller's stack frame."""
+        try:
+            raise Exception
+        except Exception as exc:
+            return exc.__traceback__.tb_frame.f_back
+
+#
+# _srcfile is used when walking the stack to check when we've got the first
+# caller stack frame, by skipping frames whose filename is that of this
+# module's source. It therefore should contain the filename of this module's
+# source file.
+#
+# Ordinarily we would use __file__ for this, but frozen modules don't always
+# have __file__ set, for some reason (see Issue #21736). Thus, we get the
+# filename from a handy code object from a function defined in this module.
+# (There's no particular reason for picking addLevelName.)
+#
+
+_srcfile = os.path.normcase(addLevelName.__code__.co_filename)
+
+# _srcfile is only used in conjunction with sys._getframe().
+# Setting _srcfile to None will prevent findCaller() from being called. This
+# way, you can avoid the overhead of fetching caller information.
+
+# The following is based on warnings._is_internal_frame. It makes sure that
+# frames of the import mechanism are skipped when logging at module level and
+# using a stacklevel value greater than one.
+def _is_internal_frame(frame):
+    """Signal whether the frame is a CPython or logging module internal."""
+    filename = os.path.normcase(frame.f_code.co_filename)
+    return filename == _srcfile or (
+        "importlib" in filename and "_bootstrap" in filename
+    )
+
+
+def _checkLevel(level):
+    if isinstance(level, int):
+        rv = level
+    elif str(level) == level:
+        if level not in _nameToLevel:
+            raise ValueError("Unknown level: %r" % level)
+        rv = _nameToLevel[level]
+    else:
+        raise TypeError("Level not an integer or a valid string: %r"
+                        % (level,))
+    return rv
+
+#---------------------------------------------------------------------------
+#   Thread-related stuff
+#---------------------------------------------------------------------------
+
+#
+#_lock is used to serialize access to shared data structures in this module.
+#This needs to be an RLock because fileConfig() creates and configures
+#Handlers, and so might arbitrary user threads. Since Handler code updates the
+#shared dictionary _handlers, it needs to acquire the lock. But if configuring,
+#the lock would already have been acquired - so we need an RLock.
+#The same argument applies to Loggers and Manager.loggerDict.
+#
+_lock = threading.RLock()
+
+def _acquireLock():
+    """
+    Acquire the module-level lock for serializing access to shared data.
+
+    This should be released with _releaseLock().
+    """
+    if _lock:
+        _lock.acquire()
+
+def _releaseLock():
+    """
+    Release the module-level lock acquired by calling _acquireLock().
+    """
+    if _lock:
+        _lock.release()
+
+
+# Prevent a held logging lock from blocking a child from logging.
+
+if not hasattr(os, 'register_at_fork'):  # Windows and friends.
+    def _register_at_fork_reinit_lock(instance):
+        pass  # no-op when os.register_at_fork does not exist.
+else:
+    # A collection of instances with a _at_fork_reinit method (logging.Handler)
+    # to be called in the child after forking.  The weakref avoids us keeping
+    # discarded Handler instances alive.
+    _at_fork_reinit_lock_weakset = weakref.WeakSet()
+
+    def _register_at_fork_reinit_lock(instance):
+        _acquireLock()
+        try:
+            _at_fork_reinit_lock_weakset.add(instance)
+        finally:
+            _releaseLock()
+
+    def _after_at_fork_child_reinit_locks():
+        for handler in _at_fork_reinit_lock_weakset:
+            handler._at_fork_reinit()
+
+        # _acquireLock() was called in the parent before forking.
+        # The lock is reinitialized to unlocked state.
+        _lock._at_fork_reinit()
+
+    os.register_at_fork(before=_acquireLock,
+                        after_in_child=_after_at_fork_child_reinit_locks,
+                        after_in_parent=_releaseLock)
+
+
+#---------------------------------------------------------------------------
+#   The logging record
+#---------------------------------------------------------------------------
+
+class LogRecord(object):
+    """
+    A LogRecord instance represents an event being logged.
+
+    LogRecord instances are created every time something is logged. They
+    contain all the information pertinent to the event being logged. The
+    main information passed in is in msg and args, which are combined
+    using str(msg) % args to create the message field of the record. The
+    record also includes information such as when the record was created,
+    the source line where the logging call was made, and any exception
+    information to be logged.
+    """
+    def __init__(self, name, level, pathname, lineno,
+                 msg, args, exc_info, func=None, sinfo=None, **kwargs):
+        """
+        Initialize a logging record with interesting information.
+        """
+        ct = time.time()
+        self.name = name
+        self.msg = msg
+        #
+        # The following statement allows passing of a dictionary as a sole
+        # argument, so that you can do something like
+        #  logging.debug("a %(a)d b %(b)s", {'a':1, 'b':2})
+        # Suggested by Stefan Behnel.
+        # Note that without the test for args[0], we get a problem because
+        # during formatting, we test to see if the arg is present using
+        # 'if self.args:'. If the event being logged is e.g. 'Value is %d'
+        # and if the passed arg fails 'if self.args:' then no formatting
+        # is done. For example, logger.warning('Value is %d', 0) would log
+        # 'Value is %d' instead of 'Value is 0'.
+        # For the use case of passing a dictionary, this should not be a
+        # problem.
+        # Issue #21172: a request was made to relax the isinstance check
+        # to hasattr(args[0], '__getitem__'). However, the docs on string
+        # formatting still seem to suggest a mapping object is required.
+        # Thus, while not removing the isinstance check, it does now look
+        # for collections.abc.Mapping rather than, as before, dict.
+        if (args and len(args) == 1 and isinstance(args[0], collections.abc.Mapping)
+            and args[0]):
+            args = args[0]
+        self.args = args
+        self.levelname = getLevelName(level)
+        self.levelno = level
+        self.pathname = pathname
+        try:
+            self.filename = os.path.basename(pathname)
+            self.module = os.path.splitext(self.filename)[0]
+        except (TypeError, ValueError, AttributeError):
+            self.filename = pathname
+            self.module = "Unknown module"
+        self.exc_info = exc_info
+        self.exc_text = None      # used to cache the traceback text
+        self.stack_info = sinfo
+        self.lineno = lineno
+        self.funcName = func
+        self.created = ct
+        self.msecs = int((ct - int(ct)) * 1000) + 0.0  # see gh-89047
+        self.relativeCreated = (self.created - _startTime) * 1000
+        if logThreads:
+            self.thread = threading.get_ident()
+            self.threadName = threading.current_thread().name
+        else: # pragma: no cover
+            self.thread = None
+            self.threadName = None
+        if not logMultiprocessing: # pragma: no cover
+            self.processName = None
+        else:
+            self.processName = 'MainProcess'
+            mp = sys.modules.get('multiprocessing')
+            if mp is not None:
+                # Errors may occur if multiprocessing has not finished loading
+                # yet - e.g. if a custom import hook causes third-party code
+                # to run when multiprocessing calls import. See issue 8200
+                # for an example
+                try:
+                    self.processName = mp.current_process().name
+                except Exception: #pragma: no cover
+                    pass
+        if logProcesses and hasattr(os, 'getpid'):
+            self.process = os.getpid()
+        else:
+            self.process = None
+
+        self.taskName = None
+        if logAsyncioTasks:
+            asyncio = sys.modules.get('asyncio')
+            if asyncio:
+                try:
+                    self.taskName = asyncio.current_task().get_name()
+                except Exception:
+                    pass
+
+    def __repr__(self):
+        return '<LogRecord: %s, %s, %s, %s, "%s">'%(self.name, self.levelno,
+            self.pathname, self.lineno, self.msg)
+
+    def getMessage(self):
+        """
+        Return the message for this LogRecord.
+
+        Return the message for this LogRecord after merging any user-supplied
+        arguments with the message.
+        """
+        msg = str(self.msg)
+        if self.args:
+            msg = msg % self.args
+        return msg
+
+#
+#   Determine which class to use when instantiating log records.
+#
+_logRecordFactory = LogRecord
+
+def setLogRecordFactory(factory):
+    """
+    Set the factory to be used when instantiating a log record.
+
+    :param factory: A callable which will be called to instantiate
+    a log record.
+    """
+    global _logRecordFactory
+    _logRecordFactory = factory
+
+def getLogRecordFactory():
+    """
+    Return the factory to be used when instantiating a log record.
+    """
+
+    return _logRecordFactory
+
+def makeLogRecord(dict):
+    """
+    Make a LogRecord whose attributes are defined by the specified dictionary,
+    This function is useful for converting a logging event received over
+    a socket connection (which is sent as a dictionary) into a LogRecord
+    instance.
+    """
+    rv = _logRecordFactory(None, None, "", 0, "", (), None, None)
+    rv.__dict__.update(dict)
+    return rv
+
+
+#---------------------------------------------------------------------------
+#   Formatter classes and functions
+#---------------------------------------------------------------------------
+_str_formatter = StrFormatter()
+del StrFormatter
+
+
+class PercentStyle(object):
+
+    default_format = '%(message)s'
+    asctime_format = '%(asctime)s'
+    asctime_search = '%(asctime)'
+    validation_pattern = re.compile(r'%\(\w+\)[#0+ -]*(\*|\d+)?(\.(\*|\d+))?[diouxefgcrsa%]', re.I)
+
+    def __init__(self, fmt, *, defaults=None):
+        self._fmt = fmt or self.default_format
+        self._defaults = defaults
+
+    def usesTime(self):
+        return self._fmt.find(self.asctime_search) >= 0
+
+    def validate(self):
+        """Validate the input format, ensure it matches the correct style"""
+        if not self.validation_pattern.search(self._fmt):
+            raise ValueError("Invalid format '%s' for '%s' style" % (self._fmt, self.default_format[0]))
+
+    def _format(self, record):
+        if defaults := self._defaults:
+            values = defaults | record.__dict__
+        else:
+            values = record.__dict__
+        return self._fmt % values
+
+    def format(self, record):
+        try:
+            return self._format(record)
+        except KeyError as e:
+            raise ValueError('Formatting field not found in record: %s' % e)
+
+
+class StrFormatStyle(PercentStyle):
+    default_format = '{message}'
+    asctime_format = '{asctime}'
+    asctime_search = '{asctime'
+
+    fmt_spec = re.compile(r'^(.?[<>=^])?[+ -]?#?0?(\d+|{\w+})?[,_]?(\.(\d+|{\w+}))?[bcdefgnosx%]?$', re.I)
+    field_spec = re.compile(r'^(\d+|\w+)(\.\w+|\[[^]]+\])*$')
+
+    def _format(self, record):
+        if defaults := self._defaults:
+            values = defaults | record.__dict__
+        else:
+            values = record.__dict__
+        return self._fmt.format(**values)
+
+    def validate(self):
+        """Validate the input format, ensure it is the correct string formatting style"""
+        fields = set()
+        try:
+            for _, fieldname, spec, conversion in _str_formatter.parse(self._fmt):
+                if fieldname:
+                    if not self.field_spec.match(fieldname):
+                        raise ValueError('invalid field name/expression: %r' % fieldname)
+                    fields.add(fieldname)
+                if conversion and conversion not in 'rsa':
+                    raise ValueError('invalid conversion: %r' % conversion)
+                if spec and not self.fmt_spec.match(spec):
+                    raise ValueError('bad specifier: %r' % spec)
+        except ValueError as e:
+            raise ValueError('invalid format: %s' % e)
+        if not fields:
+            raise ValueError('invalid format: no fields')
+
+
+class StringTemplateStyle(PercentStyle):
+    default_format = '${message}'
+    asctime_format = '${asctime}'
+    asctime_search = '${asctime}'
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self._tpl = Template(self._fmt)
+
+    def usesTime(self):
+        fmt = self._fmt
+        return fmt.find('$asctime') >= 0 or fmt.find(self.asctime_search) >= 0
+
+    def validate(self):
+        pattern = Template.pattern
+        fields = set()
+        for m in pattern.finditer(self._fmt):
+            d = m.groupdict()
+            if d['named']:
+                fields.add(d['named'])
+            elif d['braced']:
+                fields.add(d['braced'])
+            elif m.group(0) == '$':
+                raise ValueError('invalid format: bare \'$\' not allowed')
+        if not fields:
+            raise ValueError('invalid format: no fields')
+
+    def _format(self, record):
+        if defaults := self._defaults:
+            values = defaults | record.__dict__
+        else:
+            values = record.__dict__
+        return self._tpl.substitute(**values)
+
+
+BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
+
+_STYLES = {
+    '%': (PercentStyle, BASIC_FORMAT),
+    '{': (StrFormatStyle, '{levelname}:{name}:{message}'),
+    '$': (StringTemplateStyle, '${levelname}:${name}:${message}'),
+}
+
+class Formatter(object):
+    """
+    Formatter instances are used to convert a LogRecord to text.
+
+    Formatters need to know how a LogRecord is constructed. They are
+    responsible for converting a LogRecord to (usually) a string which can
+    be interpreted by either a human or an external system. The base Formatter
+    allows a formatting string to be specified. If none is supplied, the
+    style-dependent default value, "%(message)s", "{message}", or
+    "${message}", is used.
+
+    The Formatter can be initialized with a format string which makes use of
+    knowledge of the LogRecord attributes - e.g. the default value mentioned
+    above makes use of the fact that the user's message and arguments are pre-
+    formatted into a LogRecord's message attribute. Currently, the useful
+    attributes in a LogRecord are described by:
+
+    %(name)s            Name of the logger (logging channel)
+    %(levelno)s         Numeric logging level for the message (DEBUG, INFO,
+                        WARNING, ERROR, CRITICAL)
+    %(levelname)s       Text logging level for the message ("DEBUG", "INFO",
+                        "WARNING", "ERROR", "CRITICAL")
+    %(pathname)s        Full pathname of the source file where the logging
+                        call was issued (if available)
+    %(filename)s        Filename portion of pathname
+    %(module)s          Module (name portion of filename)
+    %(lineno)d          Source line number where the logging call was issued
+                        (if available)
+    %(funcName)s        Function name
+    %(created)f         Time when the LogRecord was created (time.time()
+                        return value)
+    %(asctime)s         Textual time when the LogRecord was created
+    %(msecs)d           Millisecond portion of the creation time
+    %(relativeCreated)d Time in milliseconds when the LogRecord was created,
+                        relative to the time the logging module was loaded
+                        (typically at application startup time)
+    %(thread)d          Thread ID (if available)
+    %(threadName)s      Thread name (if available)
+    %(taskName)s        Task name (if available)
+    %(process)d         Process ID (if available)
+    %(message)s         The result of record.getMessage(), computed just as
+                        the record is emitted
+    """
+
+    converter = time.localtime
+
+    def __init__(self, fmt=None, datefmt=None, style='%', validate=True, *,
+                 defaults=None):
+        """
+        Initialize the formatter with specified format strings.
+
+        Initialize the formatter either with the specified format string, or a
+        default as described above. Allow for specialized date formatting with
+        the optional datefmt argument. If datefmt is omitted, you get an
+        ISO8601-like (or RFC 3339-like) format.
+
+        Use a style parameter of '%', '{' or '$' to specify that you want to
+        use one of %-formatting, :meth:`str.format` (``{}``) formatting or
+        :class:`string.Template` formatting in your format string.
+
+        .. versionchanged:: 3.2
+           Added the ``style`` parameter.
+        """
+        if style not in _STYLES:
+            raise ValueError('Style must be one of: %s' % ','.join(
+                             _STYLES.keys()))
+        self._style = _STYLES[style][0](fmt, defaults=defaults)
+        if validate:
+            self._style.validate()
+
+        self._fmt = self._style._fmt
+        self.datefmt = datefmt
+
+    default_time_format = '%Y-%m-%d %H:%M:%S'
+    default_msec_format = '%s,%03d'
+
+    def formatTime(self, record, datefmt=None):
+        """
+        Return the creation time of the specified LogRecord as formatted text.
+
+        This method should be called from format() by a formatter which
+        wants to make use of a formatted time. This method can be overridden
+        in formatters to provide for any specific requirement, but the
+        basic behaviour is as follows: if datefmt (a string) is specified,
+        it is used with time.strftime() to format the creation time of the
+        record. Otherwise, an ISO8601-like (or RFC 3339-like) format is used.
+        The resulting string is returned. This function uses a user-configurable
+        function to convert the creation time to a tuple. By default,
+        time.localtime() is used; to change this for a particular formatter
+        instance, set the 'converter' attribute to a function with the same
+        signature as time.localtime() or time.gmtime(). To change it for all
+        formatters, for example if you want all logging times to be shown in GMT,
+        set the 'converter' attribute in the Formatter class.
+        """
+        ct = self.converter(record.created)
+        if datefmt:
+            s = time.strftime(datefmt, ct)
+        else:
+            s = time.strftime(self.default_time_format, ct)
+            if self.default_msec_format:
+                s = self.default_msec_format % (s, record.msecs)
+        return s
+
+    def formatException(self, ei):
+        """
+        Format and return the specified exception information as a string.
+
+        This default implementation just uses
+        traceback.print_exception()
+        """
+        sio = io.StringIO()
+        tb = ei[2]
+        # See issues #9427, #1553375. Commented out for now.
+        #if getattr(self, 'fullstack', False):
+        #    traceback.print_stack(tb.tb_frame.f_back, file=sio)
+        traceback.print_exception(ei[0], ei[1], tb, None, sio)
+        s = sio.getvalue()
+        sio.close()
+        if s[-1:] == "\n":
+            s = s[:-1]
+        return s
+
+    def usesTime(self):
+        """
+        Check if the format uses the creation time of the record.
+        """
+        return self._style.usesTime()
+
+    def formatMessage(self, record):
+        return self._style.format(record)
+
+    def formatStack(self, stack_info):
+        """
+        This method is provided as an extension point for specialized
+        formatting of stack information.
+
+        The input data is a string as returned from a call to
+        :func:`traceback.print_stack`, but with the last trailing newline
+        removed.
+
+        The base implementation just returns the value passed in.
+        """
+        return stack_info
+
+    def format(self, record):
+        """
+        Format the specified record as text.
+
+        The record's attribute dictionary is used as the operand to a
+        string formatting operation which yields the returned string.
+        Before formatting the dictionary, a couple of preparatory steps
+        are carried out. The message attribute of the record is computed
+        using LogRecord.getMessage(). If the formatting string uses the
+        time (as determined by a call to usesTime(), formatTime() is
+        called to format the event time. If there is exception information,
+        it is formatted using formatException() and appended to the message.
+        """
+        record.message = record.getMessage()
+        if self.usesTime():
+            record.asctime = self.formatTime(record, self.datefmt)
+        s = self.formatMessage(record)
+        if record.exc_info:
+            # Cache the traceback text to avoid converting it multiple times
+            # (it's constant anyway)
+            if not record.exc_text:
+                record.exc_text = self.formatException(record.exc_info)
+        if record.exc_text:
+            if s[-1:] != "\n":
+                s = s + "\n"
+            s = s + record.exc_text
+        if record.stack_info:
+            if s[-1:] != "\n":
+                s = s + "\n"
+            s = s + self.formatStack(record.stack_info)
+        return s
+
+#
+#   The default formatter to use when no other is specified
+#
+_defaultFormatter = Formatter()
+
+class BufferingFormatter(object):
+    """
+    A formatter suitable for formatting a number of records.
+    """
+    def __init__(self, linefmt=None):
+        """
+        Optionally specify a formatter which will be used to format each
+        individual record.
+        """
+        if linefmt:
+            self.linefmt = linefmt
+        else:
+            self.linefmt = _defaultFormatter
+
+    def formatHeader(self, records):
+        """
+        Return the header string for the specified records.
+        """
+        return ""
+
+    def formatFooter(self, records):
+        """
+        Return the footer string for the specified records.
+        """
+        return ""
+
+    def format(self, records):
+        """
+        Format the specified records and return the result as a string.
+        """
+        rv = ""
+        if len(records) > 0:
+            rv = rv + self.formatHeader(records)
+            for record in records:
+                rv = rv + self.linefmt.format(record)
+            rv = rv + self.formatFooter(records)
+        return rv
+
+#---------------------------------------------------------------------------
+#   Filter classes and functions
+#---------------------------------------------------------------------------
+
+class Filter(object):
+    """
+    Filter instances are used to perform arbitrary filtering of LogRecords.
+
+    Loggers and Handlers can optionally use Filter instances to filter
+    records as desired. The base filter class only allows events which are
+    below a certain point in the logger hierarchy. For example, a filter
+    initialized with "A.B" will allow events logged by loggers "A.B",
+    "A.B.C", "A.B.C.D", "A.B.D" etc. but not "A.BB", "B.A.B" etc. If
+    initialized with the empty string, all events are passed.
+    """
+    def __init__(self, name=''):
+        """
+        Initialize a filter.
+
+        Initialize with the name of the logger which, together with its
+        children, will have its events allowed through the filter. If no
+        name is specified, allow every event.
+        """
+        self.name = name
+        self.nlen = len(name)
+
+    def filter(self, record):
+        """
+        Determine if the specified record is to be logged.
+
+        Returns True if the record should be logged, or False otherwise.
+        If deemed appropriate, the record may be modified in-place.
+        """
+        if self.nlen == 0:
+            return True
+        elif self.name == record.name:
+            return True
+        elif record.name.find(self.name, 0, self.nlen) != 0:
+            return False
+        return (record.name[self.nlen] == ".")
+
+class Filterer(object):
+    """
+    A base class for loggers and handlers which allows them to share
+    common code.
+    """
+    def __init__(self):
+        """
+        Initialize the list of filters to be an empty list.
+        """
+        self.filters = []
+
+    def addFilter(self, filter):
+        """
+        Add the specified filter to this handler.
+        """
+        if not (filter in self.filters):
+            self.filters.append(filter)
+
+    def removeFilter(self, filter):
+        """
+        Remove the specified filter from this handler.
+        """
+        if filter in self.filters:
+            self.filters.remove(filter)
+
+    def filter(self, record):
+        """
+        Determine if a record is loggable by consulting all the filters.
+
+        The default is to allow the record to be logged; any filter can veto
+        this by returning a false value.
+        If a filter attached to a handler returns a log record instance,
+        then that instance is used in place of the original log record in
+        any further processing of the event by that handler.
+        If a filter returns any other true value, the original log record
+        is used in any further processing of the event by that handler.
+
+        If none of the filters return false values, this method returns
+        a log record.
+        If any of the filters return a false value, this method returns
+        a false value.
+
+        .. versionchanged:: 3.2
+
+           Allow filters to be just callables.
+
+        .. versionchanged:: 3.12
+           Allow filters to return a LogRecord instead of
+           modifying it in place.
+        """
+        for f in self.filters:
+            if hasattr(f, 'filter'):
+                result = f.filter(record)
+            else:
+                result = f(record) # assume callable - will raise if not
+            if not result:
+                return False
+            if isinstance(result, LogRecord):
+                record = result
+        return record
+
+#---------------------------------------------------------------------------
+#   Handler classes and functions
+#---------------------------------------------------------------------------
+
+_handlers = weakref.WeakValueDictionary()  #map of handler names to handlers
+_handlerList = [] # added to allow handlers to be removed in reverse of order initialized
+
+def _removeHandlerRef(wr):
+    """
+    Remove a handler reference from the internal cleanup list.
+    """
+    # This function can be called during module teardown, when globals are
+    # set to None. It can also be called from another thread. So we need to
+    # pre-emptively grab the necessary globals and check if they're None,
+    # to prevent race conditions and failures during interpreter shutdown.
+    acquire, release, handlers = _acquireLock, _releaseLock, _handlerList
+    if acquire and release and handlers:
+        acquire()
+        try:
+            handlers.remove(wr)
+        except ValueError:
+            pass
+        finally:
+            release()
+
+def _addHandlerRef(handler):
+    """
+    Add a handler to the internal cleanup list using a weak reference.
+    """
+    _acquireLock()
+    try:
+        _handlerList.append(weakref.ref(handler, _removeHandlerRef))
+    finally:
+        _releaseLock()
+
+
+def getHandlerByName(name):
+    """
+    Get a handler with the specified *name*, or None if there isn't one with
+    that name.
+    """
+    return _handlers.get(name)
+
+
+def getHandlerNames():
+    """
+    Return all known handler names as an immutable set.
+    """
+    result = set(_handlers.keys())
+    return frozenset(result)
+
+
+class Handler(Filterer):
+    """
+    Handler instances dispatch logging events to specific destinations.
+
+    The base handler class. Acts as a placeholder which defines the Handler
+    interface. Handlers can optionally use Formatter instances to format
+    records as desired. By default, no formatter is specified; in this case,
+    the 'raw' message as determined by record.message is logged.
+    """
+    def __init__(self, level=NOTSET):
+        """
+        Initializes the instance - basically setting the formatter to None
+        and the filter list to empty.
+        """
+        Filterer.__init__(self)
+        self._name = None
+        self.level = _checkLevel(level)
+        self.formatter = None
+        self._closed = False
+        # Add the handler to the global _handlerList (for cleanup on shutdown)
+        _addHandlerRef(self)
+        self.createLock()
+
+    def get_name(self):
+        return self._name
+
+    def set_name(self, name):
+        _acquireLock()
+        try:
+            if self._name in _handlers:
+                del _handlers[self._name]
+            self._name = name
+            if name:
+                _handlers[name] = self
+        finally:
+            _releaseLock()
+
+    name = property(get_name, set_name)
+
+    def createLock(self):
+        """
+        Acquire a thread lock for serializing access to the underlying I/O.
+        """
+        self.lock = threading.RLock()
+        _register_at_fork_reinit_lock(self)
+
+    def _at_fork_reinit(self):
+        self.lock._at_fork_reinit()
+
+    def acquire(self):
+        """
+        Acquire the I/O thread lock.
+        """
+        if self.lock:
+            self.lock.acquire()
+
+    def release(self):
+        """
+        Release the I/O thread lock.
+        """
+        if self.lock:
+            self.lock.release()
+
+    def setLevel(self, level):
+        """
+        Set the logging level of this handler.  level must be an int or a str.
+        """
+        self.level = _checkLevel(level)
+
+    def format(self, record):
+        """
+        Format the specified record.
+
+        If a formatter is set, use it. Otherwise, use the default formatter
+        for the module.
+        """
+        if self.formatter:
+            fmt = self.formatter
+        else:
+            fmt = _defaultFormatter
+        return fmt.format(record)
+
+    def emit(self, record):
+        """
+        Do whatever it takes to actually log the specified logging record.
+
+        This version is intended to be implemented by subclasses and so
+        raises a NotImplementedError.
+        """
+        raise NotImplementedError('emit must be implemented '
+                                  'by Handler subclasses')
+
+    def handle(self, record):
+        """
+        Conditionally emit the specified logging record.
+
+        Emission depends on filters which may have been added to the handler.
+        Wrap the actual emission of the record with acquisition/release of
+        the I/O thread lock.
+
+        Returns an instance of the log record that was emitted
+        if it passed all filters, otherwise a false value is returned.
+        """
+        rv = self.filter(record)
+        if isinstance(rv, LogRecord):
+            record = rv
+        if rv:
+            self.acquire()
+            try:
+                self.emit(record)
+            finally:
+                self.release()
+        return rv
+
+    def setFormatter(self, fmt):
+        """
+        Set the formatter for this handler.
+        """
+        self.formatter = fmt
+
+    def flush(self):
+        """
+        Ensure all logging output has been flushed.
+
+        This version does nothing and is intended to be implemented by
+        subclasses.
+        """
+        pass
+
+    def close(self):
+        """
+        Tidy up any resources used by the handler.
+
+        This version removes the handler from an internal map of handlers,
+        _handlers, which is used for handler lookup by name. Subclasses
+        should ensure that this gets called from overridden close()
+        methods.
+        """
+        #get the module data lock, as we're updating a shared structure.
+        _acquireLock()
+        try:    #unlikely to raise an exception, but you never know...
+            self._closed = True
+            if self._name and self._name in _handlers:
+                del _handlers[self._name]
+        finally:
+            _releaseLock()
+
+    def handleError(self, record):
+        """
+        Handle errors which occur during an emit() call.
+
+        This method should be called from handlers when an exception is
+        encountered during an emit() call. If raiseExceptions is false,
+        exceptions get silently ignored. This is what is mostly wanted
+        for a logging system - most users will not care about errors in
+        the logging system, they are more interested in application errors.
+        You could, however, replace this with a custom handler if you wish.
+        The record which was being processed is passed in to this method.
+        """
+        if raiseExceptions and sys.stderr:  # see issue 13807
+            t, v, tb = sys.exc_info()
+            try:
+                sys.stderr.write('--- Logging error ---\n')
+                traceback.print_exception(t, v, tb, None, sys.stderr)
+                sys.stderr.write('Call stack:\n')
+                # Walk the stack frame up until we're out of logging,
+                # so as to print the calling context.
+                frame = tb.tb_frame
+                while (frame and os.path.dirname(frame.f_code.co_filename) ==
+                       __path__[0]):
+                    frame = frame.f_back
+                if frame:
+                    traceback.print_stack(frame, file=sys.stderr)
+                else:
+                    # couldn't find the right stack frame, for some reason
+                    sys.stderr.write('Logged from file %s, line %s\n' % (
+                                     record.filename, record.lineno))
+                # Issue 18671: output logging message and arguments
+                try:
+                    sys.stderr.write('Message: %r\n'
+                                     'Arguments: %s\n' % (record.msg,
+                                                          record.args))
+                except RecursionError:  # See issue 36272
+                    raise
+                except Exception:
+                    sys.stderr.write('Unable to print the message and arguments'
+                                     ' - possible formatting error.\nUse the'
+                                     ' traceback above to help find the error.\n'
+                                    )
+            except OSError: #pragma: no cover
+                pass    # see issue 5971
+            finally:
+                del t, v, tb
+
+    def __repr__(self):
+        level = getLevelName(self.level)
+        return '<%s (%s)>' % (self.__class__.__name__, level)
+
+class StreamHandler(Handler):
+    """
+    A handler class which writes logging records, appropriately formatted,
+    to a stream. Note that this class does not close the stream, as
+    sys.stdout or sys.stderr may be used.
+    """
+
+    terminator = '\n'
+
+    def __init__(self, stream=None):
+        """
+        Initialize the handler.
+
+        If stream is not specified, sys.stderr is used.
+        """
+        Handler.__init__(self)
+        if stream is None:
+            stream = sys.stderr
+        self.stream = stream
+
+    def flush(self):
+        """
+        Flushes the stream.
+        """
+        self.acquire()
+        try:
+            if self.stream and hasattr(self.stream, "flush"):
+                self.stream.flush()
+        finally:
+            self.release()
+
+    def emit(self, record):
+        """
+        Emit a record.
+
+        If a formatter is specified, it is used to format the record.
+        The record is then written to the stream with a trailing newline.  If
+        exception information is present, it is formatted using
+        traceback.print_exception and appended to the stream.  If the stream
+        has an 'encoding' attribute, it is used to determine how to do the
+        output to the stream.
+        """
+        try:
+            msg = self.format(record)
+            stream = self.stream
+            # issue 35046: merged two stream.writes into one.
+            stream.write(msg + self.terminator)
+            self.flush()
+        except RecursionError:  # See issue 36272
+            raise
+        except Exception:
+            self.handleError(record)
+
+    def setStream(self, stream):
+        """
+        Sets the StreamHandler's stream to the specified value,
+        if it is different.
+
+        Returns the old stream, if the stream was changed, or None
+        if it wasn't.
+        """
+        if stream is self.stream:
+            result = None
+        else:
+            result = self.stream
+            self.acquire()
+            try:
+                self.flush()
+                self.stream = stream
+            finally:
+                self.release()
+        return result
+
+    def __repr__(self):
+        level = getLevelName(self.level)
+        name = getattr(self.stream, 'name', '')
+        #  bpo-36015: name can be an int
+        name = str(name)
+        if name:
+            name += ' '
+        return '<%s %s(%s)>' % (self.__class__.__name__, name, level)
+
+    __class_getitem__ = classmethod(GenericAlias)
+
+
+class FileHandler(StreamHandler):
+    """
+    A handler class which writes formatted logging records to disk files.
+    """
+    def __init__(self, filename, mode='a', encoding=None, delay=False, errors=None):
+        """
+        Open the specified file and use it as the stream for logging.
+        """
+        # Issue #27493: add support for Path objects to be passed in
+        filename = os.fspath(filename)
+        #keep the absolute path, otherwise derived classes which use this
+        #may come a cropper when the current directory changes
+        self.baseFilename = os.path.abspath(filename)
+        self.mode = mode
+        self.encoding = encoding
+        if "b" not in mode:
+            self.encoding = io.text_encoding(encoding)
+        self.errors = errors
+        self.delay = delay
+        # bpo-26789: FileHandler keeps a reference to the builtin open()
+        # function to be able to open or reopen the file during Python
+        # finalization.
+        self._builtin_open = open
+        if delay:
+            #We don't open the stream, but we still need to call the
+            #Handler constructor to set level, formatter, lock etc.
+            Handler.__init__(self)
+            self.stream = None
+        else:
+            StreamHandler.__init__(self, self._open())
+
+    def close(self):
+        """
+        Closes the stream.
+        """
+        self.acquire()
+        try:
+            try:
+                if self.stream:
+                    try:
+                        self.flush()
+                    finally:
+                        stream = self.stream
+                        self.stream = None
+                        if hasattr(stream, "close"):
+                            stream.close()
+            finally:
+                # Issue #19523: call unconditionally to
+                # prevent a handler leak when delay is set
+                # Also see Issue #42378: we also rely on
+                # self._closed being set to True there
+                StreamHandler.close(self)
+        finally:
+            self.release()
+
+    def _open(self):
+        """
+        Open the current base file with the (original) mode and encoding.
+        Return the resulting stream.
+        """
+        open_func = self._builtin_open
+        return open_func(self.baseFilename, self.mode,
+                         encoding=self.encoding, errors=self.errors)
+
+    def emit(self, record):
+        """
+        Emit a record.
+
+        If the stream was not opened because 'delay' was specified in the
+        constructor, open it before calling the superclass's emit.
+
+        If stream is not open, current mode is 'w' and `_closed=True`, record
+        will not be emitted (see Issue #42378).
+        """
+        if self.stream is None:
+            if self.mode != 'w' or not self._closed:
+                self.stream = self._open()
+        if self.stream:
+            StreamHandler.emit(self, record)
+
+    def __repr__(self):
+        level = getLevelName(self.level)
+        return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level)
+
+
+class _StderrHandler(StreamHandler):
+    """
+    This class is like a StreamHandler using sys.stderr, but always uses
+    whatever sys.stderr is currently set to rather than the value of
+    sys.stderr at handler construction time.
+    """
+    def __init__(self, level=NOTSET):
+        """
+        Initialize the handler.
+        """
+        Handler.__init__(self, level)
+
+    @property
+    def stream(self):
+        return sys.stderr
+
+
+_defaultLastResort = _StderrHandler(WARNING)
+lastResort = _defaultLastResort
+
+#---------------------------------------------------------------------------
+#   Manager classes and functions
+#---------------------------------------------------------------------------
+
+class PlaceHolder(object):
+    """
+    PlaceHolder instances are used in the Manager logger hierarchy to take
+    the place of nodes for which no loggers have been defined. This class is
+    intended for internal use only and not as part of the public API.
+    """
+    def __init__(self, alogger):
+        """
+        Initialize with the specified logger being a child of this placeholder.
+        """
+        self.loggerMap = { alogger : None }
+
+    def append(self, alogger):
+        """
+        Add the specified logger as a child of this placeholder.
+        """
+        if alogger not in self.loggerMap:
+            self.loggerMap[alogger] = None
+
+#
+#   Determine which class to use when instantiating loggers.
+#
+
+def setLoggerClass(klass):
+    """
+    Set the class to be used when instantiating a logger. The class should
+    define __init__() such that only a name argument is required, and the
+    __init__() should call Logger.__init__()
+    """
+    if klass != Logger:
+        if not issubclass(klass, Logger):
+            raise TypeError("logger not derived from logging.Logger: "
+                            + klass.__name__)
+    global _loggerClass
+    _loggerClass = klass
+
+def getLoggerClass():
+    """
+    Return the class to be used when instantiating a logger.
+    """
+    return _loggerClass
+
+class Manager(object):
+    """
+    There is [under normal circumstances] just one Manager instance, which
+    holds the hierarchy of loggers.
+    """
+    def __init__(self, rootnode):
+        """
+        Initialize the manager with the root node of the logger hierarchy.
+        """
+        self.root = rootnode
+        self.disable = 0
+        self.emittedNoHandlerWarning = False
+        self.loggerDict = {}
+        self.loggerClass = None
+        self.logRecordFactory = None
+
+    @property
+    def disable(self):
+        return self._disable
+
+    @disable.setter
+    def disable(self, value):
+        self._disable = _checkLevel(value)
+
+    def getLogger(self, name):
+        """
+        Get a logger with the specified name (channel name), creating it
+        if it doesn't yet exist. This name is a dot-separated hierarchical
+        name, such as "a", "a.b", "a.b.c" or similar.
+
+        If a PlaceHolder existed for the specified name [i.e. the logger
+        didn't exist but a child of it did], replace it with the created
+        logger and fix up the parent/child references which pointed to the
+        placeholder to now point to the logger.
+        """
+        rv = None
+        if not isinstance(name, str):
+            raise TypeError('A logger name must be a string')
+        _acquireLock()
+        try:
+            if name in self.loggerDict:
+                rv = self.loggerDict[name]
+                if isinstance(rv, PlaceHolder):
+                    ph = rv
+                    rv = (self.loggerClass or _loggerClass)(name)
+                    rv.manager = self
+                    self.loggerDict[name] = rv
+                    self._fixupChildren(ph, rv)
+                    self._fixupParents(rv)
+            else:
+                rv = (self.loggerClass or _loggerClass)(name)
+                rv.manager = self
+                self.loggerDict[name] = rv
+                self._fixupParents(rv)
+        finally:
+            _releaseLock()
+        return rv
+
+    def setLoggerClass(self, klass):
+        """
+        Set the class to be used when instantiating a logger with this Manager.
+        """
+        if klass != Logger:
+            if not issubclass(klass, Logger):
+                raise TypeError("logger not derived from logging.Logger: "
+                                + klass.__name__)
+        self.loggerClass = klass
+
+    def setLogRecordFactory(self, factory):
+        """
+        Set the factory to be used when instantiating a log record with this
+        Manager.
+        """
+        self.logRecordFactory = factory
+
+    def _fixupParents(self, alogger):
+        """
+        Ensure that there are either loggers or placeholders all the way
+        from the specified logger to the root of the logger hierarchy.
+        """
+        name = alogger.name
+        i = name.rfind(".")
+        rv = None
+        while (i > 0) and not rv:
+            substr = name[:i]
+            if substr not in self.loggerDict:
+                self.loggerDict[substr] = PlaceHolder(alogger)
+            else:
+                obj = self.loggerDict[substr]
+                if isinstance(obj, Logger):
+                    rv = obj
+                else:
+                    assert isinstance(obj, PlaceHolder)
+                    obj.append(alogger)
+            i = name.rfind(".", 0, i - 1)
+        if not rv:
+            rv = self.root
+        alogger.parent = rv
+
+    def _fixupChildren(self, ph, alogger):
+        """
+        Ensure that children of the placeholder ph are connected to the
+        specified logger.
+        """
+        name = alogger.name
+        namelen = len(name)
+        for c in ph.loggerMap.keys():
+            #The if means ... if not c.parent.name.startswith(nm)
+            if c.parent.name[:namelen] != name:
+                alogger.parent = c.parent
+                c.parent = alogger
+
+    def _clear_cache(self):
+        """
+        Clear the cache for all loggers in loggerDict
+        Called when level changes are made
+        """
+
+        _acquireLock()
+        for logger in self.loggerDict.values():
+            if isinstance(logger, Logger):
+                logger._cache.clear()
+        self.root._cache.clear()
+        _releaseLock()
+
+#---------------------------------------------------------------------------
+#   Logger classes and functions
+#---------------------------------------------------------------------------
+
+class Logger(Filterer):
+    """
+    Instances of the Logger class represent a single logging channel. A
+    "logging channel" indicates an area of an application. Exactly how an
+    "area" is defined is up to the application developer. Since an
+    application can have any number of areas, logging channels are identified
+    by a unique string. Application areas can be nested (e.g. an area
+    of "input processing" might include sub-areas "read CSV files", "read
+    XLS files" and "read Gnumeric files"). To cater for this natural nesting,
+    channel names are organized into a namespace hierarchy where levels are
+    separated by periods, much like the Java or Python package namespace. So
+    in the instance given above, channel names might be "input" for the upper
+    level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels.
+    There is no arbitrary limit to the depth of nesting.
+    """
+    def __init__(self, name, level=NOTSET):
+        """
+        Initialize the logger with a name and an optional level.
+        """
+        Filterer.__init__(self)
+        self.name = name
+        self.level = _checkLevel(level)
+        self.parent = None
+        self.propagate = True
+        self.handlers = []
+        self.disabled = False
+        self._cache = {}
+
+    def setLevel(self, level):
+        """
+        Set the logging level of this logger.  level must be an int or a str.
+        """
+        self.level = _checkLevel(level)
+        self.manager._clear_cache()
+
+    def debug(self, msg, *args, **kwargs):
+        """
+        Log 'msg % args' with severity 'DEBUG'.
+
+        To pass exception information, use the keyword argument exc_info with
+        a true value, e.g.
+
+        logger.debug("Houston, we have a %s", "thorny problem", exc_info=True)
+        """
+        if self.isEnabledFor(DEBUG):
+            self._log(DEBUG, msg, args, **kwargs)
+
+    def info(self, msg, *args, **kwargs):
+        """
+        Log 'msg % args' with severity 'INFO'.
+
+        To pass exception information, use the keyword argument exc_info with
+        a true value, e.g.
+
+        logger.info("Houston, we have a %s", "notable problem", exc_info=True)
+        """
+        if self.isEnabledFor(INFO):
+            self._log(INFO, msg, args, **kwargs)
+
+    def warning(self, msg, *args, **kwargs):
+        """
+        Log 'msg % args' with severity 'WARNING'.
+
+        To pass exception information, use the keyword argument exc_info with
+        a true value, e.g.
+
+        logger.warning("Houston, we have a %s", "bit of a problem", exc_info=True)
+        """
+        if self.isEnabledFor(WARNING):
+            self._log(WARNING, msg, args, **kwargs)
+
+    def warn(self, msg, *args, **kwargs):
+        warnings.warn("The 'warn' method is deprecated, "
+            "use 'warning' instead", DeprecationWarning, 2)
+        self.warning(msg, *args, **kwargs)
+
+    def error(self, msg, *args, **kwargs):
+        """
+        Log 'msg % args' with severity 'ERROR'.
+
+        To pass exception information, use the keyword argument exc_info with
+        a true value, e.g.
+
+        logger.error("Houston, we have a %s", "major problem", exc_info=True)
+        """
+        if self.isEnabledFor(ERROR):
+            self._log(ERROR, msg, args, **kwargs)
+
+    def exception(self, msg, *args, exc_info=True, **kwargs):
+        """
+        Convenience method for logging an ERROR with exception information.
+        """
+        self.error(msg, *args, exc_info=exc_info, **kwargs)
+
+    def critical(self, msg, *args, **kwargs):
+        """
+        Log 'msg % args' with severity 'CRITICAL'.
+
+        To pass exception information, use the keyword argument exc_info with
+        a true value, e.g.
+
+        logger.critical("Houston, we have a %s", "major disaster", exc_info=True)
+        """
+        if self.isEnabledFor(CRITICAL):
+            self._log(CRITICAL, msg, args, **kwargs)
+
+    def fatal(self, msg, *args, **kwargs):
+        """
+        Don't use this method, use critical() instead.
+        """
+        self.critical(msg, *args, **kwargs)
+
+    def log(self, level, msg, *args, **kwargs):
+        """
+        Log 'msg % args' with the integer severity 'level'.
+
+        To pass exception information, use the keyword argument exc_info with
+        a true value, e.g.
+
+        logger.log(level, "We have a %s", "mysterious problem", exc_info=True)
+        """
+        if not isinstance(level, int):
+            if raiseExceptions:
+                raise TypeError("level must be an integer")
+            else:
+                return
+        if self.isEnabledFor(level):
+            self._log(level, msg, args, **kwargs)
+
+    def findCaller(self, stack_info=False, stacklevel=1):
+        """
+        Find the stack frame of the caller so that we can note the source
+        file name, line number and function name.
+        """
+        f = currentframe()
+        #On some versions of IronPython, currentframe() returns None if
+        #IronPython isn't run with -X:Frames.
+        if f is None:
+            return "(unknown file)", 0, "(unknown function)", None
+        while stacklevel > 0:
+            next_f = f.f_back
+            if next_f is None:
+                ## We've got options here.
+                ## If we want to use the last (deepest) frame:
+                break
+                ## If we want to mimic the warnings module:
+                #return ("sys", 1, "(unknown function)", None)
+                ## If we want to be pedantic:
+                #raise ValueError("call stack is not deep enough")
+            f = next_f
+            if not _is_internal_frame(f):
+                stacklevel -= 1
+        co = f.f_code
+        sinfo = None
+        if stack_info:
+            with io.StringIO() as sio:
+                sio.write("Stack (most recent call last):\n")
+                traceback.print_stack(f, file=sio)
+                sinfo = sio.getvalue()
+                if sinfo[-1] == '\n':
+                    sinfo = sinfo[:-1]
+        return co.co_filename, f.f_lineno, co.co_name, sinfo
+
+    def makeRecord(self, name, level, fn, lno, msg, args, exc_info,
+                   func=None, extra=None, sinfo=None):
+        """
+        A factory method which can be overridden in subclasses to create
+        specialized LogRecords.
+        """
+        rv = _logRecordFactory(name, level, fn, lno, msg, args, exc_info, func,
+                             sinfo)
+        if extra is not None:
+            for key in extra:
+                if (key in ["message", "asctime"]) or (key in rv.__dict__):
+                    raise KeyError("Attempt to overwrite %r in LogRecord" % key)
+                rv.__dict__[key] = extra[key]
+        return rv
+
+    def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False,
+             stacklevel=1):
+        """
+        Low-level logging routine which creates a LogRecord and then calls
+        all the handlers of this logger to handle the record.
+        """
+        sinfo = None
+        if _srcfile:
+            #IronPython doesn't track Python frames, so findCaller raises an
+            #exception on some versions of IronPython. We trap it here so that
+            #IronPython can use logging.
+            try:
+                fn, lno, func, sinfo = self.findCaller(stack_info, stacklevel)
+            except ValueError: # pragma: no cover
+                fn, lno, func = "(unknown file)", 0, "(unknown function)"
+        else: # pragma: no cover
+            fn, lno, func = "(unknown file)", 0, "(unknown function)"
+        if exc_info:
+            if isinstance(exc_info, BaseException):
+                exc_info = (type(exc_info), exc_info, exc_info.__traceback__)
+            elif not isinstance(exc_info, tuple):
+                exc_info = sys.exc_info()
+        record = self.makeRecord(self.name, level, fn, lno, msg, args,
+                                 exc_info, func, extra, sinfo)
+        self.handle(record)
+
+    def handle(self, record):
+        """
+        Call the handlers for the specified record.
+
+        This method is used for unpickled records received from a socket, as
+        well as those created locally. Logger-level filtering is applied.
+        """
+        if self.disabled:
+            return
+        maybe_record = self.filter(record)
+        if not maybe_record:
+            return
+        if isinstance(maybe_record, LogRecord):
+            record = maybe_record
+        self.callHandlers(record)
+
+    def addHandler(self, hdlr):
+        """
+        Add the specified handler to this logger.
+        """
+        _acquireLock()
+        try:
+            if not (hdlr in self.handlers):
+                self.handlers.append(hdlr)
+        finally:
+            _releaseLock()
+
+    def removeHandler(self, hdlr):
+        """
+        Remove the specified handler from this logger.
+        """
+        _acquireLock()
+        try:
+            if hdlr in self.handlers:
+                self.handlers.remove(hdlr)
+        finally:
+            _releaseLock()
+
+    def hasHandlers(self):
+        """
+        See if this logger has any handlers configured.
+
+        Loop through all handlers for this logger and its parents in the
+        logger hierarchy. Return True if a handler was found, else False.
+        Stop searching up the hierarchy whenever a logger with the "propagate"
+        attribute set to zero is found - that will be the last logger which
+        is checked for the existence of handlers.
+        """
+        c = self
+        rv = False
+        while c:
+            if c.handlers:
+                rv = True
+                break
+            if not c.propagate:
+                break
+            else:
+                c = c.parent
+        return rv
+
+    def callHandlers(self, record):
+        """
+        Pass a record to all relevant handlers.
+
+        Loop through all handlers for this logger and its parents in the
+        logger hierarchy. If no handler was found, output a one-off error
+        message to sys.stderr. Stop searching up the hierarchy whenever a
+        logger with the "propagate" attribute set to zero is found - that
+        will be the last logger whose handlers are called.
+        """
+        c = self
+        found = 0
+        while c:
+            for hdlr in c.handlers:
+                found = found + 1
+                if record.levelno >= hdlr.level:
+                    hdlr.handle(record)
+            if not c.propagate:
+                c = None    #break out
+            else:
+                c = c.parent
+        if (found == 0):
+            if lastResort:
+                if record.levelno >= lastResort.level:
+                    lastResort.handle(record)
+            elif raiseExceptions and not self.manager.emittedNoHandlerWarning:
+                sys.stderr.write("No handlers could be found for logger"
+                                 " \"%s\"\n" % self.name)
+                self.manager.emittedNoHandlerWarning = True
+
+    def getEffectiveLevel(self):
+        """
+        Get the effective level for this logger.
+
+        Loop through this logger and its parents in the logger hierarchy,
+        looking for a non-zero logging level. Return the first one found.
+        """
+        logger = self
+        while logger:
+            if logger.level:
+                return logger.level
+            logger = logger.parent
+        return NOTSET
+
+    def isEnabledFor(self, level):
+        """
+        Is this logger enabled for level 'level'?
+        """
+        if self.disabled:
+            return False
+
+        try:
+            return self._cache[level]
+        except KeyError:
+            _acquireLock()
+            try:
+                if self.manager.disable >= level:
+                    is_enabled = self._cache[level] = False
+                else:
+                    is_enabled = self._cache[level] = (
+                        level >= self.getEffectiveLevel()
+                    )
+            finally:
+                _releaseLock()
+            return is_enabled
+
+    def getChild(self, suffix):
+        """
+        Get a logger which is a descendant to this one.
+
+        This is a convenience method, such that
+
+        logging.getLogger('abc').getChild('def.ghi')
+
+        is the same as
+
+        logging.getLogger('abc.def.ghi')
+
+        It's useful, for example, when the parent logger is named using
+        __name__ rather than a literal string.
+        """
+        if self.root is not self:
+            suffix = '.'.join((self.name, suffix))
+        return self.manager.getLogger(suffix)
+
+    def getChildren(self):
+
+        def _hierlevel(logger):
+            if logger is logger.manager.root:
+                return 0
+            return 1 + logger.name.count('.')
+
+        d = self.manager.loggerDict
+        _acquireLock()
+        try:
+            # exclude PlaceHolders - the last check is to ensure that lower-level
+            # descendants aren't returned - if there are placeholders, a logger's
+            # parent field might point to a grandparent or ancestor thereof.
+            return set(item for item in d.values()
+                       if isinstance(item, Logger) and item.parent is self and
+                       _hierlevel(item) == 1 + _hierlevel(item.parent))
+        finally:
+            _releaseLock()
+
+    def __repr__(self):
+        level = getLevelName(self.getEffectiveLevel())
+        return '<%s %s (%s)>' % (self.__class__.__name__, self.name, level)
+
+    def __reduce__(self):
+        if getLogger(self.name) is not self:
+            import pickle
+            raise pickle.PicklingError('logger cannot be pickled')
+        return getLogger, (self.name,)
+
+
+class RootLogger(Logger):
+    """
+    A root logger is not that different to any other logger, except that
+    it must have a logging level and there is only one instance of it in
+    the hierarchy.
+    """
+    def __init__(self, level):
+        """
+        Initialize the logger with the name "root".
+        """
+        Logger.__init__(self, "root", level)
+
+    def __reduce__(self):
+        return getLogger, ()
+
+_loggerClass = Logger
+
+class LoggerAdapter(object):
+    """
+    An adapter for loggers which makes it easier to specify contextual
+    information in logging output.
+    """
+
+    def __init__(self, logger, extra=None):
+        """
+        Initialize the adapter with a logger and a dict-like object which
+        provides contextual information. This constructor signature allows
+        easy stacking of LoggerAdapters, if so desired.
+
+        You can effectively pass keyword arguments as shown in the
+        following example:
+
+        adapter = LoggerAdapter(someLogger, dict(p1=v1, p2="v2"))
+        """
+        self.logger = logger
+        self.extra = extra
+
+    def process(self, msg, kwargs):
+        """
+        Process the logging message and keyword arguments passed in to
+        a logging call to insert contextual information. You can either
+        manipulate the message itself, the keyword args or both. Return
+        the message and kwargs modified (or not) to suit your needs.
+
+        Normally, you'll only need to override this one method in a
+        LoggerAdapter subclass for your specific needs.
+        """
+        kwargs["extra"] = self.extra
+        return msg, kwargs
+
+    #
+    # Boilerplate convenience methods
+    #
+    def debug(self, msg, *args, **kwargs):
+        """
+        Delegate a debug call to the underlying logger.
+        """
+        self.log(DEBUG, msg, *args, **kwargs)
+
+    def info(self, msg, *args, **kwargs):
+        """
+        Delegate an info call to the underlying logger.
+        """
+        self.log(INFO, msg, *args, **kwargs)
+
+    def warning(self, msg, *args, **kwargs):
+        """
+        Delegate a warning call to the underlying logger.
+        """
+        self.log(WARNING, msg, *args, **kwargs)
+
+    def warn(self, msg, *args, **kwargs):
+        warnings.warn("The 'warn' method is deprecated, "
+            "use 'warning' instead", DeprecationWarning, 2)
+        self.warning(msg, *args, **kwargs)
+
+    def error(self, msg, *args, **kwargs):
+        """
+        Delegate an error call to the underlying logger.
+        """
+        self.log(ERROR, msg, *args, **kwargs)
+
+    def exception(self, msg, *args, exc_info=True, **kwargs):
+        """
+        Delegate an exception call to the underlying logger.
+        """
+        self.log(ERROR, msg, *args, exc_info=exc_info, **kwargs)
+
+    def critical(self, msg, *args, **kwargs):
+        """
+        Delegate a critical call to the underlying logger.
+        """
+        self.log(CRITICAL, msg, *args, **kwargs)
+
+    def log(self, level, msg, *args, **kwargs):
+        """
+        Delegate a log call to the underlying logger, after adding
+        contextual information from this adapter instance.
+        """
+        if self.isEnabledFor(level):
+            msg, kwargs = self.process(msg, kwargs)
+            self.logger.log(level, msg, *args, **kwargs)
+
+    def isEnabledFor(self, level):
+        """
+        Is this logger enabled for level 'level'?
+        """
+        return self.logger.isEnabledFor(level)
+
+    def setLevel(self, level):
+        """
+        Set the specified level on the underlying logger.
+        """
+        self.logger.setLevel(level)
+
+    def getEffectiveLevel(self):
+        """
+        Get the effective level for the underlying logger.
+        """
+        return self.logger.getEffectiveLevel()
+
+    def hasHandlers(self):
+        """
+        See if the underlying logger has any handlers.
+        """
+        return self.logger.hasHandlers()
+
+    def _log(self, level, msg, args, **kwargs):
+        """
+        Low-level log implementation, proxied to allow nested logger adapters.
+        """
+        return self.logger._log(level, msg, args, **kwargs)
+
+    @property
+    def manager(self):
+        return self.logger.manager
+
+    @manager.setter
+    def manager(self, value):
+        self.logger.manager = value
+
+    @property
+    def name(self):
+        return self.logger.name
+
+    def __repr__(self):
+        logger = self.logger
+        level = getLevelName(logger.getEffectiveLevel())
+        return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)
+
+    __class_getitem__ = classmethod(GenericAlias)
+
+root = RootLogger(WARNING)
+Logger.root = root
+Logger.manager = Manager(Logger.root)
+
+#---------------------------------------------------------------------------
+# Configuration classes and functions
+#---------------------------------------------------------------------------
+
+def basicConfig(**kwargs):
+    """
+    Do basic configuration for the logging system.
+
+    This function does nothing if the root logger already has handlers
+    configured, unless the keyword argument *force* is set to ``True``.
+    It is a convenience method intended for use by simple scripts
+    to do one-shot configuration of the logging package.
+
+    The default behaviour is to create a StreamHandler which writes to
+    sys.stderr, set a formatter using the BASIC_FORMAT format string, and
+    add the handler to the root logger.
+
+    A number of optional keyword arguments may be specified, which can alter
+    the default behaviour.
+
+    filename  Specifies that a FileHandler be created, using the specified
+              filename, rather than a StreamHandler.
+    filemode  Specifies the mode to open the file, if filename is specified
+              (if filemode is unspecified, it defaults to 'a').
+    format    Use the specified format string for the handler.
+    datefmt   Use the specified date/time format.
+    style     If a format string is specified, use this to specify the
+              type of format string (possible values '%', '{', '$', for
+              %-formatting, :meth:`str.format` and :class:`string.Template`
+              - defaults to '%').
+    level     Set the root logger level to the specified level.
+    stream    Use the specified stream to initialize the StreamHandler. Note
+              that this argument is incompatible with 'filename' - if both
+              are present, 'stream' is ignored.
+    handlers  If specified, this should be an iterable of already created
+              handlers, which will be added to the root logger. Any handler
+              in the list which does not have a formatter assigned will be
+              assigned the formatter created in this function.
+    force     If this keyword  is specified as true, any existing handlers
+              attached to the root logger are removed and closed, before
+              carrying out the configuration as specified by the other
+              arguments.
+    encoding  If specified together with a filename, this encoding is passed to
+              the created FileHandler, causing it to be used when the file is
+              opened.
+    errors    If specified together with a filename, this value is passed to the
+              created FileHandler, causing it to be used when the file is
+              opened in text mode. If not specified, the default value is
+              `backslashreplace`.
+
+    Note that you could specify a stream created using open(filename, mode)
+    rather than passing the filename and mode in. However, it should be
+    remembered that StreamHandler does not close its stream (since it may be
+    using sys.stdout or sys.stderr), whereas FileHandler closes its stream
+    when the handler is closed.
+
+    .. versionchanged:: 3.2
+       Added the ``style`` parameter.
+
+    .. versionchanged:: 3.3
+       Added the ``handlers`` parameter. A ``ValueError`` is now thrown for
+       incompatible arguments (e.g. ``handlers`` specified together with
+       ``filename``/``filemode``, or ``filename``/``filemode`` specified
+       together with ``stream``, or ``handlers`` specified together with
+       ``stream``.
+
+    .. versionchanged:: 3.8
+       Added the ``force`` parameter.
+
+    .. versionchanged:: 3.9
+       Added the ``encoding`` and ``errors`` parameters.
+    """
+    # Add thread safety in case someone mistakenly calls
+    # basicConfig() from multiple threads
+    _acquireLock()
+    try:
+        force = kwargs.pop('force', False)
+        encoding = kwargs.pop('encoding', None)
+        errors = kwargs.pop('errors', 'backslashreplace')
+        if force:
+            for h in root.handlers[:]:
+                root.removeHandler(h)
+                h.close()
+        if len(root.handlers) == 0:
+            handlers = kwargs.pop("handlers", None)
+            if handlers is None:
+                if "stream" in kwargs and "filename" in kwargs:
+                    raise ValueError("'stream' and 'filename' should not be "
+                                     "specified together")
+            else:
+                if "stream" in kwargs or "filename" in kwargs:
+                    raise ValueError("'stream' or 'filename' should not be "
+                                     "specified together with 'handlers'")
+            if handlers is None:
+                filename = kwargs.pop("filename", None)
+                mode = kwargs.pop("filemode", 'a')
+                if filename:
+                    if 'b' in mode:
+                        errors = None
+                    else:
+                        encoding = io.text_encoding(encoding)
+                    h = FileHandler(filename, mode,
+                                    encoding=encoding, errors=errors)
+                else:
+                    stream = kwargs.pop("stream", None)
+                    h = StreamHandler(stream)
+                handlers = [h]
+            dfs = kwargs.pop("datefmt", None)
+            style = kwargs.pop("style", '%')
+            if style not in _STYLES:
+                raise ValueError('Style must be one of: %s' % ','.join(
+                                 _STYLES.keys()))
+            fs = kwargs.pop("format", _STYLES[style][1])
+            fmt = Formatter(fs, dfs, style)
+            for h in handlers:
+                if h.formatter is None:
+                    h.setFormatter(fmt)
+                root.addHandler(h)
+            level = kwargs.pop("level", None)
+            if level is not None:
+                root.setLevel(level)
+            if kwargs:
+                keys = ', '.join(kwargs.keys())
+                raise ValueError('Unrecognised argument(s): %s' % keys)
+    finally:
+        _releaseLock()
+
+#---------------------------------------------------------------------------
+# Utility functions at module level.
+# Basically delegate everything to the root logger.
+#---------------------------------------------------------------------------
+
+
+[docs] +def getLogger(name=None): + """ + Return a logger with the specified name, creating it if necessary. + + If no name is specified, return the root logger. + """ + if not name or isinstance(name, str) and name == root.name: + return root + return Logger.manager.getLogger(name)
+ + +def critical(msg, *args, **kwargs): + """ + Log a message with severity 'CRITICAL' on the root logger. If the logger + has no handlers, call basicConfig() to add a console handler with a + pre-defined format. + """ + if len(root.handlers) == 0: + basicConfig() + root.critical(msg, *args, **kwargs) + +def fatal(msg, *args, **kwargs): + """ + Don't use this function, use critical() instead. + """ + critical(msg, *args, **kwargs) + +def error(msg, *args, **kwargs): + """ + Log a message with severity 'ERROR' on the root logger. If the logger has + no handlers, call basicConfig() to add a console handler with a pre-defined + format. + """ + if len(root.handlers) == 0: + basicConfig() + root.error(msg, *args, **kwargs) + +def exception(msg, *args, exc_info=True, **kwargs): + """ + Log a message with severity 'ERROR' on the root logger, with exception + information. If the logger has no handlers, basicConfig() is called to add + a console handler with a pre-defined format. + """ + error(msg, *args, exc_info=exc_info, **kwargs) + +def warning(msg, *args, **kwargs): + """ + Log a message with severity 'WARNING' on the root logger. If the logger has + no handlers, call basicConfig() to add a console handler with a pre-defined + format. + """ + if len(root.handlers) == 0: + basicConfig() + root.warning(msg, *args, **kwargs) + +def warn(msg, *args, **kwargs): + warnings.warn("The 'warn' function is deprecated, " + "use 'warning' instead", DeprecationWarning, 2) + warning(msg, *args, **kwargs) + +def info(msg, *args, **kwargs): + """ + Log a message with severity 'INFO' on the root logger. If the logger has + no handlers, call basicConfig() to add a console handler with a pre-defined + format. + """ + if len(root.handlers) == 0: + basicConfig() + root.info(msg, *args, **kwargs) + +def debug(msg, *args, **kwargs): + """ + Log a message with severity 'DEBUG' on the root logger. If the logger has + no handlers, call basicConfig() to add a console handler with a pre-defined + format. + """ + if len(root.handlers) == 0: + basicConfig() + root.debug(msg, *args, **kwargs) + +def log(level, msg, *args, **kwargs): + """ + Log 'msg % args' with the integer severity 'level' on the root logger. If + the logger has no handlers, call basicConfig() to add a console handler + with a pre-defined format. + """ + if len(root.handlers) == 0: + basicConfig() + root.log(level, msg, *args, **kwargs) + +def disable(level=CRITICAL): + """ + Disable all logging calls of severity 'level' and below. + """ + root.manager.disable = level + root.manager._clear_cache() + +def shutdown(handlerList=_handlerList): + """ + Perform any cleanup actions in the logging system (e.g. flushing + buffers). + + Should be called at application exit. + """ + for wr in reversed(handlerList[:]): + #errors might occur, for example, if files are locked + #we just ignore them if raiseExceptions is not set + try: + h = wr() + if h: + try: + h.acquire() + # MemoryHandlers might not want to be flushed on close, + # but circular imports prevent us scoping this to just + # those handlers. hence the default to True. + if getattr(h, 'flushOnClose', True): + h.flush() + h.close() + except (OSError, ValueError): + # Ignore errors which might be caused + # because handlers have been closed but + # references to them are still around at + # application exit. + pass + finally: + h.release() + except: # ignore everything, as we're shutting down + if raiseExceptions: + raise + #else, swallow + +#Let's try and shutdown automatically on application exit... +import atexit +atexit.register(shutdown) + +# Null handler + +class NullHandler(Handler): + """ + This handler does nothing. It's intended to be used to avoid the + "No handlers could be found for logger XXX" one-off warning. This is + important for library code, which may contain code to log events. If a user + of the library does not configure logging, the one-off warning might be + produced; to avoid this, the library developer simply needs to instantiate + a NullHandler and add it to the top-level logger of the library module or + package. + """ + def handle(self, record): + """Stub.""" + + def emit(self, record): + """Stub.""" + + def createLock(self): + self.lock = None + + def _at_fork_reinit(self): + pass + +# Warnings integration + +_warnings_showwarning = None + +def _showwarning(message, category, filename, lineno, file=None, line=None): + """ + Implementation of showwarnings which redirects to logging, which will first + check to see if the file parameter is None. If a file is specified, it will + delegate to the original warnings implementation of showwarning. Otherwise, + it will call warnings.formatwarning and will log the resulting string to a + warnings logger named "py.warnings" with level logging.WARNING. + """ + if file is not None: + if _warnings_showwarning is not None: + _warnings_showwarning(message, category, filename, lineno, file, line) + else: + s = warnings.formatwarning(message, category, filename, lineno, line) + logger = getLogger("py.warnings") + if not logger.handlers: + logger.addHandler(NullHandler()) + # bpo-46557: Log str(s) as msg instead of logger.warning("%s", s) + # since some log aggregation tools group logs by the msg arg + logger.warning(str(s)) + +def captureWarnings(capture): + """ + If capture is true, redirect all warnings to the logging package. + If capture is False, ensure that warnings are not redirected to logging + but to their original destinations. + """ + global _warnings_showwarning + if capture: + if _warnings_showwarning is None: + _warnings_showwarning = warnings.showwarning + warnings.showwarning = _showwarning + else: + if _warnings_showwarning is not None: + warnings.showwarning = _warnings_showwarning + _warnings_showwarning = None +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex/cli.html b/src/scitex/_sphinx_html/_modules/scitex/cli.html new file mode 100644 index 000000000..515227685 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex/cli.html @@ -0,0 +1,888 @@ + + + + + + + + scitex.cli — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex.cli

+#!/usr/bin/env python3
+"""
+SciTeX CLI - Command-line interface for SciTeX platform
+
+Provides unified interface for:
+- Cloud operations (wraps tea for Gitea)
+- Scholar operations (Django API)
+- Code operations (Django API)
+- Viz operations (Django API)
+- Writer operations (Django API)
+- Project operations (integrated workflows)
+"""
+
+import click
+
+from .main import cli
+
+
+
+
+
+
+
+[docs] +def format_python_signature(func, multiline: bool = True, indent: str = " ") -> tuple: + """Format Python function signature with colors matching mcp list-tools. + + Returns (name_colored, signature_colored) + """ + import inspect + + try: + sig = inspect.signature(func) + except (ValueError, TypeError): + return click.style(func.__name__, fg="green", bold=True), "" + + params = [] + for name, param in sig.parameters.items(): + # Get type annotation + if param.annotation != inspect.Parameter.empty: + ann = param.annotation + type_str = ann.__name__ if hasattr(ann, "__name__") else str(ann) + type_str = type_str.replace("typing.", "") + else: + type_str = None + + # Get default value + if param.default != inspect.Parameter.empty: + default = param.default + def_str = repr(default) if len(repr(default)) < 20 else "..." + if type_str: + p = f"{click.style(name, fg='white', bold=True)}: {click.style(type_str, fg='cyan')} = {click.style(def_str, fg='yellow')}" + else: + p = f"{click.style(name, fg='white', bold=True)} = {click.style(def_str, fg='yellow')}" + else: + if type_str: + p = f"{click.style(name, fg='white', bold=True)}: {click.style(type_str, fg='cyan')}" + else: + p = click.style(name, fg="white", bold=True) + params.append(p) + + # Return type + ret_str = "" + if sig.return_annotation != inspect.Parameter.empty: + ret = sig.return_annotation + ret_name = ret.__name__ if hasattr(ret, "__name__") else str(ret) + ret_name = ret_name.replace("typing.", "") + ret_str = f" -> {click.style(ret_name, fg='magenta')}" + + name_s = click.style(func.__name__, fg="green", bold=True) + + if multiline and len(params) > 2: + param_indent = indent + " " + params_str = ",\n".join(f"{param_indent}{p}" for p in params) + sig_s = f"(\n{params_str}\n{indent}){ret_str}" + else: + sig_s = f"({', '.join(params)}){ret_str}" + + return name_s, sig_s
+ + + +
+[docs] +def group_to_json(ctx, group: click.Group) -> None: + """Output a group's subcommands as Result JSON and exit. + + Provides ``--json`` behavior for group-level commands, listing + available subcommands with their short help text. + """ + from scitex_dev import Result + + cmds = {} + for name in sorted(group.list_commands(ctx) or []): + cmd = group.get_command(ctx, name) + if cmd: + cmds[name] = cmd.get_short_help_str(limit=150) + click.echo(Result(success=True, data={"commands": cmds}).to_json()) + ctx.exit(0)
+ + + +
+[docs] +def help_recursive_to_json(ctx, group: click.Group) -> None: + """Output recursive help for a group and all subcommands as Result JSON. + + Walks the entire command tree and outputs structured JSON with + command names, help text, options, and nested subcommands. + """ + from scitex_dev import Result + + def _cmd_to_dict(cmd, parent_ctx): + """Convert a Click command to a dict with options and help.""" + info = { + "help": cmd.get_short_help_str(limit=300), + } + # Collect options (exclude --help) + params = [] + for param in cmd.params: + if isinstance(param, click.Option) and param.name != "help": + p = { + "name": param.name, + "flags": list(param.opts), + "required": param.required, + "type": param.type.name + if hasattr(param.type, "name") + else str(param.type), + } + if param.default is not None: + p["default"] = param.default + if param.help: + p["help"] = param.help + params.append(p) + elif isinstance(param, click.Argument): + p = { + "name": param.name, + "type": "argument", + "required": param.required, + } + params.append(p) + if params: + info["params"] = params + + # Recurse into subgroups + if isinstance(cmd, click.MultiCommand): + subs = {} + for name in sorted(cmd.list_commands(parent_ctx) or []): + sub_cmd = cmd.get_command(parent_ctx, name) + if sub_cmd: + with click.Context( + sub_cmd, info_name=name, parent=parent_ctx + ) as sub_ctx: + subs[name] = _cmd_to_dict(sub_cmd, sub_ctx) + if subs: + info["subcommands"] = subs + return info + + # Build the full tree + group_name = group.name or "cli" + fake_parent = click.Context(click.Group(), info_name="scitex") + parent_ctx = click.Context(group, info_name=group_name, parent=fake_parent) + + tree = _cmd_to_dict(group, parent_ctx) + tree["name"] = f"scitex {group_name}" if group_name != "cli" else "scitex" + + click.echo(Result(success=True, data=tree).to_json()) + ctx.exit(0)
+ + + +__all__ = [ + "cli", + "print_help_recursive", + "format_python_signature", + "group_to_json", + "help_recursive_to_json", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_app/_files_api.html b/src/scitex/_sphinx_html/_modules/scitex_app/_files_api.html new file mode 100644 index 000000000..b70a59fa3 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_app/_files_api.html @@ -0,0 +1,870 @@ + + + + + + + + scitex_app._files_api — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_app._files_api

+#!/usr/bin/env python3
+# Timestamp: 2026-05-12
+# File: scitex_app/_files_api.py
+
+"""Flat module-level wrappers around `FilesBackend` operations.
+
+These mirror the package's MCP tool surface (`app_read_file`,
+`app_write_file`, …) so users have a single-call Python API that
+matches what MCP exposes — closing the API↔MCP parity check
+(§6) and giving users a more discoverable surface for one-off
+file operations than `get_files(root).read(path)`.
+
+Each wrapper resolves the backend via :func:`scitex_app.sdk.get_files`
+on every call, so it honours the same auto-detection rules
+(``SCITEX_API_TOKEN`` for cloud, filesystem otherwise) and stays
+in lock-step with whatever backend the caller has registered.
+
+Heavy file shims (binary handling, traversal safety) live on the
+backend; this module is intentionally thin.
+"""
+
+from __future__ import annotations
+
+from pathlib import Path
+from typing import List, Optional, Union
+
+from .sdk import get_files
+
+
+
+[docs] +def read_file( + path: str, + *, + root: Union[str, Path] = ".", + binary: bool = False, +) -> Union[str, bytes]: + """Read a single file via the resolved :class:`FilesBackend`. + + Equivalent to ``get_files(root).read(path, binary=binary)``; + mirrors the ``app_read_file`` MCP tool. + """ + return get_files(root).read(path, binary=binary)
+ + + +
+[docs] +def write_file( + path: str, + content: Union[str, bytes], + *, + root: Union[str, Path] = ".", +) -> None: + """Write a file via the resolved :class:`FilesBackend`. + + Mirrors the ``app_write_file`` MCP tool. + """ + get_files(root).write(path, content)
+ + + +
+[docs] +def list_files( + directory: str = "", + *, + root: Union[str, Path] = ".", + extensions: Optional[List[str]] = None, +) -> List[str]: + """List file paths under *directory*. + + Mirrors the ``app_list_files`` MCP tool. + """ + return get_files(root).list(directory, extensions=extensions)
+ + + +
+[docs] +def file_exists(path: str, *, root: Union[str, Path] = ".") -> bool: + """Return whether *path* exists in the resolved backend. + + Mirrors the ``app_file_exists`` MCP tool. + """ + return get_files(root).exists(path)
+ + + +
+[docs] +def delete_file(path: str, *, root: Union[str, Path] = ".") -> None: + """Delete *path* in the resolved backend. + + Mirrors the ``app_delete_file`` MCP tool. + """ + get_files(root).delete(path)
+ + + +
+[docs] +def copy_file( + src_path: str, + dest_path: str, + *, + root: Union[str, Path] = ".", +) -> None: + """Copy *src_path* to *dest_path* within the resolved backend. + + Mirrors the ``app_copy_file`` MCP tool. + """ + get_files(root).copy(src_path, dest_path)
+ + + +
+[docs] +def rename_file( + old_path: str, + new_path: str, + *, + root: Union[str, Path] = ".", +) -> None: + """Rename *old_path* to *new_path* within the resolved backend. + + Mirrors the ``app_rename_file`` MCP tool. + """ + get_files(root).rename(old_path, new_path)
+ + + +
+[docs] +def scaffold( + target_dir: Union[str, Path] = ".", + *, + name: Optional[str] = None, + label: Optional[str] = None, + icon: str = "fas fa-puzzle-piece", + description: str = "", + frontend: str = "html", + overwrite: bool = False, +) -> List[Path]: + """Generate a new SciTeX workspace app skeleton. + + Mirrors the ``app_scaffold`` MCP tool. Auto-appends ``_app`` / + ``-app`` to *name* (matching the MCP tool's behaviour) so + Python and MCP callers see the same result for the same inputs. + """ + from .appmaker import init_app + + target = Path(target_dir).resolve() + app_name = name or target.name + + if not (app_name.endswith("_app") or app_name.endswith("-app")): + sep = "-" if "-" in app_name else "_" + app_name = f"{app_name}{sep}app" + + return init_app( + target_dir=target, + name=app_name, + label=label or "", + icon=icon, + description=description, + overwrite=overwrite, + frontend_type=frontend, + )
+ + + +
+[docs] +def validate(app_dir: Union[str, Path] = ".") -> List[str]: + """Audit a SciTeX app for cloud-submission readiness. + + Mirrors the ``app_validate`` MCP tool. Returns the list of + errors (empty when the app is ready). + """ + from .appmaker import validate as _validate + + return _validate(app_dir)
+ + + +__all__ = [ + "read_file", + "write_file", + "list_files", + "file_exists", + "delete_file", + "copy_file", + "rename_file", + "scaffold", + "validate", +] + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_app/sdk.html b/src/scitex/_sphinx_html/_modules/scitex_app/sdk.html new file mode 100644 index 000000000..70fa16bca --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_app/sdk.html @@ -0,0 +1,815 @@ + + + + + + + + scitex_app.sdk — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_app.sdk

+#!/usr/bin/env python3
+# Timestamp: 2026-03-13
+# File: scitex_app/sdk/__init__.py
+
+"""App SDK — write-once interface for local + cloud SciTeX apps.
+
+Usage (standalone / local):
+    from scitex_app.sdk import get_files
+
+    files = get_files("./my_project")
+    content = files.read("recipes/my_recipe.yaml")
+    files.write("output/result.png", png_bytes)
+
+Usage (cloud, auto-detected via SCITEX_API_TOKEN):
+    files = get_files()  # routes through cloud REST API
+
+Usage (remote local, via SCITEX_API_URL):
+    import os
+    os.environ["SCITEX_API_TOKEN"] = "your-token"
+    os.environ["SCITEX_API_URL"] = "https://scitex.ai"
+    files = get_files()  # routes to remote cloud
+"""
+
+from __future__ import annotations
+
+import os
+from pathlib import Path
+from typing import Any, Callable, Dict, Optional, Union
+
+from ._protocol import FilesBackend
+from ._tree import build_tree
+
+# Backend registry: name -> factory callable
+_registry: Dict[str, Callable[..., FilesBackend]] = {}
+
+
+
+[docs] +def register_backend(name: str, factory: Callable[..., FilesBackend]) -> None: + """Register a files backend factory. + + Parameters + ---------- + name : str + Backend identifier (e.g., "cloud", "s3"). + factory : callable + Callable(root, ``**kwargs``) -> ``FilesBackend`` instance. + """ + _registry[name] = factory
+ + + +
+[docs] +def get_files( + root: Optional[Union[str, Path]] = None, + *, + backend: Optional[str] = None, + **kwargs: Any, +) -> FilesBackend: + """Get a files backend instance. + + Auto-detection logic: + + 1. If ``backend`` is specified, use that. + 2. If ``SCITEX_API_TOKEN`` env var is set and "cloud" backend + is registered, use cloud. + 3. Otherwise, use filesystem (default). + + Parameters + ---------- + root : str or Path, optional + Root directory for filesystem backend. Defaults to cwd. + backend : str, optional + Explicit backend name. If None, auto-detected. + + Returns + ------- + FilesBackend + A backend instance. + + Raises + ------ + KeyError + If the requested backend is not registered. + """ + if backend: + if backend not in _registry: + raise KeyError( + f"Backend {backend!r} not registered. " + f"Available: {list(_registry.keys())}" + ) + return _registry[backend](root, **kwargs) + + if os.environ.get("SCITEX_API_TOKEN"): + if "cloud" not in _registry: + # Auto-register cloud backend when token is available + from ._cloud_files import cloud_files_factory + + _registry["cloud"] = cloud_files_factory + return _registry["cloud"](root, **kwargs) + + from ._filesystem import FileSystemBackend + + return FileSystemBackend(root or Path.cwd())
+ + + +__all__ = [ + "FilesBackend", + "get_files", + "register_backend", + "build_tree", +] + + +# Internal cloud modules — accessible via scitex_app.sdk._client etc. +# but NOT part of the public API contract. Use scitex_cloud.sdk for +# cloud service access (data, files, jobs, scitex, external). +def __getattr__(name: str) -> Any: + """Lazy-load cloud internals on demand (not in __all__).""" + _lazy = { + "PlatformClient": ("._client", "PlatformClient"), + "get_client": ("._client", "get_client"), + "reset_client": ("._client", "reset_client"), + "CloudFilesBackend": ("._cloud_files", "CloudFilesBackend"), + "data": (".", "_cloud_data"), + "files": (".", "_cloud_files"), + "jobs": (".", "_cloud_jobs"), + "scitex": (".", "_cloud_scitex"), + "external": (".", "_cloud_external"), + } + if name in _lazy: + import importlib + + mod_path, attr = _lazy[name] + if mod_path == ".": + return importlib.import_module(f".{attr}", __package__) + mod = importlib.import_module(mod_path, __package__) + return getattr(mod, attr) + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_app/sdk/_protocol.html b/src/scitex/_sphinx_html/_modules/scitex_app/sdk/_protocol.html new file mode 100644 index 000000000..be64f6949 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_app/sdk/_protocol.html @@ -0,0 +1,810 @@ + + + + + + + + scitex_app.sdk._protocol — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_app.sdk._protocol

+#!/usr/bin/env python3
+# Timestamp: 2026-03-13
+# File: scitex_app/sdk/_protocol.py
+
+"""FilesBackend protocol — structural typing for pluggable storage."""
+
+from __future__ import annotations
+
+from typing import List, Optional, Protocol, Union, runtime_checkable
+
+
+
+[docs] +@runtime_checkable +class FilesBackend(Protocol): + """File storage backend protocol. + + Implementations must provide these 7 methods. + Uses ``typing.Protocol`` for structural subtyping — backends + just implement the methods, no inheritance required. + + Implementations + --------------- + - ``FileSystemBackend`` — local pathlib (ships with scitex-app) + - ``CloudFilesBackend`` — HTTP via scitex_cloud (provided at runtime) + """ + +
+[docs] + def read(self, path: str, *, binary: bool = False) -> Union[str, bytes]: + """Read file content. + + Parameters + ---------- + path : str + Relative path within the backend's namespace. + binary : bool + If True, return bytes; otherwise return str. + + Raises + ------ + FileNotFoundError + If the file does not exist. + """ + ...
+ + +
+[docs] + def write(self, path: str, content: Union[str, bytes]) -> None: + """Write content to a file, creating parent dirs as needed. + + Parameters + ---------- + path : str + Relative path within the backend's namespace. + content : str or bytes + Text or binary content. + """ + ...
+ + +
+[docs] + def list( + self, + directory: str = "", + *, + extensions: Optional[List[str]] = None, + ) -> List[str]: + """List file paths in a directory. + + Parameters + ---------- + directory : str + Relative directory path ("" = root). + extensions : list of str, optional + Filter by extension, e.g. [".yaml", ".png"]. + + Returns + ------- + list of str + Relative file paths. + """ + ...
+ + +
+[docs] + def exists(self, path: str) -> bool: + """Check if a file exists.""" + ...
+ + +
+[docs] + def delete(self, path: str) -> None: + """Delete a file. + + Raises + ------ + FileNotFoundError + If the file does not exist. + """ + ...
+ + +
+[docs] + def rename(self, old_path: str, new_path: str) -> None: + """Rename/move a file within the namespace. + + Raises + ------ + FileNotFoundError + If old_path does not exist. + FileExistsError + If new_path already exists. + """ + ...
+ + +
+[docs] + def copy(self, src_path: str, dest_path: str) -> None: + """Copy a file within the namespace. + + Raises + ------ + FileNotFoundError + If src_path does not exist. + """ + ...
+
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_app/sdk/_tree.html b/src/scitex/_sphinx_html/_modules/scitex_app/sdk/_tree.html new file mode 100644 index 000000000..5a4a76354 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_app/sdk/_tree.html @@ -0,0 +1,821 @@ + + + + + + + + scitex_app.sdk._tree — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_app.sdk._tree

+#!/usr/bin/env python3
+# Timestamp: 2026-03-15
+# File: scitex_app/sdk/_tree.py
+
+"""Tree builder utility for FilesBackend.
+
+Converts flat file listings into nested directory tree structures.
+Reusable by any app that needs a file browser UI.
+"""
+
+from __future__ import annotations
+
+from pathlib import Path
+from typing import Any, Dict, List, Optional
+
+
+
+[docs] +def build_tree( + backend: Any, + directory: str = "", + *, + extensions: Optional[List[str]] = None, + skip_hidden: bool = True, + max_depth: int = 10, +) -> List[Dict[str, Any]]: + """Build a nested tree structure from a FilesBackend. + + Parameters + ---------- + backend : FilesBackend + A file storage backend implementing the FilesBackend protocol. + directory : str + Starting directory (relative to backend root). Default: root. + extensions : list of str, optional + Filter files by extension (e.g., [".yaml", ".png"]). + Directories are always included for traversal. + skip_hidden : bool + Skip files/directories starting with ".". Default: True. + max_depth : int + Maximum recursion depth to prevent runaway traversal. Default: 10. + + Returns + ------- + list of dict + Nested tree structure:: + + [ + {"path": "subdir", "name": "subdir", "type": "directory", + "children": [...]}, + {"path": "file.yaml", "name": "file.yaml", "type": "file"}, + ] + """ + if max_depth <= 0: + return [] + + # Get all entries in this directory + entries = _list_entries(backend, directory) + items = [] + + for entry in entries: + name = Path(entry["path"]).name + + if skip_hidden and name.startswith("."): + continue + + if entry["type"] == "directory": + try: + children = build_tree( + backend, + entry["path"], + extensions=extensions, + skip_hidden=skip_hidden, + max_depth=max_depth - 1, + ) + except PermissionError: + continue # skip directories we can't read + if children: # only include non-empty directories + items.append( + { + "path": entry["path"], + "name": name, + "type": "directory", + "children": children, + } + ) + else: + # Apply extension filter to files + if extensions: + suffix = Path(name).suffix.lower() + if suffix not in extensions: + continue + items.append( + { + "path": entry["path"], + "name": name, + "type": "file", + } + ) + + # Sort: pure alphabetical (case-insensitive), dirs and files interleaved + items.sort(key=lambda x: x["name"].lower()) + return items
+ + + +def _list_entries( + backend: Any, + directory: str = "", +) -> List[Dict[str, str]]: + """List directory entries with type information. + + Tries backend.list_entries() first (if available, returns files + dirs). + Falls back to backend.list() for files and attempts directory discovery. + """ + # Preferred: backend supports list_entries() returning typed entries + if hasattr(backend, "list_entries"): + return backend.list_entries(directory) + + # Fallback: use list() for files, try to discover directories + # via the backend's internal structure + if hasattr(backend, "_root"): + # FileSystemBackend — access pathlib directly for directory info + root = backend._root + target = (root / directory) if directory else root + if not target.is_dir(): + return [] + entries = [] + try: + children = sorted(target.iterdir(), key=lambda x: x.name.lower()) + except PermissionError: + return [] + for item in children: + try: + rel = str(item.relative_to(root)) + if item.is_dir(): + entries.append({"path": rel, "type": "directory"}) + elif item.is_file(): + entries.append({"path": rel, "type": "file"}) + except PermissionError: + continue # skip files/dirs we can't access + return entries + + # Last resort: list() returns only files, no directory info + files = backend.list(directory) + return [{"path": f, "type": "file"} for f in files] + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_audit/_runner.html b/src/scitex/_sphinx_html/_modules/scitex_audit/_runner.html new file mode 100644 index 000000000..f84add944 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_audit/_runner.html @@ -0,0 +1,801 @@ + + + + + + + + scitex_audit._runner — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_audit._runner

+#!/usr/bin/env python3
+# File: src/scitex_audit/_runner.py
+
+"""
+Core audit orchestrator.
+
+Discovers available tools and runs each requested checker,
+returning a unified results dictionary.
+"""
+
+from __future__ import annotations
+
+import logging
+import shutil
+from pathlib import Path
+from typing import Optional
+
+from ._bandit import run_bandit
+from ._format import format_json
+from ._github import run_github_check
+from ._pip_audit import run_pip_audit
+from ._shellcheck import run_shellcheck
+
+logger = logging.getLogger(__name__)
+
+ALL_CHECKS = ("python", "shell", "deps", "github")
+
+_TOOL_REQUIREMENTS = {
+    "python": "bandit",
+    "shell": "shellcheck",
+    "deps": "pip-audit",
+}
+
+
+def _is_tool_available(tool_name: str) -> bool:
+    """Check whether a CLI tool is on PATH."""
+    return shutil.which(tool_name) is not None
+
+
+def _is_gh_authenticated() -> bool:
+    """Check whether gh CLI is installed and authenticated."""
+    if not _is_tool_available("gh"):
+        return False
+    try:
+        import subprocess
+        result = subprocess.run(
+            ["gh", "auth", "status"],
+            capture_output=True,
+            text=True,
+            timeout=10,
+        )
+        return result.returncode == 0
+    except Exception:
+        return False
+
+
+def _skipped_result(tool_name: str) -> dict:
+    """Return a standard skipped result."""
+    return {
+        "status": "skipped",
+        "findings": [],
+        "summary": f"Skipped ({tool_name} not installed)",
+    }
+
+
+
+[docs] +def audit( + path: str = ".", + checks: Optional[list[str]] = None, + output_file: Optional[str] = None, +) -> dict: + """Run security audit across multiple tools. + + Parameters + ---------- + path : str + Directory to scan. Defaults to current directory. + checks : list[str] | None + Which checks to run. Options: "python", "shell", "deps", "github". + None means run all available checks. + output_file : str | None + If given, write JSON report to this path. + + Returns + ------- + dict + Keys are check names, values have {status, findings, summary}. + """ + target = Path(path).resolve() + requested = list(checks) if checks else list(ALL_CHECKS) + results: dict = {} + + for check in requested: + if check not in ALL_CHECKS: + logger.warning("Unknown check %r, skipping", check) + continue + + if check == "github": + if not _is_gh_authenticated(): + logger.info("GitHub CLI not available or not authenticated, skipping") + results["github"] = _skipped_result("gh") + continue + results["github"] = run_github_check() + + else: + tool_name = _TOOL_REQUIREMENTS[check] + if not _is_tool_available(tool_name): + logger.info("%s not installed, skipping %s check", tool_name, check) + results[check] = _skipped_result(tool_name) + continue + + if check == "python": + results["python"] = run_bandit(target) + elif check == "shell": + results["shell"] = run_shellcheck(target) + elif check == "deps": + results["deps"] = run_pip_audit(target) + + if output_file: + out_path = Path(output_file) + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(format_json(results)) + logger.info("Report written to %s", out_path) + + return results
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew.html b/src/scitex/_sphinx_html/_modules/scitex_clew.html new file mode 100644 index 000000000..2f10f14a8 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew.html @@ -0,0 +1,1112 @@ + + + + + + + + scitex_clew — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew

+#!/usr/bin/env python3
+"""
+scitex-clew — Hash-based verification for reproducible science.
+
+Standalone package. Zero dependencies (pure stdlib + sqlite3).
+When used with scitex, integration is automatic via @stx.session + stx.io.
+
+Public API::
+
+    import scitex_clew as clew
+
+    # Verification
+    clew.status()                      # git-status-like overview
+    clew.run(session_id)               # verify one run (hash check)
+    clew.chain(target_file)            # trace file → source chain
+    clew.dag(targets)                  # verify full DAG
+    clew.rerun(target)                 # re-execute & compare (sandbox)
+    clew.rerun_dag(targets)            # rerun full DAG in topo order
+    clew.rerun_claims()                # rerun all claim-backing sessions
+    clew.list_runs(limit=100)          # list tracked runs
+    clew.stats()                       # database statistics
+
+    # Claims
+    clew.add_claim(...)                # register manuscript assertion
+    clew.list_claims(...)              # list registered claims
+    clew.verify_claim(...)             # verify a specific claim
+
+    # Stamping
+    clew.stamp(...)                    # create temporal proof
+    clew.list_stamps(...)              # list stamps
+    clew.check_stamp(...)              # verify a stamp
+
+    # Hashing
+    clew.hash_file(path)               # SHA256 of a file
+    clew.hash_directory(path)          # SHA256 of all files in dir
+
+    # Visualization
+    clew.mermaid(...)                  # generate Mermaid DAG diagram
+
+    # Examples
+    clew.init_examples(dest)           # scaffold example pipeline
+
+    # Session lifecycle hooks (invoked by @scitex.session)
+    clew.on_session_start(session_id)  # open a tracked run
+    clew.on_session_close(status=...)  # finalize run + combined hash
+"""
+
+from __future__ import annotations
+
+try:
+    from importlib.metadata import version as _v, PackageNotFoundError
+
+    try:
+        __version__ = _v("scitex-clew")
+    except PackageNotFoundError:
+        __version__ = "0.0.0+local"
+    del _v, PackageNotFoundError
+except ImportError:  # pragma: no cover — only on ancient Pythons
+    __version__ = "0.0.0+local"
+
+# ---------------------------------------------------------------------------
+# Optional decorator from scitex-dev (graceful fallback)
+# ---------------------------------------------------------------------------
+try:
+    from scitex_dev.decorators import supports_return_as as _supports_return_as
+except Exception:
+    # Broad catch (not just ImportError): scitex-dev may import optional ML
+    # libs whose runtime-init can fail with VersionError / RuntimeError.
+    # Fall back to a no-op decorator regardless.
+    def _supports_return_as(fn):
+        return fn
+
+
+# ---------------------------------------------------------------------------
+# Internal imports (hidden from public API, still importable via full path)
+# ---------------------------------------------------------------------------
+from . import groupers  # public: scitex_clew.groupers
+from ._chain import (
+    ChainVerification as _ChainVerification,
+)
+from ._chain import (
+    DAGVerification as _DAGVerification,
+)
+from ._chain import (
+    FileVerification as _FileVerification,
+)
+from ._chain import (
+    RunVerification as _RunVerification,
+)
+from ._chain import (
+    VerificationLevel as _VerificationLevel,
+)
+from ._chain import (
+    VerificationStatus as _VerificationStatus,
+)
+from ._chain import (
+    get_status as _get_status,
+)
+from ._chain import (
+    verify_chain as _verify_chain,
+)
+from ._chain import (
+    verify_file as _verify_file,
+)
+from ._chain import (
+    verify_run as _verify_run,
+)
+from ._claim import (
+    Claim as _Claim,
+)
+from ._claim import (
+    add_claim,
+    export_claims_json,
+    list_claims,
+    verify_claim,
+)
+from ._register_intermediate import register_intermediate
+from ._observers import on_session_close, on_session_start
+from ._claim import (
+    format_claims as _format_claims,
+)
+from ._claim import (
+    verify_claims_dag as _verify_claims_dag,
+)
+from ._dag import verify_dag as _verify_dag
+from ._dag import verify_dag_strict as _verify_dag_strict
+from ._db import VerificationDB as _VerificationDB
+from ._db import get_db as _get_db
+from ._db import set_db as _set_db
+from ._examples import init_examples
+from ._hash import (
+    combine_hashes as _combine_hashes,
+)
+from ._hash import (
+    hash_directory,
+    hash_file,
+)
+from ._hash import (
+    hash_files as _hash_files,
+)
+from ._hash import (
+    verify_hash as _verify_hash,
+)
+from ._registry import ClewRegistry as _ClewRegistry
+from ._registry import get_registry as _get_registry
+from ._rerun import rerun_claims, rerun_dag
+from ._rerun import verify_by_rerun as _verify_by_rerun
+from ._stamp import Stamp as _Stamp
+from ._stamp import check_stamp, list_stamps, stamp
+from ._tracker import (
+    SessionTracker as _SessionTracker,
+)
+from ._tracker import (
+    get_tracker as _get_tracker,
+)
+from ._tracker import (
+    set_tracker as _set_tracker,
+)
+from ._tracker import (
+    start_tracking as _start_tracking,
+)
+from ._tracker import (
+    stop_tracking as _stop_tracking,
+)
+from ._visualize import (
+    format_chain_verification as _format_chain_verification,
+)
+from ._visualize import (
+    format_list as _format_list,
+)
+from ._visualize import (
+    format_run_detailed as _format_run_detailed,
+)
+from ._visualize import (
+    format_run_verification as _format_run_verification,
+)
+from ._visualize import (
+    format_status as _format_status,
+)
+from ._visualize import (
+    generate_html_dag as _generate_html_dag,
+)
+from ._visualize import (
+    generate_mermaid_dag as _generate_mermaid_dag,
+)
+from ._visualize import (
+    print_verification_summary as _print_verification_summary,
+)
+from ._visualize import (
+    render_dag as _render_dag,
+)
+
+
+# ---------------------------------------------------------------------------
+# Public convenience API
+# ---------------------------------------------------------------------------
+
+[docs] +@_supports_return_as +def list_runs(limit: int = 100, status: str = None): + """List tracked runs.""" + db = _get_db() + return db.list_runs(status=status, limit=limit)
+ + + +
+[docs] +@_supports_return_as +def status(): + """Get verification status summary (like git status).""" + return _get_status()
+ + + +
+[docs] +@_supports_return_as +def run(session_id: str, from_scratch: bool = False): + """Verify a specific run. + + Parameters + ---------- + session_id : str + Session identifier + from_scratch : bool, optional + If True, re-execute the script and verify outputs (slow but thorough). + If False, only compare hashes (fast). + """ + if from_scratch: + return _verify_by_rerun(session_id) + return _verify_run(session_id)
+ + + +
+[docs] +@_supports_return_as +def chain(target: str): + """Verify the dependency chain for a target file.""" + return _verify_chain(target)
+ + + +
+[docs] +@_supports_return_as +def stats(): + """Get database statistics.""" + db = _get_db() + return db.stats()
+ + + +
+[docs] +@_supports_return_as +def dag(targets=None, claims=False, strict=False): + """Verify the DAG for multiple targets or all claims. + + Parameters + ---------- + targets : list of str or Path, optional + Target files to verify (mutually exclusive with ``claims``). + claims : bool, optional + If True, build the DAG from every registered claim. + strict : bool, optional + If True (F2), return a failure-attribution dict with + ``failed_node`` / ``root_cause`` / ``invalidated_claims`` / + ``still_valid_claims`` instead of a ``DAGVerification``. + """ + if strict: + return _verify_dag_strict(targets=targets, claims=claims) + if claims: + return _verify_claims_dag() + return _verify_dag(targets or [])
+ + + +
+[docs] +@_supports_return_as +def rerun(target, timeout: int = 300, cleanup: bool = True): + """Re-execute a session in a sandbox and compare outputs. + + Parameters + ---------- + target : str or list[str] + Session ID, script path, or artifact path. + timeout : int, optional + Maximum execution time in seconds (default: 300). + cleanup : bool, optional + Remove sandbox outputs after verification (default: True). + """ + return _verify_by_rerun(target, timeout=timeout, cleanup=cleanup)
+ + + +
+[docs] +@_supports_return_as +def mermaid( + session_id=None, + target_file=None, + target_files=None, + claims=False, + grouper=None, + **kwargs, +): + """Generate a Mermaid DAG diagram. + + Parameters + ---------- + session_id : str, optional + Start from this session. + target_file : str, optional + Start from the session that produced this file. + target_files : list of str, optional + Multiple target files (multi-target DAG). + claims : bool, optional + If True, build DAG from all registered claims. + grouper : callable | dict | None, optional + File grouping strategy. Callable or JSON/dict spec (see + ``scitex_clew.groupers.resolve_spec``). If ``None``, falls back to + ``.scitex/clew/config.yaml`` (key ``grouper``) if present. + """ + if grouper is None: + from ._groupers._config import load_project_config + + grouper = load_project_config().get("grouper") + return _generate_mermaid_dag( + session_id=session_id, + target_file=target_file, + target_files=target_files, + claims=claims, + grouper=grouper, + **kwargs, + )
+ + + +# --------------------------------------------------------------------------- +# Accessible but not in __all__ (for advanced use / backward compat) +# --------------------------------------------------------------------------- +get_db = _get_db +set_db = _set_db +verify_run = _verify_run +verify_chain = _verify_chain +verify_dag = _verify_dag +verify_file = _verify_file +verify_by_rerun = _verify_by_rerun +verify_claims_dag = _verify_claims_dag +get_status = _get_status +generate_mermaid_dag = _generate_mermaid_dag +get_tracker = _get_tracker +set_tracker = _set_tracker +start_tracking = _start_tracking +stop_tracking = _stop_tracking +get_registry = _get_registry +format_claims = _format_claims +format_status = _format_status +format_list = _format_list +format_run_verification = _format_run_verification +format_run_detailed = _format_run_detailed +format_chain_verification = _format_chain_verification +print_verification_summary = _print_verification_summary +generate_html_dag = _generate_html_dag +render_dag = _render_dag +combine_hashes = _combine_hashes +hash_files = _hash_files +verify_hash = _verify_hash +verify_run_from_scratch = _verify_by_rerun + +# Class/type names +VerificationDB = _VerificationDB +SessionTracker = _SessionTracker +ClewRegistry = _ClewRegistry +VerificationStatus = _VerificationStatus +VerificationLevel = _VerificationLevel +FileVerification = _FileVerification +RunVerification = _RunVerification +ChainVerification = _ChainVerification +DAGVerification = _DAGVerification +Claim = _Claim +Stamp = _Stamp + + +# --------------------------------------------------------------------------- +# Public API — only these 19 names show in dir() and tab-completion +# --------------------------------------------------------------------------- +__all__ = [ + "__version__", + # Verification + "status", + "run", + "chain", + "dag", + "rerun", + "rerun_dag", + "rerun_claims", + "list_runs", + "stats", + # Claims + "add_claim", + "list_claims", + "verify_claim", + "export_claims_json", + "register_intermediate", + # Stamping + "stamp", + "list_stamps", + "check_stamp", + # Hashing + "hash_file", + "hash_directory", + # Visualization + "mermaid", + # Grouping API + "groupers", + # Examples + "init_examples", + # Session lifecycle hooks + "on_session_start", + "on_session_close", +] + + +# --------------------------------------------------------------------------- +# SOC R6: self-register post-save / post-load hooks with scitex-io. +# Must never break ``import scitex_clew`` — broad except is intentional. +# --------------------------------------------------------------------------- +try: + from ._observers import register_with_scitex_io as _register + + _register() + del _register +except Exception: + pass + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_claim.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_claim.html new file mode 100644 index 000000000..bc7c55224 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_claim.html @@ -0,0 +1,1308 @@ + + + + + + + + scitex_clew._claim — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._claim

+#!/usr/bin/env python3
+# Timestamp: "2026-02-09 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_claim.py
+"""Claim layer — link paper assertions to verification chain.
+
+Claims represent specific assertions in manuscripts (statistics, figures,
+tables) that can be traced back through the verification chain to source data.
+
+Five claim types:
+  - statistic: A numerical result (p-value, effect size, etc.)
+  - figure:    A figure reference linked to a recipe/image
+  - table:     A table reference linked to source CSV
+  - text:      A textual assertion linked to computational output
+  - value:     A specific computed value (count, percentage, etc.)
+"""
+
+from __future__ import annotations
+
+import json
+import os
+import re
+import sqlite3
+from dataclasses import dataclass
+from datetime import datetime
+from pathlib import Path
+from typing import Dict, List, Optional, Union
+
+from ._db import get_db
+
+# Canonical claim types
+CLAIM_TYPES = ("statistic", "figure", "table", "text", "value")
+
+
+@dataclass
+class Claim:
+    """A traceable assertion in a manuscript."""
+
+    claim_id: str
+    file_path: str
+    line_number: Optional[int]
+    claim_type: str
+    claim_value: Optional[str]
+    source_session: Optional[str]
+    source_file: Optional[str]
+    source_hash: Optional[str]
+    registered_at: Optional[str] = None
+    verified_at: Optional[str] = None
+    status: str = "registered"
+
+    @property
+    def location(self) -> str:
+        """Human-readable location string."""
+        if self.line_number:
+            return f"{self.file_path}:L{self.line_number}"
+        return self.file_path
+
+    def to_dict(self) -> Dict:
+        return {
+            "claim_id": self.claim_id,
+            "file_path": self.file_path,
+            "line_number": self.line_number,
+            "claim_type": self.claim_type,
+            "claim_value": self.claim_value,
+            "source_session": self.source_session,
+            "source_file": self.source_file,
+            "source_hash": self.source_hash,
+            "registered_at": self.registered_at,
+            "verified_at": self.verified_at,
+            "status": self.status,
+        }
+
+
+def migrate_add_claims_table(db_path: Path) -> None:
+    """Create claims table if not present. Safe to call multiple times."""
+    conn = sqlite3.connect(str(db_path))
+    try:
+        conn.execute(
+            """
+            CREATE TABLE IF NOT EXISTS claims (
+                id INTEGER PRIMARY KEY AUTOINCREMENT,
+                claim_id TEXT UNIQUE NOT NULL,
+                file_path TEXT NOT NULL,
+                line_number INTEGER,
+                claim_type TEXT NOT NULL,
+                claim_value TEXT,
+                source_session TEXT,
+                source_file TEXT,
+                source_hash TEXT,
+                registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+                verified_at TIMESTAMP,
+                status TEXT DEFAULT 'registered'
+            )
+            """
+        )
+        conn.execute("CREATE INDEX IF NOT EXISTS idx_claims_file ON claims(file_path)")
+        conn.execute(
+            "CREATE INDEX IF NOT EXISTS idx_claims_source ON claims(source_file)"
+        )
+        conn.execute(
+            "CREATE INDEX IF NOT EXISTS idx_claims_session ON claims(source_session)"
+        )
+        conn.commit()
+    finally:
+        conn.close()
+
+
+def _generate_claim_id(
+    file_path: str, line_number: Optional[int], claim_type: str
+) -> str:
+    """Generate a deterministic claim ID."""
+    loc = f"{file_path}:L{line_number}" if line_number else file_path
+    import hashlib
+
+    h = hashlib.sha256(f"{loc}:{claim_type}".encode()).hexdigest()[:12]
+    return f"claim_{h}"
+
+
+
+[docs] +def add_claim( + file_path: str, + claim_type: str, + line_number: Optional[int] = None, + claim_value: Optional[str] = None, + source_file: Optional[str] = None, + source_session: Optional[str] = None, +) -> Claim: + """Register a claim linking a manuscript assertion to the verification chain. + + Parameters + ---------- + file_path : str + Path to the manuscript file (e.g., paper.tex). + claim_type : str + One of: statistic, figure, table, text, value. + line_number : int, optional + Line number in the manuscript. + claim_value : str, optional + The asserted value (e.g., "p = 0.003"). + source_file : str, optional + Path to the source file that produced this claim. + source_session : str, optional + Session ID that produced the source. + + Returns + ------- + Claim + The registered claim object. + """ + if claim_type not in CLAIM_TYPES: + raise ValueError( + f"Invalid claim_type '{claim_type}'. Must be one of: {CLAIM_TYPES}" + ) + + file_path = str(Path(file_path).resolve()) + claim_id = _generate_claim_id(file_path, line_number, claim_type) + + # Compute source hash if source_file exists + source_hash = None + if source_file: + source_file = str(Path(source_file).resolve()) + source_path = Path(source_file) + if source_path.exists(): + from ._hash import hash_file + + source_hash = hash_file(source_path) + + # Auto-detect source session if not provided + if source_file and not source_session: + db = get_db() + sessions = db.find_session_by_file(source_file, role="output") + if sessions: + source_session = sessions[0] + + claim = Claim( + claim_id=claim_id, + file_path=file_path, + line_number=line_number, + claim_type=claim_type, + claim_value=claim_value, + source_session=source_session, + source_file=source_file, + source_hash=source_hash, + ) + + # Store in database + db = get_db() + _ensure_claims_table(db) + conn = sqlite3.connect(str(db.db_path)) + try: + conn.execute( + """ + INSERT OR REPLACE INTO claims + (claim_id, file_path, line_number, claim_type, claim_value, + source_session, source_file, source_hash, status) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'registered') + """, + ( + claim.claim_id, + claim.file_path, + claim.line_number, + claim.claim_type, + claim.claim_value, + claim.source_session, + claim.source_file, + claim.source_hash, + ), + ) + conn.commit() + finally: + conn.close() + + # Auto-export the canonical claims.json so consumers (verifier, + # scitex-writer, human eyes) can read a stable artifact without + # talking to sqlite. Default ON; opt out with + # SCITEX_CLEW_AUTO_EXPORT_CLAIMS=0 if you're streaming thousands of + # claims and the per-call rewrite cost matters. The cost is O(N×K) + # where N is total claims in the DB and K is rewrite size — for + # typical research papers (N < 100, K < 50 KB) it's negligible. + if os.environ.get("SCITEX_CLEW_AUTO_EXPORT_CLAIMS", "1") != "0": + try: + export_claims_json() + except Exception as exc: # noqa: BLE001 + # Auto-export is a convenience layer — must not break the + # add_claim primary path if e.g. the runtime/ dir is + # read-only on this host. Log and continue. The user can + # call export_claims_json() explicitly to surface failures. + import warnings as _w + + _w.warn( + f"scitex_clew auto-export of claims.json failed " + f"(set SCITEX_CLEW_AUTO_EXPORT_CLAIMS=0 to silence): " + f"{exc!r}", + RuntimeWarning, + stacklevel=2, + ) + + return claim
+ + + +
+[docs] +def export_claims_json( + path: Optional[Union[str, Path]] = None, + *, + file_path_filter: Optional[str] = None, + read_only: bool = True, +) -> Path: + """Export every registered claim to a canonical JSON artifact. + + The exported file is the single human-readable + machine-consumable + view of the claims table in ``db.sqlite``. The DB remains the + source of truth; this JSON is a regenerable artifact. + + Path resolution (mirrors :func:`scitex_clew._db._core._default_db_path`):: + + 1. Explicit ``path`` argument. + 2. ``$SCITEX_CLEW_CLAIMS_JSON`` env var (escape hatch). + 3. ``<project_root>/.scitex/clew/runtime/claims.json`` + (project root = nearest ancestor dir with ``.git`` or + ``pyproject.toml``; falls back to cwd if none found). + + Parameters + ---------- + path : str | Path, optional + Override the resolved path. Useful for tests / one-off dumps. + file_path_filter : str, optional + When set, only claims registered against this manuscript file + path are exported. Default: every claim in the DB. + read_only : bool, optional + After writing, ``chmod 0o444`` the file so accidental edits + fail loudly at the OS layer. Default True (the file IS + derived). Set False for tests that need to mutate the file. + + Returns + ------- + Path + The path the artifact was written to (absolute). + + Examples + -------- + >>> import scitex_clew as clew + >>> clew.add_claim("paper.tex", "value", 42, "0.94", source_file="r.csv") + >>> # claims.json now auto-exported under ./.scitex/clew/runtime/ + >>> clew.export_claims_json() # idempotent — re-emit on demand + PosixPath('.../.scitex/clew/runtime/claims.json') + """ + from ._db import _core as _db_core + + if path is None: + env_path = os.environ.get("SCITEX_CLEW_CLAIMS_JSON") + if env_path: + path = Path(env_path) + else: + path = _db_core._default_claims_json_path( + _db_core._find_project_root() + ) + path = Path(path).resolve() + path.parent.mkdir(parents=True, exist_ok=True) + + claims = list_claims(file_path=file_path_filter, limit=10_000) + payload = { + "_note": ( + "AUTO-GENERATED by scitex_clew.export_claims_json() from " + "db.sqlite. Do NOT edit by hand — re-emit by calling " + "scitex_clew.export_claims_json() (default-on after every " + "clew.add_claim()) or by re-running your pipeline." + ), + "claims_count": len(claims), + "claims": [c.to_dict() for c in claims], + } + + # Clear any pre-existing read-only bit before rewriting. + if path.exists(): + try: + path.chmod(0o644) + except OSError: + pass + + path.write_text(json.dumps(payload, indent=2, default=str)) + + if read_only: + try: + path.chmod(0o444) + except OSError: + # Best-effort — on filesystems that don't support unix + # perms (e.g. some Windows mounts) this is a no-op. + pass + + return path
+ + + +
+[docs] +def list_claims( + file_path: Optional[str] = None, + claim_type: Optional[str] = None, + status: Optional[str] = None, + limit: int = 100, +) -> List[Claim]: + """List registered claims with optional filters. + + Parameters + ---------- + file_path : str, optional + Filter by manuscript file path. + claim_type : str, optional + Filter by claim type. + status : str, optional + Filter by verification status. + limit : int + Maximum number of claims to return. + + Returns + ------- + list of Claim + """ + db = get_db() + _ensure_claims_table(db) + + query = "SELECT * FROM claims WHERE 1=1" + params = [] + + if file_path: + file_path = str(Path(file_path).resolve()) + query += " AND file_path = ?" + params.append(file_path) + if claim_type: + query += " AND claim_type = ?" + params.append(claim_type) + if status: + query += " AND status = ?" + params.append(status) + + query += " ORDER BY file_path, line_number LIMIT ?" + params.append(limit) + + conn = sqlite3.connect(str(db.db_path)) + conn.row_factory = sqlite3.Row + try: + rows = conn.execute(query, params).fetchall() + return [ + Claim( + claim_id=row["claim_id"], + file_path=row["file_path"], + line_number=row["line_number"], + claim_type=row["claim_type"], + claim_value=row["claim_value"], + source_session=row["source_session"], + source_file=row["source_file"], + source_hash=row["source_hash"], + registered_at=row["registered_at"], + verified_at=row["verified_at"], + status=row["status"], + ) + for row in rows + ] + finally: + conn.close()
+ + + +
+[docs] +def verify_claim(claim_id_or_location: str) -> Dict: + """Verify a specific claim by checking its source against the verification chain. + + Parameters + ---------- + claim_id_or_location : str + Either a claim_id or a location string like "paper.tex:L42". + + Returns + ------- + dict + Verification result with claim details and chain status. + """ + db = get_db() + _ensure_claims_table(db) + + claim = _resolve_claim(claim_id_or_location, db) + if not claim: + return { + "status": "not_found", + "message": f"No claim found for '{claim_id_or_location}'", + } + + result = { + "claim": claim.to_dict(), + "source_verified": False, + "chain_verified": False, + "details": [], + } + + # Check source file exists and hash matches + if claim.source_file: + source_path = Path(claim.source_file) + if not source_path.exists(): + result["details"].append(f"Source file missing: {claim.source_file}") + _update_claim_status(claim.claim_id, "missing", db) + result["claim"]["status"] = "missing" + return result + + from ._hash import hash_file + + current_hash = hash_file(source_path) + if ( + claim.source_hash + and current_hash[: len(claim.source_hash)] + == claim.source_hash[: len(current_hash)] + ): + result["source_verified"] = True + result["details"].append("Source file hash matches") + else: + result["details"].append( + f"Source hash mismatch: stored={claim.source_hash}, current={current_hash}" + ) + _update_claim_status(claim.claim_id, "mismatch", db) + result["claim"]["status"] = "mismatch" + return result + + # Verify the chain if we have a source file + if claim.source_file: + from ._chain import verify_chain + + try: + chain = verify_chain(claim.source_file) + result["chain_verified"] = chain.is_verified + if chain.is_verified: + result["details"].append(f"Chain verified ({len(chain.runs)} runs)") + else: + result["details"].append( + f"Chain verification failed ({len(chain.failed_runs)} failed runs)" + ) + except Exception as e: + result["details"].append(f"Chain verification error: {e}") + + # Update status + if result["source_verified"] and result["chain_verified"]: + _update_claim_status(claim.claim_id, "verified", db) + result["claim"]["status"] = "verified" + elif result["source_verified"]: + _update_claim_status(claim.claim_id, "partial", db) + result["claim"]["status"] = "partial" + + return result
+ + + +def verify_claims_dag( + file_path: Optional[str] = None, + claim_type: Optional[str] = None, +) -> DAGVerification: + """Build a unified DAG from all claims, tracing each back to its source. + + Parameters + ---------- + file_path : str, optional + Filter claims by manuscript file path. + claim_type : str, optional + Filter claims by type. + + Returns + ------- + DAGVerification + Unified verification result covering all claim source chains merged. + """ + from ._chain import DAGVerification, VerificationStatus + from ._dag import verify_dag + + claims = list_claims(file_path=file_path, claim_type=claim_type) + + # Collect unique source files from claims + source_files = [] + for c in claims: + if c.source_file and c.source_file not in source_files: + source_files.append(c.source_file) + + if not source_files: + return DAGVerification( + target_files=[], + runs=[], + edges=[], + status=VerificationStatus.UNKNOWN, + topological_order=[], + ) + + return verify_dag(source_files) + + +def _resolve_claim(identifier: str, db) -> Optional[Claim]: + """Resolve a claim by ID or location string.""" + conn = sqlite3.connect(str(db.db_path)) + conn.row_factory = sqlite3.Row + try: + # Try claim_id first + row = conn.execute( + "SELECT * FROM claims WHERE claim_id = ?", (identifier,) + ).fetchone() + + if not row: + # Try location format: file.tex:L42 + match = re.match(r"^(.+):L(\d+)$", identifier) + if match: + fpath = str(Path(match.group(1)).resolve()) + line = int(match.group(2)) + row = conn.execute( + "SELECT * FROM claims WHERE file_path = ? AND line_number = ?", + (fpath, line), + ).fetchone() + + if not row: + # Try file path only (returns first match) + fpath = str(Path(identifier).resolve()) + row = conn.execute( + "SELECT * FROM claims WHERE file_path = ? ORDER BY line_number LIMIT 1", + (fpath,), + ).fetchone() + + if row: + return Claim( + claim_id=row["claim_id"], + file_path=row["file_path"], + line_number=row["line_number"], + claim_type=row["claim_type"], + claim_value=row["claim_value"], + source_session=row["source_session"], + source_file=row["source_file"], + source_hash=row["source_hash"], + registered_at=row["registered_at"], + verified_at=row["verified_at"], + status=row["status"], + ) + return None + finally: + conn.close() + + +def _update_claim_status(claim_id: str, status: str, db) -> None: + """Update claim verification status.""" + conn = sqlite3.connect(str(db.db_path)) + try: + conn.execute( + "UPDATE claims SET status = ?, verified_at = ? WHERE claim_id = ?", + (status, datetime.now().isoformat(), claim_id), + ) + conn.commit() + finally: + conn.close() + + +def _ensure_claims_table(db) -> None: + """Ensure the claims table exists (run migration).""" + migrate_add_claims_table(db.db_path) + + +def format_claims(claims: List[Claim], verbose: bool = False) -> str: + """Format claims list for terminal display.""" + if not claims: + return "No claims registered." + + lines = [] + status_icons = { + "registered": "\u25cb", # ○ + "verified": "\u2713", # ✓ + "mismatch": "\u2717", # ✗ + "missing": "?", + "partial": "~", + } + + for c in claims: + icon = status_icons.get(c.status, "?") + loc = c.location + val = f" = {c.claim_value}" if c.claim_value else "" + lines.append(f" {icon} [{c.claim_type}] {loc}{val}") + if verbose and c.source_file: + src = Path(c.source_file).name + lines.append( + f" source: {src} (session: {c.source_session or 'unknown'})" + ) + + return "\n".join(lines) + + +__all__ = [ + "CLAIM_TYPES", + "Claim", + "add_claim", + "list_claims", + "verify_claim", + "verify_claims_dag", + "format_claims", + "migrate_add_claims_table", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_examples.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_examples.html new file mode 100644 index 000000000..e6cf5a0ff --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_examples.html @@ -0,0 +1,775 @@ + + + + + + + + scitex_clew._examples — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._examples

+#!/usr/bin/env python3
+"""Create Clew example pipeline in a target directory."""
+
+from __future__ import annotations
+
+import shutil
+from pathlib import Path
+from typing import Optional
+
+
+def _find_examples_dir(variant: str = "sequential") -> Optional[Path]:
+    """Locate the bundled Clew examples directory.
+
+    Tries (in order):
+    1. Source repo: ../../../examples/<variant>/   (editable install or git clone)
+    2. Docker mount: /scitex-python/examples/scitex/clew
+    """
+    # __file__ = <repo>/src/scitex_clew/_examples.py — 3 parents up = <repo>.
+    repo_root = Path(__file__).resolve().parents[2]
+    candidates = [
+        repo_root / "examples" / variant,
+        Path("/scitex-python/examples/scitex/clew") / variant,
+    ]
+    for candidate in candidates:
+        if candidate.exists() and candidate.is_dir():
+            return candidate
+    return None
+
+
+
+[docs] +def init_examples( + dest: str | Path, + variant: str = "sequential", + *, + find_examples_dir=_find_examples_dir, +) -> dict: + """Copy Clew example scripts to a destination directory. + + Copies only the runnable scripts (.py, .sh) and README — not + the output directories. Users run ``00_run_all.sh`` themselves + to generate outputs and populate the verification database. + + Parameters + ---------- + dest : str or Path + Destination directory. Created if it does not exist. + Existing script files are overwritten. + variant : str, optional + Example variant: "sequential" (default) or "multi_parent". + find_examples_dir : callable, optional + Locator callable ``(variant: str) -> Optional[Path]`` used to + resolve the bundled examples source. Production callers should + not pass this; it is the canonical PA-306 §1 DI seam — tests + inject a hand-rolled fake that returns a ``tmp_path``-rooted + directory or ``None``. + + Returns + ------- + dict + ``{"path": str, "files": list[str], "file_count": int, "variant": str}`` + + Raises + ------ + FileNotFoundError + If the bundled examples cannot be located. + ValueError + If variant is not recognized. + """ + valid_variants = ("sequential", "multi_parent") + if variant not in valid_variants: + raise ValueError(f"Unknown variant {variant!r}. Choose from: {valid_variants}") + + src_dir = find_examples_dir(variant) + if src_dir is None: + raise FileNotFoundError( + f"Clew example variant {variant!r} not found. " + "Examples live at ~/proj/scitex-clew/examples/<variant>/ — " + "install editably (`pip install -e .`) or clone the repo." + ) + + dest = Path(dest) + dest.mkdir(parents=True, exist_ok=True) + + # Copy only scripts and docs, skip _out directories + copied = [] + for src_file in sorted(src_dir.iterdir()): + if src_file.is_dir(): + continue + dst_file = dest / src_file.name + shutil.copy2(src_file, dst_file) + copied.append(src_file.name) + + return { + "path": str(dest), + "files": copied, + "file_count": len(copied), + "variant": variant, + }
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_hash.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_hash.html new file mode 100644 index 000000000..525045c33 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_hash.html @@ -0,0 +1,865 @@ + + + + + + + + scitex_clew._hash — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._hash

+#!/usr/bin/env python3
+# Timestamp: "2026-02-01 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_hash.py
+"""File and directory hashing utilities for verification."""
+
+from __future__ import annotations
+
+import hashlib
+from pathlib import Path
+from typing import Dict, Union
+
+
+
+[docs] +def hash_file( + path: Union[str, Path], + algorithm: str = "sha256", + chunk_size: int = 8192, +) -> str: + """ + Compute hash of a file. + + Parameters + ---------- + path : str or Path + Path to the file to hash + algorithm : str, optional + Hash algorithm (default: sha256) + chunk_size : int, optional + Size of chunks to read (default: 8192) + + Returns + ------- + str + Hexadecimal hash string (first 32 characters) + + Examples + -------- + >>> hash_file("data.csv") + 'a1b2c3d4e5f6...' + """ + path = Path(path) + if not path.exists(): + raise FileNotFoundError(f"File not found: {path}") + + hasher = hashlib.new(algorithm) + with open(path, "rb") as f: + while chunk := f.read(chunk_size): + hasher.update(chunk) + + return hasher.hexdigest()[:32]
+ + + +
+[docs] +def hash_directory( + path: Union[str, Path], + pattern: str = "*", + recursive: bool = True, + algorithm: str = "sha256", +) -> Dict[str, str]: + """ + Compute hashes for all files in a directory. + + Parameters + ---------- + path : str or Path + Directory path + pattern : str, optional + Glob pattern for files (default: "*") + recursive : bool, optional + Whether to search recursively (default: True) + algorithm : str, optional + Hash algorithm (default: sha256) + + Returns + ------- + dict + Mapping of relative paths to hashes + + Examples + -------- + >>> hash_directory("./data/") + {'input.csv': 'a1b2...', 'config.yaml': 'c3d4...'} + """ + path = Path(path) + if not path.is_dir(): + raise NotADirectoryError(f"Not a directory: {path}") + + glob_method = path.rglob if recursive else path.glob + hashes = {} + + for file_path in glob_method(pattern): + if file_path.is_file(): + rel_path = str(file_path.relative_to(path)) + hashes[rel_path] = hash_file(file_path, algorithm=algorithm) + + return hashes
+ + + +def hash_files( + paths: list[Union[str, Path]], + algorithm: str = "sha256", +) -> Dict[str, str]: + """ + Compute hashes for a list of files. + + Parameters + ---------- + paths : list of str or Path + List of file paths + algorithm : str, optional + Hash algorithm (default: sha256) + + Returns + ------- + dict + Mapping of paths to hashes + """ + hashes = {} + for path in paths: + path = Path(path) + if path.exists() and path.is_file(): + hashes[str(path)] = hash_file(path, algorithm=algorithm) + return hashes + + +def combine_hashes(hashes: Dict[str, str], algorithm: str = "sha256") -> str: + """ + Combine multiple hashes into a single hash. + + Creates a deterministic combined hash from a dictionary of hashes. + + Parameters + ---------- + hashes : dict + Mapping of names to hashes + algorithm : str, optional + Hash algorithm (default: sha256) + + Returns + ------- + str + Combined hash (first 32 characters) + + Examples + -------- + >>> hashes = {'input.csv': 'a1b2...', 'script.py': 'c3d4...'} + >>> combine_hashes(hashes) + 'e5f6g7h8...' + """ + hasher = hashlib.new(algorithm) + + # Sort by key for deterministic ordering + for key in sorted(hashes.keys()): + hasher.update(f"{key}:{hashes[key]}".encode()) + + return hasher.hexdigest()[:32] + + +def verify_hash( + path: Union[str, Path], + expected_hash: str, + algorithm: str = "sha256", +) -> bool: + """ + Verify that a file matches an expected hash. + + Parameters + ---------- + path : str or Path + Path to the file + expected_hash : str + Expected hash value + algorithm : str, optional + Hash algorithm (default: sha256) + + Returns + ------- + bool + True if hash matches, False otherwise + """ + try: + actual_hash = hash_file(path, algorithm=algorithm) + # Compare only the length of expected_hash (may be truncated) + return actual_hash[: len(expected_hash)] == expected_hash + except FileNotFoundError: + return False + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_observers/_session.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_observers/_session.html new file mode 100644 index 000000000..3f670c64c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_observers/_session.html @@ -0,0 +1,792 @@ + + + + + + + + scitex_clew._observers._session — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._observers._session

+#!/usr/bin/env python3
+"""Session lifecycle hooks for scitex-clew.
+
+These thin wrappers are invoked by ``@scitex.session`` (or any equivalent
+session manager) at the start and end of a run. They delegate to the
+``scitex_clew._tracker`` machinery so that a run record is opened on start
+and finalized (with a combined hash) on close.
+
+They import only scitex-clew internals; no scitex-io dependency is needed.
+"""
+
+from __future__ import annotations
+
+import os
+from typing import Optional
+
+from .._logging import getLogger
+from .._tracker import get_tracker, start_tracking, stop_tracking
+
+logger = getLogger(__name__)
+
+
+
+[docs] +def on_session_start( + session_id: str, + script_path: Optional[str] = None, + parent_session: Optional[str] = None, + verbose: bool = False, + metadata: Optional[dict] = None, +) -> None: + """ + Hook called when a session starts. + + Parameters + ---------- + session_id : str + Unique session identifier + script_path : str, optional + Path to the script being run + parent_session : str, optional + Parent session ID for chain tracking + verbose : bool, optional + Whether to log status messages + metadata : dict, optional + Additional metadata (e.g. notebook_path, cell_index) + """ + try: + start_tracking( + session_id=session_id, + script_path=script_path, + parent_session=parent_session, + metadata=metadata, + ) + except Exception as e: + if verbose: + logger.warning(f"Could not start verification tracking: {e}")
+ + + +
+[docs] +def on_session_close( + status: str = "success", + exit_code: int = 0, + verbose: bool = False, + register: Optional[bool] = None, +) -> None: + """ + Hook called when a session closes. + + Parameters + ---------- + status : str, optional + Final status (success, failed, error) + exit_code : int, optional + Exit code of the script + verbose : bool, optional + Whether to log status messages + register : bool, optional + If True, register session hashes with remote Clew Registry. + If None, checks SCITEX_AUTO_REGISTER environment variable. + """ + try: + tracker = get_tracker() + stop_tracking(status=status, exit_code=exit_code) + if _should_auto_register(register) and tracker is not None: + _auto_register_session(tracker.session_id) + except Exception as e: + if verbose: + logger.warning(f"Could not stop verification tracking: {e}")
+ + + +# ── Registry helpers ── + + +def _should_auto_register(register: Optional[bool]) -> bool: + """Check whether auto-registration is enabled.""" + if register is not None: + return register + + return os.environ.get("SCITEX_AUTO_REGISTER", "").lower() in ( + "1", + "true", + "yes", + ) + + +def _auto_register_session(session_id: str) -> None: + """Register session hashes with remote Clew Registry (fire-and-forget).""" + try: + from .._registry import get_registry + + get_registry().register_session(session_id) + except Exception as e: + logger.debug("clew: failed to auto-register session %s: %s", session_id, e) + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_register_intermediate.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_register_intermediate.html new file mode 100644 index 000000000..4a5ab25af --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_register_intermediate.html @@ -0,0 +1,775 @@ + + + + + + + + scitex_clew._register_intermediate — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._register_intermediate

+#!/usr/bin/env python3
+"""Register an in-session intermediate value as a Clew claim.
+
+Wrapper around `_claim.add_claim` for the agentic-reasoning use case
+(see `_skills/scitex-clew/20_agentic-reasoning.md`). Lets an AI agent or
+script register a computed intermediate value without needing to construct
+a manuscript file path or line number — uses the active session's log file
+as the synthetic source.
+"""
+
+from __future__ import annotations
+
+import json
+import os
+import sys
+from typing import Any, List, Optional
+
+from ._claim import Claim, add_claim
+
+
+
+[docs] +def register_intermediate( + name: str, + value: Any, + supports: Optional[List[str]] = None, + session_id: Optional[str] = None, + claim_type: str = "value", +) -> Claim: + """Register a computed intermediate as a Clew claim. + + Use this from inside a `@stx.session` script (or from an agent loop) to + record any non-trivial intermediate value with explicit upstream support. + The claim becomes part of the DAG and can be queried via `clew.chain`, + `clew.dag`, or the MCP `clew_chain` / `clew_dag` tools. + + Parameters + ---------- + name + Descriptive identifier (e.g. `"acute_n_sig_pathways"`). Avoid generic + names like `"result_3"` — the id is the only handle a future inspector + has on the value. + value + The computed result. Coerced to string for storage; the hash chain + sees `repr(value)` so types matter. + supports + List of upstream claim ids or session ids that this value depends on. + Stored as JSON in the claim's value field for retrieval. None means + no explicit upstream (use sparingly). + session_id + The session this value belongs to. If None, read from the + `SCITEX_SESSION_ID` env var that `@stx.session` sets at start. + claim_type + One of `statistic`, `figure`, `table`, `text`, `value`. Defaults to + `value` since intermediates are usually scalar / categorical results. + + Returns + ------- + Claim + The registered claim object. + + Raises + ------ + ValueError + If no session_id can be determined (env var unset and not passed). + + Examples + -------- + Inside a `@stx.session` script: + + >>> from scitex_clew import register_intermediate + >>> n_sig = sum(1 for p in pathways if p.padj < 0.05) + >>> register_intermediate( + ... name="chronic_r2_n_sig_pathways", + ... value=n_sig, + ... supports=["chronic_r2_min_pvals", "reactome_pathways_v2024"], + ... ) + """ + if session_id is None: + session_id = os.environ.get("SCITEX_SESSION_ID") + if not session_id: + raise ValueError( + "register_intermediate: no session_id given and SCITEX_SESSION_ID " + "is not set in the environment. Either pass session_id explicitly " + "or run inside a @stx.session-decorated script." + ) + + payload = { + "name": name, + "value": repr(value), + "supports": list(supports) if supports else [], + } + + script_path = sys.argv[0] if sys.argv else "<agent>" + return add_claim( + file_path=script_path, + claim_type=claim_type, + line_number=None, + claim_value=json.dumps(payload, sort_keys=True), + source_file=None, + source_session=session_id, + )
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_rerun.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_rerun.html new file mode 100644 index 000000000..c550c6d97 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_rerun.html @@ -0,0 +1,1085 @@ + + + + + + + + scitex_clew._rerun — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._rerun

+#!/usr/bin/env python3
+# Timestamp: "2026-02-01 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_rerun.py
+"""Rerun verification - re-execute scripts and compare outputs."""
+
+from __future__ import annotations
+
+import dataclasses
+import shutil
+import subprocess
+from pathlib import Path
+from typing import Dict
+
+from ._chain import (
+    DAGVerification,
+    FileVerification,
+    RunVerification,
+    VerificationLevel,
+    VerificationStatus,
+)
+from ._db import get_db
+
+
+def verify_by_rerun(
+    target: str | list[str],
+    timeout: int = 300,
+    cleanup: bool = True,
+) -> RunVerification | list[RunVerification]:
+    """
+    Verify session(s) by re-executing scripts and comparing outputs.
+
+    Parameters
+    ----------
+    target : str or list[str]
+        Session ID, script path, or artifact path.
+        - run_id: directly use this run
+        - script path: latest run that executed this script
+        - artifact path: latest run which produced this file
+    timeout : int, optional
+        Maximum execution time in seconds (default: 300)
+    cleanup : bool, optional
+        Whether to remove the new session's output directory after verification
+
+    Returns
+    -------
+    RunVerification or list[RunVerification]
+        Single result if single target, list if multiple targets
+    """
+    if isinstance(target, list):
+        return [_verify_single(t, timeout, cleanup) for t in target]
+    return _verify_single(target, timeout, cleanup)
+
+
+def _verify_single(
+    target: str,
+    timeout: int = 300,
+    cleanup: bool = True,
+) -> RunVerification:
+    """Verify a single target."""
+    db = get_db()
+
+    # Resolve target to session_id
+    session_id = _resolve_to_session_id(db, target)
+    if not session_id:
+        return _unknown_result(target, None)
+
+    # Get original run info
+    run_info = db.get_run(session_id)
+    if not run_info:
+        return _unknown_result(session_id, None)
+
+    script_path = run_info.get("script_path")
+    if not script_path or not Path(script_path).exists():
+        return RunVerification(
+            session_id=session_id,
+            script_path=script_path,
+            status=VerificationStatus.MISSING,
+            files=[],
+            combined_hash_expected=None,
+            combined_hash_current=None,
+            level=VerificationLevel.RERUN,
+        )
+
+    # Get expected output hashes from original session
+    original_hashes = db.get_file_hashes(session_id, role="output")
+    if not original_hashes:
+        return _unknown_result(session_id, script_path)
+
+    # Re-execute the script (creates new session)
+    exec_result = _execute_script(script_path, timeout)
+    if exec_result is not None:
+        return dataclasses.replace(exec_result, session_id=session_id)
+
+    # Find the new session (most recent from this script)
+    new_session_id, new_sdir_run = _find_new_session(db, script_path, session_id)
+    if not new_session_id:
+        return _unknown_result(session_id, script_path)
+
+    # Get new session's output hashes
+    new_hashes = db.get_file_hashes(new_session_id, role="output")
+
+    # Compare hashes by filename
+    file_verifications = _compare_hashes(original_hashes, new_hashes)
+
+    # Cleanup new session's output directory if requested
+    if cleanup and new_sdir_run:
+        _cleanup_session_dir(new_sdir_run)
+
+    # Determine overall status
+    status = _determine_status(file_verifications)
+
+    # Record verification result in database for original session
+    db.record_verification(
+        session_id=session_id,
+        level=VerificationLevel.RERUN.value,
+        status=status.value,
+    )
+
+    return RunVerification(
+        session_id=session_id,
+        script_path=script_path,
+        status=status,
+        files=file_verifications,
+        combined_hash_expected=run_info.get("combined_hash"),
+        combined_hash_current=None,
+        level=VerificationLevel.RERUN,
+    )
+
+
+def _resolve_to_session_id(db, target: str) -> str | None:
+    """Resolve target to session_id.
+
+    Accepts:
+        - run_id: directly use this run
+        - script path: latest run that executed this script
+        - artifact path: latest run which produced this file
+    """
+    # Try as run_id
+    if db.get_run(target):
+        return target
+
+    # Always resolve to absolute path
+    resolved = str(Path(target).resolve())
+
+    # Try as script path
+    for run in db.list_runs(limit=100):
+        if run.get("script_path") == resolved:
+            return run["session_id"]
+
+    # Try as artifact (output) path
+    sessions = db.find_session_by_file(resolved, role="output")
+    return sessions[0] if sessions else None
+
+
+def _unknown_result(session_id: str, script_path: str) -> RunVerification:
+    """Create an unknown verification result."""
+    return RunVerification(
+        session_id=session_id,
+        script_path=script_path,
+        status=VerificationStatus.UNKNOWN,
+        files=[],
+        combined_hash_expected=None,
+        combined_hash_current=None,
+        level=VerificationLevel.RERUN,
+    )
+
+
+def _execute_script(script_path: str, timeout: int) -> RunVerification | None:
+    """Execute script and return error result if failed, None if success."""
+    try:
+        result = subprocess.run(
+            ["python", script_path],
+            capture_output=True,
+            timeout=timeout,
+            cwd=Path(script_path).parent,
+        )
+        if result.returncode != 0:
+            return RunVerification(
+                session_id="",
+                script_path=script_path,
+                status=VerificationStatus.MISMATCH,
+                files=[],
+                combined_hash_expected=None,
+                combined_hash_current=None,
+                level=VerificationLevel.RERUN,
+            )
+        return None  # Success
+    except subprocess.TimeoutExpired:
+        return _unknown_result("", script_path)
+    except Exception:
+        return _unknown_result("", script_path)
+
+
+def _find_new_session(db, script_path: str, original_id: str) -> tuple:
+    """Find the new session created by re-running the script."""
+    recent_runs = db.list_runs(limit=5)
+    for run in recent_runs:
+        if run.get("script_path") == script_path and run["session_id"] != original_id:
+            return run["session_id"], run.get("sdir_run")
+    return None, None
+
+
+def _compare_hashes(
+    original_hashes: Dict[str, str], new_hashes: Dict[str, str]
+) -> list:
+    """Compare hashes by filename and return FileVerification list."""
+    original_by_name = {Path(p).name: h for p, h in original_hashes.items()}
+    new_by_name = {Path(p).name: h for p, h in new_hashes.items()}
+
+    verifications = []
+    for filename, expected_hash in original_by_name.items():
+        current_hash = new_by_name.get(filename)
+        if current_hash is None:
+            status = VerificationStatus.MISSING
+        elif current_hash == expected_hash:
+            status = VerificationStatus.VERIFIED
+        else:
+            status = VerificationStatus.MISMATCH
+
+        verifications.append(
+            FileVerification(
+                path=filename,
+                role="output",
+                expected_hash=expected_hash,
+                current_hash=current_hash,
+                status=status,
+            )
+        )
+    return verifications
+
+
+def _cleanup_session_dir(sdir_run: str) -> None:
+    """Remove the session's output directory (best-effort)."""
+    try:
+        path = Path(sdir_run)
+        if path.exists():
+            shutil.rmtree(path)
+    except Exception:
+        pass
+
+
+def _determine_status(file_verifications: list) -> VerificationStatus:
+    """Determine overall verification status from file verifications."""
+    if all(f.is_verified for f in file_verifications):
+        return VerificationStatus.VERIFIED
+    if any(f.status == VerificationStatus.MISMATCH for f in file_verifications):
+        return VerificationStatus.MISMATCH
+    return VerificationStatus.UNKNOWN
+
+
+
+[docs] +def rerun_dag( + targets: list[str] | None = None, + timeout: int = 300, + cleanup: bool = True, +) -> DAGVerification: + """Rerun-verify an entire DAG in topological order. + + Each session is re-executed in a sandbox against its ORIGINAL stored + inputs (not freshly rerun outputs from upstream), then compared to + the original outputs. + + Parameters + ---------- + targets : list of str, optional + Target output files whose upstream DAG should be rerun. + If None, all runs in the database are used and their output + files become the targets. + timeout : int, optional + Maximum execution time per session in seconds (default: 300). + cleanup : bool, optional + Whether to remove sandbox output directories after each rerun. + + Returns + ------- + DAGVerification + Unified verification result for the entire DAG. + """ + from ._chain import DAGVerification + from ._chain._dag import _topological_sort + + db = get_db() + + # If no targets, collect all output files from all runs + if targets is None: + targets = [] + for run in db.list_runs(limit=10000): + hashes = db.get_file_hashes(run["session_id"], role="output") + targets.extend(hashes.keys()) + + # Resolve targets to leaf session IDs + resolved_targets = [] + leaf_sessions = [] + for target in targets: + target_str = str(Path(target).resolve()) + resolved_targets.append(target_str) + sessions = db.find_session_by_file(target_str, role="output") + if sessions: + leaf_sessions.append(sessions[0]) + + if not leaf_sessions: + return DAGVerification( + target_files=resolved_targets, + runs=[], + edges=[], + status=VerificationStatus.UNKNOWN, + topological_order=[], + ) + + # BFS backward to collect full DAG + adjacency, _all_ids = db.get_dag(leaf_sessions) + + # Topological sort (roots first) + topo_order = _topological_sort(adjacency) + + # Rerun each session in topological order + verifications = {} + for sid in topo_order: + verifications[sid] = verify_by_rerun(sid, timeout, cleanup) + + # Propagate failures forward through the DAG + failed_sessions: set = set() + for sid in topo_order: + parents = adjacency.get(sid, []) + has_failed_parent = any(p in failed_sessions for p in parents) + if has_failed_parent or not verifications[sid].is_verified: + failed_sessions.add(sid) + + # Build edges list + edges = [] + for child, parents in adjacency.items(): + for p in parents: + edges.append((p, child)) + + # Determine overall status + run_list = [verifications[sid] for sid in topo_order] + + if all(sid not in failed_sessions for sid in topo_order): + status = VerificationStatus.VERIFIED + elif any( + verifications[sid].status == VerificationStatus.MISMATCH for sid in topo_order + ): + status = VerificationStatus.MISMATCH + elif any( + verifications[sid].status == VerificationStatus.MISSING for sid in topo_order + ): + status = VerificationStatus.MISSING + else: + status = VerificationStatus.UNKNOWN + + return DAGVerification( + target_files=resolved_targets, + runs=run_list, + edges=edges, + status=status, + topological_order=topo_order, + )
+ + + +
+[docs] +def rerun_claims( + file_path: str | None = None, + claim_type: str | None = None, + timeout: int = 300, + cleanup: bool = True, +) -> DAGVerification: + """Rerun-verify all sessions that produced files referenced by claims. + + Collects unique source files from matching claims, then delegates + to ``rerun_dag`` with those files as targets. + + Parameters + ---------- + file_path : str, optional + Filter claims by manuscript file path. + claim_type : str, optional + Filter claims by type (statistic, figure, table, text, value). + timeout : int, optional + Maximum execution time per session in seconds (default: 300). + cleanup : bool, optional + Whether to remove sandbox output directories after each rerun. + + Returns + ------- + DAGVerification + Unified verification result for the upstream DAG of all + source files referenced by the matching claims. + """ + from ._claim import list_claims + + claims = list_claims(file_path=file_path, claim_type=claim_type) + + # Collect unique source files from matching claims + source_files = [] + seen = set() + for claim in claims: + sf = claim.source_file + if sf and sf not in seen: + seen.add(sf) + source_files.append(sf) + + return rerun_dag(source_files or None, timeout, cleanup)
+ + + +# Backward compatibility alias +verify_run_from_scratch = verify_by_rerun + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_clew/_stamp.html b/src/scitex/_sphinx_html/_modules/scitex_clew/_stamp.html new file mode 100644 index 000000000..f25f63a09 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_clew/_stamp.html @@ -0,0 +1,1096 @@ + + + + + + + + scitex_clew._stamp — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_clew._stamp

+#!/usr/bin/env python3
+# Timestamp: "2026-02-09 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-python/src/scitex/verify/_stamp.py
+"""External hash timestamping for temporal integrity.
+
+Provides independent temporal proof that a verification chain was consistent
+at a specific point in time. Only hashes are transmitted — never actual data.
+
+Backends (increasing trust level):
+  - file:    Local JSON file with timestamp (development/testing)
+  - rfc3161: RFC 3161 Timestamping Authority (production standard)
+  - zenodo:  Zenodo deposit with DOI (archival, citable)
+"""
+
+from __future__ import annotations
+
+import hashlib
+import json
+import sqlite3
+from dataclasses import dataclass
+from datetime import datetime, timezone
+from pathlib import Path
+from typing import Dict, List, Optional
+
+from ._db import get_db
+
+STAMP_BACKENDS = ("file", "rfc3161", "zenodo", "scitex_cloud")
+
+
+@dataclass
+class Stamp:
+    """A temporal proof record."""
+
+    stamp_id: str
+    root_hash: str
+    timestamp: str
+    backend: str
+    service_url: Optional[str]
+    response_token: Optional[str]
+    run_count: int
+    metadata: Optional[Dict] = None
+
+    def to_dict(self) -> Dict:
+        return {
+            "stamp_id": self.stamp_id,
+            "root_hash": self.root_hash,
+            "timestamp": self.timestamp,
+            "backend": self.backend,
+            "service_url": self.service_url,
+            "response_token": self.response_token,
+            "run_count": self.run_count,
+            "metadata": self.metadata,
+        }
+
+
+def migrate_add_stamps_table(db_path: Path) -> None:
+    """Create stamps table if not present. Safe to call multiple times."""
+    conn = sqlite3.connect(str(db_path))
+    try:
+        conn.execute(
+            """
+            CREATE TABLE IF NOT EXISTS stamps (
+                id INTEGER PRIMARY KEY AUTOINCREMENT,
+                stamp_id TEXT UNIQUE NOT NULL,
+                root_hash TEXT NOT NULL,
+                timestamp TEXT NOT NULL,
+                backend TEXT NOT NULL,
+                service_url TEXT,
+                response_token TEXT,
+                run_count INTEGER,
+                metadata TEXT
+            )
+            """
+        )
+        conn.execute("CREATE INDEX IF NOT EXISTS idx_stamps_hash ON stamps(root_hash)")
+        conn.commit()
+    finally:
+        conn.close()
+
+
+def compute_root_hash(session_ids: Optional[List[str]] = None) -> Dict:
+    """Compute a Merkle-like root hash over all (or selected) runs.
+
+    The root hash combines all run combined_hashes in deterministic order,
+    providing a single fingerprint for the entire verification state.
+
+    Parameters
+    ----------
+    session_ids : list of str, optional
+        Specific sessions to include. If None, includes all successful runs.
+
+    Returns
+    -------
+    dict
+        {root_hash, run_count, session_ids}
+    """
+    db = get_db()
+    conn = sqlite3.connect(str(db.db_path))
+    conn.row_factory = sqlite3.Row
+    try:
+        if session_ids:
+            placeholders = ",".join("?" * len(session_ids))
+            rows = conn.execute(
+                f"SELECT session_id, combined_hash FROM runs "
+                f"WHERE session_id IN ({placeholders}) "
+                f"ORDER BY session_id",
+                session_ids,
+            ).fetchall()
+        else:
+            rows = conn.execute(
+                "SELECT session_id, combined_hash FROM runs "
+                "WHERE status = 'success' AND combined_hash IS NOT NULL "
+                "ORDER BY session_id"
+            ).fetchall()
+
+        if not rows:
+            return {"root_hash": None, "run_count": 0, "session_ids": []}
+
+        hasher = hashlib.sha256()
+        ids = []
+        for row in rows:
+            hasher.update(row["session_id"].encode())
+            hasher.update((row["combined_hash"] or "").encode())
+            ids.append(row["session_id"])
+
+        return {
+            "root_hash": hasher.hexdigest(),
+            "run_count": len(ids),
+            "session_ids": ids,
+        }
+    finally:
+        conn.close()
+
+
+
+[docs] +def stamp( + backend: str = "file", + service_url: Optional[str] = None, + session_ids: Optional[List[str]] = None, + output_dir: Optional[str] = None, +) -> Stamp: + """Record root hash with external timestamp. + + Parameters + ---------- + backend : str + One of: file, rfc3161, zenodo. + service_url : str, optional + URL for RFC 3161 TSA or Zenodo API. + session_ids : list of str, optional + Specific sessions to stamp. If None, stamps all successful runs. + output_dir : str, optional + Directory for file-based stamps (default: <db_dir>/stamps, i.e. .scitex/clew/runtime/stamps/). + + Returns + ------- + Stamp + The timestamp proof record. + """ + if backend not in STAMP_BACKENDS: + raise ValueError( + f"Invalid backend '{backend}'. Must be one of: {STAMP_BACKENDS}" + ) + + root = compute_root_hash(session_ids) + if not root["root_hash"]: + raise ValueError("No runs to stamp (no successful runs with combined hashes)") + + now = datetime.now(timezone.utc).isoformat() + root_hash = root["root_hash"] + raw = f"{root_hash}:{now}" + stamp_id = f"stamp_{hashlib.sha256(raw.encode()).hexdigest()[:12]}" + + if backend == "file": + result = _stamp_file(stamp_id, root, now, output_dir) + elif backend == "rfc3161": + result = _stamp_rfc3161(stamp_id, root, now, service_url) + elif backend == "zenodo": + result = _stamp_zenodo(stamp_id, root, now, service_url) + elif backend == "scitex_cloud": + result = _stamp_scitex_cloud(stamp_id, root, now, service_url) + else: + raise ValueError(f"Unsupported backend: {backend}") + + stamp_obj = Stamp( + stamp_id=stamp_id, + root_hash=root["root_hash"], + timestamp=now, + backend=backend, + service_url=result.get("service_url"), + response_token=result.get("response_token"), + run_count=root["run_count"], + metadata={"session_ids": root["session_ids"]}, + ) + + # Store in database + db = get_db() + _ensure_stamps_table(db) + conn = sqlite3.connect(str(db.db_path)) + try: + conn.execute( + """ + INSERT INTO stamps + (stamp_id, root_hash, timestamp, backend, service_url, + response_token, run_count, metadata) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + stamp_obj.stamp_id, + stamp_obj.root_hash, + stamp_obj.timestamp, + stamp_obj.backend, + stamp_obj.service_url, + stamp_obj.response_token, + stamp_obj.run_count, + json.dumps(stamp_obj.metadata), + ), + ) + conn.commit() + finally: + conn.close() + + return stamp_obj
+ + + +
+[docs] +def check_stamp(stamp_id: Optional[str] = None) -> Dict: + """Verify a stamp against current verification state. + + Parameters + ---------- + stamp_id : str, optional + Specific stamp to check. If None, checks the latest stamp. + + Returns + ------- + dict + {stamp, current_root_hash, matches, details} + """ + db = get_db() + _ensure_stamps_table(db) + + conn = sqlite3.connect(str(db.db_path)) + conn.row_factory = sqlite3.Row + try: + if stamp_id: + row = conn.execute( + "SELECT * FROM stamps WHERE stamp_id = ?", (stamp_id,) + ).fetchone() + else: + row = conn.execute( + "SELECT * FROM stamps ORDER BY id DESC LIMIT 1" + ).fetchone() + + if not row: + return {"status": "not_found", "message": "No stamps found"} + + stored_stamp = Stamp( + stamp_id=row["stamp_id"], + root_hash=row["root_hash"], + timestamp=row["timestamp"], + backend=row["backend"], + service_url=row["service_url"], + response_token=row["response_token"], + run_count=row["run_count"], + metadata=json.loads(row["metadata"]) if row["metadata"] else None, + ) + + # Recompute root hash from the same sessions + session_ids = ( + stored_stamp.metadata.get("session_ids") if stored_stamp.metadata else None + ) + current = compute_root_hash(session_ids) + + matches = current["root_hash"] == stored_stamp.root_hash + details = [] + + if matches: + details.append(f"Root hash matches stamp from {stored_stamp.timestamp}") + else: + details.append(f"Root hash CHANGED since stamp at {stored_stamp.timestamp}") + details.append(f" Stamped: {stored_stamp.root_hash[:32]}...") + details.append(f" Current: {current['root_hash'][:32]}...") + + if current["run_count"] != stored_stamp.run_count: + details.append( + f" Run count changed: {stored_stamp.run_count}{current['run_count']}" + ) + + return { + "stamp": stored_stamp.to_dict(), + "current_root_hash": current["root_hash"], + "matches": matches, + "details": details, + } + finally: + conn.close()
+ + + +
+[docs] +def list_stamps(limit: int = 20) -> List[Stamp]: + """List all stamps.""" + db = get_db() + _ensure_stamps_table(db) + + conn = sqlite3.connect(str(db.db_path)) + conn.row_factory = sqlite3.Row + try: + rows = conn.execute( + "SELECT * FROM stamps ORDER BY id DESC LIMIT ?", (limit,) + ).fetchall() + return [ + Stamp( + stamp_id=r["stamp_id"], + root_hash=r["root_hash"], + timestamp=r["timestamp"], + backend=r["backend"], + service_url=r["service_url"], + response_token=r["response_token"], + run_count=r["run_count"], + metadata=json.loads(r["metadata"]) if r["metadata"] else None, + ) + for r in rows + ] + finally: + conn.close()
+ + + +# ── Backend implementations ── + + +def _stamp_file(stamp_id, root, timestamp, output_dir=None): + """File-based stamping: write JSON proof to local directory.""" + if output_dir: + stamp_dir = Path(output_dir) + else: + db = get_db() + stamp_dir = db.db_path.parent / "stamps" + + stamp_dir.mkdir(parents=True, exist_ok=True) + stamp_path = stamp_dir / f"{stamp_id}.json" + + proof = { + "stamp_id": stamp_id, + "root_hash": root["root_hash"], + "timestamp": timestamp, + "run_count": root["run_count"], + "backend": "file", + } + + stamp_path.write_text(json.dumps(proof, indent=2)) + return {"service_url": str(stamp_path), "response_token": None} + + +def _stamp_rfc3161(stamp_id, root, timestamp, service_url=None): + """RFC 3161 Timestamping Authority.""" + try: + import rfc3161ng + except ImportError: + raise ImportError( + "RFC 3161 stamping requires 'rfc3161ng' package. " + "Install with: pip install rfc3161ng" + ) + + url = service_url or "http://zeitstempel.dfn.de" + certificate = rfc3161ng.RemoteTimestamper(url) + + hash_bytes = bytes.fromhex(root["root_hash"]) + tst = certificate.timestamp(data=hash_bytes) + + token_hex = tst.hex() if isinstance(tst, bytes) else str(tst) + return {"service_url": url, "response_token": token_hex[:256]} + + +def _stamp_zenodo(stamp_id, root, timestamp, service_url=None): + """Zenodo deposit: create a record with the root hash.""" + raise NotImplementedError( + "Zenodo stamping is planned for a future release. " + "Use 'file' or 'rfc3161' backend instead." + ) + + +def _stamp_scitex_cloud(stamp_id, root, timestamp, service_url=None): + """SciTeX Cloud registry: register root hash with server-side timestamp.""" + from ._registry import get_registry + + registry = get_registry(base_url=service_url) + result = registry.register( + root["root_hash"], + source_type="stamp", + metadata={ + "stamp_id": stamp_id, + "run_count": root["run_count"], + "timestamp": timestamp, + }, + ) + + url = service_url or registry.base_url + token = ( + result.get("data", {}).get("registered_at") if result.get("success") else None + ) + return {"service_url": url, "response_token": token} + + +def _ensure_stamps_table(db) -> None: + """Ensure the stamps table exists.""" + migrate_add_stamps_table(db.db_path) + + +__all__ = [ + "STAMP_BACKENDS", + "Stamp", + "check_stamp", + "compute_root_hash", + "list_stamps", + "migrate_add_stamps_table", + "stamp", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_compat/_compat.html b/src/scitex/_sphinx_html/_modules/scitex_compat/_compat.html new file mode 100644 index 000000000..fc670721c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_compat/_compat.html @@ -0,0 +1,768 @@ + + + + + + + + scitex_compat._compat — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_compat._compat

+#!/usr/bin/env python3
+# File: src/scitex_compat/_compat.py
+
+"""Core deprecation decorator and compat shims.
+
+Implementation of the public surface re-exported from
+``scitex_compat.__init__`` — kept in its own module so the test suite can
+mirror it as ``tests/scitex_compat/test__compat.py``.
+"""
+
+from __future__ import annotations
+
+import warnings
+from functools import wraps
+from typing import Callable
+
+
+
+[docs] +def deprecated(new_name: str, removal_version: str = "2.0"): + """Decorator to mark functions as deprecated.""" + + def decorator(func: Callable) -> Callable: + @wraps(func) + def wrapper(*args, **kwargs): + warnings.warn( + f"{func.__name__} is deprecated. " + f"Use {new_name} instead. " + f"Will be removed in v{removal_version}.", + DeprecationWarning, + stacklevel=2, + ) + return func(*args, **kwargs) + + return wrapper + + return decorator
+ + + +
+[docs] +def notify(*args, **kwargs): + """Deprecated: Use scitex.notify.alert() instead. + + In standalone mode, this only emits a deprecation warning. + The actual notification requires scitex.notify to be installed. + """ + warnings.warn( + "scitex.compat.notify is deprecated. Use scitex.notify.alert instead.", + DeprecationWarning, + stacklevel=2, + ) + try: + from scitex.notify import alert + + return alert(*args, **kwargs) + except ImportError: + warnings.warn( + "scitex.notify is not installed. Notification not sent.", + RuntimeWarning, + stacklevel=2, + ) + return None
+ + + +
+[docs] +async def notify_async(*args, **kwargs): + """Deprecated: Use scitex.notify.alert_async() instead. + + In standalone mode, this only emits a deprecation warning. + The actual notification requires scitex.notify to be installed. + """ + warnings.warn( + "scitex.compat.notify_async is deprecated. Use scitex.notify.alert_async instead.", + DeprecationWarning, + stacklevel=2, + ) + try: + from scitex.notify import alert_async + + return await alert_async(*args, **kwargs) + except ImportError: + warnings.warn( + "scitex.notify is not installed. Notification not sent.", + RuntimeWarning, + stacklevel=2, + ) + return None
+ + + +__all__ = ["deprecated", "notify", "notify_async"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_config/_PriorityConfig.html b/src/scitex/_sphinx_html/_modules/scitex_config/_PriorityConfig.html new file mode 100644 index 000000000..3b26c7df5 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_config/_PriorityConfig.html @@ -0,0 +1,1061 @@ + + + + + + + + scitex_config._PriorityConfig — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_config._PriorityConfig

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-12-09 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/config/PriorityConfig.py
+
+
+"""
+Priority-based configuration resolver.
+
+Functionalities
+---------------
+- `PriorityConfig.resolve()` — precedence cascade `direct → config_dict → env → default`.
+- `load_dotenv()` — load `.env` file(s) into `os.environ` (cwd / $HOME / walk-up modes).
+- `get_scitex_dir()` — resolve `$SCITEX_DIR` (direct → env → `~/.scitex`).
+
+IO
+--
+- Reads: process env, `.env` files (cwd, `$HOME`, walk-up parents), config dicts.
+- Writes: `os.environ` (only keys not already set — process env wins).
+
+Dependencies
+------------
+- stdlib only (`os`, `pathlib`, `typing`).
+
+Based on priority-config by ywatanabe (https://github.com/ywatanabe1989/priority-config),
+incorporated into scitex for self-contained configuration management. Config-dict
+values (from YAML or passed dict) take priority over environment variables, following
+the Scholar module's CascadeConfig pattern.
+"""
+
+import os
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Type, Union
+
+from ._env_loader import parse_src_file
+
+
+def _parse_dotenv_file(path: Path) -> bool:
+    """Parse a single .env file and merge into os.environ.
+
+    Line/value parsing (``export`` prefix, quote stripping, ``$VAR`` expansion)
+    is delegated to :func:`scitex_config._env_loader.parse_src_file` so the
+    ``.env`` and ``.src`` surfaces share one canonical parser.
+
+    Existing env vars are preserved (not overridden) — process env wins
+    over .env file contents.
+
+    Returns
+    -------
+    bool
+        True if the file was successfully read and parsed, False on error.
+    """
+    if not (path.exists() and path.is_file()):
+        return False
+    try:
+        parsed = parse_src_file(path)
+        for key, value in parsed.items():
+            # Only set if not already in environment (env takes precedence)
+            if key not in os.environ:
+                os.environ[key] = value
+        return True
+    except Exception:
+        return False
+
+
+
+[docs] +def load_dotenv( + dotenv_path: Optional[str] = None, + *, + walk_up: bool = False, + stop_at: Optional[Union[str, Path]] = None, +) -> bool: + """Load environment variables from .env file(s). + + Default behavior (``walk_up=False``, backward compatible): + Searches for .env file in the following order, loading the first match: + 1. Explicit ``dotenv_path`` if provided + 2. Current working directory (``cwd/.env``) + 3. User home directory (``$HOME/.env``) + + Parent-walking behavior (``walk_up=True``, opt-in): + Walks parent directories starting from ``cwd``, looking for ``.env`` + at each level. Stops when reaching ``stop_at`` (or ``$HOME`` if not + given) or the filesystem root. **All** ``.env`` files found are loaded, + with the most-distant parent loaded first so that closer-to-cwd values + take precedence (closer .env wins). An existing process env var is + never overridden by any .env (process env > closest .env > ... > root .env). + + Note: ``walk_up=True`` is ignored if ``dotenv_path`` is explicitly given. + + Parameters + ---------- + dotenv_path : str, optional + Path to .env file. If None, searches default locations. + walk_up : bool, optional + If True (and ``dotenv_path`` not given), walk parent dirs from cwd. + Default False for backward compatibility — new callers should pass True. + stop_at : str or Path, optional + Directory at which to stop the upward walk (inclusive — its ``.env`` + is considered). If None, stops at ``$HOME`` (or filesystem root if + ``$HOME`` is not a parent of cwd). Only used when ``walk_up=True``. + + Returns + ------- + bool + True if at least one .env file was found and loaded, False otherwise. + """ + if dotenv_path: + path = Path(dotenv_path) + if path.exists() and path.is_file(): + return _parse_dotenv_file(path) + return False + + if not walk_up: + # Legacy behavior: try cwd then $HOME, first hit wins. + for path in (Path.cwd() / ".env", Path.home() / ".env"): + if path.exists() and path.is_file(): + return _parse_dotenv_file(path) + return False + + # walk_up=True: collect .env files from cwd up through parents. + cwd = Path.cwd().resolve() + home = Path.home().resolve() + stop_dir = Path(stop_at).expanduser().resolve() if stop_at is not None else home + + collected: List[Path] = [] + current = cwd + visited: set = set() + while True: + resolved = current.resolve() + if resolved in visited: + break + visited.add(resolved) + + candidate = current / ".env" + if candidate.exists() and candidate.is_file(): + collected.append(candidate) + + # Stop condition: reached the configured stop directory. + if resolved == stop_dir: + break + + parent = current.parent + if parent == current: + # Filesystem root reached. + break + current = parent + + if not collected: + return False + + # `collected` is in cwd→root order (closest first). Load in that order: + # `_parse_dotenv_file` skips keys already in os.environ, so the closest + # .env wins for any shared key. Process env (set before this call) wins + # over all .env files. + loaded_any = False + for path in collected: + if _parse_dotenv_file(path): + loaded_any = True + return loaded_any
+ + + +
+[docs] +def get_scitex_dir(direct_val: Optional[str] = None) -> Path: + """Get SCITEX_DIR with priority: direct → env → default. + + This is a convenience function for the most common use case. + + Parameters + ---------- + direct_val : str, optional + Direct value (highest precedence) + + Returns + ------- + Path + Resolved SCITEX_DIR path + """ + # Try to load .env first (won't override existing env vars) + load_dotenv() + + if direct_val is not None: + return Path(direct_val).expanduser() + + env_val = os.getenv("SCITEX_DIR") + if env_val: + return Path(env_val).expanduser() + + return Path.home() / ".scitex"
+ + + +
+[docs] +class PriorityConfig: + """Universal config resolver with precedence: direct → config_dict → env → default + + Config dict (from YAML or passed dict) takes priority over env variables. + This follows the Scholar module's CascadeConfig pattern. + + Examples + -------- + >>> from scitex_config import PriorityConfig + >>> config = PriorityConfig(config_dict={"port": 3000}, env_prefix="SCITEX_") + >>> port = config.resolve("port", None, default=8000, type=int) + 3000 # from config_dict (highest after direct) + >>> # With env: SCITEX_PORT=5000 python script.py + >>> port = config.resolve("port", None, default=8000, type=int) + 3000 # config_dict takes precedence over env + >>> port = config.resolve("port", 9000, default=8000, type=int) + 9000 # direct value takes highest precedence + """ + + SENSITIVE_EXPRESSIONS = [ + "API", + "PASSWORD", + "SECRET", + "TOKEN", + "KEY", + "PASS", + "AUTH", + "CREDENTIAL", + "PRIVATE", + "CERT", + ] + +
+[docs] + def __init__( + self, + config_dict: Optional[Dict[str, Any]] = None, + env_prefix: str = "", + auto_uppercase: bool = True, + ): + """Initialize PriorityConfig. + + Parameters + ---------- + config_dict : dict, optional + Dictionary with configuration values + env_prefix : str + Prefix for environment variables (e.g., "SCITEX_") + auto_uppercase : bool + Whether to uppercase keys for env lookup + """ + self.config_dict = config_dict or {} + self.env_prefix = env_prefix + self.auto_uppercase = auto_uppercase + self.resolution_log: List[Dict[str, Any]] = []
+ + + def __repr__(self) -> str: + return f"PriorityConfig(prefix='{self.env_prefix}', configs={len(self.config_dict)})" + +
+[docs] + def get(self, key: str) -> Any: + """Get value from config dict only.""" + return self.config_dict.get(key)
+ + +
+[docs] + def resolve( + self, + key: str, + direct_val: Any = None, + default: Any = None, + type: Type = str, + mask: Optional[bool] = None, + ) -> Any: + """Get value with precedence hierarchy. + + Precedence: direct → config_dict → env → default + + This follows the Scholar module's CascadeConfig pattern where + config dict takes higher priority than environment variables. + + Parameters + ---------- + key : str + Configuration key to resolve + direct_val : Any, optional + Direct value (highest precedence) + default : Any, optional + Default value if not found elsewhere + type : Type + Type conversion (str, int, float, bool, list) + mask : bool, optional + Override automatic masking of sensitive values + + Returns + ------- + Any + Resolved configuration value + """ + source = None + final_value = None + + # Replace dots with underscores for env key (e.g., axes.width_mm -> AXES_WIDTH_MM) + normalized_key = key.replace(".", "_") + env_key = f"{self.env_prefix}{normalized_key.upper() if self.auto_uppercase else normalized_key}" + env_val = os.getenv(env_key) + + # Priority: direct → config_dict → env → default + if direct_val is not None: + source = "direct" + final_value = direct_val + elif key in self.config_dict: + source = "config_dict" + final_value = self.config_dict[key] + elif env_val: + source = f"env:{env_key}" + final_value = self._convert_type(env_val, type) + else: + source = "default" + final_value = default + + if mask is False: + should_mask = False + else: + should_mask = self._is_sensitive(key) + + display_value = self._mask_value(final_value) if should_mask else final_value + + self.resolution_log.append( + { + "key": key, + "source": source, + "value": display_value, + "type": type.__name__, + } + ) + + return final_value
+ + +
+[docs] + def print_resolutions(self) -> None: + """Print how each config was resolved.""" + if not self.resolution_log: + print("No configurations resolved yet") + return + + print("Configuration Resolution Log:") + print("-" * 50) + for entry in self.resolution_log: + print(f"{entry['key']:<20} = {entry['value']:<20} ({entry['source']})")
+ + +
+[docs] + def clear_log(self) -> None: + """Clear resolution log.""" + self.resolution_log = []
+ + + def _convert_type(self, value: str, type: Type) -> Any: + """Convert string value to specified type.""" + if type == int: + return int(value) + elif type == float: + return float(value) + elif type == bool: + return value.lower() in ("true", "1", "yes") + elif type == list: + return value.split(",") + return value + + def _is_sensitive(self, key: str) -> bool: + """Check if key contains sensitive expressions.""" + key_upper = key.upper() + return any(expr in key_upper for expr in self.SENSITIVE_EXPRESSIONS) + + def _mask_value(self, value: Any) -> str: + """Mask sensitive values for display.""" + if value is None: + return None + value_str = str(value) + if len(value_str) <= 4: + return "****" + return value_str[:2] + "*" * (len(value_str) - 4) + value_str[-2:]
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_config/_ScitexConfig.html b/src/scitex/_sphinx_html/_modules/scitex_config/_ScitexConfig.html new file mode 100644 index 000000000..2b4b5f83a --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_config/_ScitexConfig.html @@ -0,0 +1,1028 @@ + + + + + + + + scitex_config._ScitexConfig — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_config._ScitexConfig

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-12-09 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/config/ScitexConfig.py
+
+"""
+YAML-based configuration for SciTeX with environment variable substitution.
+
+Functionalities
+---------------
+- `load_yaml()` — parse YAML with `${VAR:-default}` env substitution.
+- `ScitexConfig` — YAML-backed config object exposing `.resolve(key, default=...)`.
+- `get_config()` — module-level cached accessor returning the default `ScitexConfig`.
+
+IO
+--
+- Reads: YAML files (default `src/scitex_config/default.yaml` or user-supplied path),
+  `os.environ` for `${VAR}` expansion.
+- Writes: none (read-only resolver).
+
+Dependencies
+------------
+- stdlib (`os`, `re`, `pathlib`, `typing`).
+- Sibling module `._PriorityConfig` (`PriorityConfig`, `load_dotenv`).
+- External: `PyYAML`.
+
+Usage
+-----
+    from scitex_config import ScitexConfig
+
+    # Load default configuration
+    config = ScitexConfig()
+
+    # Load custom configuration
+    config = ScitexConfig(config_path="/path/to/config.yaml")
+
+    # Resolve values with precedence
+    log_level = config.resolve("logging.level", default="INFO")
+"""
+
+import os
+import re
+from pathlib import Path
+from typing import Any, Optional, Type, Union
+
+from ._PriorityConfig import PriorityConfig, load_dotenv
+
+
+
+[docs] +def load_yaml(path: Path) -> dict: + """Load YAML file with environment variable substitution. + + Supports ${VAR:-default} syntax for environment variable expansion. + + Parameters + ---------- + path : Path + Path to YAML file + + Returns + ------- + dict + Parsed YAML with environment variables substituted + """ + try: + import yaml + except ImportError: + raise ImportError( + "PyYAML required for YAML config. Install with: pip install pyyaml" + ) + + try: + with open(path) as f: + content = f.read() + + def env_replacer(match): + """Replace ${VAR:-default} with environment variable or default.""" + env_expr = match.group(1) + if ":-" in env_expr: + var_name, default_value = env_expr.split(":-", 1) + value = os.getenv(var_name, default_value.strip('"')) + else: + value = os.getenv(env_expr) + + # Handle special values + if value in ["true", "false"]: + return value + elif value == "null": + return "null" + elif value and not (value.startswith('"') and value.endswith('"')): + return f'"{value}"' + else: + return value or "null" + + content = re.sub(r"\$\{([^}]+)\}", env_replacer, content) + return yaml.safe_load(content) + except Exception as e: + raise ValueError(f"Failed to load YAML config from {path}: {e}")
+ + + +
+[docs] +class ScitexConfig: + """YAML-based configuration manager for SciTeX. + + Loads configuration from YAML files with environment variable substitution. + Values can be resolved with priority: direct → config → env → default. + + Examples + -------- + >>> from scitex.config import ScitexConfig + >>> config = ScitexConfig() + >>> config.resolve("logging.level", default="INFO") + 'INFO' + >>> config.get("debug.enabled") + False + """ + +
+[docs] + def __init__( + self, + config_path: Optional[Union[str, Path]] = None, + env_prefix: str = "SCITEX_", + ): + """Initialize ScitexConfig. + + Parameters + ---------- + config_path : str or Path, optional + Path to custom YAML config file. If None, uses default.yaml. + env_prefix : str + Prefix for environment variables (default: "SCITEX_") + """ + # Load .env file first + load_dotenv() + + # Load YAML configuration + if config_path and Path(config_path).exists(): + self._config_data = load_yaml(Path(config_path)) + self._config_path = Path(config_path) + else: + default_path = Path(__file__).parent / "default.yaml" + if default_path.exists(): + self._config_data = load_yaml(default_path) + else: + self._config_data = {} + self._config_path = default_path + + # Flatten nested config for easy access + self._flat_config = self._flatten_dict(self._config_data) + + # Initialize PriorityConfig for resolution + self._priority_config = PriorityConfig( + config_dict=self._flat_config, + env_prefix=env_prefix, + )
+ + + def _flatten_dict(self, d: dict, parent_key: str = "", sep: str = ".") -> dict: + """Flatten nested dictionary with dot notation keys. + + Parameters + ---------- + d : dict + Dictionary to flatten + parent_key : str + Parent key for recursion + sep : str + Separator for nested keys + + Returns + ------- + dict + Flattened dictionary + """ + items = [] + for k, v in d.items(): + new_key = f"{parent_key}{sep}{k}" if parent_key else k + if isinstance(v, dict): + items.extend(self._flatten_dict(v, new_key, sep).items()) + else: + items.append((new_key, v)) + return dict(items) + +
+[docs] + def get(self, key: str, default: Any = None) -> Any: + """Get value from config directly (no precedence resolution). + + Supports dot notation for nested keys. + + Parameters + ---------- + key : str + Configuration key (e.g., "logging.level" or "debug.enabled") + default : Any + Default value if key not found + + Returns + ------- + Any + Configuration value + """ + return self._flat_config.get(key, default)
+ + +
+[docs] + def resolve( + self, + key: str, + direct_val: Any = None, + default: Any = None, + type: Type = str, + ) -> Any: + """Resolve value with precedence: direct → config → env → default. + + This follows the Scholar module's CascadeConfig pattern where + YAML config takes higher priority than environment variables. + + Parameters + ---------- + key : str + Configuration key (e.g., "logging.level") + direct_val : Any + Direct value (highest precedence) + default : Any + Default value (lowest precedence) + type : Type + Type conversion (str, int, float, bool, list) + + Returns + ------- + Any + Resolved value + """ + # Priority: direct → config → env → default + # (Same as Scholar's CascadeConfig pattern) + if direct_val is not None: + return direct_val + + # Config (YAML) takes priority over env + config_val = self._flat_config.get(key) + if config_val is not None: + return config_val + + # Then check environment variable + normalized_key = key.replace(".", "_") + env_key = f"SCITEX_{normalized_key.upper()}" + env_val = os.getenv(env_key) + if env_val: + return self._convert_type(env_val, type) + + return default
+ + + def _convert_type(self, value: str, type: Type) -> Any: + """Convert string value to specified type.""" + if type == int: + return int(value) + elif type == float: + return float(value) + elif type == bool: + return value.lower() in ("true", "1", "yes") + elif type == list: + return value.split(",") + return value + +
+[docs] + def get_nested(self, *keys: str, default: Any = None) -> Any: + """Get nested value from original config structure. + + Parameters + ---------- + *keys : str + Keys to traverse (e.g., "browser", "screenshots_dir") + default : Any + Default value if not found + + Returns + ------- + Any + Nested value + """ + current = self._config_data + for key in keys: + if isinstance(current, dict) and key in current: + current = current[key] + else: + return default + return current
+ + + @property + def config_path(self) -> Path: + """Get the path to the loaded config file.""" + return self._config_path + + @property + def raw(self) -> dict: + """Get raw configuration data (original nested structure).""" + return self._config_data + + @property + def flat(self) -> dict: + """Get flattened configuration data.""" + return self._flat_config + +
+[docs] + def print(self) -> None: + """Print configuration resolution log.""" + self._priority_config.print_resolutions()
+ + + def __repr__(self) -> str: + return f"ScitexConfig(path='{self._config_path}')"
+ + + +# Module-level convenience functions + +_default_config: Optional[ScitexConfig] = None + + +
+[docs] +def get_config(config_path: Optional[Union[str, Path]] = None) -> ScitexConfig: + """Get ScitexConfig instance. + + Parameters + ---------- + config_path : str or Path, optional + Path to custom config. If None, returns cached default instance. + + Returns + ------- + ScitexConfig + Configuration instance + """ + global _default_config + + if config_path is not None: + return ScitexConfig(config_path) + + if _default_config is None: + _default_config = ScitexConfig() + + return _default_config
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_config/_env_loader.html b/src/scitex/_sphinx_html/_modules/scitex_config/_env_loader.html new file mode 100644 index 000000000..2232feb63 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_config/_env_loader.html @@ -0,0 +1,853 @@ + + + + + + + + scitex_config._env_loader — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_config._env_loader

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2026-05-30 (ywatanabe)"
+# File: ./src/scitex_config/_env_loader.py
+
+"""
+Environment variable loader for bash-compatible ``.src``/``.env`` files.
+
+Functionalities
+---------------
+- ``parse_src_file()`` — parse a single bash-style file into a ``{name: value}`` dict.
+- ``load_env_from_path()`` — parse a file or every ``*.src`` in a directory.
+- ``load_scitex_env()`` — apply ``$SCITEX_ENV_SRC`` contents to ``os.environ``.
+
+These are the canonical bash-style line/value parsers for the package; the
+``.env`` loader in ``_PriorityConfig`` delegates its per-line parsing here so
+quoting and ``$VAR`` expansion behave identically across both surfaces.
+
+IO
+--
+- Reads: process env (for ``$VAR`` expansion), ``.src``/``.env`` files.
+- Writes: ``os.environ`` (``load_scitex_env`` only).
+
+Dependencies
+------------
+- stdlib only (``logging``, ``os``, ``re``, ``pathlib``, ``typing``).
+"""
+
+from __future__ import annotations
+
+import logging
+import os
+import re
+from pathlib import Path
+from typing import Dict, List
+
+logger = logging.getLogger(__name__)
+
+# Pattern to match: export VAR=value or VAR=value (with optional quotes)
+_ENV_PATTERN = re.compile(r"^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)=(.*)$")
+
+
+def _parse_value(value: str) -> str:
+    """Parse a bash-style value, handling quotes and escapes."""
+    value = value.strip()
+
+    # Handle double-quoted strings
+    if value.startswith('"') and value.endswith('"'):
+        value = value[1:-1]
+        # Unescape common bash escapes
+        value = value.replace('\\"', '"')
+        value = value.replace("\\$", "$")
+        value = value.replace("\\\\", "\\")
+    # Handle single-quoted strings (no escaping in bash single quotes)
+    elif value.startswith("'") and value.endswith("'"):
+        value = value[1:-1]
+
+    # Expand $VAR and ${VAR} references
+    def expand_var(match):
+        var_name = match.group(1) or match.group(2)
+        return os.environ.get(var_name, "")
+
+    value = re.sub(r"\$\{([^}]+)\}|\$([A-Za-z_][A-Za-z0-9_]*)", expand_var, value)
+
+    return value
+
+
+
+[docs] +def parse_src_file(filepath: Path) -> Dict[str, str]: + """ + Parse a bash-compatible ``.src``/``.env`` file and extract env variables. + + Parameters + ---------- + filepath : Path + Path to the file. + + Returns + ------- + dict + Dictionary of variable names to values. + """ + env_vars: Dict[str, str] = {} + + try: + with open(filepath) as f: + for line in f: + line = line.strip() + + # Skip empty lines and comments + if not line or line.startswith("#"): + continue + + match = _ENV_PATTERN.match(line) + if match: + name, value = match.groups() + env_vars[name] = _parse_value(value) + + except Exception as e: + logger.warning(f"Failed to parse {filepath}: {e}") + + return env_vars
+ + + +
+[docs] +def load_env_from_path(path: str) -> Dict[str, str]: + """ + Load environment variables from a file or directory. + + Parameters + ---------- + path : str + Path to a ``.src`` file or directory containing ``*.src`` files. + + Returns + ------- + dict + All loaded environment variables. + """ + loaded: Dict[str, str] = {} + path_obj = Path(path).expanduser() + + if not path_obj.exists(): + logger.warning(f"SCITEX_ENV_SRC path does not exist: {path}") + return loaded + + files_to_load: List[Path] = [] + + if path_obj.is_dir(): + # Load all .src files in directory + files_to_load = sorted(path_obj.glob("*.src")) + elif path_obj.is_file(): + files_to_load = [path_obj] + else: + logger.warning(f"SCITEX_ENV_SRC is not a file or directory: {path}") + return loaded + + for src_file in files_to_load: + env_vars = parse_src_file(src_file) + if env_vars: + logger.info(f"Loaded {len(env_vars)} vars from {src_file.name}") + loaded.update(env_vars) + + return loaded
+ + + +
+[docs] +def load_scitex_env() -> int: + """ + Load environment variables from ``$SCITEX_ENV_SRC`` if set. + + This function should be called early in the MCP server startup. + + Returns + ------- + int + Number of environment variables loaded. + """ + env_src = os.environ.get("SCITEX_ENV_SRC") + + if not env_src: + return 0 + + loaded = load_env_from_path(env_src) + + # Apply to current process environment + for name, value in loaded.items(): + os.environ[name] = value + + if loaded: + logger.info(f"SCITEX_ENV_SRC: Loaded {len(loaded)} environment variables") + + return len(loaded)
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_config/_paths.html b/src/scitex/_sphinx_html/_modules/scitex_config/_paths.html new file mode 100644 index 000000000..0758e0500 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_config/_paths.html @@ -0,0 +1,1033 @@ + + + + + + + + scitex_config._paths — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_config._paths

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-12-09 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/config/paths.py
+
+"""
+Centralized path management for SciTeX.
+
+Functionalities
+---------------
+- `ScitexPaths` — central path manager rooted at `$SCITEX_DIR`
+  (browser, cache, capture, logs, sessions, ...).
+- Property accessors return canonical defaults; `resolve(name, direct_val=...)`
+  supports the `direct → env → default` cascade per directory.
+- `get_paths()` — module-level cached accessor.
+
+IO
+--
+- Reads: `$SCITEX_DIR` env var, `.env` files (via `load_dotenv`).
+- Writes: creates child directories under `$SCITEX_DIR` on first access
+  (`mkdir(parents=True, exist_ok=True)`).
+
+Dependencies
+------------
+- stdlib (`os`, `pathlib`, `typing`).
+- Sibling module `._PriorityConfig` (`get_scitex_dir`, `load_dotenv`).
+
+Usage
+-----
+    from scitex_config import ScitexPaths
+
+    paths = ScitexPaths()
+
+    # Method 1: Direct property access (uses default)
+    print(paths.logs)           # ~/.scitex/logs
+    print(paths.cache)          # ~/.scitex/cache
+
+    # Method 2: resolve() with direct value override (recommended for modules)
+    cache_dir = paths.resolve("cache", direct_val=user_provided_path)
+    # If user_provided_path is None -> uses default from SCITEX_DIR
+
+    # Thread-safe: pass explicit base_dir
+    paths = ScitexPaths(base_dir="/custom/path")
+"""
+
+from pathlib import Path
+from typing import Optional, Union
+
+from ._PriorityConfig import get_scitex_dir
+
+
+
+[docs] +class ScitexPaths: + """Centralized path manager for SciTeX directories. + + All paths are derived from SCITEX_DIR (default: ~/.scitex). + Priority: direct_val → SCITEX_DIR env → .env file → default + + Directory Structure: + $SCITEX_DIR/ + ├── browser/ # Browser profiles and data + │ ├── screenshots/ # Browser debugging screenshots + │ ├── sessions/ # Shared browser sessions + │ └── persistent/ # Persistent browser profiles + ├── cache/ # General cache + │ └── functions/ # Function cache (joblib) + ├── capture/ # Screen captures + ├── impact_factor_cache/ # Impact factor data cache + ├── logs/ # Log files + ├── openathens_cache/ # OpenAthens auth cache + ├── rng/ # Random number generator state + ├── scholar/ # Scholar module data + │ ├── cache/ # Scholar-specific cache + │ └── library/ # PDF library + ├── screenshots/ # General screenshots + ├── test_monitor/ # Test monitoring screenshots + └── writer/ # Writer module data + """ + +
+[docs] + def __init__(self, base_dir: Optional[str] = None): + """Initialize ScitexPaths. + + Parameters + ---------- + base_dir : str, optional + Explicit base directory. If None, uses SCITEX_DIR env var + or falls back to ~/.scitex. + """ + self._base_dir = get_scitex_dir(base_dir)
+ + + @property + def base(self) -> Path: + """Base SciTeX directory ($SCITEX_DIR or ~/.scitex).""" + return self._base_dir + + # ========== Core directories ========== + + @property + def logs(self) -> Path: + """Log files directory.""" + return self._base_dir / "logs" + + @property + def cache(self) -> Path: + """General cache directory.""" + return self._base_dir / "cache" + + @property + def capture(self) -> Path: + """Screen capture directory.""" + return self._base_dir / "capture" + + @property + def screenshots(self) -> Path: + """General screenshots directory.""" + return self._base_dir / "screenshots" + + @property + def rng(self) -> Path: + """Random number generator state directory.""" + return self._base_dir / "rng" + + # ========== Browser directories ========== + + @property + def browser(self) -> Path: + """Browser module base directory.""" + return self._base_dir / "browser" + + @property + def browser_screenshots(self) -> Path: + """Browser debugging screenshots.""" + return self.browser / "screenshots" + + @property + def browser_sessions(self) -> Path: + """Shared browser sessions.""" + return self.browser / "sessions" + + @property + def browser_persistent(self) -> Path: + """Persistent browser profiles.""" + return self.browser / "persistent" + + @property + def test_monitor(self) -> Path: + """Test monitoring screenshots directory.""" + return self._base_dir / "test_monitor" + + # ========== Cache directories ========== + + @property + def function_cache(self) -> Path: + """Function cache (joblib memory).""" + return self.cache / "functions" + + @property + def impact_factor_cache(self) -> Path: + """Impact factor data cache.""" + return self._base_dir / "impact_factor_cache" + + @property + def openathens_cache(self) -> Path: + """OpenAthens authentication cache.""" + return self._base_dir / "openathens_cache" + + # ========== Scholar directories ========== + + @property + def scholar(self) -> Path: + """Scholar module base directory.""" + return self._base_dir / "scholar" + + @property + def scholar_cache(self) -> Path: + """Scholar-specific cache directory.""" + return self.scholar / "cache" + + @property + def scholar_library(self) -> Path: + """Scholar PDF library directory.""" + return self.scholar / "library" + + # ========== Writer directories ========== + + @property + def writer(self) -> Path: + """Writer module directory.""" + return self._base_dir / "writer" + + # ========== Resolve method (recommended for modules) ========== + +
+[docs] + def resolve( + self, + path_name: str, + direct_val: Optional[Union[str, Path]] = None, + ) -> Path: + """Resolve a path with priority: direct_val → default from SCITEX_DIR. + + This is the recommended method for modules that accept optional path + parameters. It follows the same pattern as PriorityConfig.resolve(). + + Parameters + ---------- + path_name : str + Name of the path property (e.g., "cache", "logs", "scholar_library") + direct_val : str or Path, optional + Direct value (highest precedence). If None, uses default. + + Returns + ------- + Path + Resolved path + + Examples + -------- + >>> paths = ScitexPaths() + >>> # User didn't provide path -> use default + >>> cache_dir = paths.resolve("cache", None) + >>> # User provided custom path -> use it + >>> cache_dir = paths.resolve("cache", "/custom/cache") + + Usage in modules: + >>> class MyModule: + ... def __init__(self, cache_dir=None): + ... self.cache_dir = get_paths().resolve("cache", cache_dir) + """ + if direct_val is not None: + return Path(direct_val).expanduser() + + # Get the default path from property + if hasattr(self, path_name): + return getattr(self, path_name) + + raise ValueError( + f"Unknown path name: {path_name}. Available: {list(self.list_all().keys())}" + )
+ + + # ========== Utility methods ========== + +
+[docs] + def ensure_dir(self, path: Path) -> Path: + """Ensure directory exists, creating if necessary. + + Parameters + ---------- + path : Path + Directory path to ensure exists. + + Returns + ------- + Path + The same path, guaranteed to exist. + """ + path.mkdir(parents=True, exist_ok=True) + return path
+ + +
+[docs] + def ensure_all(self) -> None: + """Create all standard directories.""" + dirs = [ + self.logs, + self.cache, + self.function_cache, + self.capture, + self.screenshots, + self.rng, + self.browser, + self.browser_screenshots, + self.browser_sessions, + self.browser_persistent, + self.test_monitor, + self.impact_factor_cache, + self.openathens_cache, + self.scholar, + self.scholar_cache, + self.scholar_library, + self.writer, + ] + for d in dirs: + d.mkdir(parents=True, exist_ok=True)
+ + +
+[docs] + def list_all(self) -> dict: + """List all configured paths. + + Returns + ------- + dict + Dictionary of path names to Path objects. + """ + return { + "base": self.base, + "logs": self.logs, + "cache": self.cache, + "function_cache": self.function_cache, + "capture": self.capture, + "screenshots": self.screenshots, + "rng": self.rng, + "browser": self.browser, + "browser_screenshots": self.browser_screenshots, + "browser_sessions": self.browser_sessions, + "browser_persistent": self.browser_persistent, + "test_monitor": self.test_monitor, + "impact_factor_cache": self.impact_factor_cache, + "openathens_cache": self.openathens_cache, + "scholar": self.scholar, + "scholar_cache": self.scholar_cache, + "scholar_library": self.scholar_library, + "writer": self.writer, + }
+ + + def __repr__(self) -> str: + return f"ScitexPaths(base='{self._base_dir}')"
+ + + +# Singleton instance for convenience (uses default SCITEX_DIR) +_default_paths: Optional[ScitexPaths] = None + + +
+[docs] +def get_paths(base_dir: Optional[str] = None) -> ScitexPaths: + """Get ScitexPaths instance. + + Parameters + ---------- + base_dir : str, optional + Explicit base directory. If None, returns cached default instance. + + Returns + ------- + ScitexPaths + Path manager instance. + """ + global _default_paths + + if base_dir is not None: + return ScitexPaths(base_dir) + + if _default_paths is None: + _default_paths = ScitexPaths() + + return _default_paths
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_context/_detect_environment.html b/src/scitex/_sphinx_html/_modules/scitex_context/_detect_environment.html new file mode 100644 index 000000000..01aaca7bd --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_context/_detect_environment.html @@ -0,0 +1,841 @@ + + + + + + + + scitex_context._detect_environment — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_context._detect_environment

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-07-04 11:20:00 (ywatanabe)"
+# File: ./src/scitex/gen/_detect_environment.py
+
+"""
+Enhanced environment detection for SciTeX.
+
+Provides better discrimination between:
+- Python scripts
+- IPython console
+- Jupyter notebooks
+- Interactive Python
+"""
+
+import os
+import sys
+from typing import Literal, Tuple
+
+__all__ = ["detect_environment", "get_output_directory"]
+
+EnvironmentType = Literal["script", "jupyter", "ipython", "interactive", "unknown"]
+
+
+
+[docs] +def detect_environment() -> EnvironmentType: + """ + Detect the current execution environment. + + Returns + ------- + EnvironmentType + One of: 'script', 'jupyter', 'ipython', 'interactive', 'unknown' + + Examples + -------- + >>> env = detect_environment() + >>> print(f"Running in: {env}") + Running in: script + """ + # Check for Jupyter notebook + if "ipykernel" in sys.modules: + try: + ip = get_ipython() + if ip and type(ip).__name__ == "ZMQInteractiveShell": + return "jupyter" + except NameError: + pass + + # Check for IPython console + try: + ip = get_ipython() + if ip and type(ip).__name__ == "TerminalInteractiveShell": + return "ipython" + except NameError: + pass + + # Check for regular Python script + if sys.argv and sys.argv[0] and sys.argv[0].endswith(".py"): + return "script" + + # Check for interactive Python + if hasattr(sys, "ps1"): + return "interactive" + + return "unknown"
+ + + +
+[docs] +def get_output_directory( + specified_path: str, env_type: EnvironmentType = None +) -> Tuple[str, bool]: + """ + Get the appropriate output directory based on environment. + + Parameters + ---------- + specified_path : str + The path specified by the user + env_type : EnvironmentType, optional + Override environment detection + + Returns + ------- + tuple[str, bool] + (output_directory, should_use_temp) + + Examples + -------- + >>> output_dir, use_temp = get_output_directory("data.csv") + >>> print(f"Save to: {output_dir}, Temp: {use_temp}") + Save to: ./script_out/data.csv, Temp: False + """ + import inspect + + if env_type is None: + env_type = detect_environment() + + # For absolute paths, use as-is + if specified_path.startswith("/"): + return specified_path, False + + # Get base directory based on environment + if env_type == "script": + # Use script location + try: + script_path = inspect.stack()[1].filename + if script_path and not script_path.startswith("<"): + script_dir = os.path.dirname(os.path.abspath(script_path)) + script_name = os.path.splitext(os.path.basename(script_path))[0] + base_dir = os.path.join(script_dir, f"{script_name}_out") + return os.path.join(base_dir, specified_path), False + except: + pass + + elif env_type == "jupyter": + # For Jupyter, use current working directory with subdirectory + # This keeps outputs near the notebook + base_dir = os.path.join(os.getcwd(), "notebook_outputs") + return os.path.join(base_dir, specified_path), False + + elif env_type in ["ipython", "interactive"]: + # Use temp directory for console sessions + user = os.getenv("USER", "unknown") + base_dir = f"/tmp/{user}/{env_type}" + return os.path.join(base_dir, specified_path), True + + # Fallback: use current directory + return os.path.join("./output", specified_path), False
+ + + +
+[docs] +def is_notebook() -> bool: + """Check if running in Jupyter notebook.""" + return detect_environment() == "jupyter"
+ + + +
+[docs] +def is_ipython() -> bool: + """Check if running in IPython (console or notebook).""" + return detect_environment() in ["jupyter", "ipython"]
+ + + +
+[docs] +def is_script() -> bool: + """Check if running as a script.""" + return detect_environment() == "script"
+ + + +# Backward compatibility +def is_ipython_legacy() -> bool: + """Legacy IPython detection for compatibility.""" + try: + __IPYTHON__ + return True + except NameError: + return False + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_context/_get_notebook_path.html b/src/scitex/_sphinx_html/_modules/scitex_context/_get_notebook_path.html new file mode 100644 index 000000000..1da6d7b5f --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_context/_get_notebook_path.html @@ -0,0 +1,959 @@ + + + + + + + + scitex_context._get_notebook_path — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_context._get_notebook_path

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-07-04 12:00:00 (ywatanabe)"
+# File: ./src/scitex/gen/_get_notebook_path.py
+
+"""
+Get the current Jupyter notebook path.
+
+This module provides functions to detect and retrieve the path
+of the currently running Jupyter notebook.
+"""
+
+import json
+import os
+from typing import Optional
+
+__all__ = ["get_notebook_path", "get_notebook_name"]
+
+
+
+[docs] +def get_notebook_path() -> Optional[str]: + """ + Get the full path of the current Jupyter notebook. + + Returns + ------- + Optional[str] + Full path to the notebook file, or None if not in a notebook + + Examples + -------- + >>> path = get_notebook_path() + >>> if path: + ... print(f"Running in notebook: {path}") + """ + try: + # Try to get from IPython + from IPython import get_ipython + + ip = get_ipython() + + if not ip: + return None + + # Check if we're in a notebook + if type(ip).__name__ != "ZMQInteractiveShell": + return None + + # Try multiple methods to get the notebook path + + # Method 1: From IPython's config + if hasattr(ip, "config") and hasattr(ip.config, "IPKernelApp"): + connection_file = ip.config.IPKernelApp.connection_file + if connection_file: + # Extract kernel ID from connection file + kernel_id = ( + os.path.basename(connection_file) + .split("-", 1)[1] + .replace(".json", "") + ) + + # Try to get notebook path from Jupyter server + notebook_path = _get_notebook_from_server(kernel_id) + if notebook_path: + return os.path.abspath(notebook_path) + + # Method 2: From environment variable (JupyterLab sets this) + if "JPY_SESSION_NAME" in os.environ: + session_name = os.environ["JPY_SESSION_NAME"] + if session_name.endswith(".ipynb"): + return os.path.abspath(session_name) + + # Method 3: From notebook's metadata + try: + # This works in some notebook environments + import ipykernel + import notebook + from notebook.notebookapp import list_running_servers + + for server in list_running_servers(): + response = _get_notebook_list(server["url"], server.get("token", "")) + if response: + for session in response: + if session["kernel"]["id"] == kernel_id: + return os.path.join( + server["notebook_dir"], session["notebook"]["path"] + ) + except: + pass + + except Exception: + pass + + return None
+ + + +def _get_notebook_from_server(kernel_id: str) -> Optional[str]: + """Try to get notebook path from Jupyter server API.""" + try: + import requests + from notebook.notebookapp import list_running_servers + + for server in list_running_servers(): + url = f"{server['url']}api/sessions" + token = server.get("token", "") + + if token: + headers = {"Authorization": f"token {token}"} + response = requests.get(url, headers=headers) + else: + response = requests.get(url) + + if response.status_code == 200: + sessions = response.json() + for session in sessions: + if session["kernel"]["id"] == kernel_id: + return session["notebook"]["path"] + except: + pass + + return None + + +def _get_notebook_list(server_url: str, token: str) -> Optional[list]: + """Get list of running notebooks from server.""" + try: + import requests + + url = f"{server_url}api/sessions" + + if token: + headers = {"Authorization": f"token {token}"} + response = requests.get(url, headers=headers) + else: + response = requests.get(url) + + if response.status_code == 200: + return response.json() + except: + pass + + return None + + +
+[docs] +def get_notebook_name() -> Optional[str]: + """ + Get just the name of the current notebook (without path). + + Returns + ------- + Optional[str] + Notebook filename, or None if not in a notebook + + Examples + -------- + >>> name = get_notebook_name() + >>> if name: + ... print(f"Notebook: {name}") + """ + notebook_path = get_notebook_path() + if notebook_path: + return os.path.basename(notebook_path) + return None
+ + + +
+[docs] +def get_notebook_directory() -> Optional[str]: + """ + Get the directory containing the current notebook. + + Returns + ------- + Optional[str] + Directory path, or None if not in a notebook + """ + notebook_path = get_notebook_path() + if notebook_path: + return os.path.dirname(os.path.abspath(notebook_path)) + return None
+ + + +# Simpler fallback method for when advanced detection fails +
+[docs] +def get_notebook_info_simple() -> tuple[Optional[str], Optional[str]]: + """ + Simple method to get notebook info using current working directory. + + Returns + ------- + tuple[Optional[str], Optional[str]] + (notebook_name, notebook_directory) + """ + try: + # In Jupyter, __file__ is not defined but we can use inspect + import inspect + import re + + # Get the call stack and look for notebook indicators + for frame_info in inspect.stack(): + filename = frame_info.filename + if filename: + # Check for ipynb in the filename + if filename.endswith(".ipynb"): + return os.path.basename(filename), os.path.dirname( + os.path.abspath(filename) + ) + + # Look for notebook execution patterns in the filename + # Jupyter often uses patterns like <ipython-input-...> or kernel UUIDs + if "<ipython-input" in filename or "ipykernel_" in filename: + # We're definitely in a notebook, need to find which one + break + + # If we can't find it in stack, check if we're in a notebook environment + from IPython import get_ipython + + ip = get_ipython() + + if ip and type(ip).__name__ == "ZMQInteractiveShell": + # We're in a notebook but can't determine the name from stack + # Try multiple strategies to find the notebook name + + # Strategy 1: Check IPython's config for hints + if hasattr(ip, "config") and hasattr(ip.config, "IPKernelApp"): + if hasattr(ip.config.IPKernelApp, "connection_file"): + conn_file = ip.config.IPKernelApp.connection_file + # Sometimes the connection file path contains hints about the notebook + if conn_file and ".ipynb" in conn_file: + match = re.search(r"([^/]+)\.ipynb", conn_file) + if match: + return match.group(0), os.getcwd() + + # Strategy 2: Check environment variables + for env_var in [ + "JUPYTER_NOTEBOOK_NAME", + "JPY_SESSION_NAME", + "NOTEBOOK_NAME", + ]: + if env_var in os.environ: + notebook_name = os.environ[env_var] + if notebook_name.endswith(".ipynb"): + return notebook_name, os.getcwd() + + # Strategy 3: Look for recently modified .ipynb files in current directory + cwd = os.getcwd() + try: + # Get all .ipynb files with their modification times + notebook_files = [] + for file in os.listdir(cwd): + if ( + file.endswith(".ipynb") + and not file.startswith(".") + and not file.endswith("_test_output.ipynb") + ): + file_path = os.path.join(cwd, file) + mtime = os.path.getmtime(file_path) + notebook_files.append((file, mtime)) + + # Sort by modification time (most recent first) + notebook_files.sort(key=lambda x: x[1], reverse=True) + + if notebook_files: + # Return the most recently modified notebook + # This is a good heuristic as the currently running notebook + # is likely to have been saved recently + return notebook_files[0][0], cwd + except: + pass + + # If no notebook found, return generic name + return "untitled.ipynb", cwd + + except: + pass + + return None, None
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_context/_suppress_output.html b/src/scitex/_sphinx_html/_modules/scitex_context/_suppress_output.html new file mode 100644 index 000000000..021294ca6 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_context/_suppress_output.html @@ -0,0 +1,714 @@ + + + + + + + + scitex_context._suppress_output — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_context._suppress_output

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-10-13 08:18:37 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex_repo/src/scitex/context/_suppress_output.py
+# ----------------------------------------
+from __future__ import annotations
+
+import os
+
+__FILE__ = "./src/scitex/context/_suppress_output.py"
+__DIR__ = os.path.dirname(__FILE__)
+# ----------------------------------------
+
+from contextlib import contextmanager, redirect_stderr, redirect_stdout
+
+
+
+[docs] +@contextmanager +def suppress_output(suppress=True): + """ + A context manager that suppresses stdout and stderr. + + Example: + with suppress_output(): + print("This will not be printed to the console.") + """ + if suppress: + # Open a file descriptor that points to os.devnull (a black hole for data) + with open(os.devnull, "w") as fnull: + # Temporarily redirect stdout and stderr to the file descriptor fnull + with redirect_stdout(fnull), redirect_stderr(fnull): + # Yield control back to the context block + yield + else: + # If suppress is False, just yield without redirecting output + yield
+ + + +quiet = suppress_output + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_cv/_draw.html b/src/scitex/_sphinx_html/_modules/scitex_cv/_draw.html new file mode 100644 index 000000000..3ae7512b5 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_cv/_draw.html @@ -0,0 +1,925 @@ + + + + + + + + scitex_cv._draw — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_cv._draw

+#!/usr/bin/env python3
+# Timestamp: 2026-01-08
+# File: src/scitex/cv/_draw.py
+"""Drawing utilities using cv2."""
+
+from __future__ import annotations
+
+from typing import Tuple
+
+import cv2
+import numpy as np
+
+
+
+[docs] +def rectangle( + img: np.ndarray, + pt1: Tuple[int, int], + pt2: Tuple[int, int], + color: Tuple[int, int, int] = (0, 255, 0), + thickness: int = 2, + filled: bool = False, +) -> np.ndarray: + """Draw a rectangle on an image. + + Parameters + ---------- + img : np.ndarray + Input image (modified in place). + pt1 : tuple + Top-left corner (x, y). + pt2 : tuple + Bottom-right corner (x, y). + color : tuple + BGR color. + thickness : int + Line thickness (-1 for filled). + filled : bool + If True, fill the rectangle. + + Returns + ------- + np.ndarray + Image with rectangle. + """ + t = -1 if filled else thickness + cv2.rectangle(img, pt1, pt2, color, t) + return img
+ + + +
+[docs] +def circle( + img: np.ndarray, + center: Tuple[int, int], + radius: int, + color: Tuple[int, int, int] = (0, 255, 0), + thickness: int = 2, + filled: bool = False, +) -> np.ndarray: + """Draw a circle on an image. + + Parameters + ---------- + img : np.ndarray + Input image (modified in place). + center : tuple + Center coordinates (x, y). + radius : int + Circle radius. + color : tuple + BGR color. + thickness : int + Line thickness. + filled : bool + If True, fill the circle. + + Returns + ------- + np.ndarray + Image with circle. + """ + t = -1 if filled else thickness + cv2.circle(img, center, radius, color, t) + return img
+ + + +
+[docs] +def line( + img: np.ndarray, + pt1: Tuple[int, int], + pt2: Tuple[int, int], + color: Tuple[int, int, int] = (0, 255, 0), + thickness: int = 2, +) -> np.ndarray: + """Draw a line on an image. + + Parameters + ---------- + img : np.ndarray + Input image (modified in place). + pt1 : tuple + Start point (x, y). + pt2 : tuple + End point (x, y). + color : tuple + BGR color. + thickness : int + Line thickness. + + Returns + ------- + np.ndarray + Image with line. + """ + cv2.line(img, pt1, pt2, color, thickness) + return img
+ + + +
+[docs] +def text( + img: np.ndarray, + text: str, + position: Tuple[int, int], + color: Tuple[int, int, int] = (255, 255, 255), + scale: float = 1.0, + thickness: int = 2, + font: str = "simplex", +) -> np.ndarray: + """Draw text on an image. + + Parameters + ---------- + img : np.ndarray + Input image (modified in place). + text : str + Text to draw. + position : tuple + Bottom-left corner of text (x, y). + color : tuple + BGR color. + scale : float + Font scale. + thickness : int + Text thickness. + font : str + Font type: 'simplex', 'plain', 'duplex', 'complex', 'triplex'. + + Returns + ------- + np.ndarray + Image with text. + """ + font_map = { + "simplex": cv2.FONT_HERSHEY_SIMPLEX, + "plain": cv2.FONT_HERSHEY_PLAIN, + "duplex": cv2.FONT_HERSHEY_DUPLEX, + "complex": cv2.FONT_HERSHEY_COMPLEX, + "triplex": cv2.FONT_HERSHEY_TRIPLEX, + } + font_face = font_map.get(font, cv2.FONT_HERSHEY_SIMPLEX) + cv2.putText(img, text, position, font_face, scale, color, thickness) + return img
+ + + +
+[docs] +def polylines( + img: np.ndarray, + points: np.ndarray, + closed: bool = True, + color: Tuple[int, int, int] = (0, 255, 0), + thickness: int = 2, +) -> np.ndarray: + """Draw polylines on an image. + + Parameters + ---------- + img : np.ndarray + Input image (modified in place). + points : np.ndarray + Array of points with shape (N, 1, 2) or (N, 2). + closed : bool + Whether to close the polyline. + color : tuple + BGR color. + thickness : int + Line thickness. + + Returns + ------- + np.ndarray + Image with polylines. + """ + if len(points.shape) == 2: + points = points.reshape((-1, 1, 2)) + cv2.polylines(img, [points.astype(np.int32)], closed, color, thickness) + return img
+ + + +
+[docs] +def arrow( + img: np.ndarray, + pt1: Tuple[int, int], + pt2: Tuple[int, int], + color: Tuple[int, int, int] = (0, 255, 0), + thickness: int = 2, + tip_length: float = 0.1, +) -> np.ndarray: + """Draw an arrowed line on an image. + + Parameters + ---------- + img : np.ndarray + Input image (modified in place). + pt1 : tuple + Start point (x, y). + pt2 : tuple + End point (arrow tip) (x, y). + color : tuple + BGR color. + thickness : int + Line thickness. + tip_length : float + Arrow tip length as fraction of line length. + + Returns + ------- + np.ndarray + Image with arrow. + """ + cv2.arrowedLine(img, pt1, pt2, color, thickness, tipLength=tip_length) + return img
+ + + +__all__ = [ + "rectangle", + "circle", + "line", + "text", + "polylines", + "arrow", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_cv/_filters.html b/src/scitex/_sphinx_html/_modules/scitex_cv/_filters.html new file mode 100644 index 000000000..14eb174e4 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_cv/_filters.html @@ -0,0 +1,903 @@ + + + + + + + + scitex_cv._filters — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_cv._filters

+#!/usr/bin/env python3
+# Timestamp: 2026-01-08
+# File: src/scitex/cv/_filters.py
+"""Image filtering utilities using cv2."""
+
+from __future__ import annotations
+
+import cv2
+import numpy as np
+
+
+
+[docs] +def blur( + img: np.ndarray, + ksize: int = 5, + method: str = "gaussian", +) -> np.ndarray: + """Apply blur to an image. + + Parameters + ---------- + img : np.ndarray + Input image. + ksize : int + Kernel size (must be odd). + method : str + Blur method: 'gaussian', 'median', 'box', 'bilateral'. + + Returns + ------- + np.ndarray + Blurred image. + """ + if ksize % 2 == 0: + ksize += 1 + + if method == "gaussian": + return cv2.GaussianBlur(img, (ksize, ksize), 0) + elif method == "median": + return cv2.medianBlur(img, ksize) + elif method == "box": + return cv2.blur(img, (ksize, ksize)) + elif method == "bilateral": + return cv2.bilateralFilter(img, ksize, 75, 75) + else: + raise ValueError(f"Unknown blur method: {method}")
+ + + +
+[docs] +def sharpen(img: np.ndarray, strength: float = 1.0) -> np.ndarray: + """Sharpen an image. + + Parameters + ---------- + img : np.ndarray + Input image. + strength : float + Sharpening strength. + + Returns + ------- + np.ndarray + Sharpened image. + """ + kernel = np.array( + [ + [0, -1, 0], + [-1, 5, -1], + [0, -1, 0], + ], + dtype=np.float32, + ) + + if strength != 1.0: + kernel = np.eye(3) + strength * (kernel - np.eye(3)) + + return cv2.filter2D(img, -1, kernel)
+ + + +
+[docs] +def edge_detect( + img: np.ndarray, + method: str = "canny", + low: int = 50, + high: int = 150, +) -> np.ndarray: + """Detect edges in an image. + + Parameters + ---------- + img : np.ndarray + Input image. + method : str + Edge detection method: 'canny', 'sobel', 'laplacian'. + low, high : int + Thresholds for Canny detector. + + Returns + ------- + np.ndarray + Edge image. + """ + if len(img.shape) == 3: + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + else: + gray = img + + if method == "canny": + return cv2.Canny(gray, low, high) + elif method == "sobel": + sobel_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3) + sobel_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3) + return np.uint8(np.sqrt(sobel_x**2 + sobel_y**2)) + elif method == "laplacian": + return np.uint8(np.abs(cv2.Laplacian(gray, cv2.CV_64F))) + else: + raise ValueError(f"Unknown edge method: {method}")
+ + + +
+[docs] +def threshold( + img: np.ndarray, + thresh: int = 127, + maxval: int = 255, + method: str = "binary", +) -> np.ndarray: + """Apply thresholding to an image. + + Parameters + ---------- + img : np.ndarray + Input image. + thresh : int + Threshold value. + maxval : int + Maximum value. + method : str + Threshold method: 'binary', 'binary_inv', 'trunc', 'tozero', + 'tozero_inv', 'otsu', 'adaptive_mean', 'adaptive_gaussian'. + + Returns + ------- + np.ndarray + Thresholded image. + """ + if len(img.shape) == 3: + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + else: + gray = img + + method_map = { + "binary": cv2.THRESH_BINARY, + "binary_inv": cv2.THRESH_BINARY_INV, + "trunc": cv2.THRESH_TRUNC, + "tozero": cv2.THRESH_TOZERO, + "tozero_inv": cv2.THRESH_TOZERO_INV, + } + + if method == "otsu": + _, result = cv2.threshold(gray, 0, maxval, cv2.THRESH_BINARY + cv2.THRESH_OTSU) + elif method == "adaptive_mean": + result = cv2.adaptiveThreshold( + gray, maxval, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2 + ) + elif method == "adaptive_gaussian": + result = cv2.adaptiveThreshold( + gray, + maxval, + cv2.ADAPTIVE_THRESH_GAUSSIAN_C, + cv2.THRESH_BINARY, + 11, + 2, + ) + else: + thresh_type = method_map.get(method, cv2.THRESH_BINARY) + _, result = cv2.threshold(gray, thresh, maxval, thresh_type) + + return result
+ + + +
+[docs] +def denoise( + img: np.ndarray, + strength: int = 10, + method: str = "fastNl", +) -> np.ndarray: + """Denoise an image. + + Parameters + ---------- + img : np.ndarray + Input image. + strength : int + Denoising strength. + method : str + Denoising method: 'fastNl', 'bilateral'. + + Returns + ------- + np.ndarray + Denoised image. + """ + if method == "fastNl": + if len(img.shape) == 3: + return cv2.fastNlMeansDenoisingColored(img, None, strength, strength) + else: + return cv2.fastNlMeansDenoising(img, None, strength) + elif method == "bilateral": + return cv2.bilateralFilter(img, 9, strength * 7.5, strength * 7.5) + else: + raise ValueError(f"Unknown denoise method: {method}")
+ + + +__all__ = [ + "blur", + "sharpen", + "edge_detect", + "threshold", + "denoise", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_cv/_io.html b/src/scitex/_sphinx_html/_modules/scitex_cv/_io.html new file mode 100644 index 000000000..0e33b5bd3 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_cv/_io.html @@ -0,0 +1,843 @@ + + + + + + + + scitex_cv._io — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_cv._io

+#!/usr/bin/env python3
+# Timestamp: 2026-01-08
+# File: src/scitex/cv/_io.py
+"""Image I/O utilities using cv2."""
+
+from __future__ import annotations
+
+from pathlib import Path
+from typing import Union
+
+import cv2
+import numpy as np
+
+
+
+[docs] +def load( + path: Union[str, Path], + color: bool = True, + alpha: bool = False, +) -> np.ndarray: + """Load an image from file. + + Parameters + ---------- + path : str or Path + Image file path. + color : bool + If True, load as color (BGR). If False, load as grayscale. + alpha : bool + If True, preserve alpha channel (BGRA). + + Returns + ------- + np.ndarray + Image array in BGR or grayscale format. + """ + path = str(path) + if alpha: + img = cv2.imread(path, cv2.IMREAD_UNCHANGED) + elif color: + img = cv2.imread(path, cv2.IMREAD_COLOR) + else: + img = cv2.imread(path, cv2.IMREAD_GRAYSCALE) + + if img is None: + raise FileNotFoundError(f"Could not load image: {path}") + return img
+ + + +
+[docs] +def save( + img: np.ndarray, + path: Union[str, Path], + quality: int = 95, +) -> Path: + """Save an image to file. + + Parameters + ---------- + img : np.ndarray + Image array (BGR or grayscale). + path : str or Path + Output file path. + quality : int + JPEG quality (0-100) or PNG compression (0-9). + + Returns + ------- + Path + Path to saved file. + """ + path = Path(path) + path.parent.mkdir(parents=True, exist_ok=True) + + ext = path.suffix.lower() + if ext in [".jpg", ".jpeg"]: + params = [cv2.IMWRITE_JPEG_QUALITY, quality] + elif ext == ".png": + # PNG compression is 0-9, map quality to this + compression = max(0, min(9, (100 - quality) // 10)) + params = [cv2.IMWRITE_PNG_COMPRESSION, compression] + else: + params = [] + + success = cv2.imwrite(str(path), img, params) + if not success: + raise OSError(f"Failed to save image: {path}") + return path
+ + + +
+[docs] +def to_rgb(img: np.ndarray) -> np.ndarray: + """Convert BGR image to RGB. + + Parameters + ---------- + img : np.ndarray + BGR image. + + Returns + ------- + np.ndarray + RGB image. + """ + if len(img.shape) == 2: + return cv2.cvtColor(img, cv2.COLOR_GRAY2RGB) + if img.shape[2] == 4: + return cv2.cvtColor(img, cv2.COLOR_BGRA2RGB) + return cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
+ + + +
+[docs] +def to_bgr(img: np.ndarray) -> np.ndarray: + """Convert RGB image to BGR. + + Parameters + ---------- + img : np.ndarray + RGB image. + + Returns + ------- + np.ndarray + BGR image. + """ + if len(img.shape) == 2: + return cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) + if img.shape[2] == 4: + return cv2.cvtColor(img, cv2.COLOR_RGBA2BGR) + return cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
+ + + +
+[docs] +def to_gray(img: np.ndarray) -> np.ndarray: + """Convert image to grayscale. + + Parameters + ---------- + img : np.ndarray + Color image (BGR or RGB). + + Returns + ------- + np.ndarray + Grayscale image. + """ + if len(img.shape) == 2: + return img + if img.shape[2] == 4: + return cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY) + return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
+ + + +__all__ = [ + "load", + "save", + "to_rgb", + "to_bgr", + "to_gray", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_cv/_transform.html b/src/scitex/_sphinx_html/_modules/scitex_cv/_transform.html new file mode 100644 index 000000000..15ff426bc --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_cv/_transform.html @@ -0,0 +1,870 @@ + + + + + + + + scitex_cv._transform — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_cv._transform

+#!/usr/bin/env python3
+# Timestamp: 2026-01-08
+# File: src/scitex/cv/_transform.py
+"""Image transformation utilities using cv2."""
+
+from __future__ import annotations
+
+from typing import Optional, Tuple, Union
+
+import cv2
+import numpy as np
+
+
+
+[docs] +def resize( + img: np.ndarray, + size: Optional[Tuple[int, int]] = None, + scale: Optional[float] = None, + interpolation: str = "linear", +) -> np.ndarray: + """Resize an image. + + Parameters + ---------- + img : np.ndarray + Input image. + size : tuple of int, optional + Target size as (width, height). + scale : float, optional + Scale factor (alternative to size). + interpolation : str + Interpolation method: 'nearest', 'linear', 'cubic', 'area', 'lanczos'. + + Returns + ------- + np.ndarray + Resized image. + """ + interp_map = { + "nearest": cv2.INTER_NEAREST, + "linear": cv2.INTER_LINEAR, + "cubic": cv2.INTER_CUBIC, + "area": cv2.INTER_AREA, + "lanczos": cv2.INTER_LANCZOS4, + } + interp = interp_map.get(interpolation, cv2.INTER_LINEAR) + + if scale is not None: + return cv2.resize(img, None, fx=scale, fy=scale, interpolation=interp) + elif size is not None: + return cv2.resize(img, size, interpolation=interp) + else: + raise ValueError("Either size or scale must be provided")
+ + + +
+[docs] +def rotate( + img: np.ndarray, + angle: float, + center: Optional[Tuple[int, int]] = None, + scale: float = 1.0, +) -> np.ndarray: + """Rotate an image. + + Parameters + ---------- + img : np.ndarray + Input image. + angle : float + Rotation angle in degrees (counter-clockwise). + center : tuple of int, optional + Rotation center. Defaults to image center. + scale : float + Scale factor. + + Returns + ------- + np.ndarray + Rotated image. + """ + h, w = img.shape[:2] + if center is None: + center = (w // 2, h // 2) + + matrix = cv2.getRotationMatrix2D(center, angle, scale) + return cv2.warpAffine(img, matrix, (w, h))
+ + + +
+[docs] +def flip( + img: np.ndarray, + direction: str = "horizontal", +) -> np.ndarray: + """Flip an image. + + Parameters + ---------- + img : np.ndarray + Input image. + direction : str + Flip direction: 'horizontal', 'vertical', or 'both'. + + Returns + ------- + np.ndarray + Flipped image. + """ + flip_map = { + "horizontal": 1, + "vertical": 0, + "both": -1, + } + code = flip_map.get(direction, 1) + return cv2.flip(img, code)
+ + + +
+[docs] +def crop( + img: np.ndarray, + x: int, + y: int, + width: int, + height: int, +) -> np.ndarray: + """Crop a region from an image. + + Parameters + ---------- + img : np.ndarray + Input image. + x, y : int + Top-left corner coordinates. + width, height : int + Crop dimensions. + + Returns + ------- + np.ndarray + Cropped image. + """ + return img[y : y + height, x : x + width].copy()
+ + + +
+[docs] +def pad( + img: np.ndarray, + top: int = 0, + bottom: int = 0, + left: int = 0, + right: int = 0, + color: Union[int, Tuple[int, ...]] = 0, + mode: str = "constant", +) -> np.ndarray: + """Pad an image. + + Parameters + ---------- + img : np.ndarray + Input image. + top, bottom, left, right : int + Padding sizes. + color : int or tuple + Padding color for constant mode. + mode : str + Padding mode: 'constant', 'reflect', 'replicate'. + + Returns + ------- + np.ndarray + Padded image. + """ + mode_map = { + "constant": cv2.BORDER_CONSTANT, + "reflect": cv2.BORDER_REFLECT, + "replicate": cv2.BORDER_REPLICATE, + } + border_type = mode_map.get(mode, cv2.BORDER_CONSTANT) + return cv2.copyMakeBorder(img, top, bottom, left, right, border_type, value=color)
+ + + +__all__ = [ + "resize", + "rotate", + "flip", + "crop", + "pad", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_cli/_utils.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_cli/_utils.html new file mode 100644 index 000000000..090b3ebe3 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_cli/_utils.html @@ -0,0 +1,870 @@ + + + + + + + + scitex_dev._cli._utils — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._cli._utils

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""CLI utilities for consuming Result objects."""
+
+from __future__ import annotations
+
+import json
+import sys
+from typing import Any, Callable
+
+from .._core.types import Result
+
+
+
+[docs] +def handle_result( + result: Result, + as_json: bool = False, + file: Any = None, +) -> int: + """Format and print a Result, return the exit code. + + Parameters + ---------- + result : Result + The structured result to display. + as_json : bool + If True, output full JSON. If False, human-friendly text. + file : file-like | None + Output stream. Defaults to stdout/stderr based on success. + + Returns + ------- + int + Exit code suitable for ``sys.exit()``. + """ + if as_json: + out = file or sys.stdout + print(result.to_json(), file=out) + elif result.success: + out = file or sys.stdout + data = result.data + if isinstance(data, (dict, list, tuple)): + print(json.dumps(data, indent=2, default=str), file=out) + else: + print(data, file=out) + else: + out = file or sys.stderr + print(f"Error: {result.error}", file=out) + if result.hints_on_error: + print("", file=out) + for hint in result.hints_on_error: + print(f" - {hint}", file=out) + + return result.exit_code
+ + + +
+[docs] +def run_as_cli( + fn: Callable, + as_json: bool = False, + **kwargs: Any, +) -> None: + """Call a ``@supports_return_as`` function and exit with proper code. + + Parameters + ---------- + fn : Callable + A function decorated with ``@supports_return_as``. + as_json : bool + If True, output full JSON. + **kwargs + Arguments to pass to ``fn``. + """ + result = fn(**kwargs, return_as="result") + code = handle_result(result, as_json=as_json) + sys.exit(code)
+ + + +
+[docs] +def wrap_as_cli( + fn: Callable, + as_json: bool = False, + **kwargs: Any, +) -> None: + """Call any function and display its result via CLI. + + Like ``wrap_as_mcp`` but for terminal output. Wraps any plain + function in Result, formats based on ``as_json``, and exits + with proper exit code. + + Parameters + ---------- + fn : Callable + Any callable returning data or raising exceptions. + as_json : bool + If True, output full JSON Result. If False, human-friendly text. + **kwargs + Arguments to pass to ``fn``. + """ + from .._core.errors import classify_exception + + try: + data = fn(**kwargs) + result = Result(success=True, data=data) + except Exception as exc: + error_code = classify_exception(exc) + hints_on_error = [] + suggestion = getattr(exc, "suggestion", None) + if suggestion: + hints_on_error.append(suggestion) + suggestions = getattr(exc, "suggestions", None) + if suggestions and isinstance(suggestions, list): + hints_on_error.extend(suggestions) + context = getattr(exc, "context", {}) + result = Result( + success=False, + error=str(exc), + error_code=error_code.value, + context=context if isinstance(context, dict) else {}, + hints_on_error=hints_on_error, + ) + + code = handle_result(result, as_json=as_json) + sys.exit(code)
+ + + +# --- Reusable CLI option factories --- + + +
+[docs] +def json_option(fn: Callable) -> Callable: + """Click decorator: adds ``--json`` flag as ``as_json`` parameter. + + Uses lazy ``import click`` so scitex-dev stays stdlib-only. + """ + import click + + return click.option( + "--json", + "as_json", + is_flag=True, + help="Output as structured JSON (Result envelope).", + )(fn)
+ + + +
+[docs] +def dry_run_option(fn: Callable) -> Callable: + """Click decorator: adds ``--dry-run`` flag. + + Uses lazy ``import click`` so scitex-dev stays stdlib-only. + """ + import click + + return click.option( + "--dry-run", + is_flag=True, + help="Preview changes without executing.", + )(fn)
+ + + +
+[docs] +def add_json_argument(parser: Any) -> None: + """Add ``--json`` flag to an argparse parser.""" + parser.add_argument( + "--json", + dest="as_json", + action="store_true", + default=False, + help="Output as structured JSON (Result envelope).", + )
+ + + +
+[docs] +def add_dry_run_argument(parser: Any) -> None: + """Add ``--dry-run`` flag to an argparse parser.""" + parser.add_argument( + "--dry-run", + dest="dry_run", + action="store_true", + default=False, + help="Preview changes without executing.", + )
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_core/decorators.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/decorators.html new file mode 100644 index 000000000..8d1edefaf --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/decorators.html @@ -0,0 +1,746 @@ + + + + + + + + scitex_dev._core.decorators — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._core.decorators

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Decorator for opt-in structured Result wrapping.
+
+The ``@supports_return_as`` decorator adds a ``return_as`` keyword
+parameter to any function. By default the function behaves normally.
+With ``return_as="result"``, the return value is wrapped in a Result.
+"""
+
+from __future__ import annotations
+
+import functools
+from typing import Any, Callable
+
+from .errors import classify_exception
+from .types import Result
+
+
+
+[docs] +def supports_return_as(fn: Callable) -> Callable: + """Add ``return_as="result"`` support to a function. + + - ``return_as=None`` (default): data returned, exceptions raised. + - ``return_as="result"``: wrapped in ``Result``. + - Any other value: passed through to the original function. + + Examples + -------- + >>> @supports_return_as + ... def add(a: int, b: int) -> int: + ... return a + b + >>> add(1, 2) + 3 + >>> result = add(1, 2, return_as="result") + >>> result.success + True + >>> result.data + 3 + """ + + @functools.wraps(fn) + def wrapper(*args: Any, return_as: str | None = None, **kwargs: Any) -> Any: + if return_as != "result": + if return_as is not None: + kwargs["return_as"] = return_as + return fn(*args, **kwargs) + + try: + data = fn(*args, **kwargs) + return Result(success=True, data=data) + except Exception as exc: + error_code = classify_exception(exc) + suggestion = getattr(exc, "suggestion", None) + context = getattr(exc, "context", {}) + hints_on_error = [] + if suggestion: + hints_on_error.append(suggestion) + suggestions = getattr(exc, "suggestions", None) + if suggestions and isinstance(suggestions, list): + hints_on_error.extend(suggestions) + + return Result( + success=False, + error=str(exc), + error_code=error_code.value, + context=context if isinstance(context, dict) else {}, + hints_on_error=hints_on_error, + ) + + return wrapper
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_core/errors.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/errors.html new file mode 100644 index 000000000..9dd1e3f47 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/errors.html @@ -0,0 +1,823 @@ + + + + + + + + scitex_dev._core.errors — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._core.errors

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Error code registry for LLM-friendly error categorization.
+
+Provides machine-readable error codes that map to CLI exit codes
+and guide LLM error recovery.
+"""
+
+from __future__ import annotations
+
+from enum import Enum
+
+
+
+[docs] +class ErrorCode(str, Enum): + """Machine-readable error codes for structured error responses.""" + + OK = "E000" + VALIDATION = "E001" + FILE_NOT_FOUND = "E002" + PERMISSION = "E003" + DEPENDENCY = "E004" + TIMEOUT = "E005" + RATE_LIMITED = "E006" + NETWORK = "E007" + CONFIG = "E008" + CONFLICT = "E009" + INTERNAL = "E999" + + @property + def exit_code(self) -> int: + """POSIX-style exit code for this error category.""" + return _EXIT_CODES.get(self, 1)
+ + + +_EXIT_CODES = { + ErrorCode.OK: 0, + ErrorCode.VALIDATION: 2, + ErrorCode.FILE_NOT_FOUND: 1, + ErrorCode.PERMISSION: 4, + ErrorCode.DEPENDENCY: 3, + ErrorCode.TIMEOUT: 5, + ErrorCode.RATE_LIMITED: 5, + ErrorCode.NETWORK: 1, + ErrorCode.CONFIG: 2, + ErrorCode.CONFLICT: 6, + ErrorCode.INTERNAL: 1, +} + +_BUILTIN_ERROR_MAP: dict[type, ErrorCode] = { + FileNotFoundError: ErrorCode.FILE_NOT_FOUND, + PermissionError: ErrorCode.PERMISSION, + TimeoutError: ErrorCode.TIMEOUT, + ConnectionError: ErrorCode.NETWORK, + ImportError: ErrorCode.DEPENDENCY, + ValueError: ErrorCode.VALIDATION, + TypeError: ErrorCode.VALIDATION, + KeyError: ErrorCode.CONFIG, +} + + +
+[docs] +class ScitexError(Exception): + """Canonical SciTeX exception for structured failures. + + Use when the failure crosses an MCP / CLI / HTTP boundary and the caller + (often an LLM agent) needs a machine-readable category plus a human + remediation hint. For plain Python errors raised inside a script, + prefer the standard library exceptions (``ValueError``, ``FileNotFoundError``, + etc.) — see ``general/03_interface/01_python-api/09_error-handling.md``. + + Parameters + ---------- + message : str + Human-readable description of the failure. + code : ErrorCode, optional + Machine-readable category. Defaults to ``ErrorCode.INTERNAL``. + remediation : str, optional + How to fix it (e.g. ``"pip install scitex-io[h5]"``). + + Examples + -------- + >>> raise ScitexError( + ... "h5py not installed", + ... code=ErrorCode.DEPENDENCY, + ... remediation="pip install scitex-io[h5]", + ... ) + """ + + def __init__( + self, + message: str, + *, + code: ErrorCode = ErrorCode.INTERNAL, + remediation: str | None = None, + ) -> None: + super().__init__(message) + self.message = message + self.error_code = code + self.remediation = remediation + +
+[docs] + def to_dict(self) -> dict[str, str]: + """Serialize to the structured shape consumed by MCP tools and `--json`.""" + out: dict[str, str] = { + "code": self.error_code.value, + "message": self.message, + } + if self.remediation: + out["remediation"] = self.remediation + return out
+ + + def __str__(self) -> str: + base = f"[{self.error_code.value}] {self.message}" + if self.remediation: + return f"{base} (remediation: {self.remediation})" + return base
+ + + +
+[docs] +def classify_exception(exc: Exception) -> ErrorCode: + """Classify an exception into an ErrorCode. + + Checks for a ``.error_code`` attribute first (SciTeXError convention), + then falls back to built-in exception type mapping. + """ + code = getattr(exc, "error_code", None) + if code is not None: + if isinstance(code, ErrorCode): + return code + if isinstance(code, str): + try: + return ErrorCode(code) + except ValueError: + pass + + for exc_type, error_code in _BUILTIN_ERROR_MAP.items(): + if isinstance(exc, exc_type): + return error_code + + return ErrorCode.INTERNAL
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_core/imports.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/imports.html new file mode 100644 index 000000000..47e5b922b --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/imports.html @@ -0,0 +1,789 @@ + + + + + + + + scitex_dev._core.imports — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._core.imports

+"""Optional-import helper for SciTeX standalone packages.
+
+Use in a `__init__.py` to replace inline `try/except ImportError` blocks:
+
+    from scitex_dev import try_import_optional
+
+    h5py = try_import_optional("h5py", extra="hdf5", pkg="scitex-io")
+    ndarray = try_import_optional("numpy", attr="ndarray")  # always installed
+    rel_mod = try_import_optional(".sub.thing", package="scitex_io")
+
+Returns the imported object on success and ``None`` on ``ImportError``.
+The original failure (module name + extra/pkg metadata) is recorded on the
+returned ``None`` is impossible — instead, callers can read the registry via
+``last_install_hint(name)`` to construct precise error messages at the
+use-site without re-raising.
+
+The `NotInstalled` sentinel proposal (see python-api skill TODO.md) is
+deferred — Pattern A (`X = None` always present in `__all__`) plus a
+companion `XXX_AVAILABLE = X is not None` flag covers all current use cases.
+"""
+
+from __future__ import annotations
+
+import importlib
+from dataclasses import dataclass
+from typing import Any
+
+__all__ = ["try_import_optional", "last_install_hint", "InstallHint"]
+
+
+
+[docs] +@dataclass(frozen=True) +class InstallHint: + """Metadata to help a caller surface a useful install message.""" + + module: str + extra: str | None + pkg: str | None + + def message(self) -> str: + if self.pkg and self.extra: + return ( + f"`{self.module}` is required. " + f"Install with: pip install '{self.pkg}[{self.extra}]'" + ) + if self.extra: + return ( + f"`{self.module}` is required. " + f"Re-install with the '{self.extra}' extra." + ) + return f"`{self.module}` is required. Install with: pip install {self.module}"
+ + + +_HINTS: dict[str, InstallHint] = {} + + +
+[docs] +def last_install_hint(name: str) -> InstallHint | None: + """Return the most recently recorded install hint for ``name`` (or ``None``).""" + return _HINTS.get(name)
+ + + +
+[docs] +def try_import_optional( + module_path: str, + attr: str | None = None, + *, + extra: str | None = None, + pkg: str | None = None, + package: str | None = None, +) -> Any: + """Import ``module_path``; return ``None`` on ``ImportError``. + + Parameters + ---------- + module_path : str + Module to import. Leading ``.`` triggers relative resolution against + ``package`` (mirrors :func:`importlib.import_module`). + attr : str, optional + If given, return ``getattr(module, attr)`` instead of the module. + A missing attribute is treated identically to a failed import. + extra : str, optional + Name of the pip extra that pulls this dependency (used for the + install hint surfaced via :func:`last_install_hint`). + pkg : str, optional + Distribution name owning the extra (e.g. ``"scitex-io"``). + package : str, optional + Anchor for relative imports. + + Returns + ------- + object or None + The imported module/attribute, or ``None`` on failure. + """ + if module_path.startswith(".") and package is None: + raise ValueError( + "relative imports require an explicit `package=` argument " + f"(got module_path={module_path!r})" + ) + try: + mod = importlib.import_module(module_path, package=package) + except ImportError: + _HINTS[module_path] = InstallHint(module=module_path, extra=extra, pkg=pkg) + return None + + if attr is None: + return mod + try: + return getattr(mod, attr) + except AttributeError: + _HINTS[module_path] = InstallHint(module=module_path, extra=extra, pkg=pkg) + return None
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_core/side_effects.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/side_effects.html new file mode 100644 index 000000000..0559b4f7a --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/side_effects.html @@ -0,0 +1,717 @@ + + + + + + + + scitex_dev._core.side_effects — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_dev._core.side_effects

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Side effect declaration for mutation operations."""
+
+from __future__ import annotations
+
+from dataclasses import dataclass
+from typing import Literal
+
+SideEffectType = Literal[
+    "file_create",
+    "file_modify",
+    "file_delete",
+    "network",
+    "state_change",
+    "cache_write",
+]
+
+
+
+[docs] +@dataclass(frozen=True) +class SideEffect: + """A declared side effect of a function. + + Attributes + ---------- + type : str + Category (file_create, file_modify, file_delete, network, + state_change, cache_write). + target : str + What is affected (file path, URL, description). + undoable : bool + Whether the effect can be reversed. + """ + + type: SideEffectType + target: str + undoable: bool = False + + def __str__(self) -> str: + return f"{self.type}: {self.target}"
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_core/types.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/types.html new file mode 100644 index 000000000..1cc569a7c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_core/types.html @@ -0,0 +1,862 @@ + + + + + + + + scitex_dev._core.types — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._core.types

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Core Result type for LLM-friendly structured responses.
+
+The Result type wraps function return values with metadata needed by
+CLI and MCP consumers: success status, error codes, side effects,
+error hints, and idempotency flags.
+
+Python API users never see this type by default -- it is opt-in via
+the ``return_as="result"`` parameter added by ``@supports_return_as``.
+"""
+
+from __future__ import annotations
+
+import json
+from dataclasses import asdict, dataclass, field
+from typing import Generic, Optional, TypeVar
+
+T = TypeVar("T")
+
+
+def _normalize_hints(value) -> list[str]:
+    """Normalize hint values: None, "", and [] all become []."""
+    if value is None or value == "":
+        return []
+    if isinstance(value, str):
+        return [value] if value else []
+    if isinstance(value, list):
+        return [s for s in value if s]  # filter out None/"" items
+    return []
+
+
+
+[docs] +@dataclass +class Result(Generic[T]): + """Structured result wrapping function output with metadata. + + Attributes + ---------- + success : bool + Whether the operation succeeded. + data : T | None + The return value on success; None on failure. + error : str | None + Human-readable error message on failure. + error_code : str | None + Machine-readable error code (e.g. "E001"). + context : dict + Additional context (file paths, parameters, etc.). + side_effects : list[str] + Description of mutations performed. + hints_on_success : list[str] + Related tools the consumer might want (light, "see also" style). + Reserved for future use — currently empty. + hints_on_warning : list[str] + Hints for partial success, deprecation, or approaching limits. + Reserved for future use — currently empty. + hints_on_error : list[str] + Recovery guidance for expected failures (FAQ-style). + Accepts None, "", a single string, or a list. + idempotent : bool + Whether the operation is safe to retry. + version : str | None + API version for response schema evolution. + """ + + success: bool + data: Optional[T] = None + error: Optional[str] = None + error_code: Optional[str] = None + context: dict = field(default_factory=dict) + side_effects: list[str] = field(default_factory=list) + hints_on_success: list[str] = field(default_factory=list) + hints_on_warning: list[str] = field(default_factory=list) + hints_on_error: list[str] = field(default_factory=list) + idempotent: bool = False + version: Optional[str] = None + +
+[docs] + def __post_init__(self): + """Normalize hint fields (accept None, "", single string, or list).""" + self.side_effects = _normalize_hints(self.side_effects) + self.hints_on_success = _normalize_hints(self.hints_on_success) + self.hints_on_warning = _normalize_hints(self.hints_on_warning) + self.hints_on_error = _normalize_hints(self.hints_on_error)
+ + +
+[docs] + def to_dict(self) -> dict: + """Convert to a plain dictionary, stripping None values.""" + d = asdict(self) + return {k: v for k, v in d.items() if v is not None}
+ + +
+[docs] + def to_json(self, indent: int = 2) -> str: + """Serialize to a JSON string.""" + return json.dumps(self.to_dict(), indent=indent, default=str)
+ + + @property + def exit_code(self) -> int: + """Map error_code to a CLI exit code.""" + if self.success: + return 0 + return _error_code_to_exit(self.error_code) + +
+[docs] + @classmethod + def json_schema(cls) -> dict: + """Return JSON Schema describing the Result envelope.""" + return dict(RESULT_SCHEMA)
+
+ + + +RESULT_SCHEMA: dict = { + "type": "object", + "description": "Standardized Result envelope returned by all SciTeX MCP tools.", + "properties": { + "success": { + "type": "boolean", + "description": "Whether the operation succeeded.", + }, + "data": {"description": "Tool-specific return value (any JSON type)."}, + "error": { + "type": ["string", "null"], + "description": "Human-readable error message.", + }, + "error_code": { + "type": ["string", "null"], + "pattern": "^E\\d{3}$", + "description": "Machine-readable error code (E001-E999).", + }, + "context": { + "type": "object", + "description": "Additional context (file paths, params).", + }, + "side_effects": { + "type": "array", + "items": {"type": "string"}, + "description": "Mutations performed (file writes, network calls).", + }, + "hints_on_success": { + "type": "array", + "items": {"type": "string"}, + "description": "Related tools or actions (reserved, currently empty).", + }, + "hints_on_warning": { + "type": "array", + "items": {"type": "string"}, + "description": "Hints for partial success, deprecation (reserved, currently empty).", + }, + "hints_on_error": { + "type": "array", + "items": {"type": "string"}, + "description": "Recovery guidance for expected failures (FAQ-style).", + }, + "idempotent": {"type": "boolean", "description": "Safe to retry?"}, + "version": {"type": ["string", "null"], "description": "API version."}, + }, + "required": ["success"], +} + + +def _error_code_to_exit(error_code: str | None) -> int: + """Map an error code string to a CLI exit code.""" + _EXIT_MAP = { + "E000": 0, + "E001": 2, # validation + "E002": 1, # file not found + "E003": 4, # permission + "E004": 3, # dependency + "E005": 5, # timeout + "E006": 5, # rate limited + "E007": 1, # network + "E008": 2, # config + "E009": 6, # conflict + "E999": 1, # internal + } + if error_code is None: + return 1 + return _EXIT_MAP.get(error_code, 1) + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_docs/docs.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_docs/docs.html new file mode 100644 index 000000000..93c4bcf2a --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_docs/docs.html @@ -0,0 +1,1108 @@ + + + + + + + + scitex_dev._docs.docs — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._docs.docs

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Public API for docs aggregation and retrieval across the SciTeX ecosystem.
+
+Usage:
+    from scitex_dev import get_docs, build_docs
+
+    # All installed packages (manifest overview)
+    get_docs()
+
+    # Single package — returns unwrapped result
+    get_docs(package="scitex-writer", format="json")
+
+    # Multiple packages — dict keyed by package name
+    get_docs(packages=["scitex-writer", "scitex-stats"], format="json")
+
+    # Specific page
+    get_docs(package="scitex-writer", format="html", page="api")
+
+    # Build docs from Sphinx source
+    build_docs(package="scitex-writer")
+    build_docs()  # all discovered packages
+
+    # Search across all packages
+    search_docs(query="save figure")
+    search_docs(query="statistics", packages=["scitex-stats"])
+"""
+
+from __future__ import annotations
+
+import json
+import logging
+from pathlib import Path
+from typing import Any, Optional
+
+from .._core.discovery import discover_packages, get_package_root, get_sphinx_source
+
+logger = logging.getLogger(__name__)
+
+
+
+[docs] +def get_docs( + package: Optional[str] = None, + packages: Optional[list[str]] = None, + format: Optional[str] = None, + page: Optional[str] = None, + *, + _discover_fn=None, + _root_fn=None, + _sphinx_fn=None, +) -> Any: + """Get documentation for one, several, or all installed SciTeX packages. + + Resolution chain per package: + 1. Pre-built _sphinx_html/ in installed package → fastest (production) + 2. Sphinx _build/ available → use existing build + 3. Neither → introspect from docstrings + signatures (always works) + + Args: + package: Single package name (returns unwrapped result). + packages: List of package names (returns dict keyed by name). + format: Output format — None for manifest, "json" for structured, + "html" for path to HTML directory. + page: Specific page name (only with format="html" or "json"). + + Returns: + - If package=: the doc result directly (unwrapped). + - If packages=: dict mapping package name → doc result. + - If neither: dict of all discovered packages → doc result. + + Raises: + ValueError: If both package= and packages= are given. + LookupError: If a requested package is not found. + """ + if package is not None and packages is not None: + raise ValueError( + "Use either package= (singular) or packages= (plural), not both" + ) + + discover = _discover_fn if _discover_fn is not None else discover_packages + + # Single package — unwrap + if package is not None: + return _get_one( + package, + format=format, + page=page, + _discover_fn=discover, + _root_fn=_root_fn, + _sphinx_fn=_sphinx_fn, + ) + + # Multiple or all packages + if packages is None: + discovered = discover() + packages = list(discovered.keys()) + + results = {} + for pkg in packages: + try: + results[pkg] = _get_one( + pkg, + format=format, + page=page, + _discover_fn=discover, + _root_fn=_root_fn, + _sphinx_fn=_sphinx_fn, + ) + except LookupError: + logger.warning("Package %s not found, skipping", pkg) + + return results
+ + + +
+[docs] +def build_docs( + package: Optional[str] = None, + output_dir: Optional[Path] = None, + formats: Optional[list[str]] = None, + *, + _discover_fn=None, + _sphinx_fn=None, +) -> dict[str, Any]: + """Build docs from Sphinx source for one or all packages. + + Args: + package: Single package name. None = build all discovered. + output_dir: Override output directory. Default: in-place (_build/). + formats: List of builders ("html", "json"). Default: ["html"]. + + Returns: + Dict mapping package name → build result (path or error). + + Raises: + LookupError: If package not found. + RuntimeError: If Sphinx is not installed. + """ + from .._core.builder import build_sphinx + + if formats is None: + formats = ["html"] + + discover = _discover_fn if _discover_fn is not None else discover_packages + sphinx = _sphinx_fn if _sphinx_fn is not None else get_sphinx_source + + discovered = discover() + + if package is not None: + targets = {package: discovered.get(package)} + if targets[package] is None: + raise LookupError( + f"Package '{package}' not found in scitex_dev.docs entry points. " + f"Available: {list(discovered.keys())}" + ) + else: + targets = discovered + + results = {} + for pkg_name, module_name in targets.items(): + if module_name is None: + continue + sphinx_src = sphinx(module_name) + if sphinx_src is None: + results[pkg_name] = {"error": "No Sphinx source found"} + continue + + pkg_results = {} + for fmt in formats: + try: + out = build_sphinx( + sphinx_src, + output_dir=(output_dir / fmt) if output_dir else None, + builder=fmt, + ) + pkg_results[fmt] = str(out) if out else None + except (RuntimeError, FileNotFoundError) as e: + pkg_results[fmt] = {"error": str(e)} + + results[pkg_name] = pkg_results + + return results
+ + + +
+[docs] +def search_docs( + query: str, + package: Optional[str] = None, + packages: Optional[list[str]] = None, + max_results: int = 10, + *, + _discover_fn=None, + _get_one_fn=None, +) -> list[dict[str, Any]]: + """Search documentation across one, several, or all SciTeX packages. + + Simple keyword search over page titles and introspected content. + Stdlib only — no external search dependencies. + + Args: + query: Search query string (case-insensitive keyword matching). + package: Search within a single package. + packages: Search within specific packages. + max_results: Maximum number of results to return. + + Returns: + List of dicts with keys: package, name, title, score, match_type. + Sorted by relevance score (descending). + """ + query_lower = query.lower() + query_terms = query_lower.split() + results = [] + + discover = _discover_fn if _discover_fn is not None else discover_packages + get_one = _get_one_fn if _get_one_fn is not None else _get_one + + # Determine which packages to search + if package is not None: + search_targets = {package: None} + elif packages is not None: + search_targets = {p: None for p in packages} + else: + search_targets = discover() + + for pkg_name in search_targets: + try: + manifest = get_one(pkg_name) + except LookupError: + continue + + if not isinstance(manifest, dict): + continue + + # Search page titles from manifest + for page_entry in manifest.get("pages", []): + if isinstance(page_entry, dict): + name = page_entry.get("name", "") + title = page_entry.get("title", "") + else: + name = str(page_entry) + title = name + + text = f"{name} {title}".lower() + score = sum(1 for term in query_terms if term in text) + if score > 0: + results.append( + { + "package": pkg_name, + "name": name, + "title": title, + "score": score, + "match_type": "page_title", + } + ) + + # Search introspected module/function names + for member_name, info in manifest.get("modules", {}).items(): + text = f"{member_name} {info.get('description', '')}".lower() + score = sum(1 for term in query_terms if term in text) + if score > 0: + results.append( + { + "package": pkg_name, + "name": member_name, + "title": info.get("description", "")[:80], + "score": score, + "match_type": "api_member", + } + ) + + # Search package description + desc = manifest.get("description", "").lower() + score = sum(1 for term in query_terms if term in desc) + if score > 0: + results.append( + { + "package": pkg_name, + "name": pkg_name, + "title": manifest.get("description", "")[:80], + "score": score, + "match_type": "package", + } + ) + + # Sort by score descending, then by name + results.sort(key=lambda r: (-r["score"], r["name"])) + return results[:max_results]
+ + + +# --------------------------------------------------------------------------- +# Internal helpers +# --------------------------------------------------------------------------- + + +def _get_one( + package: str, + format: Optional[str] = None, + page: Optional[str] = None, + *, + _discover_fn=None, + _root_fn=None, + _sphinx_fn=None, +) -> Any: + """Get docs for a single package, following the resolution chain.""" + discover = _discover_fn if _discover_fn is not None else discover_packages + root_lookup = _root_fn if _root_fn is not None else get_package_root + sphinx_lookup = _sphinx_fn if _sphinx_fn is not None else get_sphinx_source + + discovered = discover() + module_name = discovered.get(package) + + if module_name is None: + raise LookupError( + f"Package '{package}' not found. Available: {list(discovered.keys())}" + ) + + # 1. Try pre-built _sphinx_html/ + pkg_root = root_lookup(module_name) + if pkg_root is not None: + docs_dir = pkg_root / "_sphinx_html" + result = _resolve_from_built(docs_dir, format=format, page=page) + if result is not None: + return _enrich_manifest(result, package) + + # 2. Try Sphinx _build/ + sphinx_src = sphinx_lookup(module_name) + if sphinx_src is not None: + build_dir = sphinx_src / "_build" + result = _resolve_from_built( + build_dir / "html", format=format, page=page, json_dir=build_dir / "json" + ) + if result is not None: + return _enrich_manifest(result, package) + + # 3. Fallback: introspect + from .._core.introspect import introspect_package + + return introspect_package(module_name) + + +def _resolve_from_built( + html_dir: Path, + format: Optional[str] = None, + page: Optional[str] = None, + json_dir: Optional[Path] = None, +) -> Any: + """Try to resolve docs from a built docs directory. + + Returns None if the directory doesn't exist or doesn't have the requested content. + """ + if not html_dir.exists(): + return None + + # If page requested but no format, default to html + if page is not None and format is None: + format = "html" + + # No format requested → return manifest + if format is None: + from .._core.manifest import read_manifest, generate_manifest + + manifest = read_manifest(html_dir) + if manifest is not None: + return manifest + # Auto-generate manifest from directory contents + return generate_manifest( + package=html_dir.parent.name, + docs_dir=html_dir, + ) + + # HTML format → return path + if format == "html": + if page is not None: + page_path = html_dir / f"{page}.html" + if not page_path.exists(): + page_path = html_dir / page + if page_path.exists(): + return page_path + return None + if (html_dir / "index.html").exists(): + return html_dir + return None + + # JSON format → try Sphinx JSON builder output or read HTML + if format == "json": + target_dir = json_dir if json_dir and json_dir.exists() else html_dir + if page is not None: + json_path = target_dir / f"{page}.fjson" + if json_path.exists(): + with open(json_path, encoding="utf-8") as f: + return json.load(f) + # Try .json extension + json_path = target_dir / f"{page}.json" + if json_path.exists(): + with open(json_path, encoding="utf-8") as f: + return json.load(f) + return None + # Return list of available pages + pages = [] + for ext in ("*.fjson", "*.json"): + for p in sorted(target_dir.glob(ext)): + pages.append(p.stem) + if pages: + return {"pages": pages} + # Fall back to listing HTML pages + html_pages = [p.stem for p in sorted(html_dir.glob("*.html"))] + if html_pages: + return {"pages": html_pages, "note": "JSON not built, listing HTML pages"} + return None + + raise ValueError(f"Unknown format: {format!r}. Use None, 'html', or 'json'.") + + +def _enrich_manifest(result: Any, package: str) -> Any: + """Fill in version/description from importlib.metadata if missing.""" + if not isinstance(result, dict): + return result + if result.get("version") is not None and result.get("description") is not None: + return result + try: + from importlib.metadata import metadata + + meta = metadata(package) + if result.get("version") is None: + result["version"] = meta.get("Version") + if result.get("description") is None: + summary = meta.get("Summary") + if summary: + result["description"] = summary + except Exception: + pass + return result +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_docs/search.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_docs/search.html new file mode 100644 index 000000000..fb4d102b8 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_docs/search.html @@ -0,0 +1,1145 @@ + + + + + + + + scitex_dev._docs.search — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._docs.search

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Unified search across the SciTeX ecosystem.
+
+Searches Python APIs, CLI commands, MCP tools, and documentation pages
+across all installed scitex packages.
+
+Query syntax (Google-like):
+    search("save figure")           # match any term
+    search('"save figure"')         # exact phrase match
+    search("stats -deprecated")     # exclude results with "deprecated"
+    search("+ttest statistics")     # "ttest" required, "statistics" optional boost
+
+Usage:
+    from scitex_dev import search
+
+    search("save figure")                      # search everything
+    search("ttest", scope="api")               # Python API only
+    search("docs", scope="cli")                # CLI subcommands only
+    search("stats -internal", scope="mcp")     # MCP tools, excluding "internal"
+"""
+
+from __future__ import annotations
+
+import difflib
+import logging
+import re
+from dataclasses import dataclass, field
+from typing import Any, Literal, Optional
+
+from .._core.discovery import discover_packages, get_package_root
+
+logger = logging.getLogger(__name__)
+
+Scope = Literal["all", "api", "cli", "mcp", "docs"]
+
+# Fuzzy match threshold (0.0–1.0). Lower = more permissive.
+_FUZZY_THRESHOLD = 0.6
+
+
+# ---------------------------------------------------------------------------
+# Query parsing
+# ---------------------------------------------------------------------------
+
+
+@dataclass
+class ParsedQuery:
+    """Parsed search query with Google-like operators."""
+
+    required: list[str] = field(default_factory=list)  # +term
+    optional: list[str] = field(default_factory=list)  # plain term
+    excluded: list[str] = field(default_factory=list)  # -term
+    phrases: list[str] = field(default_factory=list)  # "exact phrase"
+
+    @property
+    def all_positive(self) -> list[str]:
+        """All terms that should match (required + optional)."""
+        return self.required + self.optional
+
+    @property
+    def is_empty(self) -> bool:
+        return not (self.required or self.optional or self.phrases)
+
+
+def parse_query(query: str) -> ParsedQuery:
+    """Parse a Google-like query string.
+
+    Supports:
+        word         → optional term (boosts score)
+        +word        → required term (must match)
+        -word        → excluded term (must NOT match)
+        "phrase"     → exact phrase match
+    """
+    parsed = ParsedQuery()
+
+    # Extract quoted phrases first
+    for match in re.finditer(r'"([^"]+)"', query):
+        parsed.phrases.append(match.group(1).lower())
+
+    # Remove quoted parts from remaining query
+    remaining = re.sub(r'"[^"]*"', "", query).strip()
+
+    for token in remaining.split():
+        token_lower = token.lower()
+        if token.startswith("+") and len(token) > 1:
+            parsed.required.append(token_lower[1:])
+        elif token.startswith("-") and len(token) > 1:
+            parsed.excluded.append(token_lower[1:])
+        else:
+            parsed.optional.append(token_lower)
+
+    return parsed
+
+
+# ---------------------------------------------------------------------------
+# Scoring
+# ---------------------------------------------------------------------------
+
+
+def score_text(pq: ParsedQuery, text: str, fuzzy: bool = True) -> float:
+    """Score text against a parsed query.
+
+    Returns:
+        Score >= 0. Returns -1 if excluded term found or required term missing.
+    """
+    text_lower = text.lower()
+
+    # Check exclusions first
+    for term in pq.excluded:
+        if term in text_lower:
+            return -1
+
+    # Check required terms
+    for term in pq.required:
+        if not _term_matches(term, text_lower, fuzzy=fuzzy):
+            return -1
+
+    score = 0.0
+
+    # Score required terms (they matched, give credit)
+    for term in pq.required:
+        score += 2.0  # Required terms get double weight
+
+    # Score optional terms
+    for term in pq.optional:
+        if term in text_lower:
+            score += 1.0
+        elif fuzzy and _fuzzy_match(term, text_lower):
+            score += 0.5  # Fuzzy matches get half weight
+
+    # Score exact phrases
+    for phrase in pq.phrases:
+        if phrase in text_lower:
+            score += 3.0  # Phrase matches get triple weight
+
+    return score
+
+
+def _term_matches(term: str, text: str, fuzzy: bool = True) -> bool:
+    """Check if a term matches text (exact or fuzzy)."""
+    if term in text:
+        return True
+    if fuzzy:
+        return _fuzzy_match(term, text)
+    return False
+
+
+def _fuzzy_match(term: str, text: str) -> bool:
+    """Check if term fuzzy-matches any word in text."""
+    words = text.split()
+    for word in words:
+        # Strip non-alphanumeric for cleaner matching
+        clean = re.sub(r"[^a-z0-9_]", "", word)
+        if not clean:
+            continue
+        ratio = difflib.SequenceMatcher(None, term, clean).ratio()
+        if ratio >= _FUZZY_THRESHOLD:
+            return True
+    return False
+
+
+# ---------------------------------------------------------------------------
+# Main search function
+# ---------------------------------------------------------------------------
+
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# Helpers
+# ---------------------------------------------------------------------------
+
+
+def _resolve_targets(
+    package: Optional[str],
+    packages: Optional[list[str]],
+) -> dict[str, Optional[str]]:
+    """Resolve which packages to search."""
+    if package is not None:
+        discovered = discover_packages()
+        return {package: discovered.get(package)}
+    if packages is not None:
+        discovered = discover_packages()
+        return {p: discovered.get(p) for p in packages}
+    return discover_packages()
+
+
+def _make_result(
+    package: str,
+    name: str,
+    title: str,
+    score: float,
+    scope: str,
+    match_type: str,
+) -> dict[str, Any]:
+    return {
+        "package": package,
+        "name": name,
+        "title": title,
+        "score": score,
+        "scope": scope,
+        "match_type": match_type,
+    }
+
+
+# ---------------------------------------------------------------------------
+# Scope-specific searchers
+# ---------------------------------------------------------------------------
+
+
+def _search_docs(
+    pq: ParsedQuery,
+    targets: dict[str, Optional[str]],
+    fuzzy: bool = True,
+) -> list[dict[str, Any]]:
+    """Search documentation pages."""
+    from .docs import get_docs
+
+    results = []
+    for pkg_name in targets:
+        try:
+            manifest = get_docs(package=pkg_name)
+        except LookupError:
+            continue
+        if not isinstance(manifest, dict):
+            continue
+
+        for page_entry in manifest.get("pages", []):
+            if isinstance(page_entry, dict):
+                name = page_entry.get("name", "")
+                title = page_entry.get("title", "")
+            else:
+                name = str(page_entry)
+                title = name
+
+            text = f"{name} {title}"
+            s = score_text(pq, text, fuzzy=fuzzy)
+            if s > 0:
+                results.append(
+                    _make_result(pkg_name, name, title, s, "docs", "page_title")
+                )
+
+        # Package description
+        desc = manifest.get("description", "")
+        if desc:
+            s = score_text(pq, desc, fuzzy=fuzzy)
+            if s > 0:
+                results.append(
+                    _make_result(pkg_name, pkg_name, desc[:80], s, "docs", "package")
+                )
+
+    return results
+
+
+def _search_api(
+    pq: ParsedQuery,
+    targets: dict[str, Optional[str]],
+    fuzzy: bool = True,
+) -> list[dict[str, Any]]:
+    """Search Python API (public functions, classes, methods)."""
+    from .._core.introspect import introspect_package
+
+    results = []
+    for pkg_name, module_name in targets.items():
+        if module_name is None:
+            continue
+        try:
+            info = introspect_package(module_name)
+        except Exception:
+            continue
+        if info is None:
+            continue
+
+        for member_name, member_info in info.get("modules", {}).items():
+            text = f"{member_name} {member_info.get('description', '')}"
+            sig = member_info.get("signature", "")
+            if sig:
+                text += f" {sig}"
+            s = score_text(pq, text, fuzzy=fuzzy)
+            if s > 0:
+                results.append(
+                    _make_result(
+                        pkg_name,
+                        member_name,
+                        member_info.get("description", "")[:80],
+                        s,
+                        "api",
+                        member_info.get("type", "function"),
+                    )
+                )
+
+            # Search methods within classes
+            if member_info.get("type") == "class":
+                for method_name, method_info in member_info.get("methods", {}).items():
+                    text = f"{member_name}.{method_name} {method_info.get('description', '')}"
+                    s = score_text(pq, text, fuzzy=fuzzy)
+                    if s > 0:
+                        results.append(
+                            _make_result(
+                                pkg_name,
+                                f"{member_name}.{method_name}",
+                                method_info.get("description", "")[:80],
+                                s,
+                                "api",
+                                "method",
+                            )
+                        )
+
+    return results
+
+
+def _search_cli(
+    pq: ParsedQuery,
+    targets: dict[str, Optional[str]],
+    fuzzy: bool = True,
+) -> list[dict[str, Any]]:
+    """Search CLI subcommands via console_scripts entry points."""
+    results = []
+    try:
+        from importlib.metadata import entry_points
+
+        eps = entry_points(group="console_scripts")
+        for ep in eps:
+            pkg_match = None
+            for pkg_name in targets:
+                normalized = pkg_name.replace("-", "_")
+                if normalized in ep.value or ep.name.startswith(pkg_name):
+                    pkg_match = pkg_name
+                    break
+
+            if pkg_match is None:
+                continue
+
+            text = f"{ep.name} {ep.value}"
+            s = score_text(pq, text, fuzzy=fuzzy)
+            if s > 0:
+                results.append(
+                    _make_result(
+                        pkg_match,
+                        ep.name,
+                        f"CLI: {ep.value}",
+                        s,
+                        "cli",
+                        "console_script",
+                    )
+                )
+    except Exception:
+        logger.debug("Failed to search CLI entry points")
+
+    return results
+
+
+def _search_mcp(
+    pq: ParsedQuery,
+    targets: dict[str, Optional[str]],
+    fuzzy: bool = True,
+) -> list[dict[str, Any]]:
+    """Search MCP tool names and descriptions."""
+    results = []
+
+    for pkg_name, module_name in targets.items():
+        if module_name is None:
+            continue
+
+        pkg_root = get_package_root(module_name)
+        if pkg_root is None:
+            continue
+
+        mcp_candidates = [
+            pkg_root / "_mcp_tools",
+            pkg_root / "mcp",
+            pkg_root / "_mcp",
+        ]
+
+        for mcp_dir in mcp_candidates:
+            if not mcp_dir.exists():
+                continue
+            for py_file in mcp_dir.glob("*.py"):
+                if py_file.name.startswith("_"):
+                    continue
+                try:
+                    content = py_file.read_text(encoding="utf-8")
+                except OSError:
+                    continue
+
+                for match in re.finditer(
+                    r'(?:async\s+)?def\s+(\w+)\s*\([^)]*\)\s*(?:->.*?)?:\s*\n\s*"""([^"]*)',
+                    content,
+                ):
+                    func_name = match.group(1)
+                    docstring = match.group(2).strip()
+                    text = f"{func_name} {docstring}"
+                    s = score_text(pq, text, fuzzy=fuzzy)
+                    if s > 0:
+                        results.append(
+                            _make_result(
+                                pkg_name,
+                                func_name,
+                                docstring[:80],
+                                s,
+                                "mcp",
+                                "mcp_tool",
+                            )
+                        )
+
+    return results
+
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_ecosystem/_mcp/_utils.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_ecosystem/_mcp/_utils.html new file mode 100644 index 000000000..35a19c9f9 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_ecosystem/_mcp/_utils.html @@ -0,0 +1,838 @@ + + + + + + + + scitex_dev._ecosystem._mcp._utils — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_dev._ecosystem._mcp._utils

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""MCP utilities for consuming Result objects."""
+
+from __future__ import annotations
+
+from typing import Any, Callable
+
+from ..._core.types import Result
+
+
+
+[docs] +def run_as_mcp(fn: Callable, **kwargs: Any) -> str: + """Call a ``@supports_return_as`` function and return MCP-ready JSON. + + Parameters + ---------- + fn : Callable + A function decorated with ``@supports_return_as``. + **kwargs + Arguments to pass to ``fn``. + + Returns + ------- + str + JSON string with the full Result structure. + """ + result = fn(**kwargs, return_as="result") + return result.to_json()
+ + + +
+[docs] +def wrap_as_mcp( + fn: Callable, + *, + side_effects: list[str] | None = None, + hints_on_error: list[str] | None = None, + idempotent: bool = False, + **kwargs: Any, +) -> str: + """Call any function and wrap its return in Result JSON. + + Unlike ``run_as_mcp`` (which requires ``@supports_return_as``), + this wraps any plain function. Use this to retrofit existing + handlers without modifying the underlying function. + + Parameters + ---------- + fn : Callable + Any callable returning data or raising exceptions. + side_effects : list[str], optional + Declared side effects (e.g. ``["file_create: /tmp/out.csv"]``). + hints_on_error : list[str], optional + Recovery guidance for expected failures (FAQ-style). + idempotent : bool + Whether the operation is safe to retry. + **kwargs + Arguments to pass to ``fn``. + + Returns + ------- + str + JSON string with Result structure. + """ + from ..._core.errors import classify_exception + + try: + data = fn(**kwargs) + return Result( + success=True, + data=data, + side_effects=side_effects, + idempotent=idempotent, + ).to_json() + except Exception as exc: + error_code = classify_exception(exc) + err_hints = list(hints_on_error or []) + suggestion = getattr(exc, "suggestion", None) + if suggestion: + err_hints.append(suggestion) + suggestions = getattr(exc, "suggestions", None) + if suggestions and isinstance(suggestions, list): + err_hints.extend(suggestions) + context = getattr(exc, "context", {}) + return Result( + success=False, + error=str(exc), + error_code=error_code.value, + context=context if isinstance(context, dict) else {}, + hints_on_error=err_hints, + ).to_json()
+ + + +
+[docs] +async def async_wrap_as_mcp( + coro_fn: Callable, + *, + side_effects: list[str] | None = None, + hints_on_error: list[str] | None = None, + idempotent: bool = False, + **kwargs: Any, +) -> str: + """Async version of ``wrap_as_mcp`` for async handlers. + + Parameters + ---------- + coro_fn : Callable + Any async callable (coroutine function) returning data + or raising exceptions. + side_effects : list[str], optional + Declared side effects. + hints_on_error : list[str], optional + Recovery guidance for expected failures (FAQ-style). + idempotent : bool + Whether the operation is safe to retry. + **kwargs + Arguments to pass to ``coro_fn``. + + Returns + ------- + str + JSON string with Result structure. + """ + from ..._core.errors import classify_exception + + try: + data = await coro_fn(**kwargs) + return Result( + success=True, + data=data, + side_effects=side_effects, + idempotent=idempotent, + ).to_json() + except Exception as exc: + error_code = classify_exception(exc) + err_hints = list(hints_on_error or []) + suggestion = getattr(exc, "suggestion", None) + if suggestion: + err_hints.append(suggestion) + suggestions = getattr(exc, "suggestions", None) + if suggestions and isinstance(suggestions, list): + err_hints.extend(suggestions) + context = getattr(exc, "context", {}) + return Result( + success=False, + error=str(exc), + error_code=error_code.value, + context=context if isinstance(context, dict) else {}, + hints_on_error=err_hints, + ).to_json()
+ + + +
+[docs] +def result_to_mcp(result: Result) -> str: + """Convert an existing Result to MCP-ready JSON.""" + return result.to_json()
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_release/fix.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_release/fix.html new file mode 100644 index 000000000..9c305d240 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_release/fix.html @@ -0,0 +1,1167 @@ + + + + + + + + scitex_dev._release.fix — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._release.fix

+#!/usr/bin/env python3
+# Timestamp: 2026-03-27
+# File: scitex_dev/fix.py
+
+"""Detect and fix version mismatches across the ecosystem.
+
+Single-responsibility functions:
+- detect_mismatches: find packages with version inconsistencies
+- fix_local: pip install -e for local mismatches
+- fix_remote: git pull + pip install on remote hosts
+- fix_init_version: sync __init__.py with pyproject.toml
+- verify_versions: confirm all versions are aligned after fixes
+
+The combined fix_mismatches is kept for backward compatibility.
+
+Safety model: all mutating functions default to confirm=False (dry run).
+"""
+
+from __future__ import annotations
+
+from pathlib import Path
+from typing import Any
+
+from .._core.config import DevConfig, load_config
+from .._sync import sync_all, sync_local
+from .versions import get_mismatches
+
+
+# --- Single-responsibility functions ---
+
+
+def detect_mismatches(
+    packages: list[str] | None = None,
+) -> dict[str, Any]:
+    """Detect version mismatches. Read-only, no side effects.
+
+    Parameters
+    ----------
+    packages : list[str] | None
+        Package names. None = all ecosystem packages.
+
+    Returns
+    -------
+    dict
+        {package_name: {status, issues, local, git, remote}}
+        Only packages with mismatches are included.
+    """
+    return get_mismatches(packages)
+
+
+def fix_local(
+    packages: list[str] | None = None,
+    confirm: bool = False,
+    config: DevConfig | None = None,
+) -> dict[str, Any]:
+    """Fix local mismatches only: pip install -e for each package.
+
+    Parameters
+    ----------
+    packages : list[str] | None
+        Package names to fix. None = auto-detect from mismatches.
+    confirm : bool
+        If False (default), preview only.
+    config : DevConfig | None
+        Configuration.
+
+    Returns
+    -------
+    dict
+        {package_name: {status, output|commands}}
+    """
+    if config is None:
+        config = load_config()
+
+    if packages is None:
+        mismatches = get_mismatches()
+        packages = _find_local_mismatches(mismatches)
+
+    if not packages:
+        return {}
+
+    return sync_local(packages=packages, confirm=confirm, config=config)
+
+
+def fix_remote(
+    hosts: list[str] | None = None,
+    packages: list[str] | None = None,
+    install: bool = True,
+    confirm: bool = False,
+    config: DevConfig | None = None,
+) -> dict[str, Any]:
+    """Fix remote mismatches only: git pull + pip install on hosts.
+
+    Parameters
+    ----------
+    hosts : list[str] | None
+        Host names. None = all enabled hosts.
+    packages : list[str] | None
+        Package names. None = auto-detect from mismatches.
+    install : bool
+        Run pip install after git pull (default True).
+    confirm : bool
+        If False (default), preview only.
+    config : DevConfig | None
+        Configuration.
+
+    Returns
+    -------
+    dict
+        {host: {package: {status, output|commands}}}
+    """
+    if config is None:
+        config = load_config()
+
+    if packages is None:
+        mismatches = get_mismatches()
+        packages = list(mismatches.keys())
+
+    if not packages:
+        return {}
+
+    return sync_all(
+        hosts=hosts,
+        packages=packages,
+        stash=True,
+        install=install,
+        confirm=confirm,
+        config=config,
+    )
+
+
+def fix_init_version(
+    package_path: str | Path,
+    confirm: bool = False,
+) -> dict[str, Any]:
+    """Sync __init__.py __version__ with pyproject.toml version.
+
+    Parameters
+    ----------
+    package_path : str | Path
+        Path to package root (containing pyproject.toml).
+    confirm : bool
+        If False, preview only.
+
+    Returns
+    -------
+    dict
+        {toml_version, init_version, init_path, action, status}
+    """
+    import re
+
+    path = Path(package_path)
+    toml_path = path / "pyproject.toml"
+
+    if not toml_path.exists():
+        return {"status": "error", "error": "pyproject.toml not found"}
+
+    # Read toml version
+    toml_text = toml_path.read_text()
+    m = re.search(r'^version\s*=\s*"([^"]+)"', toml_text, re.MULTILINE)
+    if not m:
+        return {"status": "error", "error": "version not found in pyproject.toml"}
+    toml_version = m.group(1)
+
+    # Find __init__.py with __version__
+    init_files = list(path.glob("src/**/__init__.py"))
+    for init_path in init_files:
+        init_text = init_path.read_text()
+        vm = re.search(r'^__version__\s*=\s*"([^"]+)"', init_text, re.MULTILINE)
+        if vm:
+            init_version = vm.group(1)
+            if init_version == toml_version:
+                return {
+                    "toml_version": toml_version,
+                    "init_version": init_version,
+                    "init_path": str(init_path),
+                    "action": "skip",
+                    "status": "ok",
+                }
+
+            if confirm:
+                new_text = re.sub(
+                    r'^__version__\s*=\s*"[^"]+"',
+                    f'__version__ = "{toml_version}"',
+                    init_text,
+                    count=1,
+                    flags=re.MULTILINE,
+                )
+                init_path.write_text(new_text)
+
+            return {
+                "toml_version": toml_version,
+                "init_version": init_version,
+                "init_path": str(init_path),
+                "action": "updated" if confirm else "would_update",
+                "status": "ok",
+            }
+
+    return {"toml_version": toml_version, "action": "no_init_version", "status": "ok"}
+
+
+def verify_versions(
+    packages: list[str] | None = None,
+) -> dict[str, str]:
+    """Verify all versions are aligned after fixes.
+
+    Parameters
+    ----------
+    packages : list[str] | None
+        Package names. None = all.
+
+    Returns
+    -------
+    dict
+        {package_name: "ok" | "mismatch: <details>"}
+    """
+    mismatches = get_mismatches(packages)
+    from .versions import list_versions
+
+    all_versions = list_versions(packages)
+    result: dict[str, str] = {}
+    for pkg, info in all_versions.items():
+        if pkg in mismatches:
+            issues = mismatches[pkg].get("issues", [])
+            result[pkg] = f"mismatch: {'; '.join(issues)}"
+        else:
+            result[pkg] = "ok"
+    return result
+
+
+def bump_version(
+    package_path: str | Path,
+    new_version: str,
+    confirm: bool = False,
+) -> dict[str, Any]:
+    """Bump version in pyproject.toml and __init__.py.
+
+    Parameters
+    ----------
+    package_path : str | Path
+        Path to package root (containing pyproject.toml).
+    new_version : str
+        New version string (e.g. "0.5.0").
+    confirm : bool
+        If False, preview only.
+
+    Returns
+    -------
+    dict
+        {old_version, new_version, toml_updated, init_updated, status}
+    """
+    import re
+
+    path = Path(package_path)
+    toml_path = path / "pyproject.toml"
+
+    if not toml_path.exists():
+        return {"status": "error", "error": "pyproject.toml not found"}
+
+    toml_text = toml_path.read_text()
+    m = re.search(r'^version\s*=\s*"([^"]+)"', toml_text, re.MULTILINE)
+    if not m:
+        return {"status": "error", "error": "version not found in pyproject.toml"}
+
+    old_version = m.group(1)
+    if old_version == new_version:
+        return {
+            "old_version": old_version,
+            "new_version": new_version,
+            "action": "skip",
+            "status": "ok",
+        }
+
+    result: dict[str, Any] = {
+        "old_version": old_version,
+        "new_version": new_version,
+        "toml_updated": False,
+        "init_updated": False,
+        "status": "ok",
+    }
+
+    if confirm:
+        new_toml = re.sub(
+            r'^version\s*=\s*"[^"]+"',
+            f'version = "{new_version}"',
+            toml_text,
+            count=1,
+            flags=re.MULTILINE,
+        )
+        toml_path.write_text(new_toml)
+        result["toml_updated"] = True
+
+        # Also update __init__.py
+        init_result = fix_init_version(package_path, confirm=True)
+        result["init_updated"] = init_result.get("action") == "updated"
+    else:
+        result["action"] = "would_bump"
+
+    return result
+
+
+def determine_bump_type(
+    package_path: str | Path,
+) -> dict[str, Any]:
+    """Check diff since last tag and classify as minor/patch/skip.
+
+    Parameters
+    ----------
+    package_path : str | Path
+        Path to package root (git repo).
+
+    Returns
+    -------
+    dict
+        {has_diff, commits_since_tag, has_feat, bump_type, current_version, suggested_version}
+    """
+    import re
+    import subprocess
+
+    path = Path(package_path)
+
+    # Get current version
+    toml_path = path / "pyproject.toml"
+    current_version = None
+    if toml_path.exists():
+        m = re.search(
+            r'^version\s*=\s*"([^"]+)"',
+            toml_path.read_text(),
+            re.MULTILINE,
+        )
+        if m:
+            current_version = m.group(1)
+
+    # Get last tag
+    try:
+        tag_result = subprocess.run(
+            ["git", "describe", "--tags", "--abbrev=0", "--match", "v*"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if tag_result.returncode != 0:
+            return {
+                "has_diff": True,
+                "commits_since_tag": None,
+                "bump_type": "patch",
+                "current_version": current_version,
+                "error": "no tags found",
+            }
+        last_tag = tag_result.stdout.strip()
+    except Exception as e:
+        return {"status": "error", "error": str(e)}
+
+    # Check diff
+    diff_result = subprocess.run(
+        ["git", "diff", f"{last_tag}..HEAD", "--stat"],
+        cwd=path,
+        capture_output=True,
+        text=True,
+        timeout=10,
+    )
+    has_diff = bool(diff_result.stdout.strip())
+
+    if not has_diff:
+        return {
+            "has_diff": False,
+            "commits_since_tag": 0,
+            "bump_type": "skip",
+            "current_version": current_version,
+            "last_tag": last_tag,
+        }
+
+    # Count commits and check for feat:
+    log_result = subprocess.run(
+        ["git", "log", f"{last_tag}..HEAD", "--oneline"],
+        cwd=path,
+        capture_output=True,
+        text=True,
+        timeout=10,
+    )
+    commits = log_result.stdout.strip().splitlines()
+    has_feat = any("feat:" in line or "feat(" in line for line in commits)
+    bump_type = "minor" if has_feat else "patch"
+
+    # Suggest version
+    suggested = None
+    if current_version:
+        parts = current_version.split(".")
+        if len(parts) == 3:
+            major, minor, patch = (
+                int(parts[0]),
+                int(parts[1]),
+                int(parts[2].split("-")[0]),
+            )
+            if bump_type == "minor":
+                suggested = f"{major}.{minor + 1}.0"
+            else:
+                suggested = f"{major}.{minor}.{patch + 1}"
+
+    return {
+        "has_diff": True,
+        "commits_since_tag": len(commits),
+        "has_feat": has_feat,
+        "bump_type": bump_type,
+        "current_version": current_version,
+        "suggested_version": suggested,
+        "last_tag": last_tag,
+    }
+
+
+# --- Combined (backward compat) ---
+
+
+
+[docs] +def fix_mismatches( + hosts: list[str] | None = None, + packages: list[str] | None = None, + local: bool = True, + remote: bool = True, + confirm: bool = False, + config: DevConfig | None = None, +) -> dict[str, Any]: + """Detect version mismatches and fix them. + + Combines detect + fix_local + fix_remote. Kept for backward compatibility. + Prefer using the individual functions for clarity. + + Safety: defaults to preview only. Pass confirm=True to execute. + """ + if config is None: + config = load_config() + + mismatches = get_mismatches(packages) + mismatch_names = list(mismatches.keys()) if not packages else packages + + result: dict[str, Any] = { + "detected": { + pkg: {"status": info.get("status"), "issues": info.get("issues", [])} + for pkg, info in mismatches.items() + }, + "local_fixes": {}, + "remote_fixes": {}, + "summary": {"detected": len(mismatches), "local_fixed": 0, "remote_fixed": 0}, + } + + if not mismatch_names: + return result + + if local: + result["local_fixes"] = fix_local( + packages=_find_local_mismatches(mismatches), + confirm=confirm, + config=config, + ) + if confirm: + result["summary"]["local_fixed"] = sum( + 1 for r in result["local_fixes"].values() if r.get("status") == "ok" + ) + + if remote: + result["remote_fixes"] = fix_remote( + hosts=hosts, + packages=mismatch_names, + confirm=confirm, + config=config, + ) + if confirm: + for host_results in result["remote_fixes"].values(): + if isinstance(host_results, dict): + result["summary"]["remote_fixed"] += sum( + 1 + for r in host_results.values() + if isinstance(r, dict) and r.get("status") == "ok" + ) + + return result
+ + + +def _find_local_mismatches(mismatches: dict[str, Any]) -> list[str]: + """Extract package names where local installed != toml version.""" + to_fix = [] + for pkg, info in mismatches.items(): + lv = info.get("local", {}) + toml = lv.get("pyproject_toml") + installed = lv.get("installed") + if toml and installed and toml != installed: + to_fix.append(pkg) + elif toml and not installed: + to_fix.append(pkg) + return to_fix + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_release/versions.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_release/versions.html new file mode 100644 index 000000000..77883284c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_release/versions.html @@ -0,0 +1,1157 @@ + + + + + + + + scitex_dev._release.versions — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._release.versions

+#!/usr/bin/env python3
+# Timestamp: 2026-02-02
+# File: scitex_dev/versions.py
+
+"""Core version checking logic for the scitex ecosystem."""
+
+from __future__ import annotations
+
+import re
+import subprocess
+from pathlib import Path
+from typing import Any
+
+from .._ecosystem import ECOSYSTEM, get_all_packages, get_local_path
+
+
+def get_version_from_toml(path: Path) -> str | None:
+    """Read version from pyproject.toml."""
+    toml_path = path / "pyproject.toml"
+    if not toml_path.exists():
+        return None
+
+    try:
+        # Python 3.11+
+        import tomllib
+
+        with open(toml_path, "rb") as f:
+            data = tomllib.load(f)
+    except ImportError:
+        try:
+            import tomli
+
+            with open(toml_path, "rb") as f:
+                data = tomli.load(f)
+        except ImportError:
+            # Fallback: regex parse
+            content = toml_path.read_text()
+            match = re.search(
+                r'^version\s*=\s*["\']([^"\']+)["\']', content, re.MULTILINE
+            )
+            return match.group(1) if match else None
+
+    return data.get("project", {}).get("version")
+
+
+def get_version_installed(package: str) -> str | None:
+    """Get version from importlib.metadata."""
+    try:
+        from importlib.metadata import version
+
+        return version(package)
+    except Exception:
+        return None
+
+
+def get_commits_since_tag(path: Path) -> int | None:
+    """Count commits since latest version tag. Returns None if no tags."""
+    if not path.exists():
+        return None
+    try:
+        result = subprocess.run(
+            ["git", "rev-list", "--count", "HEAD", "--not", "--tags=v*"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            return int(result.stdout.strip())
+    except Exception:
+        pass
+
+    # Fallback: count via log
+    try:
+        tag_result = subprocess.run(
+            ["git", "describe", "--tags", "--abbrev=0", "--match", "v*"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if tag_result.returncode != 0:
+            return None
+        tag = tag_result.stdout.strip()
+        log_result = subprocess.run(
+            ["git", "rev-list", "--count", f"{tag}..HEAD"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if log_result.returncode == 0:
+            return int(log_result.stdout.strip())
+    except Exception:
+        pass
+    return None
+
+
+def get_git_latest_tag(path: Path) -> str | None:
+    """Get latest git tag (version tags only)."""
+    if not path.exists():
+        return None
+
+    try:
+        result = subprocess.run(
+            ["git", "describe", "--tags", "--abbrev=0", "--match", "v*"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            return result.stdout.strip()
+    except Exception:
+        pass
+
+    # Fallback: list all tags
+    try:
+        result = subprocess.run(
+            ["git", "tag", "-l", "v*", "--sort=-v:refname"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0 and result.stdout.strip():
+            return result.stdout.strip().split("\n")[0]
+    except Exception:
+        pass
+
+    return None
+
+
+def get_git_branch(path: Path) -> str | None:
+    """Get current git branch."""
+    if not path.exists():
+        return None
+
+    try:
+        result = subprocess.run(
+            ["git", "rev-parse", "--abbrev-ref", "HEAD"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            return result.stdout.strip()
+    except Exception:
+        pass
+
+    return None
+
+
+def get_git_status(path: Path) -> dict[str, Any] | None:
+    """Get git worktree status (dirty/clean, ahead/behind remote).
+
+    Returns
+    -------
+    dict or None
+        Keys: dirty (bool), ahead (int), behind (int), short_hash (str).
+        Returns None if path doesn't exist or is not a git repo.
+    """
+    if not path.exists():
+        return None
+
+    info: dict[str, Any] = {"dirty": False, "ahead": 0, "behind": 0, "short_hash": None}
+
+    # Check if dirty (uncommitted changes)
+    try:
+        result = subprocess.run(
+            ["git", "status", "--porcelain"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            info["dirty"] = bool(result.stdout.strip())
+    except Exception:
+        pass
+
+    # Get short commit hash
+    try:
+        result = subprocess.run(
+            ["git", "rev-parse", "--short", "HEAD"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            info["short_hash"] = result.stdout.strip()
+    except Exception:
+        pass
+
+    # Ahead/behind upstream
+    try:
+        result = subprocess.run(
+            ["git", "rev-list", "--left-right", "--count", "HEAD...@{upstream}"],
+            cwd=path,
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            parts = result.stdout.strip().split()
+            if len(parts) == 2:
+                info["ahead"] = int(parts[0])
+                info["behind"] = int(parts[1])
+    except Exception:
+        pass
+
+    return info
+
+
+def get_pypi_version(package: str) -> str | None:
+    """Fetch latest version from PyPI API."""
+    try:
+        import urllib.request
+
+        url = f"https://pypi.org/pypi/{package}/json"
+        with urllib.request.urlopen(url, timeout=5) as response:
+            import json
+
+            data = json.loads(response.read().decode())
+            return data.get("info", {}).get("version")
+    except Exception:
+        return None
+
+
+def _normalize_version(v: str | None) -> str | None:
+    """Normalize version string (strip v prefix)."""
+    if v is None:
+        return None
+    return v.lstrip("v")
+
+
+def _pep440_equal(v1: str | None, v2: str | None) -> bool:
+    """Compare two version strings using PEP 440 normalization.
+
+    Treats e.g. '0.10.3-alpha' and '0.10.3a0' as equal.
+    """
+    if v1 is None or v2 is None:
+        return v1 == v2
+    from packaging.version import InvalidVersion, Version
+
+    try:
+        return Version(_normalize_version(v1)) == Version(_normalize_version(v2))
+    except InvalidVersion:
+        return _normalize_version(v1) == _normalize_version(v2)
+
+
+def _compare_versions(v1: str | None, v2: str | None) -> int:
+    """Compare two version strings. Returns -1, 0, or 1."""
+    if v1 is None or v2 is None:
+        return 0
+
+    from packaging.version import Version
+
+    try:
+        ver1 = Version(_normalize_version(v1))
+        ver2 = Version(_normalize_version(v2))
+        if ver1 < ver2:
+            return -1
+        if ver1 > ver2:
+            return 1
+        return 0
+    except Exception:
+        # Fallback: string comparison
+        return 0
+
+
+def _determine_status(info: dict[str, Any]) -> tuple[str, list[str]]:
+    """Determine version status and issues."""
+    issues = []
+
+    toml_ver = info.get("local", {}).get("pyproject_toml")
+    installed_ver = info.get("local", {}).get("installed")
+    tag_ver = _normalize_version(info.get("git", {}).get("latest_tag"))
+    pypi_ver = info.get("remote", {}).get("pypi")
+
+    # Check local consistency (PEP 440: '0.10.3-alpha' == '0.10.3a0')
+    if toml_ver and installed_ver and not _pep440_equal(toml_ver, installed_ver):
+        issues.append(f"pyproject.toml ({toml_ver}) != installed ({installed_ver})")
+
+    # Check if toml matches tag
+    if toml_ver and tag_ver and not _pep440_equal(toml_ver, tag_ver):
+        issues.append(f"pyproject.toml ({toml_ver}) != git tag ({tag_ver})")
+
+    # Check pypi status
+    if toml_ver and pypi_ver:
+        cmp = _compare_versions(toml_ver, pypi_ver)
+        if cmp > 0:
+            issues.append(f"local ({toml_ver}) > pypi ({pypi_ver}) - ready to release")
+            return "unreleased", issues
+        if cmp < 0:
+            issues.append(f"local ({toml_ver}) < pypi ({pypi_ver}) - outdated")
+            return "outdated", issues
+
+    # Check code-version mismatch (commits since last tag)
+    git_info = info.get("git", {})
+    commits_since = git_info.get("commits_since_tag")
+    if commits_since and commits_since > 0 and toml_ver and tag_ver:
+        if _pep440_equal(toml_ver, tag_ver):
+            issues.append(
+                f"{commits_since} commit(s) since {tag_ver} but version not bumped"
+            )
+
+    # Check git worktree status
+    if git_info.get("dirty"):
+        issues.append("uncommitted changes")
+    ahead = git_info.get("ahead", 0)
+    behind = git_info.get("behind", 0)
+    if ahead:
+        issues.append(f"{ahead} commit(s) ahead of remote")
+    if behind:
+        issues.append(f"{behind} commit(s) behind remote")
+
+    if issues:
+        return "mismatch", issues
+
+    if not toml_ver:
+        return "unavailable", ["package not found locally"]
+
+    return "ok", []
+
+
+
+[docs] +def list_versions(packages: list[str] | None = None) -> dict[str, Any]: + """List versions for all ecosystem packages. + + Parameters + ---------- + packages : list[str] | None + List of package names to check. If None, checks all ecosystem packages. + + Returns + ------- + dict + Version information for each package. + """ + if packages is None: + packages = get_all_packages() + + result = {} + for pkg in packages: + if pkg not in ECOSYSTEM: + result[pkg] = {"status": "unknown", "issues": [f"'{pkg}' not in ecosystem"]} + continue + + info: dict[str, Any] = {"local": {}, "git": {}, "remote": {}} + local_path = get_local_path(pkg) + pypi_name = ECOSYSTEM[pkg].get("pypi_name", pkg) + + # Local sources + if local_path and local_path.exists(): + info["local"]["pyproject_toml"] = get_version_from_toml(local_path) + info["local"]["installed"] = get_version_installed(pypi_name) + + # Git sources + if local_path and local_path.exists(): + info["git"]["latest_tag"] = get_git_latest_tag(local_path) + info["git"]["branch"] = get_git_branch(local_path) + info["git"]["commits_since_tag"] = get_commits_since_tag(local_path) + git_status = get_git_status(local_path) + if git_status: + info["git"]["dirty"] = git_status["dirty"] + info["git"]["ahead"] = git_status["ahead"] + info["git"]["behind"] = git_status["behind"] + info["git"]["short_hash"] = git_status["short_hash"] + + # Remote sources + info["remote"]["pypi"] = get_pypi_version(pypi_name) + + # Determine status + status, issues = _determine_status(info) + info["status"] = status + info["issues"] = issues + + result[pkg] = info + + return result
+ + + +
+[docs] +def check_versions(packages: list[str] | None = None) -> dict[str, Any]: + """Check version consistency and return detailed status. + + Parameters + ---------- + packages : list[str] | None + List of package names to check. If None, checks all ecosystem packages. + + Returns + ------- + dict + Detailed version check results with overall summary. + """ + versions = list_versions(packages) + + summary = { + "total": len(versions), + "ok": 0, + "mismatch": 0, + "unreleased": 0, + "outdated": 0, + "unavailable": 0, + "unknown": 0, + } + + for _pkg, info in versions.items(): + status = info.get("status", "unknown") + if status in summary: + summary[status] += 1 + + return {"packages": versions, "summary": summary}
+ + + +
+[docs] +def get_mismatches(packages: list[str] | None = None) -> dict[str, Any]: + """Return packages with non-ok status and their issues. + + Parameters + ---------- + packages : list[str] | None + Package names to check. None = all ecosystem packages. + + Returns + ------- + dict + {package_name: {status, issues, local, git, remote}} for non-ok packages. + """ + versions = list_versions(packages) + return { + pkg: info + for pkg, info in versions.items() + if info.get("status") not in ("ok", "unavailable") + }
+ + + +
+[docs] +def get_ecosystem_versions( + packages: list[str] | None = None, +) -> dict[str, str | None]: + """Return a flat `{pkg_name: installed_version}` dict for the ecosystem. + + Thin wrapper over `list_versions` for consumers that just need the + installed-version string (Django health endpoints, Docker HEALTHCHECK + scripts, dashboards). Skips all the git / PyPI / pyproject cross- + check detail. + + Parameters + ---------- + packages : list[str] | None + Package names to check. None = all ecosystem packages. + + Returns + ------- + dict[str, str | None] + ``{"scitex": "2.27.3", "figrecipe": "0.28.1", "scitex-io": None}``. + None means the package is not installed. + + Examples + -------- + >>> from scitex_dev import get_ecosystem_versions + >>> vers = get_ecosystem_versions() + >>> vers["scitex"] + '2.27.3' + """ + details = list_versions(packages) + return { + pkg: (info.get("local", {}) or {}).get("installed") + for pkg, info in details.items() + }
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_local.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_local.html new file mode 100644 index 000000000..5967469d9 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_local.html @@ -0,0 +1,1206 @@ + + + + + + + + scitex_dev._sync._local — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._sync._local

+#!/usr/bin/env python3
+# Timestamp: 2026-02-24
+# File: scitex_dev/sync.py
+
+"""Ecosystem package sync across local and remote hosts.
+
+Safety model (like bulk_rename):
+  - All operations default to dry_run=True (preview only).
+  - Pass confirm=True to actually execute.
+  - CLI requires --confirm flag.
+  - MCP tool requires confirm=True parameter.
+"""
+
+from __future__ import annotations
+
+import subprocess
+import sys
+from concurrent.futures import ThreadPoolExecutor, as_completed
+from pathlib import Path
+from typing import Any
+
+from .._core.config import DevConfig, HostConfig, get_enabled_hosts, load_config
+
+# ---------------------------------------------------------------------------
+# SSH helpers
+# ---------------------------------------------------------------------------
+
+
+def _build_ssh_args(host: HostConfig) -> list[str]:
+    """Build SSH command prefix for a host."""
+    args = ["ssh"]
+    if host.ssh_key:
+        args.extend(["-i", host.ssh_key])
+    if host.port != 22:
+        args.extend(["-p", str(host.port)])
+    args.extend(
+        [
+            "-o",
+            "BatchMode=yes",
+            "-o",
+            "StrictHostKeyChecking=accept-new",
+            "-o",
+            "ConnectTimeout=10",
+        ]
+    )
+    args.append(f"{host.user}@{host.hostname}")
+    return args
+
+
+def _get_host_packages(host: HostConfig, config: DevConfig) -> list[tuple[str, str]]:
+    """Get (package_name, remote_dir_name) pairs for a host.
+
+    Resolution: legacy ``host.packages`` allow-list wins; otherwise
+    default to all ecosystem packages minus ``host.exclude``.
+    """
+    pkg_map = {p.name: p for p in config.packages}
+    if host.packages:
+        names = list(host.packages)
+    else:
+        excluded = set(host.exclude or [])
+        names = [p.name for p in config.packages if p.name not in excluded]
+    out = []
+    for name in names:
+        pkg = pkg_map.get(name)
+        if pkg and pkg.local_path:
+            out.append((name, Path(pkg.local_path).expanduser().name))
+    return out
+
+
+def _build_sync_commands(
+    host: HostConfig, dir_name: str, stash: bool, install: bool
+) -> list[str]:
+    """Build the shell commands that would be run for a package."""
+    base = f"{host.remote_base}/{dir_name}"
+    cmds = [f"cd {base}"]
+    if install:
+        # Ensure .venv symlink exists so pip resolves to the right env
+        cmds.append("test -e .venv || ln -s ~/.venv .venv 2>/dev/null || true")
+    if stash:
+        cmds.append("git stash")
+    cmds.append("git pull")
+    if install:
+        cmds.append(f"{host.pip_bin} install -e . -q")
+    if stash:
+        cmds.append("git stash pop 2>/dev/null || true")
+    return cmds
+
+
+def _check_ahead_state(
+    host: HostConfig,
+    dir_name: str,
+    *,
+    subprocess_run=None,
+) -> dict[str, Any]:
+    """Inspect the remote working copy's position vs. its upstream.
+
+    Returns a dict with ``status`` in:
+      - ``clean``: up-to-date or only behind upstream (safe to pull).
+      - ``ahead``: remote-side has unpushed commits — fast-forward pull
+        would be blocked; skip to avoid clobbering local work.
+      - ``diverged``: both ahead and behind — needs human decision.
+      - ``missing``: repo dir or git metadata absent.
+      - ``error``: SSH/git failure; see ``error`` field.
+
+    Also returns ``local_ahead`` (remote-side commits ahead of
+    ``@{u}``) and ``remote_ahead`` (``@{u}`` commits ahead of HEAD).
+    "Local" here is confusingly the *remote host's* working copy —
+    the caller is on some other machine.
+    """
+    base = f"{host.remote_base}/{dir_name}"
+    # Single-line remote script — uses unique sentinels so output parsing
+    # survives line-wrap/colorization from git or shell integrations.
+    remote_cmd = (
+        f"cd {base} 2>/dev/null || {{ echo SACDEV_MISSING; exit 0; }}; "
+        "if [ ! -d .git ]; then echo SACDEV_MISSING; exit 0; fi; "
+        "git fetch -q 2>/dev/null || true; "
+        'la=$(git rev-list --count "@{u}..HEAD" 2>/dev/null || echo 0); '
+        'ra=$(git rev-list --count "HEAD..@{u}" 2>/dev/null || echo 0); '
+        "echo SACDEV_STATE la=$la ra=$ra"
+    )
+    ssh_args = _build_ssh_args(host)
+    ssh_args.append(remote_cmd)
+    runner = subprocess_run if subprocess_run is not None else subprocess.run
+    try:
+        result = runner(ssh_args, capture_output=True, text=True, timeout=60)
+        stdout = result.stdout.strip()
+        if result.returncode != 0:
+            return {
+                "status": "error",
+                "error": (result.stderr.strip() or f"exit {result.returncode}"),
+            }
+        if "SACDEV_MISSING" in stdout:
+            return {"status": "missing"}
+        # Parse: "SACDEV_STATE la=X ra=Y"
+        la, ra = 0, 0
+        for tok in stdout.split():
+            if tok.startswith("la="):
+                la = int(tok[3:] or 0)
+            elif tok.startswith("ra="):
+                ra = int(tok[3:] or 0)
+        if la > 0 and ra > 0:
+            status = "diverged"
+        elif la > 0:
+            status = "ahead"
+        else:
+            status = "clean"
+        return {"status": status, "local_ahead": la, "remote_ahead": ra}
+    except subprocess.TimeoutExpired:
+        return {"status": "error", "error": "ahead-check SSH timed out (60s)"}
+    except Exception as e:
+        return {"status": "error", "error": str(e)}
+
+
+def _sync_one_package(
+    host: HostConfig,
+    dir_name: str,
+    stash: bool,
+    install: bool,
+    safe: bool = True,
+    *,
+    subprocess_run=None,
+    check_ahead_state_fn=None,
+) -> dict[str, Any]:
+    """Sync a single package on a remote host.
+
+    When ``safe`` is True (default), first check whether the remote
+    working copy has unpushed commits; if so, skip to avoid clobbering.
+    This matches the user instruction: if remote is ahead, compare and
+    skip when a decision is unclear.
+    """
+    check_ahead = (
+        check_ahead_state_fn if check_ahead_state_fn is not None else _check_ahead_state
+    )
+    runner = subprocess_run if subprocess_run is not None else subprocess.run
+    if safe:
+        ahead = check_ahead(host, dir_name)
+        if ahead["status"] in {"ahead", "diverged"}:
+            return {
+                "status": f"skipped_{ahead['status']}",
+                "local_ahead": ahead.get("local_ahead", 0),
+                "remote_ahead": ahead.get("remote_ahead", 0),
+                "reason": (
+                    "remote working copy has unpushed commits; resolve manually "
+                    "(push / rebase / reset) then re-run sync"
+                ),
+            }
+        if ahead["status"] == "missing":
+            return {"status": "missing", "reason": "package dir not on remote"}
+        if ahead["status"] == "error":
+            return {
+                "status": "error",
+                "error": ahead.get("error", "ahead-check failed"),
+            }
+
+    cmds = _build_sync_commands(host, dir_name, stash, install)
+    remote_cmd = " && ".join(cmds)
+
+    ssh_args = _build_ssh_args(host)
+    ssh_args.append(remote_cmd)
+
+    try:
+        result = runner(ssh_args, capture_output=True, text=True, timeout=120)
+        stdout = result.stdout.strip()
+        stderr = result.stderr.strip()
+
+        if result.returncode == 0:
+            return {"status": "ok", "output": stdout}
+        return {
+            "status": "error",
+            "output": stdout,
+            "error": stderr or f"exit code {result.returncode}",
+        }
+    except subprocess.TimeoutExpired:
+        return {"status": "timeout", "error": "SSH command timed out (120s)"}
+    except Exception as e:
+        return {"status": "error", "error": str(e)}
+
+
+# ---------------------------------------------------------------------------
+# Public API — all default to dry_run=True (safe preview)
+# ---------------------------------------------------------------------------
+
+
+
+[docs] +def sync_host( + host: HostConfig, + packages: list[str] | None = None, + stash: bool = True, + install: bool = True, + safe: bool = True, + confirm: bool = False, + config: DevConfig | None = None, + *, + host_packages_fn=None, +) -> dict[str, Any]: + """Sync packages to a remote host via SSH. + + Safety: defaults to preview only. Pass confirm=True to execute. + + Steps per package: ahead-check (if safe), git stash, git pull, + pip install -e ., git stash pop. + + Parameters + ---------- + host : HostConfig + Target host configuration. + packages : list[str] | None + Package names to sync. None = use host's configured packages. + stash : bool + Git stash before pull (default True). + install : bool + Pip install after pull (default True). + safe : bool + If True (default), pre-check each remote working copy and skip + packages whose HEAD is ahead of / diverged from upstream so we + never clobber unpushed commits. + confirm : bool + If False (default), preview only (dry run). + If True, execute the sync operation. + config : DevConfig | None + Configuration. Loaded from default if None. + + Returns + ------- + dict + Per-package results: {package: {status, commands|output, error}}. + ``status`` includes ``ok``, ``skipped_ahead``, ``skipped_diverged``, + ``missing``, ``error``, ``timeout``, or ``dry_run``. + """ + if config is None: + config = load_config() + + get_host_pkgs = ( + host_packages_fn if host_packages_fn is not None else _get_host_packages + ) + host_pkgs = get_host_pkgs(host, config) + if packages: + host_pkgs = [(n, d) for n, d in host_pkgs if n in packages] + + if not confirm: + return { + name: { + "status": "dry_run", + "commands": _build_sync_commands(host, dir_name, stash, install), + "safe_check": safe, + } + for name, dir_name in host_pkgs + } + + # Parallel package sync within a single host + results: dict[str, Any] = {} + with ThreadPoolExecutor(max_workers=4) as executor: + futures = { + executor.submit( + _sync_one_package, host, dir_name, stash, install, safe + ): name + for name, dir_name in host_pkgs + } + for future in as_completed(futures): + name = futures[future] + try: + results[name] = future.result() + except Exception as e: + results[name] = {"status": "error", "error": str(e)} + return results
+ + + +
+[docs] +def sync_all( + hosts: list[str] | None = None, + packages: list[str] | None = None, + stash: bool = True, + install: bool = True, + safe: bool = True, + confirm: bool = False, + config: DevConfig | None = None, + *, + sync_host_fn=None, + enabled_hosts_fn=None, +) -> dict[str, Any]: + """Sync packages across all enabled hosts. + + Safety: defaults to preview only. Pass confirm=True to execute. + Parallel: hosts are synced concurrently by default. + + Parameters + ---------- + hosts : list[str] | None + Host names to sync. None = all enabled hosts. + packages : list[str] | None + Package names. None = host-specific defaults. + stash : bool + Git stash before pull. + install : bool + Pip install after pull. + safe : bool + If True (default), skip packages whose remote working copy is + ahead of / diverged from upstream (never clobber unpushed work). + confirm : bool + If False (default), preview only (dry run). + If True, execute the sync operation. + config : DevConfig | None + Configuration. + + Returns + ------- + dict + {host_name: {package: result}}. + """ + if config is None: + config = load_config() + + enabled_fn = enabled_hosts_fn if enabled_hosts_fn is not None else get_enabled_hosts + do_sync_host = sync_host_fn if sync_host_fn is not None else sync_host + + enabled = enabled_fn(config) + if hosts: + enabled = [h for h in enabled if h.name in hosts] + + if not confirm: + # Dry-run: no SSH needed, compute locally + return { + host.name: do_sync_host( + host, + packages=packages, + stash=stash, + install=install, + safe=safe, + confirm=False, + config=config, + ) + for host in enabled + } + + # Execute: parallel across hosts + results: dict[str, Any] = {} + with ThreadPoolExecutor(max_workers=len(enabled) or 1) as executor: + futures = { + executor.submit( + do_sync_host, + host, + packages=packages, + stash=stash, + install=install, + safe=safe, + confirm=True, + config=config, + ): host.name + for host in enabled + } + for future in as_completed(futures): + host_name = futures[future] + try: + results[host_name] = future.result() + except Exception as e: + results[host_name] = {"error": str(e)} + return results
+ + + +def _install_one(pkg, path: Path) -> tuple[str, dict[str, Any]]: + """Run `pip install -e <path>` for one package; return (name, result).""" + try: + # sys.executable -m pip — bare `pip` finds the first one on PATH, + # which can be a system Python with stale metadata (spartan's + # /usr/bin/pip is Python 3.9 and fails on >=3.10 wheels). + result = subprocess.run( + [sys.executable, "-m", "pip", "install", "-e", str(path), "-q"], + capture_output=True, + text=True, + timeout=300, + ) + if result.returncode == 0: + return pkg.name, {"status": "ok", "output": result.stdout.strip()} + return pkg.name, {"status": "error", "error": result.stderr.strip()} + except Exception as e: + return pkg.name, {"status": "error", "error": str(e)} + + +
+[docs] +def sync_local( + packages: list[str] | None = None, + confirm: bool = False, + config: DevConfig | None = None, + jobs: int = 1, + on_progress=None, +) -> dict[str, Any]: + """Install all local editable packages. + + Safety: defaults to preview only. Pass confirm=True to execute. + + Parameters + ---------- + packages : list[str] | None + Package names. None = all configured packages. + confirm : bool + If False (default), preview only. + If True, execute pip install -e. + config : DevConfig | None + Configuration. + jobs : int + Parallel installs. 1 = serial (default). 0 or negative = all CPUs. + on_progress : callable | None + Optional callback ``f(idx, total, name, status, elapsed)`` invoked + as each package finishes. + + Returns + ------- + dict + {package: {status, output|commands}}. + """ + import os + import time + from concurrent.futures import ThreadPoolExecutor, as_completed + + if config is None: + config = load_config() + + targets = config.packages + if packages: + targets = [p for p in targets if p.name in packages] + + # Resolve installable targets (skip missing-path early) + work: list[tuple[Any, Path]] = [] + results: dict[str, Any] = {} + for pkg in targets: + if not pkg.local_path: + continue + path = Path(pkg.local_path).expanduser() + if not path.exists(): + results[pkg.name] = {"status": "skipped", "error": f"{path} not found"} + continue + if not confirm: + results[pkg.name] = { + "status": "dry_run", + "commands": [ + sys.executable, + "-m", + "pip", + "install", + "-e", + str(path), + "-q", + ], + } + continue + work.append((pkg, path)) + + if not work: + return results + + # Resolve --jobs + if jobs <= 0: + jobs = os.cpu_count() or 1 + jobs = max(1, min(jobs, len(work))) + + total = len(work) + started = {pkg.name: time.monotonic() for pkg, _ in work} + + if jobs == 1: + # Serial path — preserve deterministic ordering + for idx, (pkg, path) in enumerate(work, 1): + name, res = _install_one(pkg, path) + results[name] = res + if on_progress is not None: + on_progress( + idx, total, name, res["status"], time.monotonic() - started[name] + ) + else: + # Parallel path — pip install -e is mostly I/O (git, PyPI metadata) + with ThreadPoolExecutor(max_workers=jobs) as ex: + futures = { + ex.submit(_install_one, pkg, path): pkg.name for pkg, path in work + } + for idx, fut in enumerate(as_completed(futures), 1): + name, res = fut.result() + results[name] = res + if on_progress is not None: + on_progress( + idx, + total, + name, + res["status"], + time.monotonic() - started[name], + ) + + return results
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_remote.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_remote.html new file mode 100644 index 000000000..0ee0d6d62 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_remote.html @@ -0,0 +1,1028 @@ + + + + + + + + scitex_dev._sync._remote — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._sync._remote

+#!/usr/bin/env python3
+# Timestamp: 2026-02-26
+# File: scitex_dev/sync_remote.py
+
+"""Reverse sync operations: remote -> local.
+
+Complements sync.py (local -> remote) with:
+  - remote_diff(): Show uncommitted changes on remote hosts
+  - remote_commit(): Commit + push dirty changes on remote hosts
+  - pull_local(): Pull origin -> local repos
+
+Safety model (same as sync.py):
+  - All mutating operations default to confirm=False (preview only).
+  - Pass confirm=True to actually execute.
+"""
+
+from __future__ import annotations
+
+import subprocess
+from pathlib import Path
+from typing import Any
+
+from .._core.config import DevConfig, HostConfig, get_enabled_hosts, load_config
+from ._local import _build_ssh_args, _get_host_packages
+
+# ---------------------------------------------------------------------------
+# SSH helper (filters X11 noise)
+# ---------------------------------------------------------------------------
+
+
+def _run_ssh(host: HostConfig, remote_cmd: str, timeout: int = 120) -> dict[str, Any]:
+    """Run a single SSH command and return structured result."""
+    ssh_args = _build_ssh_args(host)
+    ssh_args.append(remote_cmd)
+    try:
+        result = subprocess.run(
+            ssh_args, capture_output=True, text=True, timeout=timeout
+        )
+        stdout = result.stdout.strip()
+        stderr = result.stderr.strip()
+        stderr_lines = [
+            line for line in stderr.splitlines() if "X11 forwarding" not in line
+        ]
+        stderr = "\n".join(stderr_lines).strip()
+        if result.returncode == 0:
+            return {"status": "ok", "output": stdout, "stderr": stderr}
+        return {
+            "status": "error",
+            "output": stdout,
+            "error": stderr or f"exit code {result.returncode}",
+        }
+    except subprocess.TimeoutExpired:
+        return {"status": "timeout", "error": f"SSH command timed out ({timeout}s)"}
+    except Exception as e:
+        return {"status": "error", "error": str(e)}
+
+
+# ---------------------------------------------------------------------------
+# Public API
+# ---------------------------------------------------------------------------
+
+
+
+[docs] +def remote_diff( + host: str | None = None, + packages: list[str] | None = None, + config: DevConfig | None = None, +) -> dict[str, Any]: + """Show git diff on remote host(s). Read-only operation. + + Parameters + ---------- + host : str | None + Host name. None = first enabled host. + packages : list[str] | None + Package names. None = host-configured defaults. + config : DevConfig | None + Configuration. + + Returns + ------- + dict + {host_name: {package: {status, files, diff_stat, diff}}}. + """ + if config is None: + config = load_config() + + enabled = get_enabled_hosts(config) + if host: + enabled = [h for h in enabled if h.name == host] + if not enabled: + return {"error": f"Host '{host}' not found or not enabled"} + + results: dict[str, Any] = {} + for h in enabled: + host_pkgs = _get_host_packages(h, config) + if packages: + host_pkgs = [(n, d) for n, d in host_pkgs if n in packages] + + pkg_results: dict[str, Any] = {} + for name, dir_name in host_pkgs: + base = f"{h.remote_base}/{dir_name}" + cmd = ( + f"cd {base} && " + f"echo '---STATUS---' && git status --short && " + f"echo '---STAT---' && git diff --stat && " + f"echo '---DIFF---' && git diff" + ) + r = _run_ssh(h, cmd) + if r["status"] == "ok": + output = r["output"] + parts = output.split("---DIFF---") + header = parts[0] if parts else "" + diff = parts[1].strip() if len(parts) > 1 else "" + + stat_parts = header.split("---STAT---") + status_text = ( + stat_parts[0].replace("---STATUS---", "").strip() + if stat_parts + else "" + ) + stat_text = stat_parts[1].strip() if len(stat_parts) > 1 else "" + + pkg_results[name] = { + "status": "dirty" if status_text else "clean", + "files": status_text, + "diff_stat": stat_text, + "diff": diff, + } + else: + pkg_results[name] = r + results[h.name] = pkg_results + return results
+ + + +
+[docs] +def remote_commit( + host: str, + packages: list[str] | None = None, + message: str | None = None, + push: bool = True, + confirm: bool = False, + config: DevConfig | None = None, +) -> dict[str, Any]: + """Commit dirty changes on a remote host and optionally push to origin. + + Safety: defaults to preview only. Pass confirm=True to execute. + + Parameters + ---------- + host : str + Host name (required). + packages : list[str] | None + Package names. None = host-configured defaults. + message : str | None + Commit message. Auto-generated if not provided. + push : bool + Push to origin after commit (default True). + confirm : bool + If False (default), preview only (dry run). + config : DevConfig | None + Configuration. + + Returns + ------- + dict + {package: {status, commands|output}}. + """ + if config is None: + config = load_config() + + enabled = get_enabled_hosts(config) + target = next((h for h in enabled if h.name == host), None) + if target is None: + return {"error": f"Host '{host}' not found or not enabled"} + + host_pkgs = _get_host_packages(target, config) + if packages: + host_pkgs = [(n, d) for n, d in host_pkgs if n in packages] + + results: dict[str, Any] = {} + for name, dir_name in host_pkgs: + base = f"{target.remote_base}/{dir_name}" + + if not confirm: + cmd = f"cd {base} && git status --short" + r = _run_ssh(target, cmd) + dirty_files = r.get("output", "").strip() if r["status"] == "ok" else "" + if not dirty_files: + results[name] = {"status": "clean", "message": "nothing to commit"} + continue + + msg = message or f"chore({name}): sync from {host}" + commit_cmds = [f"cd {base}", "git add -A", f'git commit -m "{msg}"'] + if push: + commit_cmds.append("git push origin $(git rev-parse --abbrev-ref HEAD)") + results[name] = { + "status": "dry_run", + "dirty_files": dirty_files, + "commands": commit_cmds, + } + continue + + # Execute: check if dirty first + status_r = _run_ssh(target, f"cd {base} && git status --short") + dirty = status_r.get("output", "").strip() if status_r["status"] == "ok" else "" + if not dirty: + results[name] = {"status": "clean", "message": "nothing to commit"} + continue + + msg = message or f"chore({name}): sync from {host}" + cmds = [f"cd {base}", "git add -A", f'git commit -m "{msg}"'] + if push: + cmds.append("git push origin $(git rev-parse --abbrev-ref HEAD)") + results[name] = _run_ssh(target, " && ".join(cmds)) + + return results
+ + + +
+[docs] +def pull_local( + packages: list[str] | None = None, + confirm: bool = False, + stash: bool = True, + config: DevConfig | None = None, +) -> dict[str, Any]: + """Pull latest from origin to local repos. + + Safety: defaults to preview only. Pass confirm=True to execute. + + Parameters + ---------- + packages : list[str] | None + Package names. None = all configured packages. + confirm : bool + If False (default), preview only. + stash : bool + If True (default), stash local changes before pull and pop after. + If False and repo is dirty, pull proceeds as-is (may fail). + config : DevConfig | None + Configuration. + + Returns + ------- + dict + {package: {status, output|commands, stashed}}. + """ + if config is None: + config = load_config() + + targets = config.packages + if packages: + targets = [p for p in targets if p.name in packages] + + results: dict[str, Any] = {} + for pkg in targets: + if not pkg.local_path: + continue + + path = Path(pkg.local_path).expanduser() + if not path.exists(): + results[pkg.name] = {"status": "skipped", "error": f"{path} not found"} + continue + + # Check if repo is dirty + status_result = subprocess.run( + ["git", "-C", str(path), "status", "--porcelain"], + capture_output=True, + text=True, + timeout=10, + ) + is_dirty = bool(status_result.stdout.strip()) + + if not confirm: + entry: dict[str, Any] = { + "status": "dry_run", + "commands": ["git", "-C", str(path), "pull", "origin"], + } + if is_dirty: + entry["dirty"] = True + if stash: + entry["note"] = "repo is dirty; would stash before pull" + results[pkg.name] = entry + continue + + try: + did_stash = False + if is_dirty and stash: + stash_result = subprocess.run( + ["git", "-C", str(path), "stash"], + capture_output=True, + text=True, + timeout=30, + ) + if stash_result.returncode != 0: + results[pkg.name] = { + "status": "error", + "error": stash_result.stderr.strip() or "git stash failed", + "stashed": False, + } + continue + did_stash = True + + result = subprocess.run( + ["git", "-C", str(path), "pull", "origin"], + capture_output=True, + text=True, + timeout=60, + ) + stdout = result.stdout.strip() + stderr = result.stderr.strip() + stderr_lines = [ + line for line in stderr.splitlines() if "X11 forwarding" not in line + ] + stderr = "\n".join(stderr_lines).strip() + + if did_stash: + pop_result = subprocess.run( + ["git", "-C", str(path), "stash", "pop"], + capture_output=True, + text=True, + timeout=30, + ) + if pop_result.returncode != 0: + results[pkg.name] = { + "status": "stash_conflict", + "output": stdout or stderr, + "stashed": True, + "error": pop_result.stderr.strip() + or "git stash pop failed; resolve conflicts manually", + } + continue + + if result.returncode == 0: + results[pkg.name] = { + "status": "ok", + "output": stdout or stderr, + "stashed": did_stash, + } + else: + results[pkg.name] = { + "status": "error", + "error": stderr or f"exit code {result.returncode}", + "stashed": did_stash, + } + except Exception as e: + results[pkg.name] = {"status": "error", "error": str(e)} + return results
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_tags.html b/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_tags.html new file mode 100644 index 000000000..ac49678a9 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_dev/_sync/_tags.html @@ -0,0 +1,780 @@ + + + + + + + + scitex_dev._sync._tags — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_dev._sync._tags

+#!/usr/bin/env python3
+# Timestamp: 2026-04-27
+# File: scitex_dev/sync_tags.py
+
+"""Push local git tags for ecosystem packages to origin.
+
+Extracted from ``sync.py`` to keep that module under the line-limit.
+``scitex_dev.sync`` re-exports ``sync_tags`` for backward compat.
+"""
+
+from __future__ import annotations
+
+import subprocess
+from pathlib import Path
+from typing import Any
+
+from .._core.config import DevConfig, load_config
+
+
+
+[docs] +def sync_tags( + packages: list[str] | None = None, + confirm: bool = False, + config: DevConfig | None = None, +) -> dict[str, Any]: + """Push local tags for all packages to origin. + + Safety: defaults to preview only. Pass confirm=True to execute. + + Parameters + ---------- + packages : list[str] | None + Package names. None = all configured packages. + confirm : bool + If False (default), preview only. + If True, execute git push --tags. + config : DevConfig | None + Configuration. + + Returns + ------- + dict + {package: {status, tag, output|commands}}. + """ + if config is None: + config = load_config() + + targets = config.packages + if packages: + targets = [p for p in targets if p.name in packages] + + results: dict[str, Any] = {} + for pkg in targets: + if not pkg.local_path: + continue + + path = Path(pkg.local_path).expanduser() + if not path.exists(): + results[pkg.name] = {"status": "skipped", "error": f"{path} not found"} + continue + + try: + tag_result = subprocess.run( + ["git", "describe", "--tags", "--abbrev=0"], + capture_output=True, + text=True, + cwd=str(path), + timeout=10, + ) + tag = tag_result.stdout.strip() if tag_result.returncode == 0 else None + except Exception: + tag = None + + if not confirm: + results[pkg.name] = { + "status": "dry_run", + "tag": tag, + "commands": ["git", "push", "origin", "--tags"], + } + continue + + try: + push_result = subprocess.run( + ["git", "push", "origin", "--tags"], + capture_output=True, + text=True, + cwd=str(path), + timeout=30, + ) + if push_result.returncode == 0: + results[pkg.name] = { + "status": "ok", + "tag": tag, + "output": push_result.stderr.strip(), + } + else: + results[pkg.name] = { + "status": "error", + "tag": tag, + "error": push_result.stderr.strip(), + } + except Exception as e: + results[pkg.name] = {"status": "error", "error": str(e)} + return results
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_etc/_grid.html b/src/scitex/_sphinx_html/_modules/scitex_etc/_grid.html new file mode 100644 index 000000000..ecec4387c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_etc/_grid.html @@ -0,0 +1,740 @@ + + + + + + + + scitex_etc._grid — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_etc._grid

+#!/usr/bin/env python3
+# File: src/scitex_etc/_grid.py
+
+"""Combinatorial parameter-grid iteration helpers.
+
+Generic utilities for parameter sweeps: count the number of combinations in a
+grid and yield each combination as a dict. No domain ties — pure stdlib.
+"""
+
+from __future__ import annotations
+
+import itertools as _itertools
+import random as _random
+
+
+
+[docs] +def yield_grids(params_grid: dict, random: bool = False): + """Yield every parameter combination from a grid as a dict. + + Parameters + ---------- + params_grid : dict + Mapping of parameter name -> list of candidate values. + random : bool, optional + If True, yield the combinations in shuffled order (default False). + + Yields + ------ + dict + One combination, mapping each parameter name to a single value. + + Example + ------- + >>> grid = {"a": [1, 2], "b": ["x", "y"]} + >>> list(yield_grids(grid)) + [{'a': 1, 'b': 'x'}, {'a': 1, 'b': 'y'}, {'a': 2, 'b': 'x'}, {'a': 2, 'b': 'y'}] + """ + combinations = list(_itertools.product(*params_grid.values())) + if random: + _random.shuffle(combinations) + for values in combinations: + yield dict(zip(params_grid.keys(), values))
+ + + +
+[docs] +def count_grids(params_grid: dict) -> int: + """Return the total number of combinations in a parameter grid. + + Parameters + ---------- + params_grid : dict + Mapping of parameter name -> list of candidate values. + + Returns + ------- + int + Product of the lengths of all value lists. + """ + num_combinations = 1 + for values in params_grid.values(): + num_combinations *= len(values) + return num_combinations
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_etc/_search.html b/src/scitex/_sphinx_html/_modules/scitex_etc/_search.html new file mode 100644 index 000000000..219de3573 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_etc/_search.html @@ -0,0 +1,813 @@ + + + + + + + + scitex_etc._search — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_etc._search

+#!/usr/bin/env python3
+# File: src/scitex_etc/_search.py
+
+"""Regex pattern search over collections of strings.
+
+Generic cross-cutting helper. Stdlib-only at runtime: numpy, pandas, xarray and
+natsort are all *optional* — when present, their array/series types are accepted
+as inputs and natural sort ordering is used; otherwise plain lists and the
+builtin ``sorted`` are used.
+"""
+
+from __future__ import annotations
+
+import re
+from collections import abc
+
+try:  # optional — natural sort ordering when available
+    from natsort import natsorted as _natsorted
+except ImportError:  # pragma: no cover — fallback path
+
+    def _natsorted(iterable):
+        return sorted(iterable)
+
+
+def _to_list(string_or_pattern):
+    """Coerce assorted string containers into a plain list of strings."""
+    # numpy arrays (optional dependency)
+    try:
+        import numpy as _np
+
+        if isinstance(string_or_pattern, _np.ndarray):
+            return string_or_pattern.tolist()
+    except ImportError:
+        pass
+
+    # pandas Series / Index (optional dependency)
+    try:
+        import pandas as _pd
+
+        if isinstance(string_or_pattern, (_pd.Series, _pd.Index)):
+            return string_or_pattern.tolist()
+    except ImportError:
+        pass
+
+    # xarray DataArray (optional, lazy to avoid atexit hang issues)
+    try:
+        import xarray as _xr
+
+        if isinstance(string_or_pattern, _xr.DataArray):
+            return string_or_pattern.tolist()
+    except ImportError:
+        pass
+
+    if isinstance(string_or_pattern, abc.KeysView):
+        return list(string_or_pattern)
+    if not isinstance(string_or_pattern, (list, tuple)):
+        return [string_or_pattern]
+    return string_or_pattern
+
+
+
+
+
+
+# EOF
+
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_etc/wait_key.html b/src/scitex/_sphinx_html/_modules/scitex_etc/wait_key.html new file mode 100644 index 000000000..ae7f8c5f3 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_etc/wait_key.html @@ -0,0 +1,736 @@ + + + + + + + + scitex_etc.wait_key — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_etc.wait_key

+#!/usr/bin/env python3
+# File: src/scitex_etc/wait_key.py
+
+import multiprocessing
+import time
+
+import readchar
+
+
+def wait_key(p, *, read_key=None, printer=print):
+    """Block until the user presses ``q``, then terminate process ``p``.
+
+    Echoes each key as it is pressed; on ``q`` prints a notice and calls
+    ``p.terminate()``.
+
+    Parameters
+    ----------
+    p
+        A process-like object exposing ``terminate()``.
+    read_key : callable, optional
+        Zero-arg callable returning the next key as a string. Defaults to
+        ``readchar.readchar``. Injectable as a test seam (no mocks).
+    printer : callable, optional
+        Output sink, defaults to the builtin ``print``. Injectable so tests
+        can record output without patching ``builtins.print``.
+    """
+    if read_key is None:
+        read_key = readchar.readchar
+    key = "x"
+    while key != "q":
+        key = read_key()
+        printer(key)
+    printer("q was pressed.")
+    p.terminate()
+
+
+
+[docs] +def count(*, printer=print, sleeper=time.sleep): + """Print an incrementing counter forever, sleeping 1s between values. + + Parameters + ---------- + printer : callable, optional + Output sink, defaults to the builtin ``print``. Injectable test seam. + sleeper : callable, optional + One-arg sleep callable, defaults to ``time.sleep``. Injectable so + tests can run without real delay and bound the loop. + """ + counter = 0 + while True: + printer(counter) + sleeper(1) + counter += 1
+ + + +if __name__ == "__main__": + p1 = multiprocessing.Process(target=count) + + p1.start() + wait_key(p1) + print("aaa") + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_processFigure_S.html b/src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_processFigure_S.html new file mode 100644 index 000000000..68b7ec425 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_processFigure_S.html @@ -0,0 +1,805 @@ + + + + + + + + scitex_gists._SigMacro_processFigure_S — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_gists._SigMacro_processFigure_S

+
+[docs] +def sigmacro_process_figure_s(): + """Print a macro for SigmaPlot (v12.0) to format a panel. + + Please refer to the 'Automating Routine Tasks' section of the official documentation. + """ + print( + """ +Option Explicit + +' Constants for FLAG_SET_BIT and FLAG_CLEAR_BIT should be defined +Const FLAG_SET_BIT As Long = 1 ' Assuming value, replace with actual value +Const FLAG_CLEAR_BIT As Long = 0 ' Assuming value, replace with actual value + +' Function to set option flag bits on +Function FlagOn(flag As Long) As Long + FlagOn = flag Or FLAG_SET_BIT +End Function + +' Function to set option flag bits off +Function FlagOff(flag As Long) As Long + FlagOff = flag And Not FLAG_CLEAR_BIT +End Function + +' Procedure to set the title size to 8 points +Sub setTitleSize() + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETOBJECTATTR, STA_SIZE, "111") ' Size set to 8 points +End Sub + +' Procedure to set label size for a given dimension to 8 points +Sub setLabelSize(dimension) + ' ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_AXIS).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETOBJECTATTR, STA_SIZE, "111") ' Size set to 8 points +End Sub + +' Procedure to set tick label size for a given dimension to 7 points +Sub setTickLabelSize(dimension) + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension) + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_AXIS).TickLabelAttributes(SAA_LINE_MAJORTIC).SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETOBJECTATTR, STA_SIZE, "97") ' Size set to 7 points +End Sub + +' Procedure to process tick settings for a given dimension +Sub processTicks(dimension) + ' Ensure the object is correctly targeted before setting attributes + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_AXIS).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_SELECTLINE, 1) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SEA_THICKNESS, &H00000008) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_TICSIZE, &H00000020) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_SELECTLINE, 2) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SEA_THICKNESS, &H00000008) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_TICSIZE, &H00000020) +End Sub + +' Procedure to remove an axis for a given dimension +Sub removeAxis(dimension) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SLA_SELECTDIM, dimension) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETAXISATTR, SAA_SUB2OPTIONS, &H00000000) +End Sub + +Sub resizeFigure + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + With ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH) + '.Top = 0 + '.Left = 0 + .Width = &H000004F5& + .Height = &H00000378& + End With +End Sub + +' Main procedure +Sub Main() + Dim FullPATH As String + Dim OrigPageName As String + Dim ObjectType As String + Dim COLOR As Long + + ' Saves the original page to jump back + FullPATH = ActiveDocument.FullName + OrigPageName = ActiveDocument.CurrentPageItem.Name + ActiveDocument.NotebookItems(OrigPageName).IsCurrentBrowserEntry = True + + ' Code to set the figure size should be implemented here + resizeFigure + + ' Set the title sizes + setTitleSize + + ' Set the sizes of X/Y labels + setLabelSize(1) ' X-axis + setLabelSize(2) ' Y-axis + + ' Set the sizes of X/Y tick labels + setTickLabelSize(1) ' X-axis + setTickLabelSize(2) ' Y-axis + + ' Set tick length and width + processTicks(1) ' X-axis + processTicks(2) ' Y-axis + + ' Remove right and top axes + removeAxis(1) ' Right axis + removeAxis(2) ' Top axis + + ' Go back to the original page + Notebooks(FullPATH).NotebookItems(OrigPageName).Open + +End Sub + """ + )
+ + + +# Backward compatibility alias +import warnings + + +
+[docs] +def SigMacro_processFigure_S(): + """Deprecated: Use sigmacro_process_figure_s() instead.""" + warnings.warn( + "SigMacro_processFigure_S is deprecated, use sigmacro_process_figure_s() instead", + DeprecationWarning, + stacklevel=2, + ) + return sigmacro_process_figure_s()
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_toBlue.html b/src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_toBlue.html new file mode 100644 index 000000000..a4049c958 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_gists/_SigMacro_toBlue.html @@ -0,0 +1,849 @@ + + + + + + + + scitex_gists._SigMacro_toBlue — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_gists._SigMacro_toBlue

+
+[docs] +def sigmacro_to_blue(): + """Print a macro for SigmaPlot (v12.0) that changes the color and style of the selected object. + + Please refer to the 'Automating Routine Tasks' section of the official documentation. + """ + print( + """ +Option Explicit + +Function FlagOn(flag As Long) As Long + FlagOn = flag Or FLAG_SET_BIT ' Use to set option flag bits on, leaving others unchanged +End Function + +Function FlagOff(flag As Long) As Long + FlagOff = flag Or FLAG_CLEAR_BIT ' Use to set option flag bits off, leaving others unchanged +End Function + +Function getColor(colorName As String) As Long + Select Case colorName + + Case "Black" + getColor = RGB(0, 0, 0) + Case "Gray" + getColor = RGB(128, 128, 128) + Case "White" + getColor = RGB(255, 255, 255) + + + Case "Blue" + getColor = RGB(0, 128, 192) + Case "Green" + getColor = RGB(20, 180, 20) + Case "Red" + getColor = RGB(255, 70, 50) + + + Case "Yellow" + getColor = RGB(230, 160, 20) + Case "Purple" + getColor = RGB(200, 50, 255) + + + Case "Pink" + getColor = RGB(255, 150, 200) + Case "LightBlue" + getColor = RGB(20, 200, 200) + + + Case "DarkBlue" + getColor = RGB(0, 0, 100) + Case "Dan" + getColor = RGB(228, 94, 50) + Case "Brown" + getColor = RGB(128, 0, 0) + + Case Else + ' Default or error handling + getColor = RGB(0, 0, 0) ' Returning black as default or for an unrecognized color + End Select +End Function + + +Sub updatePlot(COLOR As Long) + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SEA_COLOR, COLOR) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SEA_COLORREPEAT, &H00000002&) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SEA_THICKNESS, &H00000005&) ' .12 mm = .047 Inches +End Sub + +Sub updateScatter(COLOR As Long) + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_EDGECOLOR, COLOR) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_COLOR, COLOR) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_COLORREPEAT, &H00000002&) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SSA_SIZE, &H00000020&) ' .8 mm = .032 inch + ' fixme scattersize=0.032 Innches +End Sub +Sub updateSolid(COLOR As Long) + ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).NameObject.SetObjectCurrent + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SDA_COLOR, COLOR) + ActiveDocument.CurrentPageItem.SetCurrentObjectAttribute(GPM_SETPLOTATTR, SDA_COLORREPEAT, &H00000002&) +End Sub + + + +Function findObjectType() As String + On Error GoTo ErrorHandler + + Dim ObjectType As Variant + Dim object_type As Variant + object_type = ActiveDocument.CurrentPageItem.GraphPages(0).CurrentPageObject(GPT_GRAPH).Plots(0).GetAttribute(SLA_TYPE, ObjectType) + + If object_type = False Then + findObjectType = "Error: Failed to get object type." + Exit Function + End If + + ' Map the ObjectType to a string + Select Case object_type + Case SLA_TYPE_SCATTER + findObjectType = "Scatter/Line" + Case SLA_TYPE_BAR + findObjectType = "Bar" + Case SLA_TYPE_STACKED + findObjectType = "Stacked Bar" + Case SLA_TYPE_TUKEY + findObjectType = "Box" + Case SLA_TYPE_3DSCATTER + findObjectType = "3D Scatter/Line" + Case Else + findObjectType = "Unknown Object Type: " & object_type + End Select + Exit Function + +ErrorHandler: + findObjectType = "An error has occurred: " & Err.Description +End Function + +Sub Main() + On Error GoTo ErrorHandler + + Dim FullPATH As String + Dim OrigPageName As String + Dim ObjectType As String + Dim COLOR As Long + + ' Remember the original page + FullPATH = ActiveDocument.FullName + OrigPageName = ActiveDocument.CurrentPageItem.Name + ActiveDocument.NotebookItems(OrigPageName).IsCurrentBrowserEntry = True + + ' Get the color value for blue + COLOR = getColor("Blue") + + ' Find the type of the object + ObjectType = findObjectType() + + ' Check the object type and call the corresponding update function + If ObjectType = "Scatter/Line" Or ObjectType = "3D Scatter/Line" Then + updatePlot COLOR + updateScatter COLOR + ElseIf ObjectType = "Bar" Or ObjectType = "Stacked Bar" Or ObjectType = "Box" Then + updateSolid COLOR + Else + ' Raise a custom error + Err.Raise vbObjectError + 513, "Main", "Unknown or unsupported object type: " & ObjectType + End If + + ' Go back to the original page + Notebooks(FullPATH).NotebookItems(OrigPageName).Open + + Exit Sub + +ErrorHandler: + MsgBox "An error has occurred: " & Err.Description +End Sub +""" + )
+ + + +# Backward compatibility alias +import warnings + + +
+[docs] +def SigMacro_toBlue(): + """Deprecated: Use sigmacro_to_blue() instead.""" + warnings.warn( + "SigMacro_toBlue is deprecated, use sigmacro_to_blue() instead", + DeprecationWarning, + stacklevel=2, + ) + return sigmacro_to_blue()
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_logging/_Tee.html b/src/scitex/_sphinx_html/_modules/scitex_logging/_Tee.html new file mode 100644 index 000000000..3e676519b --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_logging/_Tee.html @@ -0,0 +1,873 @@ + + + + + + + + scitex_logging._Tee — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_logging._Tee

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-10-13 07:12:49 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex_repo/src/scitex/logging/_Tee.py
+# ----------------------------------------
+from __future__ import annotations
+
+import os
+
+__FILE__ = __file__
+__DIR__ = os.path.dirname(__FILE__)
+# ----------------------------------------
+
+THIS_FILE = __file__
+
+"""
+Functionality:
+    * Redirects and logs standard output and error streams
+    * Filters progress bar outputs from stderr logging
+    * Maintains original stdout/stderr functionality while logging
+Input:
+    * System stdout/stderr streams
+    * Output file paths for logging
+Output:
+    * Wrapped stdout/stderr objects with logging capability
+    * Log files containing stdout and stderr outputs
+Prerequisites:
+    * Python 3.6+
+    * scitex package for path handling and colored printing
+"""
+
+"""Imports"""
+import os as _os
+import re
+import sys
+from typing import Any, TextIO
+
+
+def _clean_path(path_string):
+    """Normalize a file system path (stdlib replacement for scitex.str.clean_path)."""
+    if hasattr(path_string, "__fspath__"):
+        path_string = str(path_string)
+    return _os.path.normpath(path_string)
+
+
+"""Functions & Classes"""
+
+
+def _get_logger():
+    """Get logger lazily to avoid circular import during module initialization."""
+    import logging
+
+    return logging.getLogger(__name__)
+
+
+
+[docs] +class Tee: + def __init__(self, stream: TextIO, log_path: str, verbose=True) -> None: + self.verbose = verbose + self._stream = stream + self._log_path = log_path + try: + self._log_file = open(log_path, "w", buffering=1) # Line buffering + if verbose: + # Show where logs are being saved using scitex logging + logger = _get_logger() + stream_name = "stderr" if stream is sys.stderr else "stdout" + logger.debug(f"Tee [{stream_name}]: {log_path}") + except Exception as e: + print(f"Failed to open log file {log_path}: {e}", file=sys.stderr) + self._log_file = None + self._is_stderr = stream is sys.stderr + +
+[docs] + def write(self, data: Any) -> None: + self._stream.write(data) + if self._log_file is not None: + if self._is_stderr: + if isinstance(data, str) and not re.match( + r"^[\s]*[0-9]+%.*\[A*$", data + ): + self._log_file.write(data) + self._log_file.flush() # Ensure immediate write + else: + self._log_file.write(data) + self._log_file.flush() # Ensure immediate write
+ + +
+[docs] + def flush(self) -> None: + self._stream.flush() + if self._log_file is not None: + self._log_file.flush()
+ + +
+[docs] + def isatty(self) -> bool: + return self._stream.isatty()
+ + +
+[docs] + def fileno(self) -> int: + return self._stream.fileno()
+ + + @property + def buffer(self): + return self._stream.buffer + +
+[docs] + def close(self): + """Explicitly close the log file.""" + if hasattr(self, "_log_file") and self._log_file is not None: + try: + self._log_file.flush() + self._log_file.close() + if self.verbose: + # Use lazy logger to avoid circular import + logger = _get_logger() + logger.debug(f"Tee: Closed log file: {self._log_path}") + self._log_file = None # Prevent double-close + except Exception: + pass
+ + + def __del__(self): + # Only attempt cleanup if Python is not shutting down + # This prevents "Exception ignored" errors during interpreter shutdown + if hasattr(self, "_log_file") and self._log_file is not None: + try: + # Check if the file object is still valid + if hasattr(self._log_file, "closed") and not self._log_file.closed: + self.close() + except Exception: + # Silently ignore exceptions during cleanup + pass
+ + + +
+[docs] +def tee(sys, sdir=None, verbose=True): + """Redirects stdout and stderr to both console and log files. + + Example + ------- + >>> import sys + >>> sys.stdout, sys.stderr = tee(sys) + >>> print("abc") # stdout + >>> print(1 / 0) # stderr + + Parameters + ---------- + sys_module : module + System module containing stdout and stderr + sdir : str, optional + Directory for log files + verbose : bool, default=True + Whether to print log file locations + + Returns + ------- + tuple[Any, Any] + Wrapped stdout and stderr objects + """ + import inspect + + #################### + ## Determine sdir + ## DO NOT MODIFY THIS + #################### + if sdir is None: + THIS_FILE = inspect.stack()[1].filename + if "ipython" in THIS_FILE: + THIS_FILE = f"/tmp/{_os.getenv('USER')}.py" + sdir = _clean_path(_os.path.splitext(THIS_FILE)[0] + "_out") + + sdir = _os.path.join(sdir, "logs/") + _os.makedirs(sdir, exist_ok=True) + + spath_stdout = sdir + "stdout.log" + spath_stderr = sdir + "stderr.log" + sys_stdout = Tee(sys.stdout, spath_stdout) + sys_stderr = Tee(sys.stderr, spath_stderr) + + if verbose: + message = f"Standard output/error are being logged at:\n\t{spath_stdout}\n\t{spath_stderr}" + logger = _get_logger() + logger.info(message) + # printc(message) + + return sys_stdout, sys_stderr
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_logging/_config.html b/src/scitex/_sphinx_html/_modules/scitex_logging/_config.html new file mode 100644 index 000000000..0587a68fc --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_logging/_config.html @@ -0,0 +1,851 @@ + + + + + + + + scitex_logging._config — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_logging._config

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-08-21 21:41:37 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex_repo/src/scitex/log/_config.py
+# ----------------------------------------
+from __future__ import annotations
+
+import os
+
+__FILE__ = __file__
+__DIR__ = os.path.dirname(__FILE__)
+# ----------------------------------------
+
+"""Configuration and setup for SciTeX logging."""
+
+import logging
+from typing import Optional, Union
+
+from ._handlers import create_console_handler, create_file_handler, get_default_log_path
+from ._levels import CRITICAL, DEBUG, ERROR, FAIL, INFO, SUCCESS, WARNING
+from ._logger import setup_logger_class
+
+# Global level variable
+_GLOBAL_LEVEL = None
+_FILE_LOGGING_ENABLED = True  # Enable file logging by default
+
+
+
+[docs] +def set_level(level: Union[str, int]): + """Set global log level for all SciTeX loggers.""" + global _GLOBAL_LEVEL + + level_map = { + "debug": DEBUG, + "info": INFO, + "warning": WARNING, + "error": ERROR, + "critical": CRITICAL, + "success": SUCCESS, + "fail": FAIL, + } + + if isinstance(level, str): + level = level_map.get(level.lower(), level) + + _GLOBAL_LEVEL = level + logging.getLogger().setLevel(level) + + # Update all existing handlers + for handler in logging.getLogger().handlers: + handler.setLevel(level)
+ + + +
+[docs] +def get_level(): + """Get current global log level.""" + return _GLOBAL_LEVEL or logging.getLogger().level
+ + + +
+[docs] +def enable_file_logging(enabled: bool = True): + """Enable or disable file logging globally.""" + global _FILE_LOGGING_ENABLED + _FILE_LOGGING_ENABLED = enabled
+ + + +
+[docs] +def is_file_logging_enabled(): + """Check if file logging is enabled.""" + return _FILE_LOGGING_ENABLED
+ + + +
+[docs] +def configure( + level: Union[str, int] = "info", + log_file: Optional[str] = None, + enable_file: bool = True, + enable_console: bool = True, + capture_prints: bool = True, + max_file_size: int = 10 * 1024 * 1024, + backup_count: int = 5, +): + """Configure logging for SciTeX with both console and file output. + + Args: + level: Log level (string or logging constant) + log_file: Path to log file (default: ~/.scitex/logs/scitex-YYYY-MM-DD.log) + enable_file: Whether to enable file logging + enable_console: Whether to enable console logging + capture_prints: Whether to capture print() statements to logs + max_file_size: Maximum size of log file before rotation (default: 10MB) + backup_count: Number of backup files to keep (default: 5) + """ + # Setup custom logger class + setup_logger_class() + + # Convert level if string + level_map = { + "debug": DEBUG, + "info": INFO, + "warning": WARNING, + "error": ERROR, + "critical": CRITICAL, + "success": SUCCESS, + "fail": FAIL, + } + + if isinstance(level, str): + level = level_map.get(level.lower(), level) + + # Set global level + set_level(level) + + # Clear any existing handlers + root_logger = logging.getLogger() + for handler in root_logger.handlers[:]: + root_logger.removeHandler(handler) + + handlers = [] + + # Add console handler if enabled + if enable_console: + console_handler = create_console_handler(level) + handlers.append(console_handler) + + # Add file handler if enabled + if enable_file and is_file_logging_enabled(): + if log_file is None: + log_file = get_default_log_path() + + file_handler = create_file_handler( + log_file, level, max_bytes=max_file_size, backup_count=backup_count + ) + handlers.append(file_handler) + + # Configure basic logging with our handlers + logging.basicConfig( + level=level, + handlers=handlers, + force=True, # Force reconfiguration + ) + + # Enable print capture if requested + if capture_prints: + from ._print_capture import enable_print_capture + + enable_print_capture()
+ + + +
+[docs] +def get_log_path(): + """Get the current log file path.""" + for handler in logging.getLogger().handlers: + if hasattr(handler, "baseFilename"): + return handler.baseFilename + return None
+ + + +__all__ = [ + "set_level", + "get_level", + "enable_file_logging", + "is_file_logging_enabled", + "configure", + "get_log_path", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_logging/_context.html b/src/scitex/_sphinx_html/_modules/scitex_logging/_context.html new file mode 100644 index 000000000..9c94103dc --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_logging/_context.html @@ -0,0 +1,779 @@ + + + + + + + + scitex_logging._context — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_logging._context

+#!/usr/bin/env python3
+# Timestamp: "2025-10-11 22:30:00 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex_repo/src/scitex/logging/_context.py
+# ----------------------------------------
+from __future__ import annotations
+
+import os
+
+__FILE__ = "./src/scitex/logging/_context.py"
+__DIR__ = os.path.dirname(__FILE__)
+# ----------------------------------------
+
+"""
+Context manager for temporary logging to specific files.
+
+Provides clean API for adding/removing file handlers during execution.
+"""
+
+import logging as _logging
+from contextlib import contextmanager
+from pathlib import Path
+from typing import Optional, Union
+
+from ._formatters import SciTeXFileFormatter
+
+
+
+[docs] +@contextmanager +def log_to_file( + file_path: Union[str, Path], + level: int = _logging.DEBUG, + mode: str = "w", + formatter: Optional[_logging.Formatter] = None, +): + """Context manager to temporarily log all output to a specific file. + + Usage: + import scitex_logging as logging + logger = logging.getLogger(__name__) + + with logging.log_to_file("/path/to/log.txt"): + logger.info("This goes to both console and /path/to/log.txt") + logger.success("This too!") + + Args: + file_path: Path to log file + level: Logging level for this handler (default: DEBUG) + mode: File mode ('w' for overwrite, 'a' for append) + formatter: Custom formatter (default: SciTeXFileFormatter) + + Yields + ------ + The file handler (can be ignored) + """ + # Ensure directory exists + file_path = Path(file_path) + file_path.parent.mkdir(parents=True, exist_ok=True) + + # Create handler + handler = _logging.FileHandler(str(file_path), mode=mode) + handler.setLevel(level) + + # Set formatter + if formatter is None: + formatter = SciTeXFileFormatter() + handler.setFormatter(formatter) + + # Add to root logger + root_logger = _logging.getLogger() + root_logger.addHandler(handler) + + # Log where output is going (lazy import to avoid circular dependency) + def _log_info(): + try: + import scitex_logging as logging + + logger = logging.getLogger(__name__) + logger.debug(f"Logging to: {file_path}") + except: + pass # Silently fail if logging not ready + + _log_info() + + try: + yield handler + finally: + # Clean up handler + root_logger.removeHandler(handler) + handler.close() + + # Log completion (lazy import) + def _log_saved(): + try: + import scitex_logging as logging + + logger = logging.getLogger(__name__) + logger.debug(f"Log saved: {file_path}") + except: + pass + + _log_saved()
+ + + +__all__ = ["log_to_file"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_logging/_errors.html b/src/scitex/_sphinx_html/_modules/scitex_logging/_errors.html new file mode 100644 index 000000000..f67582dea --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_logging/_errors.html @@ -0,0 +1,1286 @@ + + + + + + + + scitex_logging._errors — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_logging._errors

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-12-21"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/logging/_errors.py
+
+"""Error classes for SciTeX.
+
+All SciTeX exceptions are defined here for unified error handling.
+Re-exported from scitex.logging for backwards compatibility.
+
+Usage:
+    from scitex_logging import SciTeXError, SaveError, LoadError
+    # or (backwards compatible)
+    from scitex_logging import SciTeXError, SaveError, LoadError
+"""
+
+from typing import Optional, Union
+
+# =============================================================================
+# Base Errors
+# =============================================================================
+
+
+
+[docs] +class SciTeXError(Exception): + """Base Exception class for all SciTeX errors.""" + +
+[docs] + def __init__( + self, + message: str, + context: Optional[dict] = None, + suggestion: Optional[str] = None, + ): + """Initialize SciTeX error with detailed information. + + Parameters + ---------- + message : str + The error message + context : dict, optional + Additional context information (e.g., file paths, variable values) + suggestion : str, optional + Suggested fix or action + """ + self.message = message + self.context = context or {} + self.suggestion = suggestion + + # Build the full error message + error_parts = [f"SciTeX Error: {message}"] + + if context: + error_parts.append("\nContext:") + for key, value in context.items(): + error_parts.append(f" {key}: {value}") + + if suggestion: + error_parts.append(f"\nSuggestion: {suggestion}") + + super().__init__("\n".join(error_parts))
+
+ + + +# ============================================================================= +# Configuration Errors +# ============================================================================= + + +
+[docs] +class ConfigurationError(SciTeXError): + """Raised when there are issues with SciTeX configuration.""" + + pass
+ + + +
+[docs] +class ConfigFileNotFoundError(ConfigurationError): + """Raised when a required configuration file is not found.""" + + def __init__(self, filepath: str): + super().__init__( + f"Configuration file not found: {filepath}", + context={"filepath": filepath}, + suggestion="Ensure the configuration file exists in ./config/ directory", + )
+ + + +
+[docs] +class ConfigKeyError(ConfigurationError): + """Raised when a required configuration key is missing.""" + + def __init__(self, key: str, available_keys: Optional[list] = None): + context = {"missing_key": key} + if available_keys: + context["available_keys"] = available_keys + + super().__init__( + f"Configuration key '{key}' not found", + context=context, + suggestion=f"Add '{key}' to your configuration file or check for typos", + )
+ + + +# ============================================================================= +# IO Errors +# ============================================================================= + + +
+[docs] +class IOError(SciTeXError): + """Base class for input/output related errors.""" + + pass
+ + + +
+[docs] +class FileFormatError(IOError): + """Raised when file format is not supported or incorrect.""" + + def __init__( + self, + filepath: str, + expected_format: Optional[str] = None, + actual_format: Optional[str] = None, + ): + context = {"filepath": filepath} + if expected_format: + context["expected_format"] = expected_format + if actual_format: + context["actual_format"] = actual_format + + message = f"File format error for: {filepath}" + if expected_format and actual_format: + message += f" (expected: {expected_format}, got: {actual_format})" + + super().__init__( + message, + context=context, + suggestion="Check the file extension and content format", + )
+ + + +
+[docs] +class SaveError(IOError): + """Raised when saving data fails.""" + + def __init__(self, filepath: str, reason: str): + super().__init__( + f"Failed to save to {filepath}: {reason}", + context={"filepath": filepath, "reason": reason}, + suggestion="Check file permissions and disk space", + )
+ + + +
+[docs] +class LoadError(IOError): + """Raised when loading data fails.""" + + def __init__(self, filepath: str, reason: str): + super().__init__( + f"Failed to load from {filepath}: {reason}", + context={"filepath": filepath, "reason": reason}, + suggestion="Verify the file exists and is not corrupted", + )
+ + + +# ============================================================================= +# Scholar Module Errors +# ============================================================================= + + +
+[docs] +class ScholarError(SciTeXError): + """Base class for scholar module errors.""" + + pass
+ + + +
+[docs] +class SearchError(ScholarError): + """Raised when paper search fails.""" + + def __init__(self, query: str, source: str, reason: str): + super().__init__( + f"Search failed for query '{query}' on {source}", + context={"query": query, "source": source, "reason": reason}, + suggestion="Check your internet connection and API keys", + )
+ + + +
+[docs] +class EnrichmentError(ScholarError): + """Raised when paper enrichment fails.""" + + def __init__(self, paper_title: str, reason: str): + super().__init__( + f"Failed to enrich paper: {paper_title}", + context={"paper_title": paper_title, "reason": reason}, + suggestion="Verify journal information is available", + )
+ + + +
+[docs] +class PDFDownloadError(ScholarError): + """Raised when PDF download fails.""" + + def __init__(self, url: str, reason: str): + super().__init__( + f"Failed to download PDF from {url}", + context={"url": url, "reason": reason}, + suggestion="Check if the paper is open access", + )
+ + + +
+[docs] +class DOIResolutionError(ScholarError): + """Raised when DOI resolution fails.""" + + def __init__(self, doi: str, reason: str): + super().__init__( + f"Failed to resolve DOI: {doi}", + context={"doi": doi, "reason": reason}, + suggestion="Verify the DOI is correct and try again", + )
+ + + +
+[docs] +class PDFExtractionError(ScholarError): + """Raised when PDF text extraction fails.""" + + def __init__(self, filepath: str, reason: str): + super().__init__( + f"Failed to extract text from PDF: {filepath}", + context={"filepath": filepath, "reason": reason}, + suggestion="Ensure the PDF is not corrupted or encrypted", + )
+ + + +
+[docs] +class BibTeXEnrichmentError(ScholarError): + """Raised when BibTeX enrichment fails.""" + + def __init__(self, bibtex_file: str, reason: str): + super().__init__( + f"Failed to enrich BibTeX file: {bibtex_file}", + context={"bibtex_file": bibtex_file, "reason": reason}, + suggestion="Check the BibTeX format and ensure all entries are valid", + )
+ + + +
+[docs] +class TranslatorError(ScholarError): + """Raised when Zotero translator operations fail.""" + + def __init__(self, translator_name: str, reason: str): + super().__init__( + f"Translator error in {translator_name}: {reason}", + context={"translator": translator_name, "reason": reason}, + suggestion="Check translator compatibility and JavaScript environment", + )
+ + + +
+[docs] +class AuthenticationError(ScholarError): + """Raised when authentication fails.""" + + def __init__(self, provider: str, reason: str = ""): + super().__init__( + f"Authentication failed for {provider}: {reason}", + context={"provider": provider, "reason": reason}, + suggestion="Check your credentials and authentication settings", + )
+ + + +# ============================================================================= +# Plotting Errors +# ============================================================================= + + +
+[docs] +class PlottingError(SciTeXError): + """Base class for plotting-related errors.""" + + pass
+ + + +
+[docs] +class FigureNotFoundError(PlottingError): + """Raised when attempting to operate on a non-existent figure.""" + + def __init__(self, fig_id: Union[int, str]): + super().__init__( + f"Figure {fig_id} not found", + context={"figure_id": fig_id}, + suggestion="Ensure the figure was created before attempting to save/modify it", + )
+ + + +
+[docs] +class AxisError(PlottingError): + """Raised when there are issues with plot axes.""" + + def __init__(self, message: str, axis_info: Optional[dict] = None): + super().__init__( + message, + context={"axis_info": axis_info} if axis_info else None, + suggestion="Check axis indices and subplot configuration", + )
+ + + +# ============================================================================= +# Data Processing Errors +# ============================================================================= + + +
+[docs] +class DataError(SciTeXError): + """Base class for data processing errors.""" + + pass
+ + + +
+[docs] +class ShapeError(DataError): + """Raised when data shapes are incompatible.""" + + def __init__(self, expected_shape: tuple, actual_shape: tuple, operation: str): + super().__init__( + f"Shape mismatch in {operation}", + context={ + "expected_shape": expected_shape, + "actual_shape": actual_shape, + "operation": operation, + }, + suggestion="Reshape or transpose your data to match expected dimensions", + )
+ + + +
+[docs] +class DTypeError(DataError): + """Raised when data types are incompatible.""" + + def __init__(self, expected_dtype: str, actual_dtype: str, operation: str): + super().__init__( + f"Data type mismatch in {operation}", + context={ + "expected_dtype": expected_dtype, + "actual_dtype": actual_dtype, + "operation": operation, + }, + suggestion=f"Convert data to {expected_dtype} using appropriate casting", + )
+ + + +# ============================================================================= +# Path Errors +# ============================================================================= + + +
+[docs] +class PathError(SciTeXError): + """Base class for path-related errors.""" + + pass
+ + + +
+[docs] +class InvalidPathError(PathError): + """Raised when a path is invalid or doesn't follow SciTeX conventions.""" + + def __init__(self, path: str, reason: str): + super().__init__( + f"Invalid path: {path}", + context={"path": path, "reason": reason}, + suggestion="Use relative paths starting with './' or '../'", + )
+ + + +
+[docs] +class PathNotFoundError(PathError): + """Raised when a required path doesn't exist.""" + + def __init__(self, path: str): + super().__init__( + f"Path not found: {path}", + context={"path": path}, + suggestion="Check if the path exists and is accessible", + )
+ + + +# ============================================================================= +# Template Errors +# ============================================================================= + + +
+[docs] +class TemplateError(SciTeXError): + """Base class for template-related errors.""" + + pass
+ + + +
+[docs] +class TemplateViolationError(TemplateError): + """Raised when SciTeX template is not followed.""" + + def __init__(self, filepath: str, violation: str): + super().__init__( + f"Template violation in {filepath}: {violation}", + context={"filepath": filepath, "violation": violation}, + suggestion="Follow the SciTeX template structure as defined in IMPORTANT-SCITEX-02-file-template.md", + )
+ + + +# ============================================================================= +# Neural Network Errors +# ============================================================================= + + +
+[docs] +class NNError(SciTeXError): + """Base class for neural network module errors.""" + + pass
+ + + +
+[docs] +class ModelError(NNError): + """Raised when there are issues with neural network models.""" + + def __init__(self, model_name: str, reason: str): + super().__init__( + f"Model error in {model_name}: {reason}", + context={"model_name": model_name, "reason": reason}, + )
+ + + +# ============================================================================= +# Statistics Errors +# ============================================================================= + + +
+[docs] +class StatsError(SciTeXError): + """Base class for statistics module errors.""" + + pass
+ + + +
+[docs] +class TestError(StatsError): + """Raised when statistical tests fail.""" + + def __init__(self, test_name: str, reason: str): + super().__init__( + f"Statistical test '{test_name}' failed: {reason}", + context={"test_name": test_name, "reason": reason}, + )
+ + + +# ============================================================================= +# Validation Helpers +# ============================================================================= + + +
+[docs] +def check_path(path: str) -> None: + """Validate a path according to SciTeX conventions.""" + if not isinstance(path, str): + raise InvalidPathError(str(path), "Path must be a string") + + if not (path.startswith("./") or path.startswith("../")): + raise InvalidPathError( + path, "Path must be relative and start with './' or '../'" + )
+ + + +
+[docs] +def check_file_exists(filepath: str) -> None: + """Check if a file exists.""" + import os + + if not os.path.exists(filepath): + raise PathNotFoundError(filepath)
+ + + +
+[docs] +def check_shape_compatibility(shape1: tuple, shape2: tuple, operation: str) -> None: + """Check if two shapes are compatible for an operation.""" + if shape1 != shape2: + raise ShapeError(shape1, shape2, operation)
+ + + +__all__ = [ + # Base errors + "SciTeXError", + # Configuration + "ConfigurationError", + "ConfigFileNotFoundError", + "ConfigKeyError", + # IO + "IOError", + "FileFormatError", + "SaveError", + "LoadError", + # Scholar + "ScholarError", + "SearchError", + "EnrichmentError", + "PDFDownloadError", + "DOIResolutionError", + "PDFExtractionError", + "BibTeXEnrichmentError", + "TranslatorError", + "AuthenticationError", + # Plotting + "PlottingError", + "FigureNotFoundError", + "AxisError", + # Data + "DataError", + "ShapeError", + "DTypeError", + # Path + "PathError", + "InvalidPathError", + "PathNotFoundError", + # Template + "TemplateError", + "TemplateViolationError", + # Neural Network + "NNError", + "ModelError", + # Statistics + "StatsError", + "TestError", + # Validation helpers + "check_path", + "check_file_exists", + "check_shape_compatibility", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_logging/_warnings.html b/src/scitex/_sphinx_html/_modules/scitex_logging/_warnings.html new file mode 100644 index 000000000..2ec539fd1 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_logging/_warnings.html @@ -0,0 +1,968 @@ + + + + + + + + scitex_logging._warnings — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_logging._warnings

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-12-21"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/logging/_warnings.py
+
+"""Warning system for SciTeX, mimicking Python's warnings module.
+
+Usage:
+    import scitex_logging as logging
+    from scitex_logging import UnitWarning
+
+    # Emit a warning
+    logging.warn("Missing units on axis label", UnitWarning)
+
+    # Filter warnings (like warnings.filterwarnings)
+    logging.filterwarnings("ignore", category=UnitWarning)
+    logging.filterwarnings("error", category=UnitWarning)  # Raise as exception
+    logging.filterwarnings("always", category=UnitWarning)  # Always show
+"""
+
+import logging as _logging
+from typing import Dict, Optional, Set, Type
+
+# =============================================================================
+# Warning Categories (similar to Python's warning classes)
+# =============================================================================
+
+
+
+[docs] +class SciTeXWarning(UserWarning): + """Base warning class for all SciTeX warnings.""" + + pass
+ + + +
+[docs] +class UnitWarning(SciTeXWarning): + """Warning for axis label unit issues (educational for SI conventions). + + Raised when: + - Axis labels are missing units + - Units use parentheses instead of brackets (SI prefers []) + - Units use division instead of negative exponents (m/s vs m·s⁻¹) + """ + + pass
+ + + +
+[docs] +class StyleWarning(SciTeXWarning): + """Warning for style/formatting issues.""" + + pass
+ + + +
+[docs] +class SciTeXDeprecationWarning(SciTeXWarning): + """Warning for deprecated SciTeX features.""" + + pass
+ + + +
+[docs] +class PerformanceWarning(SciTeXWarning): + """Warning for performance issues.""" + + pass
+ + + +
+[docs] +class DataLossWarning(SciTeXWarning): + """Warning for potential data loss.""" + + pass
+ + + +# ============================================================================= +# Warning Filter Registry +# ============================================================================= + +# Actions: "ignore", "error", "always", "default", "once", "module" +_filters: Dict[Type[SciTeXWarning], str] = {} +_seen_warnings: Set[str] = set() # For "once" action + + +
+[docs] +def filterwarnings( + action: str, + category: Type[SciTeXWarning] = SciTeXWarning, + message: Optional[str] = None, +) -> None: + """Control warning behavior (like warnings.filterwarnings). + + Parameters + ---------- + action : str + One of: + - "ignore": Never show this warning + - "error": Raise as exception + - "always": Always show + - "default": Show first occurrence per location + - "once": Show only once total + - "module": Show once per module + category : type + Warning category (default: SciTeXWarning = all) + message : str, optional + Regex pattern to match warning message (not implemented yet) + + Examples + -------- + >>> import scitex.logging as logging + >>> from scitex.logging import UnitWarning + >>> logging.filterwarnings("ignore", category=UnitWarning) + """ + valid_actions = {"ignore", "error", "always", "default", "once", "module"} + if action not in valid_actions: + raise ValueError(f"Invalid action '{action}'. Must be one of: {valid_actions}") + + _filters[category] = action
+ + + +
+[docs] +def resetwarnings() -> None: + """Reset all warning filters to default behavior.""" + global _filters, _seen_warnings + _filters = {} + _seen_warnings = set()
+ + + +def _get_action(category: Type[SciTeXWarning]) -> str: + """Get the action for a warning category, checking inheritance.""" + # Check exact match first + if category in _filters: + return _filters[category] + + # Check parent classes + for filter_cat, action in _filters.items(): + if issubclass(category, filter_cat): + return action + + # Default action + return "default" + + +# ============================================================================= +# Warning Emission +# ============================================================================= + + +
+[docs] +def warn( + message: str, + category: Type[SciTeXWarning] = SciTeXWarning, + stacklevel: int = 2, +) -> None: + """Emit a warning (like warnings.warn but integrated with scitex.logging). + + Parameters + ---------- + message : str + Warning message + category : type + Warning category (default: SciTeXWarning) + stacklevel : int + Stack level for source location (default: 2 = caller) + + Examples + -------- + >>> import scitex.logging as logging + >>> from scitex.logging import UnitWarning + >>> logging.warn("X axis has no units", UnitWarning) + """ + import inspect + + action = _get_action(category) + + # Handle action + if action == "ignore": + return + + if action == "error": + raise category(message) + + # Get source location for "once", "module", "default" actions + frame = inspect.currentframe() + for _ in range(stacklevel): + if frame is not None: + frame = frame.f_back + + location = "" + if frame is not None: + filename = frame.f_code.co_filename + lineno = frame.f_lineno + location = f"{filename}:{lineno}" + + # Check if already seen + warn_key = f"{category.__name__}:{message}:{location}" + + if action == "once": + if warn_key in _seen_warnings: + return + _seen_warnings.add(warn_key) + elif action == "default": + # Show first per location + loc_key = f"{category.__name__}:{location}" + if loc_key in _seen_warnings: + return + _seen_warnings.add(loc_key) + elif action == "module": + # Show once per module + if frame is not None: + module_key = f"{category.__name__}:{frame.f_code.co_filename}" + if module_key in _seen_warnings: + return + _seen_warnings.add(module_key) + + # Emit via scitex.logging + logger = _logging.getLogger("scitex.warnings") + category_name = category.__name__ + + # Format: "UnitWarning: message" + logger.warning(f"{category_name}: {message}")
+ + + +# ============================================================================= +# Convenience Warning Functions +# ============================================================================= + + +
+[docs] +def warn_deprecated( + old_name: str, new_name: str, version: Optional[str] = None +) -> None: + """Issue a deprecation warning.""" + message = f"{old_name} is deprecated. Use {new_name} instead." + if version: + message += f" Will be removed in version {version}." + warn(message, SciTeXDeprecationWarning, stacklevel=3)
+ + + +
+[docs] +def warn_performance(operation: str, suggestion: str) -> None: + """Issue a performance warning.""" + message = f"Performance warning in {operation}: {suggestion}" + warn(message, PerformanceWarning, stacklevel=3)
+ + + +
+[docs] +def warn_data_loss(operation: str, detail: str) -> None: + """Issue a data loss warning.""" + message = f"Potential data loss in {operation}: {detail}" + warn(message, DataLossWarning, stacklevel=3)
+ + + +__all__ = [ + # Warning categories + "SciTeXWarning", + "UnitWarning", + "StyleWarning", + "SciTeXDeprecationWarning", + "PerformanceWarning", + "DataLossWarning", + # Functions + "warn", + "filterwarnings", + "resetwarnings", + # Convenience functions + "warn_deprecated", + "warn_performance", + "warn_data_loss", +] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword.html b/src/scitex/_sphinx_html/_modules/scitex_msword.html new file mode 100644 index 000000000..706f25cc8 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword.html @@ -0,0 +1,989 @@ + + + + + + + + scitex_msword — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2025-12-11 15:15:00
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/msword/__init__.py
+
+"""
+MS Word (DOCX) import/export utilities for SciTeX.
+
+This module provides high-level functions to convert between
+MS Word .docx files and SciTeX's internal writer document model.
+
+Strategy:
+---------
+- Word users write text only (paragraphs, minimal formatting)
+- SciTeX handles: figures, tables, references, LaTeX generation
+- SciTeX JSON is the "source of truth", Word is just a view/edit layer
+
+Typical usage:
+--------------
+    from scitex_msword import load_docx, save_docx, list_profiles
+
+    # Import from Word
+    doc = load_docx("input.docx", profile="generic")
+
+    # Manipulate via scitex.writer...
+    # doc.normalize()
+
+    # Export to Word (different journal template)
+    save_docx(doc, "output.docx", profile="mdpi-ijerph")
+
+Available profiles:
+-------------------
+- generic: Standard Word with Heading 1/2/3
+- mdpi-ijerph: MDPI IJERPH journal template
+- resna-2025: RESNA 2025 scientific paper template
+- iop-double-anonymous: IOP double-anonymous template
+"""
+
+from __future__ import annotations
+
+try:
+    from importlib.metadata import PackageNotFoundError
+    from importlib.metadata import version as _v
+
+    try:
+        __version__ = _v("scitex-msword")
+    except PackageNotFoundError:
+        __version__ = "0.0.0+local"
+    del _v, PackageNotFoundError
+except ImportError:  # pragma: no cover — only on ancient Pythons
+    __version__ = "0.0.0+local"
+
+from pathlib import Path
+from typing import Any, Optional
+
+from .bold import preserve_bold_tokens
+from .comments import apply_comments_as_edits, extract_comments
+from .diff import diff_docx, summarize_diff
+from .highlights import (
+    clear_highlights,
+    extract_highlights,
+    mark_additions,
+    mark_modifications,
+)
+from .profiles import BaseWordProfile, get_profile, list_profiles, register_profile
+from .reader import WordReader
+from .track_changes import (
+    accept_all_tracked_changes,
+    enable_track_changes,
+    extract_tracked_changes,
+    is_track_changes_enabled,
+    reject_all_tracked_changes,
+    wrap_as_tracked_deletion,
+    wrap_as_tracked_insertion,
+)
+from .utils import (
+    create_post_import_hook,
+    link_captions_to_images,
+    link_captions_to_images_by_proximity,
+    normalize_section_headings,
+    validate_document,
+)
+from .writer import WordWriter
+
+
+
+[docs] +def load_docx( + path: str | Path, + profile: str | None = None, + extract_images: bool = True, +) -> dict[str, Any]: + """ + Load a DOCX file and convert it into a SciTeX writer document. + + Parameters + ---------- + path : str | Path + Path to the .docx file. + profile : str | None + Optional profile name that specifies how to interpret Word styles + (e.g., "mdpi-ijerph", "resna-2025"). If None, "generic" is used. + extract_images : bool + If True, extract embedded images and store references. + + Returns + ------- + dict + A SciTeX writer document structure containing: + - blocks: List of document blocks (headings, paragraphs, captions, etc.) + - metadata: Profile and source file information + - images: Extracted image references (if extract_images=True) + - references: Parsed reference entries + + Examples + -------- + >>> from scitex.msword import load_docx + >>> doc = load_docx("manuscript.docx", profile="mdpi-ijerph") + >>> print(doc["metadata"]["profile"]) + 'mdpi-ijerph' + """ + path = Path(path) + profile_obj: BaseWordProfile = get_profile(profile) + reader = WordReader(profile=profile_obj, extract_images=extract_images) + return reader.read(path)
+ + + +
+[docs] +def save_docx( + writer_doc: dict[str, Any] | Any, + path: str | Path, + profile: str | None = None, + overwrite: bool = True, + template_path: str | Path | None = None, +) -> Path: + """ + Save a SciTeX writer document as a DOCX file. + + Parameters + ---------- + writer_doc : dict | Any + SciTeX writer document instance to export. + path : str | Path + Output path for the .docx file. + profile : str | None + Optional profile name that controls how sections, headings, + figures, tables and references are mapped to Word styles. + If None, "generic" is used. + overwrite : bool + If False and the file already exists, raises FileExistsError. + template_path : str | Path | None + Optional path to a Word template (.dotx/.docx) to use as base. + This allows using journal-specific formatting. + + Returns + ------- + Path + The path to the written .docx file. + + Examples + -------- + >>> from scitex.msword import save_docx + >>> save_docx(doc, "submission_resna_2025.docx", profile="resna-2025") + PosixPath('submission_resna_2025.docx') + """ + output_path = Path(path) + if output_path.exists() and not overwrite: + raise FileExistsError(f"File already exists: {output_path}") + + profile_obj: BaseWordProfile = get_profile(profile) + writer = WordWriter(profile=profile_obj, template_path=template_path) + writer.write(writer_doc, output_path) + return output_path
+ + + +
+[docs] +def convert_docx_to_tex( + input_path: str | Path, + output_path: str | Path, + profile: str | None = None, + *, + image_dir: str | Path | None = None, + link_images: bool = True, + link_mode: str = "by-number", + normalize_headings: bool = True, + validate: bool = True, +) -> Path: + """ + Convert a DOCX file directly to LaTeX. + + This is a convenience function that: + 1. Loads the DOCX file into SciTeX intermediate format + 2. (Optionally) normalizes headings + 3. (Optionally) links figure captions to images + 4. (Optionally) validates the document and adds warnings + 5. Exports to LaTeX (including figures via image_dir) + + Parameters + ---------- + input_path : str | Path + Path to the input .docx file. + output_path : str | Path + Path for the output .tex file. + profile : str | None + Word profile for interpreting styles + (e.g., "resna-2025", "iop-double-anonymous"). + image_dir : str | Path | None, optional + Directory where extracted figure image files will be saved. + If None, the LaTeX exporter will create "<tex_stem>_figures" + next to `output_path`. + link_images : bool, default True + Whether to link figure captions to extracted images so that + LaTeX can generate \\includegraphics inside figure environments. + link_mode : {"by-number", "by-proximity"}, default "by-number" + Strategy for linking captions to images: + - "by-number": Figure 1 -> first image, Figure 2 -> second image... + - "by-proximity": assign images in document order, useful when + figure numbers and image order don't match. + normalize_headings : bool, default True + If True, apply common heading normalizations + (e.g., "intro" -> "Introduction"). + validate : bool, default True + If True, run basic structural checks and populate + doc["warnings"] with any issues. + + Returns + ------- + Path + The path to the written .tex file. + + Examples + -------- + >>> from scitex.msword import convert_docx_to_tex + >>> convert_docx_to_tex( + ... "RESNA 2025 Scientific Paper Template.docx", + ... "manuscript.tex", + ... profile="resna-2025", + ... image_dir="figures", + ... ) + PosixPath('manuscript.tex') + """ + # Lazy import: convert_docx_to_tex requires scitex (or scitex-tex) for the + # final .tex serialization step. Other scitex_msword functions don't need it. + try: + from scitex_tex import export_tex + except ImportError as _e: + raise ImportError( + "convert_docx_to_tex requires the 'scitex' package (provides scitex.tex). " + "Install with: pip install scitex" + ) from _e + + # 1. DOCX -> SciTeX intermediate format + doc = load_docx(input_path, profile=profile, extract_images=True) + + # 2. Normalize headings (optional) + if normalize_headings: + doc = normalize_section_headings(doc) + + # 3. Link captions to images (optional) + if link_images and doc.get("images"): + if link_mode == "by-proximity": + doc = link_captions_to_images_by_proximity(doc) + else: + # Default: link by figure number + doc = link_captions_to_images(doc) + + # 4. Validate document structure (optional) + if validate: + doc = validate_document(doc) + + # 5. SciTeX -> LaTeX (with figures) + return export_tex(doc, output_path, image_dir=image_dir)
+ + + +__all__ = [ + "__version__", + "load_docx", + "save_docx", + "convert_docx_to_tex", + "list_profiles", + "get_profile", + "register_profile", + "BaseWordProfile", + "WordReader", + "WordWriter", + # Utility functions for post-processing + "link_captions_to_images", + "link_captions_to_images_by_proximity", + "normalize_section_headings", + "validate_document", + "create_post_import_hook", + # Diff API (BOOST v16 dogfooding) + "diff_docx", + "summarize_diff", + # Highlight API (BOOST v16 visual marking) + "mark_additions", + "mark_modifications", + "extract_highlights", + "clear_highlights", + # Bold-token preservation (BOOST v16 Japanese keyword emphasis) + "preserve_bold_tokens", + # Comment extraction (+ narrow REPLACE-grammar application) + "extract_comments", + "apply_comments_as_edits", + # Track-Changes API (BOOST post-v16 dogfooding) + "enable_track_changes", + "is_track_changes_enabled", + "wrap_as_tracked_insertion", + "wrap_as_tracked_deletion", + "extract_tracked_changes", + "accept_all_tracked_changes", + "reject_all_tracked_changes", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/comments.html b/src/scitex/_sphinx_html/_modules/scitex_msword/comments.html new file mode 100644 index 000000000..b2ab3405e --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/comments.html @@ -0,0 +1,1031 @@ + + + + + + + + scitex_msword.comments — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.comments

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2026-06-02 00:00:00
+# File: src/scitex_msword/comments.py
+#
+# Part of scitex-msword (AGPL-3.0-only). See LICENSE at the repo root.
+
+"""
+Comment extraction and (limited) application for python-docx Documents.
+
+Word stores comments in ``word/comments.xml`` inside the .docx ZIP, while
+the comment *anchors* (i.e. the ranges the comment refers to) live in
+``word/document.xml`` as ``commentRangeStart`` / ``commentRangeEnd``
+sibling elements with an ``w:id`` attribute matching the comment.
+
+This module exposes :func:`extract_comments` for reading them back into
+a structured list and :func:`apply_comments_as_edits` which honors a
+narrow "REPLACE:" comment grammar to perform automated edits.
+"""
+
+from __future__ import annotations
+
+import re
+import zipfile
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Union
+from xml.etree import ElementTree as ET
+
+try:
+    import docx  # type: ignore[import-untyped]
+    from docx.document import Document as DocxDocument  # type: ignore[import-untyped]
+    from docx.oxml.ns import qn  # type: ignore[import-untyped]
+
+    DOCX_AVAILABLE = True
+    _DOCX_IMPORT_ERROR: Optional[Exception] = None
+except ImportError as exc:  # pragma: no cover
+    DOCX_AVAILABLE = False
+    _DOCX_IMPORT_ERROR = exc
+    DocxDocument = None  # type: ignore[assignment,misc]
+    qn = None  # type: ignore[assignment]
+
+
+_W_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+_NS = {"w": _W_NS}
+
+# Grammar for apply_comments_as_edits — intentionally narrow.
+_REPLACE_RE = re.compile(r"^\s*REPLACE\s*:\s*(.+?)\s*$", re.IGNORECASE | re.DOTALL)
+
+
+def _ensure_docx_available() -> None:
+    if not DOCX_AVAILABLE:
+        raise ImportError(
+            "python-docx is required for scitex_msword.comments. "
+            "Install it via `pip install python-docx`."
+        ) from _DOCX_IMPORT_ERROR
+
+
+def _docx_path(doc: Union[str, Path, "DocxDocument"]) -> Optional[Path]:
+    """Return the on-disk path backing a Document, or None if in-memory."""
+    if isinstance(doc, (str, Path)):
+        return Path(doc)
+    pkg = getattr(doc, "part", None)
+    if pkg is None:
+        return None
+    pkg_pkg = getattr(pkg, "package", None)
+    if pkg_pkg is None:
+        return None
+    pkg_path = getattr(pkg_pkg, "_path", None)
+    if pkg_path:
+        return Path(pkg_path)
+    return None
+
+
+def _read_comments_xml(source: Union[str, Path, "DocxDocument"]) -> Optional[bytes]:
+    """Return the raw word/comments.xml bytes, or None if absent."""
+    if isinstance(source, (str, Path)):
+        zip_path = Path(source)
+    else:
+        # In-memory Document: read straight from the OPC part.
+        try:
+            for part in source.part.package.iter_parts():
+                if part.partname == "/word/comments.xml":
+                    return part.blob
+        except Exception:
+            pass
+        path = _docx_path(source)
+        if path is None:
+            return None
+        zip_path = path
+
+    if not zip_path.exists():
+        return None
+    try:
+        with zipfile.ZipFile(zip_path) as zf:
+            if "word/comments.xml" not in zf.namelist():
+                return None
+            return zf.read("word/comments.xml")
+    except zipfile.BadZipFile:
+        return None
+
+
+def _parse_comments_xml(blob: bytes) -> Dict[str, Dict[str, Any]]:
+    """Parse word/comments.xml into ``{comment_id: {author, text, date}}``."""
+    root = ET.fromstring(blob)
+    comments: Dict[str, Dict[str, Any]] = {}
+    for c in root.findall("w:comment", _NS):
+        cid = c.get(qn("w:id")) if qn is not None else c.get(f"{{{_W_NS}}}id")
+        if cid is None:
+            continue
+        author = (
+            c.get(qn("w:author")) if qn is not None else c.get(f"{{{_W_NS}}}author")
+        ) or ""
+        date = (
+            c.get(qn("w:date")) if qn is not None else c.get(f"{{{_W_NS}}}date")
+        ) or ""
+        texts: List[str] = []
+        for t in c.iter(f"{{{_W_NS}}}t"):
+            if t.text:
+                texts.append(t.text)
+        comments[str(cid)] = {
+            "id": int(cid) if str(cid).isdigit() else cid,
+            "author": author,
+            "date": date,
+            "text": "".join(texts),
+        }
+    return comments
+
+
+def _scan_anchors(
+    document: "DocxDocument",
+) -> Dict[str, Dict[str, Any]]:
+    """
+    Walk the document body and locate comment anchor ranges.
+
+    Returns ``{comment_id_str: {anchor_text, paragraph_range}}``.
+    """
+    paragraphs = list(document.paragraphs)
+    anchors: Dict[str, Dict[str, Any]] = {}
+    # Track which comments are currently open and at which paragraph they started.
+    open_comments: Dict[str, int] = {}
+    # Buffer for in-progress anchor text per comment id.
+    open_text: Dict[str, List[str]] = {}
+
+    id_attr = qn("w:id") if qn is not None else f"{{{_W_NS}}}id"
+
+    for pi, para in enumerate(paragraphs):
+        # We want a stream of (kind, payload) events from the paragraph XML.
+        for elem in para._p.iter():
+            tag = elem.tag
+            if tag == f"{{{_W_NS}}}commentRangeStart":
+                cid = elem.get(id_attr)
+                if cid is not None:
+                    open_comments[cid] = pi
+                    open_text.setdefault(cid, [])
+            elif tag == f"{{{_W_NS}}}commentRangeEnd":
+                cid = elem.get(id_attr)
+                if cid is not None and cid in open_comments:
+                    start_p = open_comments.pop(cid)
+                    text = "".join(open_text.pop(cid, []))
+                    anchors[cid] = {
+                        "anchor_text": text,
+                        "paragraph_range": [start_p, pi],
+                    }
+            elif tag == f"{{{_W_NS}}}t":
+                # Any text run that runs while a comment is open contributes
+                # to that comment's anchor text.
+                if elem.text and open_comments:
+                    for cid in open_comments:
+                        open_text[cid].append(elem.text)
+    return anchors
+
+
+
+[docs] +def extract_comments( + document: Union[str, Path, "DocxDocument"], +) -> List[Dict[str, Any]]: + """ + Extract Word comments from a .docx file or open Document. + + Parameters + ---------- + document : str | Path | docx.Document + Path to the .docx or an already-open Document. + + Returns + ------- + list[dict] + One entry per comment:: + + {"id": int | str, + "author": str, + "date": str, # ISO timestamp string, may be empty + "text": str, # comment body + "anchor_text": str, # text the comment is anchored to + "paragraph_range": [start, end]} + + ``anchor_text`` and ``paragraph_range`` default to ``""`` and + ``[None, None]`` when no in-document anchor can be located. + + Examples + -------- + >>> from scitex_msword.comments import extract_comments + >>> comments = extract_comments("boost-v16.docx") + >>> [c["text"] for c in comments] + ['Please rephrase this', 'REPLACE: Use the new wording'] + """ + _ensure_docx_available() + blob = _read_comments_xml(document) + if not blob: + return [] + parsed = _parse_comments_xml(blob) + + # Anchor scanning needs an open Document. + if isinstance(document, (str, Path)): + doc_obj = docx.Document(str(document)) + else: + doc_obj = document + anchors = _scan_anchors(doc_obj) + + out: List[Dict[str, Any]] = [] + for cid, meta in parsed.items(): + anchor = anchors.get(cid, {}) + out.append( + { + "id": meta["id"], + "author": meta["author"], + "date": meta["date"], + "text": meta["text"], + "anchor_text": anchor.get("anchor_text", ""), + "paragraph_range": anchor.get("paragraph_range", [None, None]), + } + ) + # Sort by numeric id when possible for stable output. + out.sort(key=lambda d: (isinstance(d["id"], str), d["id"])) + return out
+ + + +def _replace_in_paragraph(paragraph, anchor: str, replacement: str) -> bool: + """Replace ``anchor`` text in ``paragraph`` with ``replacement``. + + Returns True if a replacement occurred. + """ + text = paragraph.text + if anchor not in text: + return False + new_text = text.replace(anchor, replacement, 1) + # Rebuild paragraph runs with the new text, keeping first run's formatting. + first_run_fmt: Dict[str, Any] = {} + if paragraph.runs: + r = paragraph.runs[0] + first_run_fmt = { + "bold": r.bold, + "italic": r.italic, + "underline": r.underline, + } + # Clear existing runs. + for r in list(paragraph._p.findall(qn("w:r"))): + paragraph._p.remove(r) + new_run = paragraph.add_run(new_text) + if first_run_fmt.get("bold") is not None: + new_run.bold = first_run_fmt["bold"] + if first_run_fmt.get("italic") is not None: + new_run.italic = first_run_fmt["italic"] + if first_run_fmt.get("underline") is not None: + new_run.underline = first_run_fmt["underline"] + return True + + +
+[docs] +def apply_comments_as_edits( + document: "DocxDocument", + *, + comments: Optional[List[Dict[str, Any]]] = None, + grammar: str = "replace", +) -> Dict[str, Any]: + """ + Apply comments to the document body using a narrow grammar. + + Only the ``REPLACE:`` grammar is currently supported, i.e. a comment + whose body matches ``r"^\\s*REPLACE\\s*:\\s*(.+?)\\s*$"`` is interpreted + as "replace this comment's anchor text with the trailing payload". + Other comments are ignored. + + Parameters + ---------- + document : docx.Document + The Document to mutate in place. + comments : list[dict], optional + Pre-extracted comments (as returned by :func:`extract_comments`). + If ``None``, the comments are read from ``document`` directly. + grammar : str, default "replace" + Reserved for future expansion. Currently only ``"replace"`` + is recognised. + + Returns + ------- + dict + Summary: ``{"applied": int, "skipped": int, "details": [...]}``. + + Examples + -------- + >>> from scitex_msword.comments import apply_comments_as_edits + >>> summary = apply_comments_as_edits(doc) + >>> summary["applied"] + 2 + """ + _ensure_docx_available() + if grammar != "replace": + raise ValueError( + f"Unsupported grammar: {grammar!r}. Only 'replace' is implemented." + ) + + if comments is None: + comments = extract_comments(document) + + paragraphs = list(document.paragraphs) + applied = 0 + skipped = 0 + details: List[Dict[str, Any]] = [] + + for c in comments: + m = _REPLACE_RE.match(c.get("text", "")) + if not m: + skipped += 1 + details.append({"id": c.get("id"), "status": "skipped", "reason": "no-grammar-match"}) + continue + replacement = m.group(1) + anchor = c.get("anchor_text") or "" + if not anchor: + skipped += 1 + details.append({"id": c.get("id"), "status": "skipped", "reason": "no-anchor"}) + continue + start, end = c.get("paragraph_range", [None, None]) + if start is None or end is None: + skipped += 1 + details.append({"id": c.get("id"), "status": "skipped", "reason": "no-range"}) + continue + did_apply = False + for pi in range(max(0, start), min(end + 1, len(paragraphs))): + if _replace_in_paragraph(paragraphs[pi], anchor, replacement): + did_apply = True + break + if did_apply: + applied += 1 + details.append({"id": c.get("id"), "status": "applied"}) + else: + skipped += 1 + details.append( + {"id": c.get("id"), "status": "skipped", "reason": "anchor-not-found"} + ) + + return {"applied": applied, "skipped": skipped, "details": details}
+ + + +__all__ = ["extract_comments", "apply_comments_as_edits"] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/diff.html b/src/scitex/_sphinx_html/_modules/scitex_msword/diff.html new file mode 100644 index 000000000..481e26680 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/diff.html @@ -0,0 +1,955 @@ + + + + + + + + scitex_msword.diff — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.diff

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2026-06-02 00:00:00
+# File: src/scitex_msword/diff.py
+#
+# Part of scitex-msword (AGPL-3.0-only). See LICENSE at the repo root.
+
+"""
+Paragraph-level diff between two DOCX documents.
+
+This module implements ``diff_docx`` which compares two .docx files (or two
+already-loaded ``python-docx`` ``Document`` objects) and returns a list of
+paragraph-level operations describing the changes.
+
+The diff is computed with ``difflib.SequenceMatcher`` over paragraph text,
+and per-paragraph run-level formatting deltas (bold / italic / underline /
+font / highlight) are also captured for ``modify`` operations.
+
+Typical usage
+-------------
+    >>> from scitex_msword.diff import diff_docx
+    >>> ops = diff_docx("v15.docx", "v16.docx")
+    >>> for op in ops:
+    ...     print(op["op"], op["index"], op.get("text_b") or op.get("text_a"))
+"""
+
+from __future__ import annotations
+
+import difflib
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Tuple, Union
+
+try:
+    import docx  # type: ignore[import-untyped]
+    from docx.document import Document as DocxDocument  # type: ignore[import-untyped]
+
+    DOCX_AVAILABLE = True
+    _DOCX_IMPORT_ERROR: Optional[Exception] = None
+except ImportError as exc:  # pragma: no cover — install-time issue
+    DOCX_AVAILABLE = False
+    _DOCX_IMPORT_ERROR = exc
+    DocxDocument = None  # type: ignore[assignment,misc]
+
+
+DocLike = Union[str, Path, "DocxDocument"]
+
+# Run-level attributes we track for "modify" diffs.
+_RUN_ATTRS = ("bold", "italic", "underline", "font_name", "font_size", "highlight")
+
+
+def _ensure_docx_available() -> None:
+    if not DOCX_AVAILABLE:
+        raise ImportError(
+            "python-docx is required for scitex_msword.diff. "
+            "Install it via `pip install python-docx`."
+        ) from _DOCX_IMPORT_ERROR
+
+
+def _load(doc_like: DocLike) -> "DocxDocument":
+    """Coerce a path or an already-open Document into a Document."""
+    _ensure_docx_available()
+    if isinstance(doc_like, (str, Path)):
+        return docx.Document(str(doc_like))
+    return doc_like
+
+
+def _extract_run_info(run) -> Dict[str, Any]:
+    """Extract diff-relevant attributes from a python-docx Run."""
+    info: Dict[str, Any] = {
+        "text": run.text,
+        "bold": bool(run.bold) if run.bold is not None else False,
+        "italic": bool(run.italic) if run.italic is not None else False,
+        "underline": run.underline is not None and bool(run.underline),
+    }
+    try:
+        if run.font.name:
+            info["font_name"] = run.font.name
+    except Exception:
+        pass
+    try:
+        if run.font.size:
+            info["font_size"] = run.font.size.pt
+    except Exception:
+        pass
+    try:
+        hl = run.font.highlight_color
+        if hl is not None:
+            # WD_COLOR_INDEX enum -> human-readable lowercase name.
+            # str(hl) is e.g. "TURQUOISE (3)"; .name is "TURQUOISE".
+            name = getattr(hl, "name", str(hl)).split(".")[-1].split(" ")[0]
+            info["highlight"] = name.lower()
+    except Exception:
+        pass
+    return info
+
+
+def _paragraph_texts_and_runs(
+    document: "DocxDocument",
+) -> Tuple[List[str], List[List[Dict[str, Any]]]]:
+    """Return per-paragraph (text, run-info-list) for the document body."""
+    texts: List[str] = []
+    runs: List[List[Dict[str, Any]]] = []
+    for para in document.paragraphs:
+        texts.append(para.text)
+        runs.append([_extract_run_info(r) for r in para.runs])
+    return texts, runs
+
+
+def _diff_runs(
+    runs_a: List[Dict[str, Any]], runs_b: List[Dict[str, Any]]
+) -> List[Dict[str, Any]]:
+    """
+    Compare run lists by index and return a list of run-level changes.
+
+    Only the attributes in ``_RUN_ATTRS`` are tracked. For run-count
+    mismatches, the extra runs are reported as added/removed.
+    """
+    changes: List[Dict[str, Any]] = []
+    common = min(len(runs_a), len(runs_b))
+    for i in range(common):
+        ra, rb = runs_a[i], runs_b[i]
+        delta: Dict[str, Any] = {}
+        for attr in _RUN_ATTRS:
+            va, vb = ra.get(attr), rb.get(attr)
+            if va != vb:
+                delta[attr] = {"a": va, "b": vb}
+        if ra.get("text") != rb.get("text"):
+            delta["text"] = {"a": ra.get("text"), "b": rb.get("text")}
+        if delta:
+            changes.append({"run_index": i, "delta": delta})
+    if len(runs_a) > common:
+        for i in range(common, len(runs_a)):
+            changes.append({"run_index": i, "removed": runs_a[i]})
+    if len(runs_b) > common:
+        for i in range(common, len(runs_b)):
+            changes.append({"run_index": i, "added": runs_b[i]})
+    return changes
+
+
+
+[docs] +def diff_docx( + a: DocLike, + b: DocLike, + *, + include_run_diff: bool = True, +) -> List[Dict[str, Any]]: + """ + Compute paragraph-level diff between two DOCX documents. + + Parameters + ---------- + a, b : str | Path | docx.Document + Inputs to compare. May be paths or already-loaded Documents. + include_run_diff : bool, default True + If True, ``modify`` operations include a ``runs_changed`` field + listing the run-level formatting deltas. + + Returns + ------- + list[dict] + Each entry is one of:: + + {"op": "equal", "index": int, "text_a": str, "text_b": str} + {"op": "insert", "index": int, "text_a": None, "text_b": str} + {"op": "delete", "index": int, "text_a": str, "text_b": None} + {"op": "modify", "index": int, "text_a": str, "text_b": str, + "runs_changed": [...]} + + ``index`` refers to the paragraph index in document ``b`` for + ``equal``/``insert``/``modify`` operations, and to the paragraph + index in document ``a`` for ``delete`` operations. + + Examples + -------- + >>> from scitex_msword.diff import diff_docx + >>> ops = diff_docx("v15.docx", "v16.docx") + >>> changes = [o for o in ops if o["op"] != "equal"] + """ + doc_a = _load(a) + doc_b = _load(b) + + texts_a, runs_a = _paragraph_texts_and_runs(doc_a) + texts_b, runs_b = _paragraph_texts_and_runs(doc_b) + + matcher = difflib.SequenceMatcher(a=texts_a, b=texts_b, autojunk=False) + ops: List[Dict[str, Any]] = [] + + for tag, i1, i2, j1, j2 in matcher.get_opcodes(): + if tag == "equal": + for k in range(i2 - i1): + ops.append( + { + "op": "equal", + "index": j1 + k, + "text_a": texts_a[i1 + k], + "text_b": texts_b[j1 + k], + } + ) + elif tag == "delete": + for k in range(i2 - i1): + ops.append( + { + "op": "delete", + "index": i1 + k, + "text_a": texts_a[i1 + k], + "text_b": None, + } + ) + elif tag == "insert": + for k in range(j2 - j1): + ops.append( + { + "op": "insert", + "index": j1 + k, + "text_a": None, + "text_b": texts_b[j1 + k], + } + ) + elif tag == "replace": + # Pair up the replaced ranges; surplus on either side becomes + # delete / insert. + paired = min(i2 - i1, j2 - j1) + for k in range(paired): + ai, bi = i1 + k, j1 + k + entry: Dict[str, Any] = { + "op": "modify", + "index": bi, + "text_a": texts_a[ai], + "text_b": texts_b[bi], + } + if include_run_diff: + entry["runs_changed"] = _diff_runs(runs_a[ai], runs_b[bi]) + ops.append(entry) + for k in range(paired, i2 - i1): + ai = i1 + k + ops.append( + { + "op": "delete", + "index": ai, + "text_a": texts_a[ai], + "text_b": None, + } + ) + for k in range(paired, j2 - j1): + bi = j1 + k + ops.append( + { + "op": "insert", + "index": bi, + "text_a": None, + "text_b": texts_b[bi], + } + ) + + return ops
+ + + +
+[docs] +def summarize_diff(ops: List[Dict[str, Any]]) -> Dict[str, int]: + """ + Convenience helper: count operations by type. + + Parameters + ---------- + ops : list[dict] + Output of :func:`diff_docx`. + + Returns + ------- + dict[str, int] + Mapping ``{"equal": n, "insert": n, "delete": n, "modify": n}``. + """ + summary = {"equal": 0, "insert": 0, "delete": 0, "modify": 0} + for op in ops: + summary[op["op"]] = summary.get(op["op"], 0) + 1 + return summary
+ + + +__all__ = ["diff_docx", "summarize_diff"] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/highlights.html b/src/scitex/_sphinx_html/_modules/scitex_msword/highlights.html new file mode 100644 index 000000000..f99c087e1 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/highlights.html @@ -0,0 +1,973 @@ + + + + + + + + scitex_msword.highlights — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.highlights

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2026-06-02 00:00:00
+# File: src/scitex_msword/highlights.py
+#
+# Part of scitex-msword (AGPL-3.0-only). See LICENSE at the repo root.
+
+"""
+Visual-mark / highlight utilities for python-docx Documents.
+
+This module is used by the BOOST v16 dogfooding workflow to visualize:
+
+- *additions* by the operator (turquoise highlight, by convention)
+- *modifications* to operator-supplied content (magenta highlight)
+
+plus a generic :func:`extract_highlights` to inspect what colors are
+present in a document and which runs carry them.
+
+Color names mirror Word's ``WD_COLOR_INDEX`` enum (case-insensitive):
+``turquoise``, ``pink``, ``yellow``, ``green``, ``blue``, ``red``,
+``gray_25``, ``gray_50``, ``black``, ``white``, ``dark_red``,
+``dark_yellow``, ``dark_blue``, ``teal``, ``violet``, and ``auto``.
+
+For convenience the following BOOST-v16 aliases are also accepted:
+
+- ``magenta`` -> ``pink`` (Word's bright-pink highlight)
+- ``purple``  -> ``violet``
+- ``cyan``    -> ``turquoise``
+"""
+
+from __future__ import annotations
+
+from collections import defaultdict
+from typing import Any, Dict, Iterable, List, Optional, Tuple
+
+try:
+    from docx.document import Document as DocxDocument  # type: ignore[import-untyped]
+    from docx.enum.text import WD_COLOR_INDEX  # type: ignore[import-untyped]
+
+    DOCX_AVAILABLE = True
+    _DOCX_IMPORT_ERROR: Optional[Exception] = None
+except ImportError as exc:  # pragma: no cover
+    DOCX_AVAILABLE = False
+    _DOCX_IMPORT_ERROR = exc
+    WD_COLOR_INDEX = None  # type: ignore[assignment]
+    DocxDocument = None  # type: ignore[assignment,misc]
+
+
+# Canonical addition / modification colors (mirrors BOOST v16 convention).
+ADDITION_COLOR = "turquoise"
+MODIFICATION_COLOR = "magenta"
+
+# Map lowercase / underscore-tolerant color name -> WD_COLOR_INDEX value.
+# Lazily populated on first use so the module is import-safe without docx.
+_COLOR_NAME_MAP: Dict[str, Any] = {}
+
+
+def _ensure_docx_available() -> None:
+    if not DOCX_AVAILABLE:
+        raise ImportError(
+            "python-docx is required for scitex_msword.highlights. "
+            "Install it via `pip install python-docx`."
+        ) from _DOCX_IMPORT_ERROR
+
+
+def _color_map() -> Dict[str, Any]:
+    """Lazy-build the lowercase -> WD_COLOR_INDEX mapping."""
+    if _COLOR_NAME_MAP:
+        return _COLOR_NAME_MAP
+    _ensure_docx_available()
+    for member in WD_COLOR_INDEX:  # type: ignore[union-attr]
+        name = member.name.lower()
+        _COLOR_NAME_MAP[name] = member
+        # Allow callers to use either "gray25" or "gray_25" forms.
+        if "_" in name:
+            _COLOR_NAME_MAP[name.replace("_", "")] = member
+    # Friendly aliases used by the BOOST v16 workflow.
+    _COLOR_NAME_MAP["magenta"] = WD_COLOR_INDEX.PINK  # type: ignore[union-attr]
+    _COLOR_NAME_MAP["purple"] = WD_COLOR_INDEX.VIOLET  # type: ignore[union-attr]
+    _COLOR_NAME_MAP["cyan"] = WD_COLOR_INDEX.TURQUOISE  # type: ignore[union-attr]
+    return _COLOR_NAME_MAP
+
+
+def _resolve_color(color):
+    """Translate a string color name (or pass-through enum) into WD_COLOR_INDEX."""
+    if color is None:
+        _ensure_docx_available()
+        return WD_COLOR_INDEX.AUTO  # type: ignore[union-attr]
+    if isinstance(color, str):
+        key = color.strip().lower().replace("-", "_")
+        cmap = _color_map()
+        if key not in cmap:
+            raise ValueError(
+                f"Unknown highlight color: {color!r}. "
+                f"Known: {sorted(set(cmap))[:12]}..."
+            )
+        return cmap[key]
+    return color
+
+
+def _iter_target_runs(document: "DocxDocument", targets: Iterable[Tuple[int, int]]):
+    """Yield (run_obj, (paragraph_idx, run_idx)) pairs for valid targets."""
+    paragraphs = list(document.paragraphs)
+    for pi, ri in targets:
+        if 0 <= pi < len(paragraphs):
+            runs = paragraphs[pi].runs
+            if 0 <= ri < len(runs):
+                yield runs[ri], (pi, ri)
+
+
+def _apply_highlight(
+    document: "DocxDocument",
+    runs: Iterable[Tuple[int, int]],
+    color,
+) -> "DocxDocument":
+    """Apply ``color`` highlight to every (paragraph_idx, run_idx) target."""
+    _ensure_docx_available()
+    wd_color = _resolve_color(color)
+    for run, _ in _iter_target_runs(document, runs):
+        run.font.highlight_color = wd_color
+    return document
+
+
+
+[docs] +def mark_additions( + document: "DocxDocument", + runs: Iterable[Tuple[int, int]], + color: str = ADDITION_COLOR, +) -> "DocxDocument": + """ + Highlight the runs that the operator (or agent) *added* to the document. + + Parameters + ---------- + document : docx.Document + The Document to mutate in place. + runs : iterable of (paragraph_idx, run_idx) + Targets to highlight. Out-of-range indices are skipped silently. + color : str, default "turquoise" + Color name. See module docstring for the supported palette. + + Returns + ------- + docx.Document + The same Document object, mutated. + + Examples + -------- + >>> from scitex_msword.highlights import mark_additions + >>> doc = mark_additions(doc, [(3, 0), (5, 2)]) # default turquoise + """ + return _apply_highlight(document, runs, color)
+ + + +
+[docs] +def mark_modifications( + document: "DocxDocument", + runs: Iterable[Tuple[int, int]], + color: str = MODIFICATION_COLOR, +) -> "DocxDocument": + """ + Highlight the runs that the operator (or agent) *modified* in the document. + + Parameters + ---------- + document : docx.Document + The Document to mutate in place. + runs : iterable of (paragraph_idx, run_idx) + Targets to highlight. Out-of-range indices are skipped silently. + color : str, default "magenta" + Color name. See module docstring for the supported palette. + + Returns + ------- + docx.Document + The same Document object, mutated. + + Examples + -------- + >>> from scitex_msword.highlights import mark_modifications + >>> doc = mark_modifications(doc, [(7, 1)]) # default magenta + """ + return _apply_highlight(document, runs, color)
+ + + +def _run_highlight_name(run) -> Optional[str]: + """Return the lowercase highlight color name for the run, or None.""" + try: + hl = run.font.highlight_color + except Exception: + return None + if hl is None: + return None + # WD_COLOR_INDEX members expose .name; str() includes the int code, + # which is unhelpful for bucketing. + name = getattr(hl, "name", str(hl)).split(".")[-1].lower() + # Strip any trailing " (N)" leftover defensively. + name = name.split(" ")[0] + if name in ("auto", "inherited"): + return None + return name + + +
+[docs] +def extract_highlights( + document: "DocxDocument", + by_color: bool = True, +) -> Dict[str, List[Dict[str, Any]]]: + """ + Extract highlighted runs from a document, grouped by color. + + Parameters + ---------- + document : docx.Document + The document to scan. + by_color : bool, default True + If True (default), return ``{color_name: [run_info, ...]}``. + If False, return a single ``{"all": [run_info, ...]}`` bucket + with each entry's ``color`` field populated. + + Returns + ------- + dict[str, list[dict]] + Mapping from color name to a list of run info dicts of shape:: + + {"paragraph": int, "run": int, "text": str, "color": str} + + Examples + -------- + >>> from scitex_msword.highlights import extract_highlights + >>> by_color = extract_highlights(doc) + >>> by_color.get("turquoise", []) + [{'paragraph': 3, 'run': 0, 'text': '...', 'color': 'turquoise'}] + """ + _ensure_docx_available() + buckets: Dict[str, List[Dict[str, Any]]] = defaultdict(list) + for pi, para in enumerate(document.paragraphs): + for ri, run in enumerate(para.runs): + name = _run_highlight_name(run) + if not name: + continue + entry = { + "paragraph": pi, + "run": ri, + "text": run.text, + "color": name, + } + bucket = name if by_color else "all" + buckets[bucket].append(entry) + return dict(buckets)
+ + + +
+[docs] +def clear_highlights( + document: "DocxDocument", + colors: Optional[Iterable[str]] = None, +) -> "DocxDocument": + """ + Remove highlights from all runs (optionally only for the listed colors). + + Parameters + ---------- + document : docx.Document + Document to mutate in place. + colors : iterable of str, optional + If provided, only runs with one of these highlight colors are + cleared. If ``None`` (default), every highlighted run is cleared. + + Returns + ------- + docx.Document + The same Document object, mutated. + """ + _ensure_docx_available() + target = None + if colors is not None: + target = {c.strip().lower().replace("-", "_") for c in colors} + for para in document.paragraphs: + for run in para.runs: + name = _run_highlight_name(run) + if name and (target is None or name in target): + run.font.highlight_color = WD_COLOR_INDEX.AUTO # type: ignore[union-attr] + return document
+ + + +__all__ = [ + "ADDITION_COLOR", + "MODIFICATION_COLOR", + "mark_additions", + "mark_modifications", + "extract_highlights", + "clear_highlights", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/profiles.html b/src/scitex/_sphinx_html/_modules/scitex_msword/profiles.html new file mode 100644 index 000000000..c43d57cf5 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/profiles.html @@ -0,0 +1,1086 @@ + + + + + + + + scitex_msword.profiles — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.profiles

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2025-12-11 15:15:00
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/msword/profiles.py
+
+"""
+Profiles for mapping MS Word styles to SciTeX writer structures.
+
+Each profile corresponds to a journal / conference template, such as:
+- "generic"
+- "mdpi-ijerph"
+- "resna-2025"
+- "iop-double-anonymous"
+
+The profiles define:
+- Which Word style names correspond to section headings
+- How to detect captions for figures and tables
+- How to handle references, lists, equations, etc.
+- Layout settings (columns, margins, fonts)
+"""
+
+from __future__ import annotations
+
+from dataclasses import dataclass, field
+from typing import Callable, Dict, List, Optional
+
+
+
+[docs] +@dataclass +class BaseWordProfile: + """ + Base configuration for mapping between DOCX and SciTeX writer documents. + + Attributes + ---------- + name : str + Profile identifier (e.g., "mdpi-ijerph"). + description : str + Human-readable description. + heading_styles : dict[int, str] + Mapping from section depth (1, 2, 3...) to Word style names + (e.g., {1: "Heading 1", 2: "Heading 2"}). + caption_style : str + Word style name used for figure/table captions. + normal_style : str + Default paragraph style. + reference_section_titles : list[str] + Titles that indicate the start of the reference section. + figure_caption_prefixes : list[str] + Prefixes that identify figure captions (e.g., ["Figure", "Fig."]). + table_caption_prefixes : list[str] + Prefixes that identify table captions (e.g., ["Table"]). + list_styles : dict[str, str] + Mapping for list styles (bullet, numbered). + equation_style : str | None + Style name for equations, if any. + columns : int + Number of columns in the layout (1 or 2). + double_anonymous : bool + Whether this profile requires double-anonymous formatting. + """ + + name: str + description: str + heading_styles: Dict[int, str] = field(default_factory=dict) + caption_style: str = "Caption" + normal_style: str = "Normal" + reference_section_titles: List[str] = field( + default_factory=lambda: ["References", "REFERENCES"] + ) + figure_caption_prefixes: List[str] = field( + default_factory=lambda: ["Figure", "Fig.", "Fig"] + ) + table_caption_prefixes: List[str] = field( + default_factory=lambda: ["Table", "Tab.", "Tab"] + ) + list_styles: Dict[str, str] = field( + default_factory=lambda: { + "bullet": "List Bullet", + "numbered": "List Number", + } + ) + equation_style: Optional[str] = None + columns: int = 1 + double_anonymous: bool = False + + # Optional layout / typography hints (used by profiles like boost-2026). + # These are advisory: writer code may consult them to customize fonts, + # heading shading, and line spacing without hard-coding per-profile logic. + body_font: Optional[str] = None + body_font_size_pt: Optional[float] = None + heading_background_hex: Optional[str] = None + line_spacing: Optional[float] = None + + # Post-processing hooks + post_import_hooks: List[Callable] = field(default_factory=list) + pre_export_hooks: List[Callable] = field(default_factory=list)
+ + + +# --- Concrete profiles ------------------------------------------------------ + + +def _generic_profile() -> BaseWordProfile: + """ + Generic Word template profile. + + This profile is intentionally conservative and assumes that: + - "Heading 1/2/3" are used for section headings. + - "Caption" is used for figure/table captions. + - "Normal" is the default body text. + + This should work reasonably well for many simple manuscripts. + """ + return BaseWordProfile( + name="generic", + description="Generic Word mapping with standard Heading styles.", + heading_styles={ + 1: "Heading 1", + 2: "Heading 2", + 3: "Heading 3", + 4: "Heading 4", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References", "REFERENCES", "Bibliography"], + ) + + +def _mdpi_ijerph_profile() -> BaseWordProfile: + """ + MDPI IJERPH template profile. + + Based on the MDPI Word template structure: + - Section headings use built-in heading styles. + - References section is titled "References". + - Single column layout. + - Specific section order: Introduction, Materials and Methods, + Results, Discussion, Conclusions. + """ + return BaseWordProfile( + name="mdpi-ijerph", + description="MDPI IJERPH (Int. J. Environ. Res. Public Health) Word template.", + heading_styles={ + 1: "Heading 1", + 2: "Heading 2", + 3: "Heading 3", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References"], + columns=1, + ) + + +def _resna_2025_profile() -> BaseWordProfile: + """ + RESNA 2025 scientific paper template profile. + + The RESNA template: + - Uses all-caps section headings (INTRODUCTION, METHODS, etc.) + - Strict 4-page layout + - Two-column format + """ + return BaseWordProfile( + name="resna-2025", + description="RESNA 2025 Scientific Paper Word template.", + heading_styles={ + 1: "Heading 1", # INTRODUCTION, METHODS, etc. + 2: "Heading 2", # First-level sub-heading + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References", "REFERENCES"], + columns=2, + ) + + +def _iop_double_anonymous_profile() -> BaseWordProfile: + """ + IOP double-anonymous Word template profile. + + The IOP template uses custom styles: + - IOPH1, IOPH2, IOPH3 for headings + - IOPTitle for title + - IOPAbsText for abstract + - IOPAff for affiliations + - Requires removal of author-identifying information + """ + return BaseWordProfile( + name="iop-double-anonymous", + description="IOP double-anonymous Word template.", + heading_styles={ + 1: "IOPH1", + 2: "IOPH2", + 3: "IOPH3", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References"], + double_anonymous=True, + ) + + +def _ieee_profile() -> BaseWordProfile: + """ + IEEE conference/journal template profile. + + The IEEE template: + - Two-column format + - Roman numeral section numbering + - Specific citation style + """ + return BaseWordProfile( + name="ieee", + description="IEEE conference/journal Word template.", + heading_styles={ + 1: "Heading 1", + 2: "Heading 2", + 3: "Heading 3", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References", "REFERENCES"], + columns=2, + ) + + +def _springer_profile() -> BaseWordProfile: + """ + Springer Nature journal template profile. + """ + return BaseWordProfile( + name="springer", + description="Springer Nature journal Word template.", + heading_styles={ + 1: "Heading 1", + 2: "Heading 2", + 3: "Heading 3", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References"], + columns=1, + ) + + +def _elsevier_profile() -> BaseWordProfile: + """ + Elsevier journal template profile. + """ + return BaseWordProfile( + name="elsevier", + description="Elsevier journal Word template.", + heading_styles={ + 1: "Heading 1", + 2: "Heading 2", + 3: "Heading 3", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["References"], + columns=1, + ) + + +def _boost_2026_profile() -> BaseWordProfile: + """ + JST BOOST 2026 grant application template profile. + + Layout convention (per BOOST v16 dogfooding): + + - Body text: 10.5pt MS Gothic + - Headings: bold, with light-grey (#D9D9D9) background shading + - Line spacing: 1.0 (single) + - Single column + + The advisory ``body_font`` / ``body_font_size_pt`` / + ``heading_background_hex`` / ``line_spacing`` fields let the writer + layer (or downstream tooling such as the BOOST v16 builder) pick + these up without hard-coding per-document logic. + """ + return BaseWordProfile( + name="boost-2026", + description="JST BOOST 2026 grant application Word template.", + heading_styles={ + 1: "Heading 1", + 2: "Heading 2", + 3: "Heading 3", + }, + caption_style="Caption", + normal_style="Normal", + reference_section_titles=["参考文献", "References"], + columns=1, + body_font="MS Gothic", + body_font_size_pt=10.5, + heading_background_hex="D9D9D9", + line_spacing=1.0, + ) + + +# Registry of known profiles +_PROFILES: Dict[str, BaseWordProfile] = { + "generic": _generic_profile(), + "mdpi-ijerph": _mdpi_ijerph_profile(), + "mdpi": _mdpi_ijerph_profile(), # Alias + "resna-2025": _resna_2025_profile(), + "resna": _resna_2025_profile(), # Alias + "iop-double-anonymous": _iop_double_anonymous_profile(), + "iop": _iop_double_anonymous_profile(), # Alias + "ieee": _ieee_profile(), + "springer": _springer_profile(), + "elsevier": _elsevier_profile(), + "boost-2026": _boost_2026_profile(), + "boost": _boost_2026_profile(), # Alias +} + + +
+[docs] +def list_profiles() -> list[str]: + """ + List available MS Word profiles. + + Returns + ------- + list[str] + List of profile names (e.g., ["generic", "mdpi-ijerph", ...]). + + Examples + -------- + >>> from scitex.msword import list_profiles + >>> profiles = list_profiles() + >>> "generic" in profiles + True + """ + return sorted(_PROFILES.keys())
+ + + +
+[docs] +def get_profile(name: str | None) -> BaseWordProfile: + """ + Get a Word profile by name. + + Parameters + ---------- + name : str | None + Profile name. If None, "generic" is used. + + Returns + ------- + BaseWordProfile + The requested profile. + + Raises + ------ + KeyError + If the profile name is unknown. + + Examples + -------- + >>> from scitex.msword import get_profile + >>> profile = get_profile("mdpi-ijerph") + >>> profile.columns + 1 + """ + if name is None: + return _PROFILES["generic"] + try: + return _PROFILES[name] + except KeyError as exc: + available = ", ".join(list_profiles()) + raise KeyError( + f"Unknown MS Word profile: {name!r}. " f"Available profiles: {available}" + ) from exc
+ + + +
+[docs] +def register_profile(profile: BaseWordProfile) -> None: + """ + Register a custom Word profile. + + Parameters + ---------- + profile : BaseWordProfile + The profile to register. + + Examples + -------- + >>> from scitex.msword import BaseWordProfile, register_profile + >>> custom = BaseWordProfile( + ... name="my-journal", + ... description="My custom journal template", + ... heading_styles={1: "Title", 2: "Subtitle"}, + ... ) + >>> register_profile(custom) + >>> "my-journal" in list_profiles() + True + """ + _PROFILES[profile.name] = profile
+ + + +__all__ = [ + "BaseWordProfile", + "list_profiles", + "get_profile", + "register_profile", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/reader.html b/src/scitex/_sphinx_html/_modules/scitex_msword/reader.html new file mode 100644 index 000000000..d9ecc4ecd --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/reader.html @@ -0,0 +1,1461 @@ + + + + + + + + scitex_msword.reader — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.reader

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2025-12-11 15:15:00
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/msword/reader.py
+
+"""
+DOCX -> SciTeX writer document converter.
+
+This module reads MS Word .docx files and converts them into
+SciTeX's intermediate document format for further processing.
+"""
+
+from __future__ import annotations
+
+import hashlib
+import re
+from datetime import datetime
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Tuple
+
+from .profiles import BaseWordProfile
+
+# Lazy import for python-docx
+try:
+    import docx
+    from docx.document import Document as DocxDocument
+    from docx.oxml.ns import qn
+    from docx.shared import Inches, Pt
+
+    DOCX_AVAILABLE = True
+    _DOCX_IMPORT_ERROR = None
+except ImportError as exc:
+    DOCX_AVAILABLE = False
+    _DOCX_IMPORT_ERROR = exc
+    DocxDocument = None
+
+# Common academic section headings for heuristic detection
+COMMON_SECTION_HEADINGS = {
+    "abstract",
+    "introduction",
+    "background",
+    "literature review",
+    "methods",
+    "methodology",
+    "materials and methods",
+    "experimental",
+    "results",
+    "findings",
+    "analysis",
+    "discussion",
+    "conclusions",
+    "conclusion",
+    "summary",
+    "acknowledgements",
+    "acknowledgments",
+    "acknowledgement",
+    "references",
+    "bibliography",
+    "works cited",
+    "appendix",
+    "appendices",
+    "supplementary",
+    "supplementary material",
+}
+
+# Caption patterns for robust detection
+CAPTION_PATTERNS = [
+    # Figure patterns
+    (r"^(figure|fig\.?)\s*(\d+)[\.:\s]*(.*)$", "figure"),
+    (r"^(scheme)\s*(\d+)[\.:\s]*(.*)$", "scheme"),
+    (r"^(chart)\s*(\d+)[\.:\s]*(.*)$", "chart"),
+    (r"^(graph)\s*(\d+)[\.:\s]*(.*)$", "graph"),
+    (r"^(plate)\s*(\d+)[\.:\s]*(.*)$", "plate"),
+    (r"^(illustration)\s*(\d+)[\.:\s]*(.*)$", "illustration"),
+    # Table patterns
+    (r"^(table|tbl\.?)\s*(\d+)[\.:\s]*(.*)$", "table"),
+    # Equation patterns
+    (r"^(equation|eq\.?)\s*(\d+)[\.:\s]*(.*)$", "equation"),
+    # Listing/code patterns
+    (r"^(listing|code)\s*(\d+)[\.:\s]*(.*)$", "listing"),
+    # Algorithm patterns
+    (r"^(algorithm|alg\.?)\s*(\d+)[\.:\s]*(.*)$", "algorithm"),
+]
+
+
+
+[docs] +class WordReader: + """ + Read a DOCX file and convert it into a SciTeX writer document. + + This reader focuses on: + - Sections (via heading styles) + - Plain paragraphs + - Figure/table captions (via caption style) + - Embedded images extraction + - References section boundary detection + - Basic formatting (bold, italic) + + The output is a structured intermediate representation that can be + easily fed into `scitex.writer` or exported to LaTeX/other formats. + """ + +
+[docs] + def __init__( + self, + profile: BaseWordProfile, + extract_images: bool = True, + ): + """ + Parameters + ---------- + profile : BaseWordProfile + Mapping between Word styles and SciTeX writer semantics. + extract_images : bool + Whether to extract embedded images from the document. + """ + if not DOCX_AVAILABLE: + raise ImportError( + "python-docx is required for scitex.msword.WordReader. " + "Install it via `pip install python-docx`." + ) from _DOCX_IMPORT_ERROR + self.profile = profile + self.extract_images = extract_images
+ + +
+[docs] + def read(self, path: Path) -> Dict[str, Any]: + """ + Read a DOCX file and return a SciTeX writer document. + + Parameters + ---------- + path : Path + Path to the DOCX file. + + Returns + ------- + dict + SciTeX writer document structure with keys: + - blocks: List of document blocks + - metadata: Profile and source information + - images: Extracted image data (if extract_images=True) + - references: Parsed reference entries + - warnings: List of conversion warnings + """ + doc = docx.Document(str(path)) + + # Initialize result structure + result: Dict[str, Any] = { + "blocks": [], + "metadata": { + "profile": self.profile.name, + "source_file": str(path), + "import_timestamp": datetime.now().isoformat(), + }, + "images": [], + "references": [], + "warnings": [], + } + + # Extract document properties if available + result["metadata"].update(self._extract_metadata(doc)) + + # Process paragraphs and tables + blocks = self._process_body(doc, result) + result["blocks"] = blocks + + # Extract images + if self.extract_images: + result["images"] = self._extract_images(doc, path) + + # Parse references section + result["references"] = self._parse_references(blocks) + + # Run post-import hooks + for hook in self.profile.post_import_hooks: + result = hook(result) + + return result
+ + + def _extract_metadata(self, doc: DocxDocument) -> Dict[str, Any]: + """Extract document metadata (title, author, etc.).""" + metadata = {} + try: + core_props = doc.core_properties + if core_props.title: + metadata["title"] = core_props.title + if core_props.author: + metadata["author"] = core_props.author + if core_props.subject: + metadata["subject"] = core_props.subject + if core_props.keywords: + metadata["keywords"] = core_props.keywords + if core_props.created: + metadata["created"] = core_props.created.isoformat() + if core_props.modified: + metadata["modified"] = core_props.modified.isoformat() + except Exception: + pass # Metadata extraction is optional + return metadata + + def _process_body( + self, + doc: DocxDocument, + result: Dict[str, Any], + ) -> List[Dict[str, Any]]: + """Process document body: paragraphs and tables.""" + blocks: List[Dict[str, Any]] = [] + in_reference_section = False + block_index = 0 + + # Build rel_id -> hash map for image detection + rel_to_hash = {} + if self.extract_images: + for rel_id, rel in doc.part.rels.items(): + if "image" in rel.reltype: + image_bytes = rel.target_part.blob + image_hash = hashlib.md5(image_bytes).hexdigest()[:12] + rel_to_hash[rel_id] = image_hash + + # Namespace for picture detection + pic_ns = {"pic": "http://schemas.openxmlformats.org/drawingml/2006/picture"} + a_ns = {"a": "http://schemas.openxmlformats.org/drawingml/2006/main"} + r_ns = { + "r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + } + + for element in doc.element.body: + tag = element.tag.split("}")[-1] # Remove namespace + + if tag == "p": + # Process paragraph + para = docx.text.paragraph.Paragraph(element, doc) + + # Detect inline images in this paragraph + if self.extract_images: + for run in para.runs: + # Check for drawing elements containing pictures + drawings = run.element.findall(".//a:blip", namespaces=a_ns) + for blip in drawings: + embed_attr = qn("r:embed") + rel_id = blip.get(embed_attr) + if rel_id and rel_id in rel_to_hash: + blocks.append( + { + "index": block_index, + "type": "image", + "image_hash": rel_to_hash[rel_id], + "rel_id": rel_id, + } + ) + block_index += 1 + + block = self._process_paragraph(para, in_reference_section, block_index) + if block: + # Check if entering references section + if block["type"] == "heading" and block["text"] in ( + self.profile.reference_section_titles + ): + in_reference_section = True + block["is_reference_header"] = True + + blocks.append(block) + block_index += 1 + + elif tag == "tbl": + # Process table + table = docx.table.Table(element, doc) + block = self._process_table(table, block_index) + blocks.append(block) + block_index += 1 + + return blocks + + def _process_paragraph( + self, + para, + in_reference_section: bool, + block_index: int, + ) -> Optional[Dict[str, Any]]: + """Process a single paragraph.""" + style_name = (para.style.name or "").strip() if para.style else "" + text = para.text.strip() + + if not text: + return None + + # Extract runs with formatting info + runs = self._extract_runs(para) + + # Base block structure + block: Dict[str, Any] = { + "index": block_index, + "text": text, + "style": style_name, + "runs": runs, + } + + # Check for equations (OMML) + equation_latex = self._extract_equation(para) + if equation_latex: + block["type"] = "equation" + block["latex"] = equation_latex + return block + + # Detect heading (style-based first, then heuristic) + level = self._detect_heading(para, style_name, text, runs) + if level is not None: + block["type"] = "heading" + block["level"] = level + block["detection_method"] = ( + "style" if self._heading_level_from_style(style_name) else "heuristic" + ) + return block + + # Detect caption (improved pattern matching) + caption_info = self._detect_caption(style_name, text) + if caption_info: + block["type"] = "caption" + block.update(caption_info) + return block + + # Reference paragraph + if in_reference_section: + block["type"] = "reference-paragraph" + ref_info = self._parse_reference_entry(text) + block.update(ref_info) + return block + + # List item detection + if self._is_list_item(para): + block["type"] = "list-item" + list_info = self._parse_list_item(para) + block.update(list_info) + return block + + # Normal paragraph + block["type"] = "paragraph" + return block + + def _detect_heading( + self, + para, + style_name: str, + text: str, + runs: List[Dict[str, Any]], + ) -> Optional[int]: + """ + Detect heading using multiple strategies: + 1. Style-based (most reliable) + 2. Font-based heuristics (bold, larger size) + 3. Content-based (known section titles) + """ + # Strategy 1: Style-based detection + level = self._heading_level_from_style(style_name) + if level is not None: + return level + + # Strategy 2: Font-based heuristics + # Check if entire paragraph is bold and short + text_clean = text.strip() + if len(text_clean) < 100: # Headings are typically short + all_bold = all(r.get("bold") for r in runs if r.get("text", "").strip()) + if all_bold and runs: + # Check font size - headings often larger + avg_size = self._get_average_font_size(runs) + if avg_size and avg_size >= 12: + # Check if it looks like a section heading + if self._looks_like_heading(text_clean): + return 1 if avg_size >= 14 else 2 + + # Strategy 3: Content-based detection (common section titles) + text_lower = text_clean.lower().rstrip(".:;") + # Check numbered sections: "1. Introduction", "2.1 Methods" + numbered_match = re.match(r"^(\d+(?:\.\d+)*)[\.:\s]+(.+)$", text_clean) + if numbered_match: + section_text = numbered_match.group(2).lower().strip() + if section_text in COMMON_SECTION_HEADINGS: + depth = numbered_match.group(1).count(".") + return min(depth + 1, 4) + + # Check unnumbered common headings (if bold or all caps) + if text_lower in COMMON_SECTION_HEADINGS: + is_bold = all(r.get("bold") for r in runs if r.get("text", "").strip()) + is_all_caps = text_clean.isupper() and len(text_clean) > 3 + if is_bold or is_all_caps: + return 1 + + return None + + def _looks_like_heading(self, text: str) -> bool: + """Check if text looks like a heading based on content patterns.""" + text_lower = text.lower().rstrip(".:;") + + # Check common section headings + if text_lower in COMMON_SECTION_HEADINGS: + return True + + # Check numbered sections + if re.match(r"^\d+(?:\.\d+)*\s+\w", text): + return True + + # All caps short text + if text.isupper() and 3 < len(text) < 50: + return True + + return False + + def _get_average_font_size(self, runs: List[Dict[str, Any]]) -> Optional[float]: + """Get average font size from runs.""" + sizes = [r["font_size"] for r in runs if r.get("font_size")] + return sum(sizes) / len(sizes) if sizes else None + + def _detect_caption(self, style_name: str, text: str) -> Optional[Dict[str, Any]]: + """ + Detect and parse captions using multiple patterns. + Returns caption info dict or None. + """ + # Check by style first + if style_name == self.profile.caption_style: + return self._parse_caption(text) + + # Check using comprehensive patterns + text_stripped = text.strip() + for pattern, caption_type in CAPTION_PATTERNS: + match = re.match(pattern, text_stripped, re.IGNORECASE) + if match: + return { + "caption_type": caption_type, + "number": int(match.group(2)), + "caption_text": match.group(3).strip(), + } + + # Check profile-specific prefixes + if self._is_caption(style_name, text): + return self._parse_caption(text) + + return None + + def _extract_equation(self, para) -> Optional[str]: + """ + Extract equation from paragraph if it contains OMML (Office Math Markup). + Returns LaTeX representation or None. + """ + try: + # Check for oMath elements + omml_ns = { + "m": "http://schemas.openxmlformats.org/officeDocument/2006/math" + } + math_elements = para._element.findall(".//m:oMath", namespaces=omml_ns) + + if not math_elements: + return None + + # Basic OMML to LaTeX conversion + latex_parts = [] + for math_elem in math_elements: + latex = self._omml_to_latex(math_elem) + if latex: + latex_parts.append(latex) + + return " ".join(latex_parts) if latex_parts else None + except Exception: + return None + + def _omml_to_latex(self, math_elem) -> str: + """ + Convert OMML element to LaTeX string. + This is a basic converter - handles common cases. + """ + omml_ns = {"m": "http://schemas.openxmlformats.org/officeDocument/2006/math"} + + def get_text(elem) -> str: + """Recursively get text from element.""" + texts = [] + if elem.text: + texts.append(elem.text) + for child in elem: + texts.append(get_text(child)) + if child.tail: + texts.append(child.tail) + return "".join(texts) + + def convert_element(elem) -> str: + """Convert a single OMML element to LaTeX.""" + tag = elem.tag.split("}")[-1] if "}" in elem.tag else elem.tag + + if tag == "r": # Run (text) + return get_text(elem) + elif tag == "f": # Fraction + num = elem.find("m:num", namespaces=omml_ns) + den = elem.find("m:den", namespaces=omml_ns) + num_tex = convert_children(num) if num is not None else "" + den_tex = convert_children(den) if den is not None else "" + return f"\\frac{{{num_tex}}}{{{den_tex}}}" + elif tag == "rad": # Radical/root + deg = elem.find("m:deg", namespaces=omml_ns) + content = elem.find("m:e", namespaces=omml_ns) + content_tex = convert_children(content) if content is not None else "" + if deg is not None and get_text(deg).strip(): + deg_tex = convert_children(deg) + return f"\\sqrt[{deg_tex}]{{{content_tex}}}" + return f"\\sqrt{{{content_tex}}}" + elif tag == "sSup": # Superscript + base = elem.find("m:e", namespaces=omml_ns) + sup = elem.find("m:sup", namespaces=omml_ns) + base_tex = convert_children(base) if base is not None else "" + sup_tex = convert_children(sup) if sup is not None else "" + return f"{base_tex}^{{{sup_tex}}}" + elif tag == "sSub": # Subscript + base = elem.find("m:e", namespaces=omml_ns) + sub = elem.find("m:sub", namespaces=omml_ns) + base_tex = convert_children(base) if base is not None else "" + sub_tex = convert_children(sub) if sub is not None else "" + return f"{base_tex}_{{{sub_tex}}}" + elif tag == "sSubSup": # Sub-superscript + base = elem.find("m:e", namespaces=omml_ns) + sub = elem.find("m:sub", namespaces=omml_ns) + sup = elem.find("m:sup", namespaces=omml_ns) + base_tex = convert_children(base) if base is not None else "" + sub_tex = convert_children(sub) if sub is not None else "" + sup_tex = convert_children(sup) if sup is not None else "" + return f"{base_tex}_{{{sub_tex}}}^{{{sup_tex}}}" + elif tag == "nary": # N-ary (sum, product, integral) + chr_elem = elem.find(".//m:chr", namespaces=omml_ns) + symbol = chr_elem.get(qn("m:val")) if chr_elem is not None else "∑" + symbol_map = {"∑": "\\sum", "∏": "\\prod", "∫": "\\int", "∮": "\\oint"} + latex_sym = symbol_map.get(symbol, symbol) + sub = elem.find("m:sub", namespaces=omml_ns) + sup = elem.find("m:sup", namespaces=omml_ns) + content = elem.find("m:e", namespaces=omml_ns) + result = latex_sym + if sub is not None: + result += f"_{{{convert_children(sub)}}}" + if sup is not None: + result += f"^{{{convert_children(sup)}}}" + if content is not None: + result += f" {convert_children(content)}" + return result + elif tag == "d": # Delimiter (parentheses, brackets) + content = elem.find("m:e", namespaces=omml_ns) + content_tex = convert_children(content) if content is not None else "" + beg = elem.find(".//m:begChr", namespaces=omml_ns) + end = elem.find(".//m:endChr", namespaces=omml_ns) + left = beg.get(qn("m:val")) if beg is not None else "(" + right = end.get(qn("m:val")) if end is not None else ")" + return f"\\left{left}{content_tex}\\right{right}" + elif tag in ("e", "num", "den", "sub", "sup", "deg"): + # Container elements - just process children + return convert_children(elem) + else: + # Unknown element - try to get text + return convert_children(elem) + + def convert_children(elem) -> str: + """Convert all children of an element.""" + if elem is None: + return "" + parts = [] + for child in elem: + parts.append(convert_element(child)) + return "".join(parts) + + return convert_element(math_elem) + + def _is_list_item(self, para) -> bool: + """Check if paragraph is a list item.""" + try: + # Check for numbering properties + pPr = para._element.find(qn("w:pPr")) + if pPr is not None: + numPr = pPr.find(qn("w:numPr")) + if numPr is not None: + return True + + # Check for bullet/number at start of text + text = para.text.strip() + if re.match(r"^[\u2022\u2023\u25E6\u2043\u2219•‣◦⁃∙]\s", text): + return True + if re.match( + r"^(\d+[\.\):]|\([a-z]\)|\([ivxlc]+\)|[a-z][\.\)])\s", + text, + re.IGNORECASE, + ): + return True + + return False + except Exception: + return False + + def _parse_list_item(self, para) -> Dict[str, Any]: + """Parse list item to extract level and content.""" + info: Dict[str, Any] = {"list_type": "unordered", "level": 0} + + try: + pPr = para._element.find(qn("w:pPr")) + if pPr is not None: + numPr = pPr.find(qn("w:numPr")) + if numPr is not None: + ilvl = numPr.find(qn("w:ilvl")) + if ilvl is not None: + info["level"] = int(ilvl.get(qn("w:val"), 0)) + + # Detect ordered vs unordered + text = para.text.strip() + if re.match(r"^\d+[\.\):]\s", text): + info["list_type"] = "ordered" + except Exception: + pass + + return info + + def _extract_runs(self, para) -> List[Dict[str, Any]]: + """Extract formatted runs from a paragraph.""" + runs = [] + for run in para.runs: + if not run.text: + continue + run_data = { + "text": run.text, + "bold": run.bold, + "italic": run.italic, + "underline": run.underline is not None, + } + if run.font.size: + run_data["font_size"] = run.font.size.pt + if run.font.name: + run_data["font_name"] = run.font.name + runs.append(run_data) + return runs + + def _heading_level_from_style(self, style_name: str) -> Optional[int]: + """Return heading level for a given Word style, or None.""" + for level, expected_style in self.profile.heading_styles.items(): + if style_name == expected_style: + return level + return None + + def _is_caption(self, style_name: str, text: str) -> bool: + """Check if paragraph is a caption.""" + if style_name == self.profile.caption_style: + return True + + # Check by prefix + text_lower = text.lower() + prefixes = ( + self.profile.figure_caption_prefixes + self.profile.table_caption_prefixes + ) + for prefix in prefixes: + if text_lower.startswith(prefix.lower()): + return True + return False + + def _parse_caption(self, text: str) -> Dict[str, Any]: + """Parse caption text to extract figure/table number.""" + info: Dict[str, Any] = {} + + # Check figure + for prefix in self.profile.figure_caption_prefixes: + pattern = rf"^{re.escape(prefix)}\.?\s*(\d+)[\.:]?\s*(.*)$" + match = re.match(pattern, text, re.IGNORECASE) + if match: + info["caption_type"] = "figure" + info["number"] = int(match.group(1)) + info["caption_text"] = match.group(2).strip() + return info + + # Check table + for prefix in self.profile.table_caption_prefixes: + pattern = rf"^{re.escape(prefix)}\.?\s*(\d+)[\.:]?\s*(.*)$" + match = re.match(pattern, text, re.IGNORECASE) + if match: + info["caption_type"] = "table" + info["number"] = int(match.group(1)) + info["caption_text"] = match.group(2).strip() + return info + + info["caption_type"] = "unknown" + info["caption_text"] = text + return info + + def _parse_reference_entry(self, text: str) -> Dict[str, Any]: + """Parse a reference entry to extract citation number.""" + info: Dict[str, Any] = {} + + # Try to extract numbered reference: [1], 1., (1), etc. + patterns = [ + r"^\[(\d+)\]", # [1] Author... + r"^(\d+)\.", # 1. Author... + r"^\((\d+)\)", # (1) Author... + ] + for pattern in patterns: + match = re.match(pattern, text) + if match: + info["ref_number"] = int(match.group(1)) + info["ref_text"] = re.sub(pattern, "", text).strip() + break + else: + info["ref_text"] = text + + return info + + def _process_table( + self, + table, + block_index: int, + ) -> Dict[str, Any]: + """Process a table.""" + rows = [] + for row in table.rows: + cells = [] + for cell in row.cells: + cells.append(cell.text.strip()) + rows.append(cells) + + return { + "index": block_index, + "type": "table", + "rows": rows, + "num_rows": len(rows), + "num_cols": len(rows[0]) if rows else 0, + } + + def _extract_images( + self, + doc: DocxDocument, + source_path: Path, + ) -> List[Dict[str, Any]]: + """Extract embedded images from the document.""" + images = [] + + try: + for rel_id, rel in doc.part.rels.items(): + if "image" in rel.reltype: + image_part = rel.target_part + image_bytes = image_part.blob + + # Generate hash for deduplication + image_hash = hashlib.md5(image_bytes).hexdigest()[:12] + + # Determine extension from content type + content_type = image_part.content_type + ext_map = { + "image/png": ".png", + "image/jpeg": ".jpg", + "image/gif": ".gif", + "image/tiff": ".tiff", + "image/bmp": ".bmp", + } + ext = ext_map.get(content_type, ".png") + + images.append( + { + "rel_id": rel_id, + "hash": image_hash, + "content_type": content_type, + "extension": ext, + "size_bytes": len(image_bytes), + "data": image_bytes, # Raw bytes + } + ) + except Exception as e: + pass # Image extraction is optional + + return images + + def _parse_references( + self, + blocks: List[Dict[str, Any]], + ) -> List[Dict[str, Any]]: + """Extract and structure references from blocks.""" + references = [] + for block in blocks: + if block.get("type") == "reference-paragraph": + ref_entry = { + "number": block.get("ref_number"), + "text": block.get("ref_text", block.get("text", "")), + "raw": block.get("text", ""), + } + references.append(ref_entry) + return references
+ + + +__all__ = ["WordReader"] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/track_changes.html b/src/scitex/_sphinx_html/_modules/scitex_msword/track_changes.html new file mode 100644 index 000000000..b399e7674 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/track_changes.html @@ -0,0 +1,1160 @@ + + + + + + + + scitex_msword.track_changes — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.track_changes

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2026-06-02 00:00:00
+# File: src/scitex_msword/track_changes.py
+#
+# Part of scitex-msword (AGPL-3.0-only). See LICENSE at the repo root.
+
+"""
+Track-Changes (revision) utilities for python-docx Documents.
+
+This module surfaces the OOXML revision primitives so agents can:
+
+1. Toggle Word's "Track Changes" switch (``<w:trackChanges/>`` in
+   ``word/settings.xml``) via :func:`enable_track_changes`.
+2. Wrap agent edits as ``<w:ins>`` / ``<w:del>`` revisions
+   (:func:`wrap_as_tracked_insertion`, :func:`wrap_as_tracked_deletion`).
+3. Extract all tracked changes (:func:`extract_tracked_changes`).
+4. Accept / reject all changes in bulk
+   (:func:`accept_all_tracked_changes`, :func:`reject_all_tracked_changes`).
+
+OOXML refs: ``w:trackChanges`` (ECMA-376 §17.15.1.86), ``w:ins``
+(§17.13.5.18), ``w:del`` (§17.13.5.14), ``w:delText`` (§17.13.5.15).
+"""
+
+from __future__ import annotations
+
+from datetime import datetime, timezone
+from typing import Any, List, Optional, Sequence
+
+try:
+    from docx.document import Document as DocxDocument  # type: ignore[import-untyped]
+    from docx.oxml.ns import qn  # type: ignore[import-untyped]
+    from docx.text.paragraph import Paragraph  # type: ignore[import-untyped]
+    from docx.text.run import Run  # type: ignore[import-untyped]
+    from lxml import etree
+
+    DOCX_AVAILABLE = True
+    _DOCX_IMPORT_ERROR: Optional[Exception] = None
+except ImportError as exc:  # pragma: no cover
+    DOCX_AVAILABLE = False
+    _DOCX_IMPORT_ERROR = exc
+    DocxDocument = None  # type: ignore[assignment,misc]
+    Paragraph = None  # type: ignore[assignment,misc]
+    Run = None  # type: ignore[assignment,misc]
+    qn = None  # type: ignore[assignment]
+    etree = None  # type: ignore[assignment]
+
+
+_W_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+
+
+def _ensure_docx_available() -> None:
+    if not DOCX_AVAILABLE:
+        raise ImportError(
+            "python-docx (and lxml) are required for scitex_msword.track_changes. "
+            "Install via `pip install python-docx`."
+        ) from _DOCX_IMPORT_ERROR
+
+
+# ---------------------------------------------------------------------------
+# Internal helpers
+# ---------------------------------------------------------------------------
+
+
+def _settings_element(document: "DocxDocument"):
+    """Return the lxml ``<w:settings>`` element for the document."""
+    return document.settings.element
+
+
+def _now_iso() -> str:
+    """UTC ISO-8601 timestamp at second precision (Word-friendly)."""
+    return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
+
+
+def _make_w_element(tag_local_name: str, **attrs):
+    """Create a ``w:<tag>`` lxml element with namespaced ``w:`` attributes."""
+    el = etree.Element(f"{{{_W_NS}}}{tag_local_name}")
+    for key, value in attrs.items():
+        if value is None:
+            continue
+        el.set(f"{{{_W_NS}}}{key}", str(value))
+    return el
+
+
+def _scan_max_revision_id(document: "DocxDocument") -> int:
+    """Largest ``w:id`` currently used on a ``<w:ins>`` / ``<w:del>``."""
+    body = document.element.body
+    ins_tag = f"{{{_W_NS}}}ins"
+    del_tag = f"{{{_W_NS}}}del"
+    max_id = 0
+    for elem in body.iter():
+        if elem.tag in (ins_tag, del_tag):
+            raw = elem.get(qn("w:id"))
+            try:
+                cid = int(raw) if raw is not None else 0
+            except (TypeError, ValueError):
+                cid = 0
+            if cid > max_id:
+                max_id = cid
+    return max_id
+
+
+def _resolve_runs(
+    paragraph: "Paragraph",
+    runs: Sequence[Any],
+) -> List["Run"]:
+    """Resolve Run objects / run indices into a list of paragraph Runs."""
+    all_runs = list(paragraph.runs)
+    elems = [r._r for r in all_runs]
+    resolved: List[Run] = []
+    for item in runs:
+        if isinstance(item, int):
+            if 0 <= item < len(all_runs):
+                resolved.append(all_runs[item])
+        else:
+            elem = getattr(item, "_r", None) or getattr(item, "element", None)
+            if elem is not None and elem in elems:
+                resolved.append(item)
+    return resolved
+
+
+def _wrap_runs_in_element(
+    paragraph: "Paragraph",
+    target_runs: Sequence["Run"],
+    wrapper_tag: str,
+    attrs: dict,
+):
+    """Wrap each run's ``<w:r>`` in a new ``<w:wrapper_tag>`` parent."""
+    wrappers = []
+    for run in target_runs:
+        r_elem = run._r
+        parent = r_elem.getparent()
+        if parent is None:
+            continue
+        idx = parent.index(r_elem)
+        wrapper = _make_w_element(wrapper_tag, **attrs)
+        parent.insert(idx, wrapper)
+        parent.remove(r_elem)
+        wrapper.append(r_elem)
+        wrappers.append(wrapper)
+    return wrappers
+
+
+def _next_revision_id(paragraph: "Paragraph", explicit: Optional[int]) -> int:
+    """Resolve the ``w:id`` for a new revision, defaulting to max+1."""
+    if explicit is not None:
+        return int(explicit)
+    try:
+        document = paragraph.part.document  # type: ignore[attr-defined]
+    except Exception:
+        document = None
+    if document is None:
+        return 1
+    return _scan_max_revision_id(document) + 1
+
+
+# ---------------------------------------------------------------------------
+# API 1: enable_track_changes / is_track_changes_enabled
+# ---------------------------------------------------------------------------
+
+
+
+[docs] +def enable_track_changes( + document: "DocxDocument", + enabled: bool = True, +) -> "DocxDocument": + """ + Toggle Word's "Track Changes" switch on the document. + + Inserts ``<w:trackChanges/>`` into ``word/settings.xml`` when + ``enabled=True`` (idempotent) or removes it when ``enabled=False``. + + Parameters + ---------- + document : docx.Document + The Document to mutate in place. + enabled : bool, default True + ``True`` keeps a single ``<w:trackChanges/>`` element present; + ``False`` removes any such elements. + + Returns + ------- + docx.Document + The same Document object (chainable). + """ + _ensure_docx_available() + settings_el = _settings_element(document) + existing = settings_el.findall(qn("w:trackChanges")) + + if enabled: + if not existing: + settings_el.append(_make_w_element("trackChanges")) + else: + for dup in existing[1:]: + settings_el.remove(dup) + else: + for el in existing: + settings_el.remove(el) + return document
+ + + +
+[docs] +def is_track_changes_enabled(document: "DocxDocument") -> bool: + """Return True iff ``<w:trackChanges/>`` is present in settings.xml.""" + _ensure_docx_available() + return _settings_element(document).find(qn("w:trackChanges")) is not None
+ + + +# --------------------------------------------------------------------------- +# API 2: wrap_as_tracked_insertion +# --------------------------------------------------------------------------- + + +
+[docs] +def wrap_as_tracked_insertion( + paragraph: "Paragraph", + runs: Sequence[Any], + author: str = "agent", + date: Optional[str] = None, + w_id: Optional[int] = None, +) -> List[Any]: + """ + Wrap the given runs of ``paragraph`` in ``<w:ins>`` revision blocks. + + Word renders the wrapped content as "inserted by <author>" and + surfaces it as an accept/reject-able revision. + + Parameters + ---------- + paragraph : docx.text.paragraph.Paragraph + Paragraph that owns the runs to wrap. + runs : sequence of Run or int + Runs to wrap, by Run object or by 0-based index. + author : str, default "agent" + Recorded in ``w:author``. + date : str, optional + ISO-8601 string for ``w:date``; defaults to ``now(UTC)``. + w_id : int, optional + Explicit revision id; auto-assigned (max+1) when ``None``. + + Returns + ------- + list + Newly created ``<w:ins>`` lxml elements. + """ + _ensure_docx_available() + target_runs = _resolve_runs(paragraph, runs) + if not target_runs: + return [] + + attrs = { + "id": _next_revision_id(paragraph, w_id), + "author": author, + "date": date or _now_iso(), + } + return _wrap_runs_in_element(paragraph, target_runs, "ins", attrs)
+ + + +# --------------------------------------------------------------------------- +# API 3: wrap_as_tracked_deletion +# --------------------------------------------------------------------------- + + +
+[docs] +def wrap_as_tracked_deletion( + paragraph: "Paragraph", + runs: Sequence[Any], + author: str = "agent", + date: Optional[str] = None, + w_id: Optional[int] = None, +) -> List[Any]: + """ + Wrap the given runs of ``paragraph`` in ``<w:del>`` revision blocks. + + Each wrapped run's ``<w:t>`` children are also retagged as + ``<w:delText>`` so Word renders the deletion with strike-through. + + Parameters + ---------- + paragraph : docx.text.paragraph.Paragraph + Paragraph that owns the runs to wrap. + runs : sequence of Run or int + Runs to wrap, by Run object or by 0-based index. + author : str, default "agent" + Recorded in ``w:author``. + date : str, optional + ISO-8601 string for ``w:date``; defaults to ``now(UTC)``. + w_id : int, optional + Explicit revision id; auto-assigned (max+1) when ``None``. + + Returns + ------- + list + Newly created ``<w:del>`` lxml elements. + """ + _ensure_docx_available() + target_runs = _resolve_runs(paragraph, runs) + if not target_runs: + return [] + + attrs = { + "id": _next_revision_id(paragraph, w_id), + "author": author, + "date": date or _now_iso(), + } + wrappers = _wrap_runs_in_element(paragraph, target_runs, "del", attrs) + + t_qn = qn("w:t") + delText_qn = qn("w:delText") + for wrapper in wrappers: + for t in list(wrapper.iter(t_qn)): + t.tag = delText_qn + return wrappers
+ + + +# --------------------------------------------------------------------------- +# API 4: extract_tracked_changes +# --------------------------------------------------------------------------- + + +
+[docs] +def extract_tracked_changes( + document: "DocxDocument", +) -> List[dict]: + """ + Return every ``<w:ins>`` / ``<w:del>`` revision as a structured dict. + + Parameters + ---------- + document : docx.Document + The Document to scan. + + Returns + ------- + list[dict] + Each entry is shaped as:: + + {"type": "insert" | "delete", + "paragraph_idx": int, + "author": str, + "date": str, + "id": str, + "text": str} + """ + _ensure_docx_available() + ins_tag = f"{{{_W_NS}}}ins" + del_tag = f"{{{_W_NS}}}del" + t_tag = f"{{{_W_NS}}}t" + delText_tag = f"{{{_W_NS}}}delText" + id_attr = qn("w:id") + author_attr = qn("w:author") + date_attr = qn("w:date") + + results: List[dict] = [] + for pi, para in enumerate(document.paragraphs): + for elem in para._p.iter(): + if elem.tag not in (ins_tag, del_tag): + continue + texts: List[str] = [] + for t in elem.iter(): + if t.tag in (t_tag, delText_tag) and t.text: + texts.append(t.text) + results.append( + { + "type": "insert" if elem.tag == ins_tag else "delete", + "paragraph_idx": pi, + "author": elem.get(author_attr, ""), + "date": elem.get(date_attr, ""), + "id": elem.get(id_attr, ""), + "text": "".join(texts), + } + ) + return results
+ + + +# --------------------------------------------------------------------------- +# API 5: accept_all / reject_all +# --------------------------------------------------------------------------- + + +def _unwrap_element(elem) -> None: + """Replace ``elem`` in its parent with its own children, in order.""" + parent = elem.getparent() + if parent is None: + return + idx = parent.index(elem) + for offset, child in enumerate(list(elem)): + elem.remove(child) + parent.insert(idx + offset, child) + parent.remove(elem) + + +
+[docs] +def accept_all_tracked_changes(document: "DocxDocument") -> "DocxDocument": + """ + Accept all tracked changes — equivalent to Word's "Accept All". + + ``<w:ins>`` wrappers are unwrapped (content remains); ``<w:del>`` + wrappers and their contents are removed. + + Parameters + ---------- + document : docx.Document + The Document to mutate in place. + + Returns + ------- + docx.Document + The same Document, mutated. + """ + _ensure_docx_available() + body = document.element.body + ins_tag = f"{{{_W_NS}}}ins" + del_tag = f"{{{_W_NS}}}del" + + for el in [e for e in body.iter() if e.tag in (ins_tag, del_tag)]: + parent = el.getparent() + if parent is None: + continue + if el.tag == ins_tag: + _unwrap_element(el) + else: + parent.remove(el) + return document
+ + + +
+[docs] +def reject_all_tracked_changes(document: "DocxDocument") -> "DocxDocument": + """ + Reject all tracked changes — equivalent to Word's "Reject All". + + ``<w:ins>`` wrappers and contents are removed; ``<w:del>`` wrappers + are unwrapped and their ``<w:delText>`` children retagged back to + ``<w:t>`` so the original text is restored. + + Parameters + ---------- + document : docx.Document + The Document to mutate in place. + + Returns + ------- + docx.Document + The same Document, mutated. + """ + _ensure_docx_available() + body = document.element.body + ins_tag = f"{{{_W_NS}}}ins" + del_tag = f"{{{_W_NS}}}del" + t_tag = qn("w:t") + delText_tag = f"{{{_W_NS}}}delText" + + for el in [e for e in body.iter() if e.tag in (ins_tag, del_tag)]: + parent = el.getparent() + if parent is None: + continue + if el.tag == ins_tag: + parent.remove(el) + else: + for dt in list(el.iter(delText_tag)): + dt.tag = t_tag + _unwrap_element(el) + return document
+ + + +__all__ = [ + "enable_track_changes", + "is_track_changes_enabled", + "wrap_as_tracked_insertion", + "wrap_as_tracked_deletion", + "extract_tracked_changes", + "accept_all_tracked_changes", + "reject_all_tracked_changes", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/utils.html b/src/scitex/_sphinx_html/_modules/scitex_msword/utils.html new file mode 100644 index 000000000..8195ec24c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/utils.html @@ -0,0 +1,986 @@ + + + + + + + + scitex_msword.utils — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.utils

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2025-12-11 16:45:00
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/msword/utils.py
+
+"""
+Utility functions for processing MS Word documents.
+
+These functions can be used as post_import_hooks or called directly
+to process document structures.
+"""
+
+from __future__ import annotations
+
+from typing import Any, Dict, List
+
+
+
+
+
+
+
+
+
+
+
+[docs] +def normalize_section_headings(doc: Dict[str, Any]) -> Dict[str, Any]: + """ + Normalize section headings for consistency. + + Converts common section titles to standard academic format: + - "intro" -> "Introduction" + - "method" -> "Methods" + - etc. + + Parameters + ---------- + doc : dict + SciTeX writer document. + + Returns + ------- + dict + Document with normalized headings. + """ + blocks = doc.get("blocks", []) + + # Common normalizations + normalizations = { + "intro": "Introduction", + "introduction": "Introduction", + "method": "Methods", + "methods": "Methods", + "materials and methods": "Materials and Methods", + "result": "Results", + "results": "Results", + "discussion": "Discussion", + "conclusion": "Conclusions", + "conclusions": "Conclusions", + "acknowledgement": "Acknowledgements", + "acknowledgements": "Acknowledgements", + "reference": "References", + "references": "References", + "bibliography": "References", + } + + for block in blocks: + if block.get("type") == "heading" and block.get("level") == 1: + text = block.get("text", "").strip().lower() + if text in normalizations: + block["text"] = normalizations[text] + + return doc
+ + + +
+[docs] +def validate_document(doc: Dict[str, Any]) -> Dict[str, Any]: + """ + Validate document structure and add warnings. + + Checks for common issues: + - Missing required sections + - Unmatched caption numbers + - Empty references section + - Duplicate figure numbers + + Parameters + ---------- + doc : dict + SciTeX writer document. + + Returns + ------- + dict + Document with warnings added. + """ + blocks = doc.get("blocks", []) + warnings = doc.get("warnings", []) + + # Check for required sections + headings = [b.get("text", "").lower() for b in blocks if b.get("type") == "heading"] + + required_sections = [ + "introduction", + "methods", + "results", + "discussion", + "references", + ] + for section in required_sections: + if not any(section in h for h in headings): + warnings.append(f"Missing section: {section.title()}") + + # Check for duplicate figure numbers + figure_numbers = [ + b.get("number") + for b in blocks + if b.get("type") == "caption" and b.get("caption_type") == "figure" + ] + seen = set() + for num in figure_numbers: + if num in seen: + warnings.append(f"Duplicate figure number: {num}") + seen.add(num) + + # Check for missing references + references = doc.get("references", []) + if not references: + ref_blocks = [b for b in blocks if b.get("type") == "reference-paragraph"] + if not ref_blocks: + warnings.append("No references found in document") + + doc["warnings"] = warnings + return doc
+ + + +
+[docs] +def create_post_import_hook(*functions): + """ + Create a composite post_import_hook from multiple functions. + + Parameters + ---------- + *functions : callable + Functions to apply in sequence. + + Returns + ------- + callable + A single hook that applies all functions. + + Examples + -------- + >>> from scitex.msword.utils import ( + ... link_captions_to_images, + ... normalize_section_headings, + ... create_post_import_hook, + ... ) + >>> hook = create_post_import_hook( + ... link_captions_to_images, + ... normalize_section_headings, + ... ) + >>> # Use with custom profile + >>> profile.post_import_hooks = [hook] + """ + + def composite_hook(doc: Dict[str, Any]) -> Dict[str, Any]: + for func in functions: + doc = func(doc) + return doc + + return composite_hook
+ + + +__all__ = [ + "link_captions_to_images", + "link_captions_to_images_by_proximity", + "normalize_section_headings", + "validate_document", + "create_post_import_hook", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_msword/writer.html b/src/scitex/_sphinx_html/_modules/scitex_msword/writer.html new file mode 100644 index 000000000..958c6b9ef --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_msword/writer.html @@ -0,0 +1,1043 @@ + + + + + + + + scitex_msword.writer — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_msword.writer

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: 2025-12-11 15:15:00
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/msword/writer.py
+
+"""
+SciTeX writer document -> DOCX converter.
+
+This module exports SciTeX documents to MS Word .docx files,
+applying journal-specific styles and formatting.
+"""
+
+from __future__ import annotations
+
+from pathlib import Path
+from typing import Any, Dict, List, Optional
+
+from .profiles import BaseWordProfile
+
+# Lazy import for python-docx
+try:
+    import docx
+    from docx.document import Document as DocxDocument
+    from docx.enum.style import WD_STYLE_TYPE
+    from docx.enum.text import WD_ALIGN_PARAGRAPH
+    from docx.shared import Cm, Inches, Pt
+
+    DOCX_AVAILABLE = True
+    _DOCX_IMPORT_ERROR = None
+except ImportError as exc:
+    DOCX_AVAILABLE = False
+    _DOCX_IMPORT_ERROR = exc
+
+
+
+[docs] +class WordWriter: + """ + Export a SciTeX writer document to a DOCX file. + + This writer handles: + - Section headings with proper styles + - Paragraphs with formatting + - Figure and table captions + - References section + - Image embedding + - Journal-specific template application + """ + +
+[docs] + def __init__( + self, + profile: BaseWordProfile, + template_path: Optional[Path] = None, + ): + """ + Parameters + ---------- + profile : BaseWordProfile + Mapping from writer structures to Word styles. + template_path : Path | None + Optional path to a Word template (.dotx/.docx) to use as base. + """ + if not DOCX_AVAILABLE: + raise ImportError( + "python-docx is required for scitex.msword.WordWriter. " + "Install it via `pip install python-docx`." + ) from _DOCX_IMPORT_ERROR + self.profile = profile + self.template_path = template_path
+ + +
+[docs] + def write( + self, + writer_doc: Dict[str, Any] | Any, + path: Path, + ) -> None: + """ + Write a SciTeX writer document to a DOCX file. + + Parameters + ---------- + writer_doc : dict | Any + Writer document or intermediate structure. + path : Path + Output path for the DOCX file. + """ + # Create document (from template if specified) + if self.template_path and Path(self.template_path).exists(): + doc = docx.Document(str(self.template_path)) + # Clear existing content but keep styles + self._clear_document_content(doc) + else: + doc = docx.Document() + + # Run pre-export hooks + for hook in self.profile.pre_export_hooks: + writer_doc = hook(writer_doc) + + # Extract blocks from writer_doc + if isinstance(writer_doc, dict) and "blocks" in writer_doc: + blocks = writer_doc["blocks"] + images = writer_doc.get("images", []) + else: + blocks = list(writer_doc) + images = [] + + # Build image lookup by hash + image_lookup = {img.get("hash"): img for img in images if "hash" in img} + + # Process each block + for block in blocks: + self._add_block(doc, block, image_lookup) + + # Apply double-anonymous processing if needed + if self.profile.double_anonymous: + self._apply_double_anonymous(doc, writer_doc) + + # Save document + doc.save(str(path))
+ + + def _clear_document_content(self, doc: DocxDocument) -> None: + """Clear document content while preserving styles.""" + for element in doc.element.body[:]: + doc.element.body.remove(element) + + def _add_block( + self, + doc: DocxDocument, + block: Dict[str, Any], + image_lookup: Dict[str, Any], + ) -> None: + """Add a single block to the document.""" + btype = block.get("type", "paragraph") + text = block.get("text", "") + + if not text and btype not in ("table", "image"): + return + + if btype == "heading": + level = block.get("level", 1) + self._add_heading(doc, text, level) + + elif btype == "caption": + self._add_caption(doc, block) + + elif btype == "reference-paragraph": + self._add_reference(doc, block) + + elif btype == "table": + self._add_table(doc, block) + + elif btype == "image": + self._add_image(doc, block, image_lookup) + + elif btype == "list-item": + self._add_list_item(doc, block) + + else: + # Default: paragraph + self._add_paragraph(doc, text, block.get("runs")) + + def _add_heading( + self, + doc: DocxDocument, + text: str, + level: int, + ) -> None: + """Add a heading paragraph at the given logical level.""" + style_name = self.profile.heading_styles.get(level) + + if style_name and self._style_exists(doc, style_name): + p = doc.add_paragraph(text) + p.style = style_name + else: + # Fallback to built-in heading + doc.add_heading(text, level=min(level, 9)) + + def _add_paragraph( + self, + doc: DocxDocument, + text: str, + runs: Optional[List[Dict[str, Any]]] = None, + ) -> None: + """Add a paragraph with optional formatted runs.""" + p = doc.add_paragraph() + + if runs: + # Add formatted runs + for run_data in runs: + run = p.add_run(run_data.get("text", "")) + if run_data.get("bold"): + run.bold = True + if run_data.get("italic"): + run.italic = True + if run_data.get("underline"): + run.underline = True + if run_data.get("font_size"): + run.font.size = Pt(run_data["font_size"]) + if run_data.get("font_name"): + run.font.name = run_data["font_name"] + else: + p.add_run(text) + + # Apply normal style + if self._style_exists(doc, self.profile.normal_style): + try: + p.style = self.profile.normal_style + except Exception: + pass + + def _add_caption( + self, + doc: DocxDocument, + block: Dict[str, Any], + ) -> None: + """Add a figure or table caption.""" + caption_type = block.get("caption_type", "") + number = block.get("number", "") + caption_text = block.get("caption_text", block.get("text", "")) + + # Build caption text + if caption_type == "figure" and number: + full_text = f"Figure {number}. {caption_text}" + elif caption_type == "table" and number: + full_text = f"Table {number}. {caption_text}" + else: + full_text = block.get("text", caption_text) + + p = doc.add_paragraph(full_text) + + if self._style_exists(doc, self.profile.caption_style): + try: + p.style = self.profile.caption_style + except Exception: + pass + + def _add_reference( + self, + doc: DocxDocument, + block: Dict[str, Any], + ) -> None: + """Add a reference entry.""" + ref_number = block.get("ref_number") + ref_text = block.get("ref_text", block.get("text", "")) + + if ref_number is not None: + full_text = f"[{ref_number}] {ref_text}" + else: + full_text = ref_text + + p = doc.add_paragraph(full_text) + + if self._style_exists(doc, self.profile.normal_style): + try: + p.style = self.profile.normal_style + except Exception: + pass + + def _add_table( + self, + doc: DocxDocument, + block: Dict[str, Any], + ) -> None: + """Add a table.""" + rows = block.get("rows", []) + if not rows: + return + + num_rows = len(rows) + num_cols = len(rows[0]) if rows else 0 + + table = doc.add_table(rows=num_rows, cols=num_cols) + table.style = "Table Grid" + + for i, row_data in enumerate(rows): + row = table.rows[i] + for j, cell_text in enumerate(row_data): + if j < len(row.cells): + row.cells[j].text = str(cell_text) + + def _add_image( + self, + doc: DocxDocument, + block: Dict[str, Any], + image_lookup: Dict[str, Any], + ) -> None: + """Add an image.""" + image_hash = block.get("image_hash") + image_data = block.get("data") + + if image_hash and image_hash in image_lookup: + image_info = image_lookup[image_hash] + image_data = image_info.get("data") + + if image_data: + from io import BytesIO + + image_stream = BytesIO(image_data) + width = block.get("width_inches", 5.0) + doc.add_picture(image_stream, width=Inches(width)) + + def _add_list_item( + self, + doc: DocxDocument, + block: Dict[str, Any], + ) -> None: + """Add a list item (bullet or numbered).""" + text = block.get("text", "") + list_type = block.get("list_type", "bullet") + + p = doc.add_paragraph(text) + + style_key = "bullet" if list_type == "bullet" else "numbered" + style_name = self.profile.list_styles.get(style_key) + + if style_name and self._style_exists(doc, style_name): + try: + p.style = style_name + except Exception: + pass + + def _style_exists(self, doc: DocxDocument, style_name: str) -> bool: + """Check if a style exists in the document.""" + try: + _ = doc.styles[style_name] + return True + except KeyError: + return False + + def _apply_double_anonymous( + self, + doc: DocxDocument, + writer_doc: Dict[str, Any], + ) -> None: + """ + Apply double-anonymous formatting. + + This removes or masks author-identifying information. + """ + # Get author info to mask + metadata = writer_doc.get("metadata", {}) + author = metadata.get("author", "") + + if not author: + return + + # Search and replace author names with placeholder + # This is a simple implementation; more sophisticated + # masking may be needed for real use + for para in doc.paragraphs: + if author.lower() in para.text.lower(): + for run in para.runs: + if author.lower() in run.text.lower(): + # Mask author name + import re + + run.text = re.sub( + re.escape(author), + "[Author]", + run.text, + flags=re.IGNORECASE, + )
+ + + +__all__ = ["WordWriter"] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_notebook/_compile.html b/src/scitex/_sphinx_html/_modules/scitex_notebook/_compile.html new file mode 100644 index 000000000..2c3c3f201 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_notebook/_compile.html @@ -0,0 +1,914 @@ + + + + + + + + scitex_notebook._compile — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_notebook._compile

+#!/usr/bin/env python3
+"""Compile notebook execution history into a DAG from clew DB timestamps."""
+
+from __future__ import annotations
+
+import logging
+from dataclasses import dataclass, field
+from pathlib import Path
+from typing import Dict, List, Optional, Union
+
+logger = logging.getLogger(__name__)
+
+from ._verify import _get_runs_for_notebook
+
+
+
+[docs] +@dataclass +class CompiledNotebook: + """Result of compiling a notebook's execution history. + + Attributes + ---------- + notebook_path : str + Path to the source notebook. + execution_order : list of str + Session IDs in actual execution order (by timestamp). + dag : dict + Adjacency list: {session_id: [dependent_session_ids]}. + runs : list of dict + Run records sorted by execution time. + """ + + notebook_path: str + execution_order: List[str] = field(default_factory=list) + dag: Dict[str, List[str]] = field(default_factory=dict) + runs: List[Dict] = field(default_factory=list) + +
+[docs] + def to_script(self) -> str: + """Generate a .py script with sessions in DAG order.""" + topo_order = _topological_sort(self.dag, self.execution_order) + lines = [ + "#!/usr/bin/env python3", + '"""Auto-compiled from notebook execution history."""', + "", + "import scitex as stx", + "", + ] + + for idx, sid in enumerate(topo_order): + run = _find_run(self.runs, sid) + script_path = run.get("script_path", "") if run else "" + func_name = f"step_{idx:02d}_{_safe_name(sid)}" + + lines.append("") + lines.append("@stx.session") + lines.append(f"def {func_name}():") + lines.append(f' """Session: {sid}"""') + lines.append(f" # Original script: {script_path}") + lines.append(" pass") + lines.append("") + lines.append(f"{func_name}()") + lines.append("") + + return "\n".join(lines)
+ + +
+[docs] + def to_mermaid(self) -> str: + """Generate a Mermaid DAG diagram of execution flow.""" + lines = ["graph TD"] + for sid in self.execution_order: + run = _find_run(self.runs, sid) + label = _short_id(sid) + if run: + started = run.get("started_at", "")[:19] + label = f"{_short_id(sid)}<br/>{started}" + lines.append(f' {_mermaid_id(sid)}["{label}"]') + + for parent, children in self.dag.items(): + for child in children: + lines.append(f" {_mermaid_id(parent)} --> {_mermaid_id(child)}") + + return "\n".join(lines)
+
+ + + +
+[docs] +def compile_notebook(path: Union[str, Path]) -> CompiledNotebook: + """Compile a notebook's execution history into a DAG. + + Queries the clew DB for all sessions associated with this notebook, + sorts by timestamp, and builds a dependency DAG based on shared + input/output files. + + Parameters + ---------- + path : str or Path + Path to the .ipynb file. + + Returns + ------- + CompiledNotebook + Compiled execution history with DAG and execution order. + """ + from scitex_clew import get_db + + path = Path(path).resolve() + db = get_db() + runs = _get_runs_for_notebook(db, str(path)) + + if not runs: + return CompiledNotebook(notebook_path=str(path)) + + execution_order = [r["session_id"] for r in runs] + dag = _build_dag(runs, db) + + return CompiledNotebook( + notebook_path=str(path), + execution_order=execution_order, + dag=dag, + runs=runs, + )
+ + + +def _build_dag(runs: List[Dict], db) -> Dict[str, List[str]]: + """Build DAG from IO dependencies between sessions. + + Session A -> Session B if A produced a file that B consumed. + """ + dag: Dict[str, List[str]] = {r["session_id"]: [] for r in runs} + session_ids = {r["session_id"] for r in runs} + + # Map: output file -> producing session + output_producers: Dict[str, str] = {} + for run in runs: + outputs = db.get_file_hashes(run["session_id"], role="output") + for file_path in outputs: + output_producers[file_path] = run["session_id"] + + # For each session's inputs, find the producer + for run in runs: + inputs = db.get_file_hashes(run["session_id"], role="input") + for file_path in inputs: + producer = output_producers.get(file_path) + if producer and producer != run["session_id"]: + if producer in session_ids: + if run["session_id"] not in dag[producer]: + dag[producer].append(run["session_id"]) + + return dag + + +def _topological_sort( + dag: Dict[str, List[str]], fallback_order: List[str] +) -> List[str]: + """Topological sort of DAG, falling back to timestamp order. + + Detects cycles and warns if nodes are unreachable due to cycles. + """ + from collections import deque as _deque # noqa: STX-I007 + from warnings import warn as _warn # noqa: STX-I007 + + if not dag: + return fallback_order + + in_degree: Dict[str, int] = dict.fromkeys(dag, 0) + for children in dag.values(): + for child in children: + in_degree.setdefault(child, 0) + in_degree[child] += 1 + + # Kahn's algorithm with fallback_order as tiebreaker + order_map = {sid: i for i, sid in enumerate(fallback_order)} + queue = _deque( + sorted( + [n for n, d in in_degree.items() if d == 0], + key=lambda n: order_map.get(n, 999), + ) + ) + result = [] + + while queue: + node = queue.popleft() + result.append(node) + for child in dag.get(node, []): + in_degree[child] -= 1 + if in_degree[child] == 0: + queue.append(child) + # Re-sort for stable tiebreaking + tmp = sorted(queue, key=lambda n: order_map.get(n, 999)) + queue.clear() + queue.extend(tmp) + + # Detect cycle: nodes in DAG but not in result + all_nodes = set(in_degree.keys()) + sorted_nodes = set(result) + cyclic_nodes = all_nodes - sorted_nodes + if cyclic_nodes: + _warn( + f"Cyclic dependencies detected among sessions: " + f"{sorted(cyclic_nodes)}. These sessions will be appended " + f"in timestamp order.", + stacklevel=2, + ) + + # Add remaining nodes (cyclic or not in DAG) in fallback order + remaining = [sid for sid in fallback_order if sid not in sorted_nodes] + result.extend(remaining) + + return result + + +def _find_run(runs: List[Dict], session_id: str) -> Optional[Dict]: + """Find a run by session ID.""" + for r in runs: + if r["session_id"] == session_id: + return r + return None + + +def _safe_name(session_id: str) -> str: + """Convert session ID to a valid Python identifier fragment.""" + return session_id.replace("-", "_").replace(".", "_")[:20] + + +def _short_id(session_id: str) -> str: + """Shorten session ID for display.""" + return session_id[:20] if len(session_id) > 20 else session_id + + +def _mermaid_id(session_id: str) -> str: + """Convert session ID to valid Mermaid node ID.""" + return session_id.replace("-", "_").replace(".", "_") + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_notebook/_convert.html b/src/scitex/_sphinx_html/_modules/scitex_notebook/_convert.html new file mode 100644 index 000000000..221dc1a64 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_notebook/_convert.html @@ -0,0 +1,955 @@ + + + + + + + + scitex_notebook._convert — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_notebook._convert

+#!/usr/bin/env python3
+"""Convert Jupyter notebooks to SciTeX-compatible Python scripts."""
+
+from __future__ import annotations
+
+import re
+from pathlib import Path
+from typing import List, Union
+
+from ._compile import compile_notebook
+from ._parse import get_code_cells, parse_notebook
+
+# IPython magic patterns to strip
+_MAGIC_RE = re.compile(r"^\s*[%!].*$", re.MULTILINE)
+
+# Import statement pattern (matches: import x, import x as y, import x.y.z as w, from x import y)
+_IMPORT_RE = re.compile(
+    r"^(?:import\s+\S+(?:\s+as\s+\S+)?|from\s+\S+\s+import\s+.+)$", re.MULTILINE
+)
+
+# Common notebook patterns to convert to SciTeX equivalents
+_CONVERSIONS = [
+    # plt.show() → stx.io.save(fig, "figure.png")
+    (re.compile(r"plt\.show\(\)"), '# stx.io.save(fig, "figure.png")  # was: plt.show()'),
+    # plt.savefig("...") → stx.io.save(fig, "...")
+    (
+        re.compile(r'plt\.savefig\((["\'].*?["\'])\)'),
+        r"stx.io.save(fig, \1)  # was: plt.savefig",
+    ),
+    # df.to_csv("...") → stx.io.save(df, "...")
+    (
+        re.compile(r'(\w+)\.to_csv\((["\'].*?["\'])\)'),
+        r"stx.io.save(\1, \2)  # was: .to_csv",
+    ),
+    # pd.read_csv("...") → stx.io.load("...")
+    (
+        re.compile(r'pd\.read_csv\((["\'].*?["\'])\)'),
+        r'stx.io.load(\1)  # was: pd.read_csv',
+    ),
+    # np.save("...", arr) → stx.io.save(arr, "...")
+    (
+        re.compile(r'np\.save\((["\'].*?["\'])\s*,\s*(.+?)\)'),
+        r"stx.io.save(\2, \1)  # was: np.save",
+    ),
+    # np.load("...") → stx.io.load("...")
+    (
+        re.compile(r'np\.load\((["\'].*?["\'])\)'),
+        r'stx.io.load(\1)  # was: np.load',
+    ),
+]
+
+
+
+[docs] +def convert_notebook( + path: Union[str, Path], + output: Union[str, Path, None] = None, + order: str = "cell", + mode: str = "per_cell", +) -> str: + """Convert a .ipynb notebook to a .py script with @stx.session. + + Parameters + ---------- + path : str or Path + Path to the .ipynb file. + output : str or Path, optional + Output .py file path. If None, returns string only. + order : str + Cell ordering: "cell" (notebook order) or "dag" (execution order + from clew DB timestamps). + mode : str + Conversion mode: + - "per_cell": Each code cell becomes a separate @stx.session function (default). + - "unified": All cells merged into a single @stx.session main() function. + Markdown cells become comments, imports are hoisted, and common + notebook patterns (plt.show, pd.read_csv, etc.) are converted to + SciTeX equivalents (stx.io.save/load). + + Returns + ------- + str + The generated Python script content. + """ + path = Path(path) + + if mode == "unified": + script = _convert_unified(path) + elif order == "cell": + script = _convert_cell_order(path) + elif order == "dag": + script = _convert_dag_order(path) + else: + raise ValueError(f"Invalid order: {order!r}. Must be 'cell' or 'dag'.") + + if output is not None: + output = Path(output) + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text(script, encoding="utf-8") + + return script
+ + + +def _convert_unified(path: Path) -> str: + """Convert notebook into a single @stx.session main() function. + + - Markdown cells become block comments + - Imports are hoisted to module level + - Code is merged into main() body + - Common IO patterns are converted to stx.io equivalents + """ + all_cells = parse_notebook(path) + imports: List[str] = [] + body_lines: List[str] = [] + has_plt = False + + for cell in all_cells: + if cell["cell_type"] == "markdown": + # Convert markdown to comments + md_text = cell["source"].strip() + if not md_text: + continue + body_lines.append("") + for md_line in md_text.splitlines(): + body_lines.append(f" # {md_line}") + body_lines.append("") + + elif cell["cell_type"] == "code": + source = _clean_source(cell["source"]) + if not source.strip(): + continue + + # Separate imports from body code + cell_imports, cell_body = _separate_imports(source) + imports.extend(cell_imports) + + if cell_body.strip(): + # Apply SciTeX conversions + cell_body = _apply_conversions(cell_body) + body_lines.append("") + for line in cell_body.splitlines(): + body_lines.append(f" {line}" if line.strip() else "") + + # Track matplotlib usage + if "plt." in source or "matplotlib" in source: + has_plt = True + + # Deduplicate imports + seen = set() + unique_imports = [] + for imp in imports: + if imp not in seen: + seen.add(imp) + unique_imports.append(imp) + + # Filter out imports that stx.session provides (plt is injected) + filtered_imports = [ + imp + for imp in unique_imports + if not imp.startswith("import matplotlib") + and not imp.startswith("from matplotlib") + and "matplotlib.pyplot" not in imp + ] + + # Build script + lines = [ + "#!/usr/bin/env python3", + f'"""Converted from {path.name} using scitex notebook convert --mode unified."""', + "", + "import scitex as stx", + ] + + # Add non-scitex imports + for imp in filtered_imports: + if "scitex" not in imp: + lines.append(imp) + + lines.append("") + lines.append("") + + # Build injected parameters + injected = [" CONFIG=stx.INJECTED,", " logger=stx.INJECTED,"] + if has_plt: + injected.append(" plt=stx.INJECTED,") + + lines.append("@stx.session(seed=42)") + lines.append("def main(") + lines.extend(injected) + lines.append("):") + lines.append(f' """Analysis pipeline converted from {path.name}."""') + + # Add body + lines.extend(body_lines) + + lines.append("") + lines.append(" return 0") + lines.append("") + lines.append("") + lines.append('if __name__ == "__main__":') + lines.append(" main()") + lines.append("") + lines.append("# EOF") + lines.append("") + + return "\n".join(lines) + + +def _separate_imports(source: str) -> tuple: + """Separate import statements from body code.""" + imports = [] + body_lines = [] + + for line in source.splitlines(): + stripped = line.strip() + if _IMPORT_RE.match(stripped): + imports.append(stripped) + else: + body_lines.append(line) + + return imports, "\n".join(body_lines) + + +def _apply_conversions(source: str) -> str: + """Apply SciTeX pattern conversions to source code.""" + for pattern, replacement in _CONVERSIONS: + source = pattern.sub(replacement, source) + return source + + +def _convert_cell_order(path: Path) -> str: + """Convert notebook in cell index order.""" + cells = get_code_cells(path) + lines = _script_header(path) + + for cell in cells: + source = _clean_source(cell["source"]) + if not source.strip(): + continue + + idx = cell["index"] + func_name = f"cell_{idx:02d}" + + lines.append("") + lines.append("@stx.session") + lines.append(f"def {func_name}():") + for line in source.splitlines(): + lines.append(f" {line}" if line.strip() else "") + lines.append(" return 0") + lines.append("") + lines.append(f"{func_name}()") + lines.append("") + + return "\n".join(lines) + + +def _convert_dag_order(path: Path) -> str: + """Convert notebook in DAG execution order from clew DB.""" + compiled = compile_notebook(path) + + if not compiled.execution_order: + # No execution history; fall back to cell order + return _convert_cell_order(path) + + return compiled.to_script() + + +def _clean_source(source: str) -> str: + """Strip IPython magics and clean up source code.""" + return _MAGIC_RE.sub("", source) + + +def _script_header(path: Path) -> List[str]: + """Generate script header.""" + return [ + "#!/usr/bin/env python3", + f'"""Converted from {path.name}."""', + "", + "import scitex as stx", + "", + ] + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_notebook/_parse.html b/src/scitex/_sphinx_html/_modules/scitex_notebook/_parse.html new file mode 100644 index 000000000..e2847f373 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_notebook/_parse.html @@ -0,0 +1,756 @@ + + + + + + + + scitex_notebook._parse — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_notebook._parse

+#!/usr/bin/env python3
+"""Parse Jupyter notebook files using stdlib json (no nbformat dependency)."""
+
+from __future__ import annotations
+
+import json
+from pathlib import Path
+from typing import Dict, List, Union
+
+
+
+[docs] +def parse_notebook(path: Union[str, Path]) -> List[Dict]: + """Parse a .ipynb file and extract code cells. + + Parameters + ---------- + path : str or Path + Path to the .ipynb file. + + Returns + ------- + list of dict + Code cells with keys: index, source, cell_id, cell_type. + """ + path = Path(path) + if not path.exists(): + raise FileNotFoundError(f"Notebook not found: {path}") + if path.suffix != ".ipynb": + raise ValueError(f"Not a notebook file: {path}") + + with open(path, encoding="utf-8") as f: + nb = json.load(f) + + cells = nb.get("cells", []) + result = [] + for idx, cell in enumerate(cells): + cell_type = cell.get("cell_type", "") + source_lines = cell.get("source", []) + source = ( + "".join(source_lines) if isinstance(source_lines, list) else source_lines + ) + cell_id = cell.get("id", f"cell_{idx}") + + result.append( + { + "index": idx, + "source": source, + "cell_id": cell_id, + "cell_type": cell_type, + } + ) + + return result
+ + + +
+[docs] +def get_code_cells(path: Union[str, Path]) -> List[Dict]: + """Parse notebook and return only code cells. + + Parameters + ---------- + path : str or Path + Path to the .ipynb file. + + Returns + ------- + list of dict + Code cells only. + """ + return [c for c in parse_notebook(path) if c["cell_type"] == "code"]
+ + + +
+[docs] +def get_notebook_name(path: Union[str, Path]) -> str: + """Return the notebook stem name without extension.""" + return Path(path).stem
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_notebook/_verify.html b/src/scitex/_sphinx_html/_modules/scitex_notebook/_verify.html new file mode 100644 index 000000000..e94f5db8d --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_notebook/_verify.html @@ -0,0 +1,802 @@ + + + + + + + + scitex_notebook._verify — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_notebook._verify

+#!/usr/bin/env python3
+"""Verify notebook sessions and check for untracked IO."""
+
+from __future__ import annotations
+
+import json
+import re
+from pathlib import Path
+from typing import Dict, List, Union
+
+from ._parse import get_code_cells
+
+# Patterns for scitex.io calls
+_IO_LOAD_RE = re.compile(r"(?:scitex|stx)\.io\.load\s*\(")
+_IO_SAVE_RE = re.compile(r"(?:scitex|stx)\.io\.save\s*\(")
+_SESSION_RE = re.compile(r"@(?:scitex|stx)\.session")
+
+
+
+[docs] +def verify_notebook(path: Union[str, Path]) -> List[Dict]: + """Verify all clew sessions associated with a notebook. + + Finds all runs in the clew DB whose metadata contains this notebook's + path, then runs L1 (cache) verification on each. + + Parameters + ---------- + path : str or Path + Path to the .ipynb file. + + Returns + ------- + list of dict + Verification results per session. + """ + from scitex_clew import get_db, verify_run + + path = Path(path).resolve() + db = get_db() + runs = _get_runs_for_notebook(db, str(path)) + + results = [] + for run in runs: + try: + verification = verify_run(run["session_id"]) + results.append( + { + "session_id": run["session_id"], + "status": verification.status.value, + "is_verified": verification.is_verified, + "started_at": run.get("started_at"), + } + ) + except Exception as exc: + results.append( + { + "session_id": run["session_id"], + "status": "error", + "is_verified": False, + "error": str(exc), + } + ) + + return results
+ + + +
+[docs] +def check_notebook(path: Union[str, Path]) -> List[Dict]: + """Find cells with scitex.io calls not wrapped in @scitex.session. + + Parameters + ---------- + path : str or Path + Path to the .ipynb file. + + Returns + ------- + list of dict + Cells with untracked IO: {index, has_load, has_save, has_session}. + """ + cells = get_code_cells(path) + issues = [] + + for cell in cells: + source = cell["source"] + has_load = bool(_IO_LOAD_RE.search(source)) + has_save = bool(_IO_SAVE_RE.search(source)) + has_session = bool(_SESSION_RE.search(source)) + + if (has_load or has_save) and not has_session: + issues.append( + { + "index": cell["index"], + "has_load": has_load, + "has_save": has_save, + "has_session": has_session, + } + ) + + return issues
+ + + +def _get_runs_for_notebook(db, notebook_path: str) -> List[Dict]: + """Query clew DB for runs associated with a notebook path.""" + runs = db.list_runs(limit=1000) + result = [] + for run in runs: + meta_str = run.get("metadata") + if not meta_str: + # Also check script_path for notebook path + sp = run.get("script_path", "") + if sp and sp.endswith(".ipynb"): + if str(Path(sp).resolve()) == notebook_path: + result.append(run) + continue + try: + meta = json.loads(meta_str) + nb_path = meta.get("notebook_path") + if nb_path and str(Path(nb_path).resolve()) == notebook_path: + result.append(run) + except (json.JSONDecodeError, TypeError): + continue + + return sorted(result, key=lambda r: r.get("started_at", "")) + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_os/_check_host.html b/src/scitex/_sphinx_html/_modules/scitex_os/_check_host.html new file mode 100644 index 000000000..3a9b06e80 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_os/_check_host.html @@ -0,0 +1,710 @@ + + + + + + + + scitex_os._check_host — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_os._check_host

+#!/usr/bin/env python3
+# Time-stamp: "2024-11-02 13:43:36 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-python/src/scitex/os/_check_host.py
+
+import socket
+import sys
+
+
+
+[docs] +def check_host(keyword): + """Check if the current hostname contains the given keyword.""" + return keyword in socket.gethostname()
+ + + +is_host = check_host + + +
+[docs] +def verify_host(keyword): + if is_host(keyword): + print(f"Host verification successed for keyword: {keyword}") + return + else: + print(f"Host verification failed for keyword: {keyword}") + sys.exit(1)
+ + + +if __name__ == "__main__": # pragma: no cover + # check_host("ywata") + verify_host("titan") + verify_host("ywata") + verify_host("crest") + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_os/_mv.html b/src/scitex/_sphinx_html/_modules/scitex_os/_mv.html new file mode 100644 index 000000000..9fd58540a --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_os/_mv.html @@ -0,0 +1,726 @@ + + + + + + + + scitex_os._mv — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_os._mv

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-04-06 09:00:45 (ywatanabe)"
+
+# import os
+# import shutil
+
+# def mv(src, tgt):
+#     successful = True
+#     os.makedirs(tgt, exist_ok=True)
+
+#     if os.path.isdir(src):
+#         # Iterate over the items in the directory
+#         for item in os.listdir(src):
+#             item_path = os.path.join(src, item)
+#             # Check if the item is a file
+#             if os.path.isfile(item_path):
+#                 try:
+#                     shutil.move(item_path, tgt)
+#                     print(f"\nMoved file from {item_path} to {tgt}")
+#                 except OSError as e:
+#                     print(f"\nError: {e}")
+#                     successful = False
+#             else:
+#                 print(f"\nSkipped directory {item_path}")
+#     else:
+#         # If src is a file, just move it
+#         try:
+#             shutil.move(src, tgt)
+#             print(f"\nMoved from {src} to {tgt}")
+#         except OSError as e:
+#             print(f"\nError: {e}")
+#             successful = False
+
+#     return successful
+
+
+
+[docs] +def mv(src, tgt): + import os + import shutil + + successful = True + os.makedirs(tgt, exist_ok=True) + + try: + shutil.move(src, tgt) + print(f"\nMoved from {src} to {tgt}") + except OSError as e: + print(f"\nError: {e}") + successful = False + + return successful
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_parallel/_run.html b/src/scitex/_sphinx_html/_modules/scitex_parallel/_run.html new file mode 100644 index 000000000..99f951a95 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_parallel/_run.html @@ -0,0 +1,769 @@ + + + + + + + + scitex_parallel._run — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_parallel._run

+#!/usr/bin/env python3
+# File: src/scitex_parallel/_run.py
+
+"""
+Parallel execution utilities using ThreadPoolExecutor.
+
+1. Functionality:
+   - Runs functions in parallel using ThreadPoolExecutor
+   - Handles both single and multiple return values
+   - Supports automatic CPU core detection
+2. Input:
+   - Function to run
+   - List of items to process
+   - Optional parameters for execution control
+3. Output:
+   - List of results or concatenated tuple
+4. Prerequisites:
+   - concurrent.futures
+   - tqdm
+"""
+
+import multiprocessing
+import warnings
+from concurrent.futures import ThreadPoolExecutor, as_completed
+from typing import Any, Callable, List
+
+from tqdm import tqdm
+
+
+
+[docs] +def run( + func: Callable, + args_list: List[tuple], + n_jobs: int = -1, + desc: str = "Processing", +) -> List[Any]: + """Runs function in parallel using ThreadPoolExecutor with tuple arguments. + + Parameters + ---------- + func : Callable + Function to run in parallel + args_list : List[tuple] + List of argument tuples, each tuple contains arguments for one function call + n_jobs : int, optional + Number of jobs to run in parallel. -1 means using all processors + desc : str, optional + Description for progress bar + + Returns + ------- + List[Any] + Results of parallel execution + + Examples + -------- + >>> def add(x, y): + ... return x + y + >>> args_list = [(1, 4), (2, 5), (3, 6)] + >>> run(add, args_list) + [5, 7, 9] + """ + if not args_list: + raise ValueError("Args list cannot be empty") + if not callable(func): + raise ValueError("Func must be callable") + + # Validate n_jobs before conversion: must be -1 or >= 1 + if n_jobs < -1 or n_jobs == 0: + raise ValueError("n_jobs must be >= 1 or -1") + + cpu_count = multiprocessing.cpu_count() + n_jobs = cpu_count if n_jobs == -1 else n_jobs + + if n_jobs > cpu_count: + warnings.warn(f"n_jobs ({n_jobs}) is greater than CPU count ({cpu_count})") + + results = [None] * len(args_list) # Pre-allocate list + + with ThreadPoolExecutor(max_workers=n_jobs) as executor: + futures = { + executor.submit(func, *args): idx for idx, args in enumerate(args_list) + } + for future in tqdm(as_completed(futures), total=len(args_list), desc=desc): + idx = futures[future] + results[idx] = future.result() + + # If results contain multiple values (tuples), transpose them + if results and isinstance(results[0], tuple): + n_vars = len(results[0]) + return tuple([result[i] for result in results] for i in range(n_vars)) + + return results
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_clean.html b/src/scitex/_sphinx_html/_modules/scitex_path/_clean.html new file mode 100644 index 000000000..02a5d9f8a --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_clean.html @@ -0,0 +1,732 @@ + + + + + + + + scitex_path._clean — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._clean

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2025-05-15 00:55:30 (ywatanabe)"
+# File: /data/gpfs/projects/punim2354/ywatanabe/scitex_repo/src/scitex/path/_clean.py
+
+import os
+
+
+
+[docs] +def clean(path_string): + """Cleans and normalizes a file system path string. + + Example + ------- + >>> clean('/home/user/./folder/../file.txt') + '/home/user/file.txt' + >>> clean('path/./to//file.txt') + 'path/to/file.txt' + >>> clean('path with spaces') + 'path_with_spaces' + + Parameters + ---------- + path_string : str + File path to clean + + Returns + ------- + str + Normalized path string + """ + # Convert Path objects to strings to avoid AttributeError + if hasattr(path_string, "__fspath__"): # Check if it's a path-like object + path_string = str(path_string) + + if not path_string: + return "" + + # Remember if path ends with a slash (indicating a directory) + is_directory = path_string.endswith("/") + + # Replace spaces with underscores + path_string = path_string.replace(" ", "_") + + # Use normpath to handle ../ and ./ references + cleaned_path = os.path.normpath(path_string) + + # Replace multiple slashes with single slash + while "//" in cleaned_path: + cleaned_path = cleaned_path.replace("//", "/") + + # Restore trailing slash if it was a directory + if is_directory and not cleaned_path.endswith("/"): + cleaned_path += "/" + + return cleaned_path
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_find.html b/src/scitex/_sphinx_html/_modules/scitex_path/_find.html new file mode 100644 index 000000000..83915db6d --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_find.html @@ -0,0 +1,776 @@ + + + + + + + + scitex_path._find — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._find

+#!/usr/bin/env python3
+# Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_find.py
+
+"""File and directory finding utilities."""
+
+import fnmatch
+import os
+from pathlib import Path
+from typing import List, Optional, Union
+
+
+
+[docs] +def find_git_root() -> str: + """Find the root directory of the current git repository. + + Returns + ------- + str + Path to the git repository root. + """ + import git + + repo = git.Repo(".", search_parent_directories=True) + return repo.working_tree_dir
+ + + +
+[docs] +def find_dir(root_dir: Union[str, Path], exp: Union[str, List[str]]) -> List[str]: + """Find directories matching pattern.""" + return _find(root_dir, type="d", exp=exp)
+ + + +
+[docs] +def find_file(root_dir: Union[str, Path], exp: Union[str, List[str]]) -> List[str]: + """Find files matching pattern.""" + return _find(root_dir, type="f", exp=exp)
+ + + +def _find( + rootdir: Union[str, Path], + type: Optional[str] = "f", + exp: Union[str, List[str]] = "*", +) -> List[str]: + """Mimics the Unix find command. + + Parameters + ---------- + rootdir : str or Path + Root directory to search in. + type : str, optional + 'f' for files, 'd' for directories, None for both. + exp : str or list of str + Pattern(s) to match. + + Returns + ------- + list of str + Matching paths. + + Example + ------- + >>> _find('/path/to/search', "f", "*.txt") + """ + rootdir = str(rootdir) + if isinstance(exp, str): + exp = [exp] + + exclude_keys = ["/lib/", "/env/", "/build/"] + matches: List[str] = [] + + for dirpath, dirnames, filenames in os.walk(rootdir): + candidates = [] + if type in (None, "f"): + candidates.extend((os.path.join(dirpath, name), "f") for name in filenames) + if type in (None, "d"): + candidates.extend((os.path.join(dirpath, name), "d") for name in dirnames) + + for full_path, kind in candidates: + # Verify type (tests mock os.path.isfile / isdir) + if kind == "f" and not os.path.isfile(full_path): + continue + if kind == "d" and not os.path.isdir(full_path): + continue + + name = os.path.basename(full_path) + if not any(fnmatch.fnmatch(name, _exp) for _exp in exp if _exp): + continue + + if any(ek in full_path for ek in exclude_keys): + continue + + if full_path not in matches: + matches.append(full_path) + + return matches + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_get_module_path.html b/src/scitex/_sphinx_html/_modules/scitex_path/_get_module_path.html new file mode 100644 index 000000000..74be66048 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_get_module_path.html @@ -0,0 +1,730 @@ + + + + + + + + scitex_path._get_module_path — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._get_module_path

+#!/usr/bin/env python3
+# Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_get_module_path.py
+
+"""Module path utilities."""
+
+import importlib.util
+from pathlib import Path
+
+
+
+[docs] +def get_data_path_from_a_package(package_str: str, resource: str) -> Path: + """Get the path to a data file within a package. + + Parameters + ---------- + package_str : str + The name of the package as a string. + resource : str + The name of the resource file within the package's data directory. + + Returns + ------- + Path + The full path to the resource file. + + Raises + ------ + ImportError + If the specified package cannot be found. + FileNotFoundError + If the resource file does not exist in the package's data directory. + """ + spec = importlib.util.find_spec(package_str) + if spec is None: + raise ImportError(f"Package '{package_str}' not found") + + origin = Path(spec.origin) + # Walk up until we reach the `src/` layout boundary, then pick the + # sibling `data/` directory at the project root. Falls back to the + # filesystem root if no `src/` parent exists. + data_dir = origin.parents[0] + while data_dir.name != "src" and data_dir != data_dir.parent: + data_dir = data_dir.parent + data_dir = data_dir.parent / "data" + + resource_path = data_dir / resource + + if not resource_path.exists(): + raise FileNotFoundError( + f"Resource '{resource}' not found in package '{package_str}'" + ) + + return resource_path
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_getsize.html b/src/scitex/_sphinx_html/_modules/scitex_path/_getsize.html new file mode 100644 index 000000000..ff8503fd4 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_getsize.html @@ -0,0 +1,711 @@ + + + + + + + + scitex_path._getsize — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._getsize

+#!/usr/bin/env python3
+# Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
+# File: scitex-path/src/scitex_path/_getsize.py
+
+"""File size utilities."""
+
+import math
+import os
+from pathlib import Path
+from typing import Union
+
+
+
+[docs] +def getsize(path: Union[str, Path]) -> Union[int, float]: + """Get file size in bytes. + + Parameters + ---------- + path : str or Path + Path to file. + + Returns + ------- + int or float + File size in bytes, or math.nan if file doesn't exist. + + Raises + ------ + PermissionError + If the file cannot be accessed due to permissions. + """ + path_str = os.fspath(path) + if os.path.exists(path_str): + return os.path.getsize(path_str) + return math.nan
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_mk_spath.html b/src/scitex/_sphinx_html/_modules/scitex_path/_mk_spath.html new file mode 100644 index 000000000..00ee7bac8 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_mk_spath.html @@ -0,0 +1,721 @@ + + + + + + + + scitex_path._mk_spath — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._mk_spath

+#!/usr/bin/env python3
+# Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_mk_spath.py
+
+"""Save path creation utilities."""
+
+import inspect
+import os
+from pathlib import Path
+from typing import Union
+
+from ._split import split
+
+
+
+[docs] +def mk_spath(sfname: Union[str, Path], makedirs: bool = False) -> str: + """Create a save path based on the calling script's location. + + Parameters + ---------- + sfname : str or Path + The name of the file to be saved. + makedirs : bool, optional + If True, create the directory structure for the save path. + + Returns + ------- + str + The full save path for the file. + + Example + ------- + >>> spath = mk_spath('output.txt', makedirs=True) + """ + caller_file = inspect.stack()[1].filename + if "ipython" in caller_file.lower(): + caller_file = f"/tmp/fake-{os.getenv('USER')}.py" + + sdir, sfname_mod, _ = split(__file__) + spath = sdir + sfname_mod + "/" + str(sfname) + + if makedirs: + os.makedirs(os.path.dirname(spath), exist_ok=True) + + return spath
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_split.html b/src/scitex/_sphinx_html/_modules/scitex_path/_split.html new file mode 100644 index 000000000..03ec2ed38 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_split.html @@ -0,0 +1,716 @@ + + + + + + + + scitex_path._split — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._split

+#!/usr/bin/env python3
+# Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_split.py
+
+"""Path splitting utilities."""
+
+import os
+from pathlib import Path
+from typing import Tuple, Union
+
+
+
+[docs] +def split(fpath: Union[str, Path]) -> Tuple[str, str, str]: + """Split a file path into directory, filename, and extension. + + Parameters + ---------- + fpath : str or Path + File path to split. + + Returns + ------- + tuple of (str, str, str) + (directory with trailing slash, filename without extension, extension) + + Example + ------- + >>> dirname, fname, ext = split('/path/to/file.txt') + >>> dirname + '/path/to/' + >>> fname + 'file' + >>> ext + '.txt' + """ + fpath = os.fspath(fpath) if not isinstance(fpath, str) else fpath + dirname = os.path.dirname(fpath) + "/" + basename = os.path.basename(fpath) + fname, ext = os.path.splitext(basename) + return dirname, fname, ext
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_symlink.html b/src/scitex/_sphinx_html/_modules/scitex_path/_symlink.html new file mode 100644 index 000000000..bb672581c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_symlink.html @@ -0,0 +1,990 @@ + + + + + + + + scitex_path._symlink — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._symlink

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Timestamp: "2025-09-16 15:11:33 (ywatanabe)"
+# File: scitex-path/src/scitex_path/_symlink.py
+# ----------------------------------------
+from __future__ import annotations
+
+import os
+
+__FILE__ = __file__
+__DIR__ = os.path.dirname(__FILE__)
+# ----------------------------------------
+
+"""Symlink creation and management utilities."""
+
+import logging
+from pathlib import Path
+from typing import Optional, Union
+
+logger = logging.getLogger(__name__)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# EOF
+
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_this_path.html b/src/scitex/_sphinx_html/_modules/scitex_path/_this_path.html new file mode 100644 index 000000000..85aab4d2e --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_this_path.html @@ -0,0 +1,703 @@ + + + + + + + + scitex_path._this_path — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._this_path

+#!/usr/bin/env python3
+# Timestamp: "2026-01-08 02:00:00 (ywatanabe)"
+# File: /home/ywatanabe/proj/scitex-code/src/scitex/path/_this_path.py
+
+"""Get current file path utilities."""
+
+import inspect
+
+
+
+[docs] +def this_path(ipython_fake_path: str = "/tmp/fake.py") -> str: + """Get the path of the calling script. + + Note + ---- + This function historically captures the caller's filename via + ``inspect.stack()[1]`` but then returns this module's ``__file__``. + The tests codify that legacy behavior; do not change without + updating callers. + """ + THIS_FILE = inspect.stack()[1].filename # noqa: F841 - kept for compatibility + if "ipython" in (THIS_FILE or "").lower(): + THIS_FILE = ipython_fake_path # noqa: F841 + return __file__
+ + + +get_this_path = this_path + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_path/_version.html b/src/scitex/_sphinx_html/_modules/scitex_path/_version.html new file mode 100644 index 000000000..03e52d21a --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_path/_version.html @@ -0,0 +1,785 @@ + + + + + + + + scitex_path._version — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_path._version

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-11-02 20:48:24 (ywatanabe)"
+# File: scitex-path/src/scitex_path/_version.py
+
+import os
+import re
+from glob import glob
+
+
+
+[docs] +def find_latest(dirname, fname, ext, version_prefix="_v"): + """Find the latest versioned file in a directory. + + Parameters + ---------- + dirname : str + Directory to search in. + fname : str + Base filename without version number or extension. + ext : str + File extension including the dot (e.g., '.txt'). + version_prefix : str, optional + Prefix before the version number. Default is '_v'. + + Returns + ------- + str or None + Path to the latest versioned file, or None if not found. + """ + version_pattern = re.compile( + rf"({re.escape(fname)}{re.escape(version_prefix)})(\d+)({re.escape(ext)})$" + ) + + glob_pattern = os.path.join(dirname, f"{fname}{version_prefix}*{ext}") + files = glob(glob_pattern) + + highest_version = 0 + latest_file = None + + for file in files: + filename = os.path.basename(file) + match = version_pattern.search(filename) + if match: + version_num = int(match.group(2)) + if version_num > highest_version: + highest_version = version_num + latest_file = file + + return latest_file
+ + + +
+[docs] +def increment_version(dirname, fname, ext, version_prefix="_v"): + """Generate the next version of a filename based on existing versioned files. + + Parameters + ---------- + dirname : str + Directory to search in. + fname : str + Base filename without version number or extension. + ext : str + File extension including the dot (e.g., '.txt'). + version_prefix : str, optional + Prefix before the version number. Default is '_v'. + + Returns + ------- + str + Full path for the next version of the file. + + Example + ------- + >>> increment_version('/path/to/dir', 'myfile', '.txt') + '/path/to/dir/myfile_v001.txt' + """ + version_pattern = re.compile( + rf"({re.escape(fname)}{re.escape(version_prefix)})(\d+)({re.escape(ext)})$" + ) + + glob_pattern = os.path.join(dirname, f"{fname}{version_prefix}*{ext}") + files = glob(glob_pattern) + + highest_version = 0 + base, suffix = None, None + + for file in files: + filename = os.path.basename(file) + match = version_pattern.search(filename) + if match: + base, version_str, suffix = match.groups() + version_num = int(version_str) + if version_num > highest_version: + highest_version = version_num + + if base is None or suffix is None: + base = f"{fname}{version_prefix}" + suffix = ext + highest_version = 0 + + next_version_number = highest_version + 1 + next_version_str = f"{base}{next_version_number:03d}{suffix}" + + next_filepath = os.path.join(dirname, next_version_str) + + return next_filepath
+ + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_repro.html b/src/scitex/_sphinx_html/_modules/scitex_repro.html new file mode 100644 index 000000000..f514262b7 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_repro.html @@ -0,0 +1,751 @@ + + + + + + + + scitex_repro — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_repro

+#!/usr/bin/env python3
+"""
+scitex-repro — Reproducibility utilities for scientific computing.
+
+Provides tools for reproducible scientific computing:
+- Random state management (RandomStateManager)
+- ID generation (gen_ID)
+- Timestamp generation (gen_timestamp)
+- Array hashing (hash_array)
+"""
+
+from __future__ import annotations
+
+# ID and timestamp utilities
+from ._gen_ID import gen_ID, gen_id
+from ._gen_timestamp import gen_timestamp, timestamp
+
+# Hash utilities
+from ._hash_array import hash_array
+
+# Random state management
+from ._RandomStateManager import RandomStateManager, get, reset
+
+
+# Legacy function for backward compatibility
+
+[docs] +def fix_seeds( + seed=42, + os=True, + random=True, + np=True, + torch=True, + tf=False, + jax=False, + verbose=False, + **kwargs, +): + """ + Deprecated: Use RandomStateManager instead. + + This function maintains backward compatibility with the old fix_seeds API. + """ + import warnings + + warnings.warn( + "fix_seeds is deprecated. Use scitex_repro.RandomStateManager instead.", + DeprecationWarning, + stacklevel=2, + ) + return RandomStateManager(seed=seed, verbose=verbose)
+ + + +__all__ = [ + "__version__", + # ID and timestamp utilities + "gen_ID", + "gen_id", + "gen_timestamp", + "timestamp", + # Hash utilities + "hash_array", + # Random state management + "RandomStateManager", + "get", + "reset", + # Legacy (deprecated) + "fix_seeds", +] + +try: + from importlib.metadata import version as _v, PackageNotFoundError + try: + __version__ = _v("scitex-repro") + except PackageNotFoundError: + __version__ = "0.0.0+local" + del _v, PackageNotFoundError +except ImportError: # pragma: no cover — only on ancient Pythons + __version__ = "0.0.0+local" +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_repro/_RandomStateManager.html b/src/scitex/_sphinx_html/_modules/scitex_repro/_RandomStateManager.html new file mode 100644 index 000000000..121d4fcd2 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_repro/_RandomStateManager.html @@ -0,0 +1,1316 @@ + + + + + + + + scitex_repro._RandomStateManager — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_repro._RandomStateManager

+#!/usr/bin/env python3
+# Extracted from scitex-python/src/scitex/repro/_RandomStateManager.py
+# ----------------------------------------
+from __future__ import annotations
+
+import os
+
+__FILE__ = __file__
+__DIR__ = os.path.dirname(__FILE__)
+# ----------------------------------------
+
+"""
+Clean, simple RandomStateManager for scientific reproducibility.
+
+Main API:
+    rng = RandomStateManager(seed=42)   # Create instance
+    gen = rng("name")                   # Get named generator
+    rng.verify(obj, "name")             # Verify reproducibility
+"""
+
+import hashlib
+import json
+import logging
+import pickle
+from contextlib import contextmanager
+from pathlib import Path
+from typing import Any
+
+from scitex_repro._config import get_paths
+
+logger = logging.getLogger(__name__)
+
+# Global singleton instance
+_GLOBAL_INSTANCE = None
+
+
+
+[docs] +class RandomStateManager: + """ + Simple, robust random state manager for scientific computing. + + Examples + -------- + >>> from scitex_repro import RandomStateManager + >>> + >>> # Method 1: Direct usage + >>> rng = RandomStateManager(seed=42) + >>> data = rng("data").random(100) + >>> + >>> # Verify reproducibility + >>> rng.verify(data, "my_data") + """ + +
+[docs] + def __init__(self, seed: int = 42, verbose=False): + """Initialize with automatic module detection.""" + self.seed = seed + self.verbose = verbose + self._generators = {} + self._cache_dir = get_paths().rng + self._cache_dir.mkdir(parents=True, exist_ok=True) + self._jax_key = None # Initialize to None, will be set if jax is available + + if verbose: + logger.info(f"RandomStateManager initialized with seed {seed}") + + # Auto-fix all available seeds + self._auto_fix_seeds(verbose=verbose)
+ + + def _auto_fix_seeds(self, verbose=None): + """Automatically detect and fix ALL available random modules.""" + # Use instance verbose if not specified + if verbose is None: + verbose = self.verbose + + # OS environment + os.environ["PYTHONHASHSEED"] = str(self.seed) + os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8" + + fixed_modules = [] + + # Python random + try: + import random + + random.seed(self.seed) + fixed_modules.append("random") + except ImportError: + pass + + # NumPy + try: + import numpy as np + + np.random.seed(self.seed) + # Also set default_rng for new API + self._np = np + self._np_default_rng = np.random.default_rng(self.seed) + fixed_modules.append("numpy") + except ImportError: + self._np = None + + # PyTorch + try: + import torch + + torch.manual_seed(self.seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(self.seed) + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + fixed_modules.append("torch+cuda") + else: + fixed_modules.append("torch") + except Exception as e: + # ImportError: torch not installed (silent skip). + # Anything else (e.g. CUDA driver mismatch, broken install): log + # at debug and skip. Auto-seed is best-effort — a misconfigured + # ML runtime should never block @stx.session for non-ML users. + logger.debug(f"torch seed skipped: {type(e).__name__}: {e}") + + # TensorFlow + try: + import tensorflow as tf + + tf.random.set_seed(self.seed) + fixed_modules.append("tensorflow") + except Exception as e: + # ImportError: tf not installed. + # google.protobuf.runtime_version.VersionError: gencode/runtime + # protobuf mismatch — surfaced once, then swallowed so the + # rest of session.start can proceed. + logger.debug(f"tensorflow seed skipped: {type(e).__name__}: {e}") + + # JAX (deferred import to avoid circular imports) + try: + import jax + + self._jax_key = jax.random.PRNGKey(self.seed) + fixed_modules.append("jax") + except (ImportError, AttributeError, RuntimeError): + # ImportError: jax not installed + # AttributeError: circular import in jax._src.clusters + # RuntimeError: other jax initialization errors + self._jax_key = None + pass + + # Importing TensorFlow / PyTorch during the framework-seeding pass + # can consume numpy global entropy on first init (lazy variable + # creation, autotune probes). The first RandomStateManager(seed=N) + # then leaves numpy at state(seed=N + K_init); a second call leaves + # it at state(seed=N) because TF/torch are already imported and + # K_init = 0. That asymmetry breaks `np.allclose(a, b)` across two + # construction sites in user code (see examples/quickstart.py). + # Re-seeding numpy as the last step normalises the post-init state + # to seed=N regardless of whether frameworks were just imported. + try: + import numpy as _np + + _np.random.seed(self.seed) + except ImportError: + pass + + if verbose and fixed_modules: + logger.info(f"Fixed random seeds for: {', '.join(fixed_modules)}") + +
+[docs] + def get_np_generator(self, name: str): + """ + Get or create a named NumPy random generator. + + Parameters + ---------- + name : str + Generator name (e.g., "data", "model", "augment") + + Returns + ------- + numpy.random.Generator + Independent NumPy random generator + + Examples + -------- + >>> rng = RandomStateManager(42) + >>> gen = rng.get_np_generator("data") + >>> values = gen.random(100) + >>> perm = gen.permutation(100) + """ + if self._np is None: + raise ImportError("NumPy required for random generators") + + if name not in self._generators: + # Create deterministic seed from name + name_hash = int(hashlib.md5(name.encode()).hexdigest()[:8], 16) + seed = (self.seed + name_hash) % (2**32) + self._generators[name] = self._np.random.default_rng(seed) + + return self._generators[name]
+ + +
+[docs] + def __call__(self, name: str, verbose: bool = None): + """ + Get or create a named NumPy random generator. + + This is a backward compatibility wrapper for get_np_generator(). + Consider using get_np_generator() directly for clarity. + + Parameters + ---------- + name : str + Generator name + verbose : bool, optional + Whether to show deprecation warning + + Returns + ------- + numpy.random.Generator + NumPy random generator with deterministic seed + """ + if verbose: + print( + f"Note: rng('{name}') is deprecated. Use rng.get_np_generator('{name}') instead." + ) + return self.get_np_generator(name)
+ + +
+[docs] + def verify(self, obj: Any, name: str = None, verbose: bool = True) -> bool: + """ + Verify object matches cached hash (detects broken reproducibility). + + First call: caches the object's hash + Later calls: verifies object matches cached hash + + Parameters + ---------- + obj : Any + Object to verify (array, tensor, data, model weights, etc.) + Supports: numpy arrays, torch tensors, tf tensors, jax arrays, + lists, dicts, pandas dataframes, and basic types + name : str, optional + Cache name. Auto-generated if not provided. + + Returns + ------- + bool + True if matches cache (or first call), False if different + + Examples + -------- + >>> data = generate_data() + >>> rng.verify(data, "train_data") # First run: caches + >>> # Next run: + >>> rng.verify(data, "train_data") # Verifies match + """ + + # Auto-generate name if needed + if name is None: + import inspect + + frame = inspect.currentframe().f_back + filename = Path(frame.f_code.co_filename).stem + lineno = frame.f_lineno + name = f"{filename}_L{lineno}" + + # Sanitize name + safe_name = "".join(c if c.isalnum() or c in "-_" else "_" for c in name) + cache_file = self._cache_dir / f"{safe_name}.json" + + # Compute hash based on object type + obj_hash = self._compute_hash(obj) + + # Use instance verbose if not specified + if verbose is None: + verbose = self.verbose + + # Check cache + if cache_file.exists(): + with open(cache_file) as f: + cached = json.load(f) + + matches = cached["hash"] == obj_hash + if not matches and verbose: + print(f"WARNING: Reproducibility broken for '{name}'!") + print(f" Expected: {cached['hash'][:16]}...") + print(f" Got: {obj_hash[:16]}...") + raise ValueError(f"Reproducibility verification failed for '{name}'") + elif matches and verbose: + print(f"OK: Reproducibility verified for '{name}'") + + return matches + else: + # First call - cache it + with open(cache_file, "w") as f: + json.dump({"name": name, "hash": obj_hash, "seed": self.seed}, f) + return True
+ + + def _compute_hash(self, obj: Any) -> str: + """ + Compute hash for various object types. + + Supports: + - NumPy arrays + - PyTorch tensors + - TensorFlow tensors + - JAX arrays + - Pandas DataFrames/Series + - Lists, tuples, dicts + - Basic types (int, float, str, bool) + """ + import numpy as np + + # NumPy array + if isinstance(obj, np.ndarray): + return hashlib.sha256(obj.tobytes()).hexdigest()[:32] + + # PyTorch tensor + try: + import torch + + if isinstance(obj, torch.Tensor): + # Move to CPU and convert to numpy for consistent hashing + obj_np = obj.detach().cpu().numpy() + return hashlib.sha256(obj_np.tobytes()).hexdigest()[:32] + except ImportError: + pass + + # TensorFlow tensor — catch any import-time failure (protobuf + # runtime version mismatch raises VersionError, not ImportError). + try: + import tensorflow as tf + + if isinstance(obj, (tf.Tensor, tf.Variable)): + obj_np = obj.numpy() + return hashlib.sha256(obj_np.tobytes()).hexdigest()[:32] + except Exception: + pass + + # JAX array + try: + import jax.numpy as jnp + + if isinstance(obj, jnp.ndarray): + obj_np = np.array(obj) + return hashlib.sha256(obj_np.tobytes()).hexdigest()[:32] + except (ImportError, AttributeError, RuntimeError): + pass + + # Pandas DataFrame/Series + try: + import pandas as pd + + if isinstance(obj, (pd.DataFrame, pd.Series)): + obj_str = obj.to_json(orient="split", date_format="iso") + return hashlib.sha256(obj_str.encode()).hexdigest()[:32] + except ImportError: + pass + + # Lists and tuples - convert to numpy array if numeric + if isinstance(obj, (list, tuple)): + try: + obj_np = np.array(obj) + if obj_np.dtype != object: # Numeric array + return hashlib.sha256(obj_np.tobytes()).hexdigest()[:32] + except: + pass + # Fall through to string representation + + # Dictionaries - serialize to JSON + if isinstance(obj, dict): + try: + obj_str = json.dumps(obj, sort_keys=True, default=str) + return hashlib.sha256(obj_str.encode()).hexdigest()[:32] + except: + pass + + # Default: convert to string + obj_str = str(obj) + return hashlib.sha256(obj_str.encode()).hexdigest()[:32] + +
+[docs] + def checkpoint(self, name: str = "checkpoint"): + """Save current state of all generators.""" + checkpoint_file = self._cache_dir / f"{name}.pkl" + state = { + "seed": self.seed, + "generators": { + k: v.bit_generator.state for k, v in self._generators.items() + }, + } + with open(checkpoint_file, "wb") as f: + pickle.dump(state, f) + return checkpoint_file
+ + +
+[docs] + def restore(self, checkpoint): + """Restore from checkpoint.""" + if isinstance(checkpoint, str): + checkpoint = Path(checkpoint) + + with open(checkpoint, "rb") as f: + state = pickle.load(f) + + self.seed = state["seed"] + self._auto_fix_seeds() + + # Restore generator states + for name, gen_state in state["generators"].items(): + gen = self(name) + gen.bit_generator.state = gen_state
+ + +
+[docs] + @contextmanager + def temporary_seed(self, seed: int): + """Context manager for temporary seed change.""" + import random + + import numpy as np + + # Save current states + old_random_state = random.getstate() + old_np_state = np.random.get_state() if self._np else None + + # Set temporary seed + random.seed(seed) + if self._np: + np.random.seed(seed) + + try: + yield + finally: + # Restore states + random.setstate(old_random_state) + if self._np and old_np_state: + np.random.set_state(old_np_state)
+ + +
+[docs] + def get_sklearn_random_state(self, name: str): + """ + Get a random state for scikit-learn. + + Scikit-learn uses integers for random_state parameter. + + Parameters + ---------- + name : str + Generator name + + Returns + ------- + int + Random state integer for sklearn + + Examples + -------- + >>> rng = RandomStateManager(42) + >>> from sklearn.model_selection import train_test_split + >>> X_train, X_test = train_test_split( + ... X, test_size=0.2, + ... random_state=rng.get_sklearn_random_state("split") + ... ) + """ + # Create deterministic seed from name + name_hash = int(hashlib.md5(name.encode()).hexdigest()[:8], 16) + seed = (self.seed + name_hash) % (2**32) + return seed
+ + +
+[docs] + def get_torch_generator(self, name: str): + """ + Get or create a named PyTorch generator. + + Parameters + ---------- + name : str + Generator name + + Returns + ------- + torch.Generator + PyTorch generator with deterministic seed + + Examples + -------- + >>> rng = RandomStateManager(42) + >>> gen = rng.get_torch_generator("model") + >>> torch.randn(5, 5, generator=gen) + """ + try: + import torch + except Exception as e: + # ImportError: torch not installed. + # Anything else (e.g. CUDA driver mismatch, broken install) + # surfaces with the original message so the user can diagnose. + raise ImportError(f"PyTorch unavailable: {type(e).__name__}: {e}") + + if not hasattr(self, "_torch_generators"): + self._torch_generators = {} + + if name not in self._torch_generators: + # Create deterministic seed from name + name_hash = int(hashlib.md5(name.encode()).hexdigest()[:8], 16) + seed = (self.seed + name_hash) % (2**32) + + gen = torch.Generator() + gen.manual_seed(seed) + self._torch_generators[name] = gen + + return self._torch_generators[name]
+ + +
+[docs] + def get_generator(self, name: str): + """Alias for get_np_generator for compatibility.""" + return self.get_np_generator(name)
+ + +
+[docs] + def clear_cache(self, patterns: str | list[str] = None) -> int: + """ + Clear verification cache files. + + Parameters + ---------- + patterns : str or list of str, optional + Specific cache patterns to clear. If None, clears all. + + Returns + ------- + int + Number of cache files removed + """ + + if not self._cache_dir.exists(): + return 0 + + removed_count = 0 + + if patterns is None: + # Clear all .json files + cache_files = list(self._cache_dir.glob("*.json")) + for cache_file in cache_files: + cache_file.unlink() + removed_count += 1 + else: + # Ensure patterns is a list + if isinstance(patterns, str): + patterns = [patterns] + + for pattern in patterns: + # Handle glob patterns + if "*" in pattern or "?" in pattern: + cache_files = list(self._cache_dir.glob(f"{pattern}.json")) + else: + # Exact match + cache_file = self._cache_dir / f"{pattern}.json" + cache_files = [cache_file] if cache_file.exists() else [] + + for cache_file in cache_files: + cache_file.unlink() + removed_count += 1 + + return removed_count
+
+ + + +
+[docs] +def get(verbose: bool = False) -> RandomStateManager: + """ + Get or create the global RandomStateManager instance. + + Parameters + ---------- + verbose : bool, optional + Whether to print status messages (default: False) + + Returns + ------- + RandomStateManager + Global instance + + Examples + -------- + >>> from scitex_repro import get + >>> rng = get() + >>> data = rng("data").random(100) + """ + global _GLOBAL_INSTANCE + + if _GLOBAL_INSTANCE is None: + _GLOBAL_INSTANCE = RandomStateManager(42, verbose=verbose) + + return _GLOBAL_INSTANCE
+ + + +
+[docs] +def reset(seed: int = 42, verbose: bool = False) -> RandomStateManager: + """ + Reset global RandomStateManager with new seed. + + Parameters + ---------- + seed : int + New seed value + verbose : bool, optional + Whether to print status messages (default: False) + + Returns + ------- + RandomStateManager + New global instance + + Examples + -------- + >>> from scitex_repro import reset + >>> rng = reset(seed=123) + """ + global _GLOBAL_INSTANCE + _GLOBAL_INSTANCE = RandomStateManager(seed, verbose=verbose) + return _GLOBAL_INSTANCE
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_repro/_gen_ID.html b/src/scitex/_sphinx_html/_modules/scitex_repro/_gen_ID.html new file mode 100644 index 000000000..4f7e78d2d --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_repro/_gen_ID.html @@ -0,0 +1,735 @@ + + + + + + + + scitex_repro._gen_ID — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_repro._gen_ID

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-11-07 17:53:38 (ywatanabe)"
+# Extracted from scitex-python/src/scitex/repro/_gen_ID.py
+
+import random as _random
+import string as _string
+from datetime import datetime as _datetime
+
+
+
+[docs] +def gen_id(time_format="%YY-%mM-%dD-%Hh%Mm%Ss", N=8, *, now_fn=None): + """Generate a unique identifier with timestamp and random characters. + + Creates a unique ID by combining a formatted timestamp with random + alphanumeric characters. Useful for creating unique experiment IDs, + run identifiers, or temporary file names. + + Parameters + ---------- + time_format : str, optional + Format string for timestamp portion. Default is "%YY-%mM-%dD-%Hh%Mm%Ss" + which produces "2025Y-05M-31D-12h30m45s" format. + N : int, optional + Number of random characters to append. Default is 8. + now_fn : callable, optional + Zero-argument callable returning a `datetime`-like object with + `.strftime()`. Defaults to `datetime.now`. Injection point for + deterministic tests — pass a fake that returns a fixed datetime + instead of mocking `datetime` globally. + + Returns + ------- + str + Unique identifier in format "{timestamp}_{random_chars}" + + Examples + -------- + >>> id1 = gen_id() + >>> print(id1) + '2025Y-05M-31D-12h30m45s_a3Bc9xY2' + + >>> id2 = gen_id(time_format="%Y%m%d", N=4) + >>> print(id2) + '20250531_xY9a' + + >>> # For experiment tracking + >>> exp_id = gen_id() + >>> save_path = f"results/experiment_{exp_id}.pkl" + """ + if now_fn is None: + now_fn = _datetime.now + now_str = now_fn().strftime(time_format) + rand_str = "".join( + [_random.choice(_string.ascii_letters + _string.digits) for i in range(N)] + ) + return now_str + "_" + rand_str
+ + + +# Backward compatibility +gen_ID = gen_id # Deprecated: use gen_id instead +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_repro/_gen_timestamp.html b/src/scitex/_sphinx_html/_modules/scitex_repro/_gen_timestamp.html new file mode 100644 index 000000000..75ed0468f --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_repro/_gen_timestamp.html @@ -0,0 +1,718 @@ + + + + + + + + scitex_repro._gen_timestamp — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_repro._gen_timestamp

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-11-07 17:44:32 (ywatanabe)"
+# Extracted from scitex-python/src/scitex/repro/_gen_timestamp.py
+
+from datetime import datetime as _datetime
+
+
+
+[docs] +def gen_timestamp(*, now_fn=None): + """Generate a timestamp string for file naming. + + Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for + creating unique filenames or version identifiers. + + Parameters + ---------- + now_fn : callable, optional + Zero-argument callable returning a `datetime`-like object with + `.strftime()`. Defaults to `datetime.now`. Injection point for + deterministic tests — pass a fake that returns a fixed datetime + instead of mocking `datetime` globally. + + Returns + ------- + str + Timestamp string in format "YYYY-MMDD-HHMM" + + Examples + -------- + >>> timestamp = gen_timestamp() + >>> print(timestamp) + '2025-0531-1230' + + >>> filename = f"experiment_{gen_timestamp()}.csv" + >>> print(filename) + 'experiment_2025-0531-1230.csv' + """ + if now_fn is None: + now_fn = _datetime.now + return now_fn().strftime("%Y-%m%d-%H%M")
+ + + +timestamp = gen_timestamp +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_repro/_hash_array.html b/src/scitex/_sphinx_html/_modules/scitex_repro/_hash_array.html new file mode 100644 index 000000000..fc98a8ff2 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_repro/_hash_array.html @@ -0,0 +1,712 @@ + + + + + + + + scitex_repro._hash_array — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_repro._hash_array

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Extracted from scitex-python/src/scitex/repro/_hash_array.py
+from __future__ import annotations
+
+import hashlib
+
+import numpy as np
+
+
+
+[docs] +def hash_array(array_data: np.ndarray) -> str: + """Generate hash for array data. + + Creates a deterministic hash for numpy arrays, useful for + verifying data integrity and reproducibility. + + Parameters + ---------- + array_data : np.ndarray + Array to hash + + Returns + ------- + str + 16-character hash string + + Examples + -------- + >>> import numpy as np + >>> data = np.array([1, 2, 3, 4, 5]) + >>> hash1 = hash_array(data) + >>> hash2 = hash_array(data) + >>> hash1 == hash2 + True + """ + data_bytes = array_data.tobytes() + return hashlib.sha256(data_bytes).hexdigest()[:16]
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_resource/_host.html b/src/scitex/_sphinx_html/_modules/scitex_resource/_host.html new file mode 100644 index 000000000..4b9b7ba7c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_resource/_host.html @@ -0,0 +1,832 @@ + + + + + + + + scitex_resource._host — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_resource._host

+"""Host identity — canonical name and per-host config.
+
+scitex-resource owns the question "what host am I running on?". Other
+scitex-* packages (scitex-orochi, scitex-hpc, scitex-agent-container)
+consume :func:`get_host_name` so every package agrees on the same
+canonical name regardless of how the OS reports it (FQDN drift,
+``Yusukes-MacBook-Air`` vs ``mba``, login-node vs compute-node, etc.).
+
+Resolution cascade (highest precedence first):
+
+    1. ``$SCITEX_RESOURCE_HOST`` env var
+       (legacy ``$SCITEX_RESOURCE_MACHINE`` is still honoured as a
+       fallback to keep older shells working)
+    2. ``<project>/.scitex/resource/config.yaml`` ``host.canonical_name``
+       (falls back to legacy ``machine.canonical_name``)
+    3. ``~/.scitex/resource/config.yaml`` ``host.canonical_name``
+       (falls back to legacy ``machine.canonical_name``)
+    4. Short hostname (``socket.gethostname().split(".", 1)[0]``)
+
+The same chain applies to :func:`get_host_config` which returns the
+full ``host:`` block including ``aliases``, ``role``, ``hpc.*``.
+
+Config schema (``~/.scitex/resource/config.yaml`` — example for a SLURM
+login node):
+
+    host:
+      canonical_name: spartan
+      aliases:
+        - spartan-login1.hpc.example.edu
+        - spartan-login1
+      role: hpc-login
+      hpc:
+        cluster: spartan
+        login_only: true        # don't surface login-node CPU as available
+        partitions: [physical, sapphire]
+
+This file is part of the scitex local-state convention — see the
+``arch-local-state-directories`` skill in scitex-python for the full
+``.scitex/<pkg-short>/`` layout (config tracked, ``runtime/`` ignored).
+"""
+
+from __future__ import annotations
+
+import os
+import socket
+import warnings
+from pathlib import Path
+from typing import Any
+
+_PKG_SHORT = "resource"
+_ENV_VAR = "SCITEX_RESOURCE_HOST"
+_ENV_VAR_LEGACY = "SCITEX_RESOURCE_MACHINE"
+
+
+def _config_paths() -> list[Path]:
+    """Search order for ``config.yaml`` — project scope first, user fallback.
+
+    The project search walks from cwd up to (but stops AT) ``$HOME`` so
+    the user's ``~/.scitex/<pkg>/config.yaml`` is not mistaken for a
+    project hit when cwd happens to live under home (which it almost
+    always does on a workstation).
+    """
+    paths: list[Path] = []
+    cwd_root = Path.cwd()
+    home = Path.home().resolve()
+    for parent in (cwd_root, *cwd_root.parents):
+        try:
+            resolved = parent.resolve()
+        except OSError:
+            resolved = parent
+        if resolved == home:
+            break
+        candidate = parent / ".scitex" / _PKG_SHORT / "config.yaml"
+        if candidate.is_file():
+            paths.append(candidate)
+            break
+    user_root = Path(os.environ.get("SCITEX_DIR") or (Path.home() / ".scitex"))
+    user = user_root / _PKG_SHORT / "config.yaml"
+    if user.is_file():
+        paths.append(user)
+    return paths
+
+
+def _load_yaml(path: Path) -> dict[str, Any]:
+    try:
+        import yaml
+    except ImportError:
+        return {}
+    try:
+        with open(path) as f:
+            return yaml.safe_load(f) or {}
+    except (OSError, yaml.YAMLError):
+        return {}
+
+
+
+[docs] +def load_config() -> dict[str, Any]: + """Return the merged config dict — project file overrides user file. + + Empty dict if no config files exist or PyYAML isn't installed. + """ + merged: dict[str, Any] = {} + for path in reversed(_config_paths()): + data = _load_yaml(path) + merged.update(data) + return merged
+ + + +
+[docs] +def get_host_config() -> dict[str, Any]: + """Return the ``host:`` block from config (falls back to ``machine:``). + + If a config file declares only the legacy ``machine:`` key, a + one-time DeprecationWarning is emitted and that block is returned. + """ + cfg = load_config() + host_block = cfg.get("host") + if host_block: + return host_block + machine_block = cfg.get("machine") + if machine_block: + warnings.warn( + "config.yaml `machine:` block is deprecated; rename it to `host:`.", + DeprecationWarning, + stacklevel=2, + ) + return machine_block + return {}
+ + + +
+[docs] +def get_host_name() -> str: + """Return the canonical host name. + + See module docstring for the resolution cascade. Always returns a + non-empty string — the short hostname is the last-resort fallback. + """ + env = os.environ.get(_ENV_VAR, "").strip() + if env: + return env + legacy_env = os.environ.get(_ENV_VAR_LEGACY, "").strip() + if legacy_env: + return legacy_env + cfg = get_host_config() + canonical = (cfg.get("canonical_name") or "").strip() + if canonical: + return canonical + return _short_hostname()
+ + + +def _short_hostname() -> str: + try: + return socket.gethostname().split(".", 1)[0] or "unknown" + except OSError: + return "unknown" +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_resource/_log_processor_usages.html b/src/scitex/_sphinx_html/_modules/scitex_resource/_log_processor_usages.html new file mode 100644 index 000000000..a58d6fbe8 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_resource/_log_processor_usages.html @@ -0,0 +1,906 @@ + + + + + + + + scitex_resource._log_processor_usages — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_resource._log_processor_usages

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-11-04 16:28:53 (ywatanabe)"
+# File: ./scitex_repo/src/scitex/resource/_log_processor_usages.py
+
+"""
+Functionality:
+    * Monitors and logs system resource utilization over time
+Input:
+    * Path for saving logs
+    * Monitoring duration and interval
+Output:
+    * CSV file containing time-series resource usage data
+Prerequisites:
+    * scitex package with processor usage monitoring capabilities
+"""
+
+"""Imports"""
+import math
+import os
+import time
+from multiprocessing import Process
+from typing import Union
+
+import pandas as pd
+
+from ._compat import printc
+from ._specs import get_processor_usages
+
+
+# Vendored minimal load/save: we only need CSV here. Falls back to scitex.io
+# at call time for any non-CSV path so downstream behavior is unchanged when
+# the umbrella package is available.
+def load(path):
+    if str(path).endswith(".csv"):
+        return pd.read_csv(path)
+    try:  # pragma: no cover
+        from scitex_io._load import load as _load
+
+        return _load(path)
+    except ImportError:  # pragma: no cover
+        raise ImportError(
+            "Loading non-CSV resource logs requires scitex (umbrella). "
+            "Install with: pip install scitex"
+        )
+
+
+def save(obj, path, **kwargs):
+    import os
+
+    os.makedirs(os.path.dirname(path) or ".", exist_ok=True)
+    if str(path).endswith(".csv") and isinstance(obj, pd.DataFrame):
+        obj.to_csv(path, **kwargs)
+        return
+    try:  # pragma: no cover
+        from scitex_io._save import save as _save
+
+        _save(obj, path, **kwargs)
+    except ImportError:  # pragma: no cover
+        raise ImportError(
+            "Saving non-CSV resource logs requires scitex (umbrella). "
+            "Install with: pip install scitex"
+        )
+
+
+# Defer scitex.sh import (scitex_sh is the standalone preferred path).
+def sh(cmd, **kwargs):
+    try:
+        from scitex_sh import sh as _sh
+
+        return _sh(cmd, **kwargs)
+    except ImportError:
+        import subprocess
+
+        if isinstance(cmd, str):
+            raise ValueError("scitex_resource: shell commands must be list-form")
+        return subprocess.run(cmd, capture_output=True, text=True, check=False).stdout
+
+
+"""Functions & Classes"""
+
+
+
+[docs] +def log_processor_usages( + path: str = "/tmp/scitex/processor_usages.csv", + limit_min: float = 30, + interval_s: float = 1, + init: bool = True, + verbose: bool = False, + background: bool = False, +) -> Union[None, Process]: + """Logs system resource usage over time. + + Parameters + ---------- + path : str + Path to save the log file + limit_min : float + Monitoring duration in minutes + interval_s : float + Sampling interval in seconds + init : bool + Whether to clear existing log file + verbose : bool + Whether to print the log + background : bool + Whether to run in background + + Returns + ------- + Union[None, Process] + Process object if background=True, None otherwise + """ + if background: + process = Process( + target=_log_processor_usages, + args=(path, limit_min, interval_s, init, verbose), + ) + process.start() + return process + + return _log_processor_usages( + path=path, + limit_min=limit_min, + interval_s=interval_s, + init=init, + verbose=verbose, + )
+ + + +def _log_processor_usages( + path: str = "/tmp/scitex/processor_usages.csv", + limit_min: float = 30, + interval_s: float = 1, + init: bool = True, + verbose: bool = False, +) -> None: + """Logs system resource usage over time. + + Parameters + ---------- + path : str + Path to save the log file + limit_min : float + Monitoring duration in minutes + interval_s : float + Sampling interval in seconds + init : bool + Whether to clear existing log file + verbose : bool + Whether to print the log + + Example + ------- + >>> log_processor_usages(path="usage_log.csv", limit_min=5) + """ + assert path.endswith(".csv"), "Path must end with .csv" + + # Log file initialization + _ensure_log_file(path, init) + printc(f"Log file can be monitored with with `tail -f {path}`") + + limit_s = limit_min * 60 + n_max = math.ceil(limit_s // interval_s) + + for _ in range(n_max): + _add(path, verbose=verbose) + time.sleep(interval_s) + + +# def _ensure_log_file(path: str, init: bool) -> None: +# def _create_path(path): +# os.makedirs(os.path.dirname(path), exist_ok=True) +# empty_df = pd.DataFrame() +# save(empty_df, path, verbose=False) +# printc(f"{path} created.") + +# if not os.path.exists(path): +# _create_path(path) + +# else: +# if init and os.path.exists(path): +# try: +# sh(f"rm -f {path}") +# _create_path(path) +# except Exception as err: +# raise RuntimeError(f"Failed to init log file: {err}") + +# def _add(path: str, verbose: bool = True) -> None: +# past = load(path) +# now = get_processor_usages() + +# combined = pd.concat([past, now]).round(3) +# save(combined, path, verbose=verbose) + + +def _add(path: str, verbose: bool = True) -> None: + """Appends current resource usage to CSV file.""" + now = get_processor_usages() + + # Append mode without loading entire file + with open(path, "a") as f: + now.to_csv(f, header=f.tell() == 0, index=False) + + +def _ensure_log_file(path: str, init: bool) -> None: + """Creates or reinitializes log file with headers.""" + + def _create_path(path): + os.makedirs(os.path.dirname(path), exist_ok=True) + # Write only headers + headers = ["Timestamp", "CPU [%]", "RAM [GiB]", "GPU [%]", "VRAM [GiB]"] + pd.DataFrame(columns=headers).to_csv(path, index=False) + printc(f"{path} created.") + + if not os.path.exists(path): + _create_path(path) + elif init: + try: + os.remove(path) + _create_path(path) + except Exception as err: + raise RuntimeError(f"Failed to init log file: {err}") + + +main = log_processor_usages + +if __name__ == "__main__": + main() + +# python -c "import scitex; scitex.resource.log_processor_usages(\"/tmp/processor_usages.csv\", init=True)" + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_resource/_machine.html b/src/scitex/_sphinx_html/_modules/scitex_resource/_machine.html new file mode 100644 index 000000000..c887dc2e2 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_resource/_machine.html @@ -0,0 +1,747 @@ + + + + + + + + scitex_resource._machine — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_resource._machine

+"""Deprecated alias module — use :mod:`scitex_resource._host` instead.
+
+This module is kept for back-compat. The canonical API moved to
+``scitex_resource._host``:
+
+* :func:`get_machine_name` → :func:`scitex_resource.get_host_name`
+* :func:`get_machine_config` → :func:`scitex_resource.get_host_config`
+
+Importing this module still works (no warning at import time so cold
+import paths stay quiet); the deprecation fires only when the legacy
+function names are actually called.
+"""
+
+from __future__ import annotations
+
+import warnings
+from typing import Any
+
+# Re-export the underlying helpers + names used by tests / CLI internals.
+from ._host import (  # noqa: F401
+    _ENV_VAR_LEGACY as _ENV_VAR,
+)
+from ._host import (
+    _PKG_SHORT,
+    _config_paths,
+    _load_yaml,
+    _short_hostname,
+    get_host_config,
+    get_host_name,
+    load_config,
+)
+
+_DEPRECATION_EMITTED: set[str] = set()
+
+
+def _warn_once(name: str, replacement: str) -> None:
+    if name in _DEPRECATION_EMITTED:
+        return
+    _DEPRECATION_EMITTED.add(name)
+    warnings.warn(
+        f"scitex_resource.{name} is deprecated; use scitex_resource.{replacement} instead.",
+        DeprecationWarning,
+        stacklevel=3,
+    )
+
+
+
+[docs] +def get_machine_config() -> dict[str, Any]: + """Deprecated alias for :func:`get_host_config`.""" + _warn_once("get_machine_config", "get_host_config") + return get_host_config()
+ + + +
+[docs] +def get_machine_name() -> str: + """Deprecated alias for :func:`get_host_name`.""" + _warn_once("get_machine_name", "get_host_name") + return get_host_name()
+ + + +__all__ = [ + "get_machine_config", + "get_machine_name", + "get_host_config", + "get_host_name", + "load_config", + "_PKG_SHORT", + "_ENV_VAR", + "_config_paths", + "_load_yaml", + "_short_hostname", +] +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_metrics.html b/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_metrics.html new file mode 100644 index 000000000..3933dd59c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_metrics.html @@ -0,0 +1,829 @@ + + + + + + + + scitex_resource._specs._metrics — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_resource._specs._metrics

+"""Flat, machine-readable resource metrics for monitoring/heartbeat use.
+
+Companion to ``get_specs()`` (which is rich + human-formatted). ``get_metrics()``
+returns a flat dict of integers, floats and short strings — the shape any hub,
+dashboard, or heartbeat producer can ship over the wire without reshaping.
+
+Cross-platform via ``psutil`` (Linux / macOS / Windows / WSL). Container-aware:
+inside Docker / cgroups, ``psutil.virtual_memory()`` reports the cgroup limit,
+not the host kernel's view, so the numbers reflect what the process can
+actually use.
+
+Schema (treat as a public contract; bump minor on rename):
+
+    cpu_count          int     logical CPU count (psutil.cpu_count())
+    cpu_model          str     human-readable CPU model name; "" if unknown
+    load_avg_1m/5m/15m float   POSIX load averages; psutil emulates on Windows
+    mem_total_mb       int     RAM total in MiB
+    mem_used_mb        int     "used" excluding cache/buffers (psutil's notion)
+    mem_free_mb        int     psutil's available — what apps can grab now
+    mem_used_percent   float   psutil.virtual_memory().percent
+    disk_total_mb      int     home-directory partition total in MiB
+    disk_used_mb       int     home-directory partition used in MiB
+    disk_used_percent  float   home-directory partition percent
+    gpus               list    [{"name", "vram_total_mb", "vram_used_mb"}, ...]
+                               empty list when no NVIDIA GPU / nvidia-smi missing
+
+The ``gpu=False`` flag skips the ~200 ms ``nvidia-smi`` shellout for hot paths
+that don't need GPU info (e.g. 30 s heartbeats on GPU-less hosts).
+"""
+
+from __future__ import annotations
+
+import logging
+import os
+import shutil
+import subprocess
+from typing import Any
+
+import psutil as _psutil
+
+log = logging.getLogger(__name__)
+
+
+
+[docs] +def get_metrics(gpu: bool = True) -> dict[str, Any]: + """Return a flat dict of current system metrics suitable for heartbeats. + + Parameters + ---------- + gpu : bool + When ``True`` (default) probe NVIDIA GPUs via ``nvidia-smi``. Set to + ``False`` on hot paths to skip the ~200 ms shellout when you know + there's no GPU or when you cache GPU info separately. + + Returns + ------- + dict + See module docstring for the full key list and contract. + """ + metrics: dict[str, Any] = {} + + metrics["cpu_count"] = _psutil.cpu_count(logical=True) or 0 + metrics["cpu_model"] = _cpu_model() + + load1, load5, load15 = _load_avg() + metrics["load_avg_1m"] = load1 + metrics["load_avg_5m"] = load5 + metrics["load_avg_15m"] = load15 + + vm = _psutil.virtual_memory() + metrics["mem_total_mb"] = int(vm.total // (1024 * 1024)) + metrics["mem_used_mb"] = int((vm.total - vm.available) // (1024 * 1024)) + metrics["mem_free_mb"] = int(vm.available // (1024 * 1024)) + metrics["mem_used_percent"] = round(float(vm.percent), 1) + + try: + du = _psutil.disk_usage(os.path.expanduser("~")) + metrics["disk_total_mb"] = int(du.total // (1024 * 1024)) + metrics["disk_used_mb"] = int(du.used // (1024 * 1024)) + metrics["disk_used_percent"] = round(float(du.percent), 1) + except OSError: + metrics["disk_total_mb"] = 0 + metrics["disk_used_mb"] = 0 + metrics["disk_used_percent"] = 0.0 + + metrics["gpus"] = _nvidia_gpus() if gpu else [] + + return metrics
+ + + +def _cpu_model() -> str: + """Cross-platform CPU model string. Empty string if undetectable.""" + import platform + + if platform.system() == "Linux": + try: + with open("/proc/cpuinfo") as f: + for line in f: + if line.startswith("model name"): + return line.split(":", 1)[1].strip() + except OSError: + pass + if platform.system() == "Darwin": + try: + out = subprocess.check_output( + ["sysctl", "-n", "machdep.cpu.brand_string"], + text=True, + timeout=1, + ) + return out.strip() + except (OSError, subprocess.SubprocessError): + pass + return platform.processor() or "" + + +def _load_avg() -> tuple[float, float, float]: + """POSIX load averages. psutil emulates on Windows from CPU samples.""" + try: + load1, load5, load15 = _psutil.getloadavg() + return round(float(load1), 2), round(float(load5), 2), round(float(load15), 2) + except (OSError, AttributeError): + return 0.0, 0.0, 0.0 + + +def _nvidia_gpus() -> list[dict[str, Any]]: + """List of NVIDIA GPUs via nvidia-smi. Empty list if not available.""" + if not shutil.which("nvidia-smi"): + return [] + try: + out = subprocess.check_output( + [ + "nvidia-smi", + "--query-gpu=name,memory.total,memory.used", + "--format=csv,noheader,nounits", + ], + text=True, + timeout=3, + ) + except (OSError, subprocess.SubprocessError): + return [] + gpus: list[dict[str, Any]] = [] + for line in out.strip().splitlines(): + parts = [p.strip() for p in line.split(",")] + if len(parts) < 3: + continue + try: + gpus.append( + { + "name": parts[0], + "vram_total_mb": int(parts[1]), + "vram_used_mb": int(parts[2]), + } + ) + except ValueError: + continue + return gpus +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_processor_usages.html b/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_processor_usages.html new file mode 100644 index 000000000..e792e46d1 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_processor_usages.html @@ -0,0 +1,957 @@ + + + + + + + + scitex_resource._specs._processor_usages — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_resource._specs._processor_usages

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-11-04 16:12:50 (ywatanabe)"
+# File: ./scitex_repo/src/scitex/resource/_get_processor_usages.py
+
+"""
+Functionality:
+    * Monitors and records system resource utilization (CPU, RAM, GPU, VRAM)
+Input:
+    * None (uses system calls and psutil library)
+Output:
+    * DataFrame containing resource usage statistics
+Prerequisites:
+    * NVIDIA GPU with nvidia-smi installed
+    * psutil package
+"""
+
+import os
+import subprocess
+import sys
+from datetime import datetime
+from typing import Optional, Tuple
+
+import matplotlib.pyplot as plt
+import pandas as pd
+import psutil
+
+
+
+[docs] +def get_processor_usages() -> pd.DataFrame: + """Gets current system resource usage statistics. + + Returns + ------- + pd.DataFrame + Resource usage data with columns: + - Timestamp: Timestamp + - CPU [%]: CPU utilization + - RAM [GiB]: RAM usage + - GPU [%]: GPU utilization + - VRAM [GiB]: VRAM usage + + Example + ------- + >>> df = get_proccessor_usages() + >>> print(df) + Timestamp CPU [%] RAM [GiB] GPU [%] VRAM [GiB] + 0 2024-11-04 10:30:15 25.3 8.2 65.0 4.5 + """ + try: + cpu_perc, ram_gb = _get_cpu_usage() + gpu_perc, vram_gb = _get_gpu_usage() + + sr = pd.Series( + { + "Timestamp": datetime.now(), + "CPU [%]": cpu_perc, + "RAM [GiB]": ram_gb, + "GPU [%]": gpu_perc, + "VRAM [GiB]": vram_gb, + } + ) + + return pd.DataFrame(sr).round(1).T + except Exception as err: + raise RuntimeError(f"Failed to get resource usage: {err}")
+ + + +def _get_cpu_usage( + process: Optional[int] = os.getpid(), n_round: int = 1 +) -> Tuple[float, float]: + """Gets CPU and RAM usage statistics. + + Parameters + ---------- + process : int, optional + Process ID to monitor + n_round : int, optional + Number of decimal places to round to + + Returns + ------- + Tuple[float, float] + CPU usage percentage and RAM usage in GiB + """ + try: + cpu_usage_perc = psutil.cpu_percent() + ram_usage_gb = ( + psutil.virtual_memory().percent + / 100 + * psutil.virtual_memory().total + / (1024**3) + ) + return round(cpu_usage_perc, n_round), round(ram_usage_gb, n_round) + except Exception as err: + raise RuntimeError(f"Failed to get CPU/RAM usage: {err}") + + +def _get_gpu_usage(n_round: int = 1) -> Tuple[float, float]: + """Gets GPU and VRAM usage statistics. + + Parameters + ---------- + n_round : int, optional + Number of decimal places to round to + + Returns + ------- + Tuple[float, float] + GPU usage percentage and VRAM usage in GiB + """ + try: + result = subprocess.run( + [ + "nvidia-smi", + "--query-gpu=utilization.gpu,memory.used", + "--format=csv,nounits,noheader", + ], + capture_output=True, + text=True, + check=True, + ) + gpu_usage_perc, vram_usage_mib = result.stdout.strip().split(",") + vram_usage_gb = float(vram_usage_mib) / 1024 + return round(float(gpu_usage_perc), n_round), round(vram_usage_gb, n_round) + except: + return 0.0, 0.0 + # except subprocess.CalledProcessError as err: + # raise RuntimeError(f"Failed to execute nvidia-smi: {err}") + # except Exception as err: + # raise RuntimeError(f"Failed to get GPU/VRAM usage: {err}") + + +# def _get_gpu_usage(n_round: int = 1) -> Tuple[float, float]: +# """Gets GPU and VRAM usage statistics. + +# Parameters +# ---------- +# n_round : int, optional +# Number of decimal places to round to + +# Returns +# ------- +# Tuple[float, float] +# GPU usage percentage and VRAM usage in GiB +# """ +# try: +# result = subprocess.run( +# [ +# "nvidia-smi", +# "--query-gpu=utilization.gpu,memory.used", +# "--format=csv,nounits,noheader", +# ], +# capture_output=True, +# text=True, +# check=True, +# ) +# gpu_usage_perc, vram_usage_mib = result.stdout.strip().split(",") +# vram_usage_gb = float(vram_usage_mib) / 1024 +# return round(float(gpu_usage_perc), n_round), round(vram_usage_gb, n_round) +# except Exception as e: +# print(e) +# return 0.0, 0.0 # Return zeros when nvidia-smi is not available + + +if __name__ == "__main__": + import scitex + + CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start( + sys, plt, verbose=False + ) + + usage = scitex.resource.get_processor_usages() + scitex.io.save(usage, "usage.csv") + + scitex.session.close(CONFIG, verbose=False, notify=False) + +# EOF + +# #!/usr/bin/env python3 +# # -*- coding: utf-8 -*- +# # Time-stamp: "2024-11-04 10:27:35 (ywatanabe)" +# # File: ./scitex_repo/src/scitex/resource/_get_processor_usages.py + +# """ +# This script does XYZ. +# """ + +# # Functions +# import os +# import subprocess +# import sys +# from datetime import datetime + +# import matplotlib.pyplot as plt +# import scitex +# import pandas as pd +# import psutil + + +# # Functions +# def get_processor_usages(): +# """ +# Retrieves the current usage statistics for the CPU, RAM, GPU, and VRAM. + +# This function fetches the current usage percentages for the CPU and GPU, as well as the current usage in GiB for RAM and VRAM. +# The data is then compiled into a pandas DataFrame with the current timestamp. + +# Returns: +# pd.DataFrame: A pandas DataFrame containing the current usage statistics with the following columns: +# - Time: The timestamp when the data was retrieved. +# - CPU [%]: The CPU usage percentage. +# - RAM [GiB]: The RAM usage in GiB. +# - GPU [%]: The GPU usage percentage. +# - VRAM [GiB]: The VRAM usage in GiB. +# Each row in the DataFrame represents a single instance of data retrieval, rounded to 1 decimal place. + +# Example: +# >>> usage_df = get_processor_usages() +# >>> print(usage_df) +# """ +# cpu_perc, ram_gb = _get_cpu_usage() +# gpu_perc, vram_gb = _get_gpu_usage() + +# sr = pd.Series( +# { +# "Time": datetime.now(), +# "CPU [%]": cpu_perc, +# "RAM [GiB]": ram_gb, +# "GPU [%]": gpu_perc, +# "VRAM [GiB]": vram_gb, +# } +# ) + +# df = pd.DataFrame(sr).round(1).T + +# return df + + +# def _get_cpu_usage(process=os.getpid(), n_round=1): +# cpu_usage_perc = psutil.cpu_percent() +# ram_usage_gb = ( +# psutil.virtual_memory().percent +# / 100 +# * psutil.virtual_memory().total +# / (1024**3) +# ) +# return round(cpu_usage_perc, n_round), round(ram_usage_gb, n_round) + + +# def _get_gpu_usage(n_round=1): +# result = subprocess.run( +# [ +# "nvidia-smi", +# "--query-gpu=utilization.gpu,memory.used", +# "--format=csv,nounits,noheader", +# ], +# capture_output=True, +# text=True, +# ) +# gpu_usage_perc, _vram_usage_mib = result.stdout.strip().split(",") +# vram_usage_gb = float(_vram_usage_mib) / 1024 +# return round(float(gpu_usage_perc), n_round), round( +# float(vram_usage_gb), n_round +# ) + + +# # (YOUR AWESOME CODE) + +# if __name__ == "__main__": +# # Start +# CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start( +# sys, plt, verbose=False +# ) + +# usage = scitex.resource.get_processor_usages() +# scitex.io.save(usage, "usage.csv") + +# # Close +# scitex.session.close(CONFIG, verbose=False, notify=False) + +# + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_specs.html b/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_specs.html new file mode 100644 index 000000000..55775269e --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_resource/_specs/_specs.html @@ -0,0 +1,949 @@ + + + + + + + + scitex_resource._specs._specs — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_resource._specs._specs

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Time-stamp: "2024-11-04 14:16:49 (ywatanabe)"
+# File: ./scitex_repo/src/scitex/resource/_get_specs.py
+
+"""
+This script provides detailed system information including system basics, boot time, CPU, memory, disk, network, and custom user environment variables.
+"""
+
+import platform as _platform
+import sys
+from datetime import datetime as _datetime
+from pprint import pprint
+
+import matplotlib.pyplot as plt
+import psutil as _psutil
+import yaml as _yaml
+
+from .._compat import readable_bytes
+from .._utils._get_env_info import get_env_info
+
+
+
+[docs] +def get_specs( + system=True, + # boot_time=True, + cpu=True, + gpu=True, + disk=True, + network=True, + verbose=False, + yaml=False, +): + """ + Collects and returns system specifications including system information, CPU, GPU, disk, and network details. + + This function gathers various pieces of system information based on the parameters provided. It can return the data in a dictionary format or print it out based on the verbose flag. Additionally, there's an option to format the output as YAML. + + Arguments: + system (bool): If True, collects system-wide information such as OS and node name. Default is True. + boot_time (bool): If True, collects system boot time. Currently commented out in the implementation. Default is True. + cpu (bool): If True, collects CPU-specific information including frequency and usage. Default is True. + gpu (bool): If True, collects GPU-specific information. Default is True. + disk (bool): If True, collects disk usage information for all partitions. Default is True. + network (bool): If True, collects network interface and traffic information. Default is True. + verbose (bool): If True, prints the collected information using pprint. Default is False. + yaml (bool): If True, formats the collected information as YAML. This modifies the return type to a YAML formatted string. Default is False. + + Returns: + dict or str: By default, returns a dictionary containing the collected system specifications. If `yaml` is True, returns a YAML-formatted string instead. + + Note: + - The actual collection of system, CPU, GPU, disk, and network information depends on the availability of corresponding libraries and access permissions. + - The `boot_time` argument is currently not used as its corresponding code is commented out. + - The function uses global variables and imports within its scope, which might affect its reusability and testability. + + Example: + >>> specs = get_specs(verbose=True) + This will print and return the system specifications based on the default parameters. + + Dependencies: + - This function depends on the `scitex` library for accessing system information and formatting output. Ensure this library is installed and properly configured. + - Python standard libraries: `datetime`, `platform`, `psutil`, `yaml` (optional for YAML output). + + Raises: + PermissionError: If the function lacks necessary permissions to access certain system information, especially disk and network details. + """ + + # To prevent import errors, _SUPPLE_INFO is collected here. + global _SUPPLE_INFO + _SUPPLE_INFO = get_env_info()._asdict() + + collected_info = {} # OrderedDict() + + collected_info["Collected Time"] = _datetime.now().strftime("%Y-%m-%d %H:%M:%S") + if system: + collected_info["System Information"] = _system_info() + # if boot_time: + # collected_info["Boot Time"] = _boot_time_info() + if cpu: + collected_info["CPU Info"] = _cpu_info() + collected_info["Memory Info"] = _memory_info() + if gpu: + collected_info["GPU Info"] = _supple_nvidia_info() + # scitex.gen.placeholder() + if disk: + collected_info["Disk Info"] = _disk_info() + if network: + collected_info["Network Info"] = _network_info() + + if yaml: + collected_info = _yaml.dump(collected_info, sort_keys=False) + + if verbose: + pprint(collected_info) + + return collected_info
+ + + +def _system_info(): + uname = _platform.uname() + return { + "OS": _supple_os_info()["os"], + # "GCC version": _supple_os_info()["gcc_version"], + # "System": uname.system, + "Node Name": uname.node, + "Release": uname.release, + "Version": uname.version, + # "Machine": uname.machine, + # "Processor": uname.processor, + } + + +# def _boot_time_info(): +# boot_time_timestamp = _psutil.boot_time() +# bt = _datetime.fromtimestamp(boot_time_timestamp) +# return { +# "Boot Time": f"{bt.year}-{bt.month:02d}-{bt.day:02d} {bt.hour:02d}:{bt.minute:02d}:{bt.second:02d}" +# } + + +def _cpu_info(): + cpufreq = _psutil.cpu_freq() + cpu_usage_per_core = _psutil.cpu_percent(percpu=True, interval=1) + return { + "Physical cores": _psutil.cpu_count(logical=False), + "Total cores": _psutil.cpu_count(logical=True), + "Max Frequency": f"{cpufreq.max:.2f} MHz", + "Min Frequency": f"{cpufreq.min:.2f} MHz", + "Current Frequency": f"{cpufreq.current:.2f} MHz", + "CPU Usage Per Core": { + f"Core {i}": f"{percentage}%" + for i, percentage in enumerate(cpu_usage_per_core) + }, + "Total CPU Usage": f"{_psutil.cpu_percent()}%", + } + + +def _memory_info(): + svmem = _psutil.virtual_memory() + swap = _psutil.swap_memory() + + return { + "Memory": { + "Total": readable_bytes(svmem.total), + "Available": readable_bytes(svmem.available), + "Used": readable_bytes(svmem.used), + "Percentage": svmem.percent, + }, + "SWAP": { + "Total": readable_bytes(swap.total), + "Free": readable_bytes(swap.free), + "Used": readable_bytes(swap.used), + "Percentage": swap.percent, + }, + } + + +def _disk_info(): + partitions_info = {} + partitions = _psutil.disk_partitions() + for partition in partitions: + try: + usage = _psutil.disk_usage(partition.mountpoint) + partitions_info[partition.device] = { + "Mountpoint": partition.mountpoint, + "File system type": partition.fstype, + "Total Size": readable_bytes(usage.total), + "Used": readable_bytes(usage.used), + "Free": readable_bytes(usage.free), + "Percentage": usage.percent, + } + except PermissionError: + continue + + disk_io = _psutil.disk_io_counters() + return { + "Partitions": partitions_info, + "Total read": readable_bytes(disk_io.read_bytes), + "Total write": readable_bytes(disk_io.write_bytes), + } + + +def _network_info(): + if_addrs = _psutil.net_if_addrs() + interfaces = {} + for interface_name, interface_addresses in if_addrs.items(): + interface_info = [] + for address in interface_addresses: + interface_info.append( + { + # "Address Type": "IP" if address.family == _psutil.AF_INET else "MAC", + "Address": address.address, + "Netmask": address.netmask, + "Broadcast": address.broadcast, + } + ) + interfaces[interface_name] = interface_info + + net_io = _psutil.net_io_counters() + return { + "Interfaces": interfaces, + "Total Sent": readable_bytes(net_io.bytes_sent), + "Total Received": readable_bytes(net_io.bytes_recv), + } + + +def _python_info(): + return _supple_python_info() + + +def _supple_os_info(): + _SUPPLE_OS_KEYS = [ + "os", + "gcc_version", + ] + return {k: _SUPPLE_INFO[k] for k in _SUPPLE_OS_KEYS} + + +def _supple_python_info(): + _SUPPLE_PYTHON_KEYS = [ + "python_version", + "torch_version", + "is_cuda_available", + "pip_version", + "pip_packages", + "conda_packages", + ] + + return {k: _SUPPLE_INFO[k] for k in _SUPPLE_PYTHON_KEYS} + + +def _supple_nvidia_info(): + _SUPPLE_NVIDIA_KEYS = [ + "nvidia_gpu_models", + "nvidia_driver_version", + "cuda_runtime_version", + "cudnn_version", + ] + + def replace_key(key): + return key + + def replace_key(key): + key = key.replace("_", " ") + key = key.replace("nvidia", "NVIDIA") + key = key.replace("gpu", "GPU") + key = key.replace("cuda", "CUDA") + key = key.replace("cudnn", "cuDNN") + key = key.replace("driver", "Driver") + key = key.replace("runtime", "Runtime") + return key + + return {replace_key(k): _SUPPLE_INFO[k] for k in _SUPPLE_NVIDIA_KEYS} + + +if __name__ == "__main__": + import scitex + + # Start + CONFIG, sys.stdout, sys.stderr, plt, CC = scitex.session.start(sys, plt) + + info = scitex.res.get_specs() + scitex.io.save(info, "specs.yaml") + + # Close + scitex.session.close(CONFIG) + +# EOF + +""" +/home/ywatanabe/proj/entrance/scitex/res/_get_specs.py +""" + + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_security/github.html b/src/scitex/_sphinx_html/_modules/scitex_security/github.html new file mode 100644 index 000000000..89352fa05 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_security/github.html @@ -0,0 +1,1131 @@ + + + + + + + + scitex_security.github — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_security.github

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# File: ~/proj/scitex-code/src/scitex/security/github.py
+
+"""
+GitHub Security Alerts Module
+
+Fetches and processes security alerts from GitHub.
+
+Collaborator injection
+----------------------
+Per the SciTeX no-mocks rule (PA-306), the production callables that
+talk to external collaborators (the ``subprocess`` module, and the
+in-module ``_run_gh_command``/``check_gh_auth``/``get_*_alerts``
+helpers) accept keyword-only overrides defaulting to the real module
+globals. Tests pass real hand-rolled fakes; production code does not
+pass anything.
+"""
+
+import json
+import subprocess
+from datetime import datetime
+from pathlib import Path
+from typing import Callable, Dict, List, Optional
+
+
+
+[docs] +class GitHubSecurityError(Exception): + """Raised when GitHub security operations fail.""" + + pass
+ + + +def _run_gh_command( + args: List[str], + *, + run: Optional[Callable] = None, +) -> str: + """Run GitHub CLI command and return output. + + Args: + args: Arguments to pass to ``gh`` (without the ``gh`` prefix). + run: ``subprocess.run``-shaped callable. Defaults to the real + ``subprocess.run``. Override in tests. + """ + if run is None: + run = subprocess.run + try: + result = run( + ["gh"] + args, + capture_output=True, + text=True, + check=True, + ) + return result.stdout + except subprocess.CalledProcessError as e: + raise GitHubSecurityError(f"GitHub CLI error: {e.stderr}") + except FileNotFoundError: + raise GitHubSecurityError( + "GitHub CLI (gh) not found. Install: https://cli.github.com/" + ) + + +def check_gh_auth(*, run: Optional[Callable] = None) -> bool: + """Check if GitHub CLI is authenticated. + + Args: + run: ``subprocess.run``-shaped callable. Defaults to the real + ``subprocess.run``. Override in tests. + """ + if run is None: + run = subprocess.run + try: + run( + ["gh", "auth", "status"], + capture_output=True, + check=True, + ) + return True + except (subprocess.CalledProcessError, FileNotFoundError): + return False + + +def get_secret_alerts( + repo: Optional[str] = None, + *, + gh_runner: Optional[Callable[[List[str]], str]] = None, +) -> List[Dict]: + """ + Get secret scanning alerts. + + Args: + repo: Repository in format 'owner/repo'. If None, uses current repo. + gh_runner: ``_run_gh_command``-shaped callable. Defaults to + :func:`_run_gh_command`. Override in tests. + + Returns: + List of secret scanning alerts + """ + if gh_runner is None: + gh_runner = _run_gh_command + try: + # Use GitHub REST API for secret scanning + api_path = "/repos/:owner/:repo/secret-scanning/alerts" + if repo: + owner, repo_name = repo.split("/") + api_path = f"/repos/{owner}/{repo_name}/secret-scanning/alerts" + + output = gh_runner( + [ + "api", + api_path, + "--paginate", + "--jq", + ".[] | {state, secretType: .secret_type_display_name, " + "url: .html_url, " + "createdAt: .created_at, " + "path: .first_location_detected.path, " + "line: .first_location_detected.start_line}", + ] + ) + + if not output.strip(): + return [] + + # Parse line-delimited JSON + alerts = [] + for line in output.strip().split("\n"): + if line.strip(): + alerts.append(json.loads(line)) + return alerts + except GitHubSecurityError: + return [] + + +def get_dependabot_alerts( + repo: Optional[str] = None, + *, + gh_runner: Optional[Callable[[List[str]], str]] = None, +) -> List[Dict]: + """ + Get Dependabot vulnerability alerts. + + Args: + repo: Repository in format 'owner/repo'. If None, uses current repo. + gh_runner: ``_run_gh_command``-shaped callable. Defaults to + :func:`_run_gh_command`. Override in tests. + + Returns: + List of Dependabot alerts + """ + if gh_runner is None: + gh_runner = _run_gh_command + try: + # Use GitHub API to get Dependabot alerts + api_path = "/repos/:owner/:repo/dependabot/alerts" + if repo: + owner, repo_name = repo.split("/") + api_path = f"/repos/{owner}/{repo_name}/dependabot/alerts" + + output = gh_runner( + [ + "api", + api_path, + "--paginate", + "--jq", + ".[] | {state, severity: .security_advisory.severity, " + "summary: .security_advisory.summary, " + "package: .dependency.package.name, " + "cve: .security_advisory.cve_id, " + "url: .html_url, " + "created_at: .created_at}", + ] + ) + + if not output.strip(): + return [] + + # Parse line-delimited JSON + alerts = [] + for line in output.strip().split("\n"): + if line.strip(): + alerts.append(json.loads(line)) + return alerts + except GitHubSecurityError: + return [] + + +def get_code_scanning_alerts( + repo: Optional[str] = None, + *, + gh_runner: Optional[Callable[[List[str]], str]] = None, +) -> List[Dict]: + """ + Get code scanning alerts. + + Args: + repo: Repository in format 'owner/repo'. If None, uses current repo. + gh_runner: ``_run_gh_command``-shaped callable. Defaults to + :func:`_run_gh_command`. Override in tests. + + Returns: + List of code scanning alerts + """ + if gh_runner is None: + gh_runner = _run_gh_command + try: + # Use GitHub API to get code scanning alerts + api_path = "/repos/:owner/:repo/code-scanning/alerts" + if repo: + owner, repo_name = repo.split("/") + api_path = f"/repos/{owner}/{repo_name}/code-scanning/alerts" + + output = gh_runner( + [ + "api", + api_path, + "--paginate", + "--jq", + ".[] | {state, severity: .rule.severity, " + "description: .rule.description, " + "location: .most_recent_instance.location.path, " + "line: .most_recent_instance.location.start_line, " + "url: .html_url, " + "created_at: .created_at}", + ] + ) + + if not output.strip(): + return [] + + # Parse line-delimited JSON + alerts = [] + for line in output.strip().split("\n"): + if line.strip(): + alerts.append(json.loads(line)) + return alerts + except GitHubSecurityError: + return [] + + +
+[docs] +def check_github_alerts( + repo: Optional[str] = None, + *, + auth_check: Optional[Callable[[], bool]] = None, + secrets_fn: Optional[Callable] = None, + dependabot_fn: Optional[Callable] = None, + code_scanning_fn: Optional[Callable] = None, +) -> Dict[str, List[Dict]]: + """ + Check all GitHub security alerts. + + Args: + repo: Repository in format 'owner/repo'. If None, uses current repo. + auth_check: ``check_gh_auth``-shaped callable. Override in tests. + secrets_fn: ``get_secret_alerts``-shaped callable. Override in tests. + dependabot_fn: ``get_dependabot_alerts``-shaped callable. Override in + tests. + code_scanning_fn: ``get_code_scanning_alerts``-shaped callable. + Override in tests. + + Returns: + Dictionary with keys: 'secrets', 'dependabot', 'code_scanning' + + Raises: + GitHubSecurityError: If GitHub CLI is not installed or not authenticated + """ + if auth_check is None: + auth_check = check_gh_auth + if secrets_fn is None: + secrets_fn = get_secret_alerts + if dependabot_fn is None: + dependabot_fn = get_dependabot_alerts + if code_scanning_fn is None: + code_scanning_fn = get_code_scanning_alerts + + if not auth_check(): + raise GitHubSecurityError( + "Not authenticated with GitHub CLI. Run: gh auth login" + ) + + return { + "secrets": secrets_fn(repo), + "dependabot": dependabot_fn(repo), + "code_scanning": code_scanning_fn(repo), + }
+ + + +
+[docs] +def format_alerts_report(alerts: Dict[str, List[Dict]]) -> str: + """ + Format alerts into a readable text report. + + Args: + alerts: Dictionary of alerts from check_github_alerts() + + Returns: + Formatted text report + """ + lines = [] + lines.append("=" * 50) + lines.append("GitHub Security Alerts Report") + lines.append(f"Generated: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") + lines.append("=" * 50) + lines.append("") + + # Secret scanning alerts + lines.append("### SECRET SCANNING ALERTS ###") + lines.append("") + secrets = [s for s in alerts["secrets"] if s.get("state") == "open"] + if secrets: + for alert in secrets: + lines.append(f"- [{alert['state']}] {alert['secretType']}") + path = alert.get("path", "N/A") + line_num = alert.get("line", "") + if path != "N/A" and line_num: + lines.append(f" Location: {path}:{line_num}") + lines.append(f" Created: {alert.get('createdAt', 'N/A')}") + lines.append(f" URL: {alert['url']}") + lines.append("") + else: + lines.append("No open secret scanning alerts") + lines.append("") + + lines.append("=" * 50) + lines.append("") + + # Dependabot alerts + lines.append("### DEPENDABOT VULNERABILITY ALERTS ###") + lines.append("") + dependabot = [d for d in alerts["dependabot"] if d.get("state") == "open"] + if dependabot: + for alert in dependabot: + severity = alert.get("severity", "unknown").upper() + lines.append(f"- [{alert['state']}] {severity}: {alert['summary']}") + lines.append(f" Package: {alert['package']}") + lines.append(f" CVE: {alert.get('cve') or 'N/A'}") + lines.append(f" URL: {alert['url']}") + lines.append("") + else: + lines.append("No open Dependabot alerts") + lines.append("") + + lines.append("=" * 50) + lines.append("") + + # Code scanning alerts + lines.append("### CODE SCANNING ALERTS ###") + lines.append("") + code_scanning = [c for c in alerts["code_scanning"] if c.get("state") == "open"] + if code_scanning: + for alert in code_scanning: + severity = alert.get("severity", "unknown").upper() + lines.append(f"- [{alert['state']}] {severity}: {alert['description']}") + location = alert.get("location", "N/A") + line_num = alert.get("line", "") + if line_num: + location = f"{location}:{line_num}" + lines.append(f" Location: {location}") + lines.append(f" URL: {alert['url']}") + lines.append("") + else: + lines.append("No open code scanning alerts") + lines.append("") + + lines.append("=" * 50) + lines.append("") + + # Summary + total = len(secrets) + len(dependabot) + len(code_scanning) + lines.append("### SUMMARY ###") + lines.append("") + lines.append(f"Total open alerts: {total}") + lines.append(f" - Secrets: {len(secrets)}") + lines.append(f" - Dependabot: {len(dependabot)}") + lines.append(f" - Code Scanning: {len(code_scanning)}") + lines.append("") + + if total > 0: + lines.append("⚠️ ACTION REQUIRED: Security issues found!") + else: + lines.append("✓ No open security alerts") + + return "\n".join(lines)
+ + + +
+[docs] +def save_alerts_to_file( + alerts: Dict[str, List[Dict]], + output_dir: Optional[Path] = None, + create_symlink: bool = True, +) -> Path: + """ + Save alerts to a timestamped file. + + Args: + alerts: Dictionary of alerts from check_github_alerts() + output_dir: Directory to save file. Defaults to ./logs/security + create_symlink: If True, create 'security-latest.txt' symlink + + Returns: + Path to saved file + """ + if output_dir is None: + output_dir = Path.cwd() / "logs" / "security" + else: + output_dir = Path(output_dir) + + output_dir.mkdir(parents=True, exist_ok=True) + + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + output_file = output_dir / f"security-{timestamp}.txt" + + report = format_alerts_report(alerts) + output_file.write_text(report) + + # Create symlink to latest + if create_symlink: + latest_link = output_dir / "security-latest.txt" + if latest_link.exists() or latest_link.is_symlink(): + latest_link.unlink() + latest_link.symlink_to(output_file.name) + + return output_file
+ + + +
+[docs] +def get_latest_alerts_file(security_dir: Optional[Path] = None) -> Optional[Path]: + """ + Get path to the latest security alerts file. + + Args: + security_dir: Directory containing security files. Defaults to ./logs/security + + Returns: + Path to latest file, or None if not found + """ + if security_dir is None: + security_dir = Path.cwd() / "logs" / "security" + else: + security_dir = Path(security_dir) + + latest_link = security_dir / "security-latest.txt" + if latest_link.exists(): + return latest_link + + # Fallback: find most recent file + files = sorted(security_dir.glob("security-*.txt"), reverse=True) + return files[0] if files else None
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_ui.html b/src/scitex/_sphinx_html/_modules/scitex_ui.html new file mode 100644 index 000000000..63e3b5dc5 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_ui.html @@ -0,0 +1,741 @@ + + + + + + + + scitex_ui — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_ui

+#!/usr/bin/env python3
+"""scitex-ui — Shared frontend UI components for the SciTeX ecosystem.
+
+Components ship as TypeScript + CSS static assets, discoverable by Django's
+AppDirectoriesFinder when added to INSTALLED_APPS.
+
+Python API provides component metadata and registration.
+"""
+
+from __future__ import annotations
+
+try:
+    from importlib.metadata import version as _v, PackageNotFoundError
+    try:
+        __version__ = _v("scitex-ui")
+    except PackageNotFoundError:
+        __version__ = "0.0.0+local"
+    del _v, PackageNotFoundError
+except ImportError:  # pragma: no cover — only on ancient Pythons
+    __version__ = "0.0.0+local"
+from pathlib import Path as _Path
+
+from ._registry import get_component, list_components
+from ._registry import register_component as _register_component
+from . import _components  # noqa: F401 — triggers registration
+
+# Advanced: re-export for custom component authors
+register_component = _register_component
+
+
+
+[docs] +def get_static_dir() -> _Path: + """Return the absolute path to scitex_ui's static asset directory. + + This is the directory containing ``css/`` and ``ts/`` subdirectories. + Works for both pip-installed packages and editable (dev) installs. + + Useful for build tools (Vite, Webpack) that need to resolve + scitex-ui source files at build time. + + Returns + ------- + pathlib.Path + e.g. ``/usr/lib/python3.11/.../scitex_ui/static/scitex_ui`` + """ + return _Path(__file__).parent / "static" / "scitex_ui"
+ + + +
+[docs] +def get_docs_path() -> _Path: + """Return the absolute path to scitex_ui's bundled documentation directory. + + The directory contains ``APP_DEVELOPER_GUIDE.md`` and the Sphinx-built + HTML docs. Works for both pip-installed packages and editable (dev) installs. + + Returns + ------- + pathlib.Path + e.g. ``/usr/lib/python3.11/.../scitex_ui/_docs`` + """ + return _Path(__file__).parent / "_sphinx_html"
+ + + +__all__ = ["__version__", "get_component", "list_components", "get_static_dir", "get_docs_path"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_ui/_registry.html b/src/scitex/_sphinx_html/_modules/scitex_ui/_registry.html new file mode 100644 index 000000000..3f6178be5 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_ui/_registry.html @@ -0,0 +1,700 @@ + + + + + + + + scitex_ui._registry — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_ui._registry

+#!/usr/bin/env python3
+"""Component metadata registry."""
+
+from __future__ import annotations
+from typing import Any, Optional
+
+_COMPONENTS: dict[str, Any] = {}
+
+
+def register_component(name: str, metadata: Any) -> None:
+    """Register a frontend component's metadata."""
+    _COMPONENTS[name] = metadata
+
+
+
+[docs] +def get_component(name: str) -> Optional[Any]: + """Get metadata for a registered component.""" + return _COMPONENTS.get(name)
+ + + +
+[docs] +def list_components() -> list[str]: + """List all registered component names.""" + return sorted(_COMPONENTS.keys())
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/results/_CompilationResult.html b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/results/_CompilationResult.html new file mode 100644 index 000000000..3f4093e6c --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/results/_CompilationResult.html @@ -0,0 +1,745 @@ + + + + + + + + scitex_writer._dataclasses.results._CompilationResult — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_writer._dataclasses.results._CompilationResult

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# File: src/scitex_writer/_dataclasses/results/_CompilationResult.py
+
+"""
+CompilationResult - dataclass for LaTeX compilation results.
+"""
+
+from __future__ import annotations
+
+from dataclasses import dataclass, field
+from pathlib import Path
+from typing import List, Optional
+
+
+
+[docs] +@dataclass +class CompilationResult: + """Result of LaTeX compilation.""" + + success: bool + """Whether compilation succeeded (exit code 0)""" + + exit_code: int + """Process exit code""" + + stdout: str + """Standard output from compilation""" + + stderr: str + """Standard error from compilation""" + + output_pdf: Optional[Path] = None + """Path to generated PDF (if successful)""" + + diff_pdf: Optional[Path] = None + """Path to diff PDF with tracked changes (if generated)""" + + log_file: Optional[Path] = None + """Path to compilation log file""" + + duration: float = 0.0 + """Compilation duration in seconds""" + + errors: List[str] = field(default_factory=list) + """Parsed LaTeX errors (if any)""" + + warnings: List[str] = field(default_factory=list) + """Parsed LaTeX warnings (if any)""" + +
+[docs] + def __str__(self): + """Human-readable summary.""" + status = "SUCCESS" if self.success else "FAILED" + lines = [ + f"Compilation {status} (exit code: {self.exit_code})", + f"Duration: {self.duration:.2f}s", + ] + if self.output_pdf: + lines.append(f"Output: {self.output_pdf}") + if self.errors: + lines.append(f"Errors: {len(self.errors)}") + if self.warnings: + lines.append(f"Warnings: {len(self.warnings)}") + return "\n".join(lines)
+
+ + + +__all__ = ["CompilationResult"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_ManuscriptTree.html b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_ManuscriptTree.html new file mode 100644 index 000000000..40d372a49 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_ManuscriptTree.html @@ -0,0 +1,758 @@ + + + + + + + + scitex_writer._dataclasses.tree._ManuscriptTree — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_writer._dataclasses.tree._ManuscriptTree

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# File: src/scitex_writer/_dataclasses/tree/_ManuscriptTree.py
+
+"""
+ManuscriptTree - dataclass for manuscript directory structure.
+
+Represents the 01_manuscript/ directory with all subdirectories.
+"""
+
+from __future__ import annotations
+
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Optional
+
+from ..contents import ManuscriptContents
+from ..core import DocumentSection
+
+
+
+[docs] +@dataclass +class ManuscriptTree: + """Manuscript directory structure (01_manuscript/).""" + + root: Path + git_root: Optional[Path] = None + + # Contents subdirectory + contents: ManuscriptContents = None + + # Root level files + base: DocumentSection = None + readme: DocumentSection = None + + # Directories + archive: Path = None + +
+[docs] + def __post_init__(self): + """Initialize all instances.""" + if self.contents is None: + self.contents = ManuscriptContents(self.root / "contents", self.git_root) + if self.base is None: + self.base = DocumentSection(self.root / "base.tex", self.git_root) + if self.readme is None: + self.readme = DocumentSection(self.root / "README.md", self.git_root) + if self.archive is None: + self.archive = self.root / "archive"
+ + +
+[docs] + def verify_structure(self) -> tuple[bool, list[str]]: + """ + Verify manuscript structure has required components. + + Returns: + (is_valid, list_of_missing_items_with_paths) + """ + missing = [] + + # Check contents structure + contents_valid, contents_missing = self.contents.verify_structure() + if not contents_valid: + # Contents already includes full paths, just pass them through + missing.extend(contents_missing) + + # Check root level files + if not self.base.path.exists(): + expected_path = ( + self.base.path.relative_to(self.git_root) + if self.git_root + else self.base.path + ) + missing.append(f"base.tex (expected at: {expected_path})") + + return len(missing) == 0, missing
+
+ + + +__all__ = ["ManuscriptTree"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_RevisionTree.html b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_RevisionTree.html new file mode 100644 index 000000000..638738086 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_RevisionTree.html @@ -0,0 +1,771 @@ + + + + + + + + scitex_writer._dataclasses.tree._RevisionTree — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_writer._dataclasses.tree._RevisionTree

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# File: src/scitex_writer/_dataclasses/tree/_RevisionTree.py
+
+"""
+RevisionTree - dataclass for revision directory structure.
+
+Represents the 03_revision/ directory with all subdirectories.
+"""
+
+from __future__ import annotations
+
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Optional
+
+from ..contents import RevisionContents
+from ..core import DocumentSection
+
+
+
+[docs] +@dataclass +class RevisionTree: + """Revision directory structure (03_revision/).""" + + root: Path + git_root: Optional[Path] = None + + # Contents subdirectory + contents: RevisionContents = None + + # Root level files + base: DocumentSection = None + revision: DocumentSection = None + readme: DocumentSection = None + + # Directories + archive: Path = None + docs: Path = None + +
+[docs] + def __post_init__(self): + """Initialize all instances.""" + if self.contents is None: + self.contents = RevisionContents(self.root / "contents", self.git_root) + if self.base is None: + self.base = DocumentSection(self.root / "base.tex", self.git_root) + if self.revision is None: + self.revision = DocumentSection(self.root / "revision.tex", self.git_root) + if self.readme is None: + self.readme = DocumentSection(self.root / "README.md", self.git_root) + if self.archive is None: + self.archive = self.root / "archive" + if self.docs is None: + self.docs = self.root / "docs"
+ + +
+[docs] + def verify_structure(self) -> tuple[bool, list[str]]: + """ + Verify revision structure has required components. + + Returns: + (is_valid, list_of_missing_items_with_paths) + """ + missing = [] + + # Check contents structure + contents_valid, contents_issues = self.contents.verify_structure() + if not contents_valid: + # Contents already includes full paths, just pass them through + missing.extend(contents_issues) + + # Check root level files + if not self.base.path.exists(): + expected_path = ( + self.base.path.relative_to(self.git_root) + if self.git_root + else self.base.path + ) + missing.append(f"base.tex (expected at: {expected_path})") + if not self.revision.path.exists(): + expected_path = ( + self.revision.path.relative_to(self.git_root) + if self.git_root + else self.revision.path + ) + missing.append(f"revision.tex (expected at: {expected_path})") + + return len(missing) == 0, missing
+
+ + + +__all__ = ["RevisionTree"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_SupplementaryTree.html b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_SupplementaryTree.html new file mode 100644 index 000000000..d6e3a7426 --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_writer/_dataclasses/tree/_SupplementaryTree.html @@ -0,0 +1,775 @@ + + + + + + + + scitex_writer._dataclasses.tree._SupplementaryTree — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + + +
  • +
  • +
+
+
+
+
+ +

Source code for scitex_writer._dataclasses.tree._SupplementaryTree

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# File: src/scitex_writer/_dataclasses/tree/_SupplementaryTree.py
+
+"""
+SupplementaryTree - dataclass for supplementary directory structure.
+
+Represents the 02_supplementary/ directory with all subdirectories.
+"""
+
+from __future__ import annotations
+
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Optional
+
+from ..contents import SupplementaryContents
+from ..core import DocumentSection
+
+
+
+[docs] +@dataclass +class SupplementaryTree: + """Supplementary directory structure (02_supplementary/).""" + + root: Path + git_root: Optional[Path] = None + + # Contents subdirectory + contents: SupplementaryContents = None + + # Root level files + base: DocumentSection = None + supplementary: DocumentSection = None + supplementary_diff: DocumentSection = None + readme: DocumentSection = None + + # Directories + archive: Path = None + +
+[docs] + def __post_init__(self): + """Initialize all instances.""" + if self.contents is None: + self.contents = SupplementaryContents(self.root / "contents", self.git_root) + if self.base is None: + self.base = DocumentSection(self.root / "base.tex", self.git_root) + if self.supplementary is None: + self.supplementary = DocumentSection( + self.root / "supplementary.tex", self.git_root + ) + if self.supplementary_diff is None: + self.supplementary_diff = DocumentSection( + self.root / "supplementary_diff.tex", self.git_root + ) + if self.readme is None: + self.readme = DocumentSection(self.root / "README.md", self.git_root) + if self.archive is None: + self.archive = self.root / "archive"
+ + +
+[docs] + def verify_structure(self) -> tuple[bool, list[str]]: + """ + Verify supplementary structure has required components. + + Returns: + (is_valid, list_of_missing_items_with_paths) + """ + missing = [] + + # Check contents structure + contents_valid, contents_issues = self.contents.verify_structure() + if not contents_valid: + # Contents already includes full paths, just pass them through + missing.extend(contents_issues) + + # Check root level files + if not self.base.path.exists(): + expected_path = ( + self.base.path.relative_to(self.git_root) + if self.git_root + else self.base.path + ) + missing.append(f"base.tex (expected at: {expected_path})") + if not self.supplementary.path.exists(): + expected_path = ( + self.supplementary.path.relative_to(self.git_root) + if self.git_root + else self.supplementary.path + ) + missing.append(f"supplementary.tex (expected at: {expected_path})") + + return len(missing) == 0, missing
+
+ + + +__all__ = ["SupplementaryTree"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_modules/scitex_writer/writer.html b/src/scitex/_sphinx_html/_modules/scitex_writer/writer.html new file mode 100644 index 000000000..076a9d8dc --- /dev/null +++ b/src/scitex/_sphinx_html/_modules/scitex_writer/writer.html @@ -0,0 +1,1056 @@ + + + + + + + + scitex_writer.writer — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for scitex_writer.writer

+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# File: src/scitex_writer/writer.py
+
+"""
+Writer class for manuscript LaTeX compilation.
+
+Provides object-oriented interface to scitex-writer functionality.
+"""
+
+from __future__ import annotations
+
+import logging
+import shutil
+import subprocess
+from pathlib import Path
+from typing import Callable, Optional
+
+from ._compile import (
+    CompilationResult,
+    compile_manuscript,
+    compile_revision,
+    compile_supplementary,
+)
+from ._dataclasses import ManuscriptTree, RevisionTree, SupplementaryTree
+from ._dataclasses.config import DOC_TYPE_DIRS
+from ._dataclasses.tree import ScriptsTree, SharedTree
+from ._project._create import clone_writer_project
+from ._utils._watch import watch_manuscript
+
+logger = logging.getLogger(__name__)
+
+
+def _find_git_root(project_dir: Path) -> Optional[Path]:
+    """Find git root for project directory."""
+    try:
+        result = subprocess.run(
+            ["git", "rev-parse", "--show-toplevel"],
+            cwd=str(project_dir),
+            capture_output=True,
+            text=True,
+            timeout=5,
+        )
+        if result.returncode == 0:
+            return Path(result.stdout.strip())
+    except Exception:
+        pass
+    return None
+
+
+
+[docs] +class Writer: + """LaTeX manuscript compiler.""" + +
+[docs] + def __init__( + self, + project_dir: Path, + name: Optional[str] = None, + git_strategy: Optional[str] = "child", + branch: Optional[str] = None, + tag: Optional[str] = None, + ): + """ + Initialize for project directory. + + If directory doesn't exist, creates new project. + + Parameters + ---------- + project_dir : Path + Path to project directory. + name : str, optional + Project name (used if creating new project). + git_strategy : str, optional + Git initialization strategy: + - 'child': Create isolated git in project directory (default) + - 'parent': Use parent git repository + - 'origin': Preserve template's original git history + - None or 'none': Disable git initialization + branch : str, optional + Specific branch of template repository to clone. + If None, clones the default branch. Mutually exclusive with tag. + tag : str, optional + Specific tag/release of template repository to clone. + If None, clones the default branch. Mutually exclusive with branch. + """ + self.project_name = name or Path(project_dir).name + self.project_dir = Path(project_dir) + self.git_strategy = git_strategy + self.branch = branch + self.tag = tag + + ref_info = "" + if branch: + ref_info = f" (branch: {branch})" + elif tag: + ref_info = f" (tag: {tag})" + logger.info( + f"Writer: Initializing with:\n" + f" Project Name: {self.project_name}\n" + f" Project Directory: {self.project_dir.absolute()}\n" + f" Git Strategy: {self.git_strategy}{ref_info}..." + ) + + # Create or attach to project + self.project_dir = self._attach_or_create_project(name) + + # Find git root (may be the project dir or a parent) + self.git_root = _find_git_root(self.project_dir) or self.project_dir + + # Document accessors (pass git_root for efficiency) + self.shared = SharedTree(self.project_dir / "00_shared", git_root=self.git_root) + self.manuscript = ManuscriptTree( + self.project_dir / "01_manuscript", git_root=self.git_root + ) + self.supplementary = SupplementaryTree( + self.project_dir / "02_supplementary", git_root=self.git_root + ) + self.revision = RevisionTree( + self.project_dir / "03_revision", git_root=self.git_root + ) + self.scripts = ScriptsTree(self.project_dir / "scripts", git_root=self.git_root) + + logger.info(f"Writer: Initialization complete for {self.project_name}")
+ + + def _attach_or_create_project(self, name: Optional[str] = None) -> Path: + """ + Create new project or attach to existing one. + + If project directory doesn't exist, creates it based on git_strategy: + - 'child': Full template with git initialization + - 'parent'/'None': Minimal directory structure + + Parameters + ---------- + name : str, optional + Project name (used if creating new project). + + Returns + ------- + Path + Path to the project directory. + """ + if self.project_dir.exists(): + logger.info( + f"Writer: Attached to existing project at {self.project_dir.absolute()}" + ) + # Verify existing project structure + self._verify_project_structure() + return self.project_dir + + project_name = name or self.project_dir.name + + logger.info( + f"Writer: Creating new project '{project_name}' at {self.project_dir.absolute()}" + ) + + # Initialize project directory structure + success = clone_writer_project( + str(self.project_dir), self.git_strategy, self.branch, self.tag + ) + + if not success: + logger.error( + f"Writer: Failed to initialize project directory for {project_name}" + ) + raise RuntimeError( + f"Could not create project directory at {self.project_dir}" + ) + + # Verify project directory was created + if not self.project_dir.exists(): + logger.error( + f"Writer: Project directory {self.project_dir} was not created" + ) + raise RuntimeError(f"Project directory {self.project_dir} was not created") + + logger.info( + f"Writer: Successfully created project at {self.project_dir.absolute()}" + ) + return self.project_dir + + def _verify_project_structure(self) -> None: + """ + Verify attached project has expected structure. + + Checks: + - Required directories exist (01_manuscript, 02_supplementary, 03_revision) + + Raises + ------ + RuntimeError + If structure is invalid. + """ + required_dirs = [ + self.project_dir / "01_manuscript", + self.project_dir / "02_supplementary", + self.project_dir / "03_revision", + ] + + for dir_path in required_dirs: + if not dir_path.exists(): + logger.error(f"Writer: Expected directory missing: {dir_path}") + raise RuntimeError( + f"Project structure invalid: missing {dir_path.name} directory" + ) + + logger.info( + f"Writer: Project structure verified at {self.project_dir.absolute()}" + ) + +
+[docs] + def compile_manuscript( + self, + timeout: int = 300, + log_callback: Optional[Callable[[str], None]] = None, + progress_callback: Optional[Callable[[int, str], None]] = None, + ) -> CompilationResult: + """ + Compile manuscript to PDF with optional live callbacks. + + Runs scripts/shell/compile_manuscript.sh with configured settings. + + Parameters + ---------- + timeout : int, optional + Maximum compilation time in seconds (default: 300). + log_callback : callable, optional + Called with each log line: log_callback("Running pdflatex..."). + progress_callback : callable, optional + Called with progress: progress_callback(50, "Pass 2/3"). + + Returns + ------- + CompilationResult + With success status, PDF path, and errors/warnings. + + Examples + -------- + >>> writer = Writer(Path("my_paper")) + >>> result = writer.compile_manuscript() + >>> if result.success: + ... print(f"PDF created: {result.output_pdf}") + """ + return compile_manuscript( + self.project_dir, + timeout=timeout, + log_callback=log_callback, + progress_callback=progress_callback, + )
+ + +
+[docs] + def compile_supplementary( + self, + timeout: int = 300, + log_callback: Optional[Callable[[str], None]] = None, + progress_callback: Optional[Callable[[int, str], None]] = None, + ) -> CompilationResult: + """ + Compile supplementary materials to PDF with optional live callbacks. + + Runs scripts/shell/compile_supplementary.sh with configured settings. + + Parameters + ---------- + timeout : int, optional + Maximum compilation time in seconds (default: 300). + log_callback : callable, optional + Called with each log line. + progress_callback : callable, optional + Called with progress updates. + + Returns + ------- + CompilationResult + With success status, PDF path, and errors/warnings. + + Examples + -------- + >>> writer = Writer(Path("my_paper")) + >>> result = writer.compile_supplementary() + >>> if result.success: + ... print(f"PDF created: {result.output_pdf}") + """ + return compile_supplementary( + self.project_dir, + timeout=timeout, + log_callback=log_callback, + progress_callback=progress_callback, + )
+ + +
+[docs] + def compile_revision( + self, + track_changes: bool = False, + timeout: int = 300, + log_callback: Optional[Callable[[str], None]] = None, + progress_callback: Optional[Callable[[int, str], None]] = None, + ) -> CompilationResult: + """ + Compile revision document with optional change tracking and live callbacks. + + Runs scripts/shell/compile_revision.sh with configured settings. + + Parameters + ---------- + track_changes : bool, optional + Enable change tracking in compiled PDF (default: False). + timeout : int, optional + Maximum compilation time in seconds (default: 300). + log_callback : callable, optional + Called with each log line. + progress_callback : callable, optional + Called with progress updates. + + Returns + ------- + CompilationResult + With success status, PDF path, and errors/warnings. + + Examples + -------- + >>> writer = Writer(Path("my_paper")) + >>> result = writer.compile_revision(track_changes=True) + >>> if result.success: + ... print(f"Revision PDF: {result.output_pdf}") + """ + return compile_revision( + self.project_dir, + track_changes=track_changes, + timeout=timeout, + log_callback=log_callback, + progress_callback=progress_callback, + )
+ + +
+[docs] + def watch(self, on_compile: Optional[Callable] = None) -> None: + """Auto-recompile on file changes.""" + watch_manuscript(self.project_dir, on_compile=on_compile)
+ + +
+[docs] + def get_pdf(self, doc_type: str = "manuscript") -> Optional[Path]: + """Get output PDF path (Read).""" + pdf = self.project_dir / DOC_TYPE_DIRS[doc_type] / f"{doc_type}.pdf" + return pdf if pdf.exists() else None
+ + +
+[docs] + def delete(self) -> bool: + """Delete project directory (Delete).""" + try: + logger.warning( + f"Writer: Deleting project directory at {self.project_dir.absolute()}" + ) + shutil.rmtree(self.project_dir) + logger.info( + f"Writer: Successfully deleted project at {self.project_dir.absolute()}" + ) + return True + except Exception as e: + logger.error( + f"Writer: Failed to delete project directory at {self.project_dir.absolute()}: {e}" + ) + return False
+
+ + + +__all__ = ["Writer"] + +# EOF +
+ +
+
+
+ +
+ +
+

© Copyright 2024-2026, Yusuke Watanabe.

+
+ + Built with Sphinx using a + theme + provided by Read the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_sources/api/index.rst.txt b/src/scitex/_sphinx_html/_sources/api/index.rst.txt new file mode 100644 index 000000000..90a12130a --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/index.rst.txt @@ -0,0 +1,33 @@ +API Reference +============= + +Auto-generated API documentation for all SciTeX modules. + +.. toctree:: + :maxdepth: 1 + + scitex.session + scitex.io + scitex.config + scitex.logging + scitex.repro + scitex.clew + scitex.stats + scitex.plt + scitex.dsp + scitex.diagram + scitex.scholar + scitex.writer + scitex.linter + scitex.ai + scitex.nn + scitex.template + scitex.decorators + scitex.introspect + scitex.pd + scitex.gen + scitex.db + scitex.dict + scitex.str + scitex.path + scitex.social diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.ai.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.ai.rst.txt new file mode 100644 index 000000000..51d7c6612 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.ai.rst.txt @@ -0,0 +1,6 @@ +scitex.ai API Reference +======================= + +.. automodule:: scitex.ai + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.clew.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.clew.rst.txt new file mode 100644 index 000000000..ff3065d6e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.clew.rst.txt @@ -0,0 +1,6 @@ +scitex.clew API Reference +========================= + +.. automodule:: scitex.clew + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.config.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.config.rst.txt new file mode 100644 index 000000000..4ae935a83 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.config.rst.txt @@ -0,0 +1,6 @@ +scitex.config API Reference +=========================== + +.. automodule:: scitex.config + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.db.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.db.rst.txt new file mode 100644 index 000000000..a4c64e9b9 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.db.rst.txt @@ -0,0 +1,6 @@ +scitex.db API Reference +======================= + +.. automodule:: scitex.db + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.decorators.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.decorators.rst.txt new file mode 100644 index 000000000..548081db2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.decorators.rst.txt @@ -0,0 +1,6 @@ +scitex.decorators API Reference +=============================== + +.. automodule:: scitex.decorators + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.diagram.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.diagram.rst.txt new file mode 100644 index 000000000..ad3798cfa --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.diagram.rst.txt @@ -0,0 +1,6 @@ +scitex.diagram API Reference +============================ + +.. automodule:: scitex.diagram + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.dict.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.dict.rst.txt new file mode 100644 index 000000000..b5da0fa0c --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.dict.rst.txt @@ -0,0 +1,6 @@ +scitex.dict API Reference +========================= + +.. automodule:: scitex.dict + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.dsp.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.dsp.rst.txt new file mode 100644 index 000000000..fdabef2c7 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.dsp.rst.txt @@ -0,0 +1,6 @@ +scitex.dsp API Reference +======================== + +.. automodule:: scitex.dsp + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.gen.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.gen.rst.txt new file mode 100644 index 000000000..571f50ac0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.gen.rst.txt @@ -0,0 +1,6 @@ +scitex.gen API Reference +======================== + +.. automodule:: scitex.gen + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.introspect.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.introspect.rst.txt new file mode 100644 index 000000000..b71918efc --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.introspect.rst.txt @@ -0,0 +1,6 @@ +scitex.introspect API Reference +=============================== + +.. automodule:: scitex.introspect + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.io.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.io.rst.txt new file mode 100644 index 000000000..a46a88560 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.io.rst.txt @@ -0,0 +1,6 @@ +scitex.io API Reference +======================= + +.. automodule:: scitex.io + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.linter.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.linter.rst.txt new file mode 100644 index 000000000..bd8389f2c --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.linter.rst.txt @@ -0,0 +1,6 @@ +scitex.linter +============= + +.. automodule:: scitex.linter + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.logging.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.logging.rst.txt new file mode 100644 index 000000000..c8a959ecf --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.logging.rst.txt @@ -0,0 +1,6 @@ +scitex.logging API Reference +============================ + +.. automodule:: scitex.logging + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.nn.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.nn.rst.txt new file mode 100644 index 000000000..04e12a48d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.nn.rst.txt @@ -0,0 +1,6 @@ +scitex.nn API Reference +======================= + +.. automodule:: scitex.nn + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.path.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.path.rst.txt new file mode 100644 index 000000000..e42beebb5 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.path.rst.txt @@ -0,0 +1,6 @@ +scitex.path API Reference +========================= + +.. automodule:: scitex.path + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.pd.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.pd.rst.txt new file mode 100644 index 000000000..d8d37568e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.pd.rst.txt @@ -0,0 +1,6 @@ +scitex.pd API Reference +======================= + +.. automodule:: scitex.pd + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.plt.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.plt.rst.txt new file mode 100644 index 000000000..61b6c8a21 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.plt.rst.txt @@ -0,0 +1,12 @@ +scitex.plt API Reference +======================== + +.. note:: + + ``scitex.plt`` wraps matplotlib with data-tracking axes. The plotting API + is migrating to `figrecipe `_. + See :doc:`/modules/plt` for usage documentation. + +.. automodule:: scitex.plt + :members: subplots + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.repro.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.repro.rst.txt new file mode 100644 index 000000000..e708e5279 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.repro.rst.txt @@ -0,0 +1,6 @@ +scitex.repro API Reference +========================== + +.. automodule:: scitex.repro + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.scholar.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.scholar.rst.txt new file mode 100644 index 000000000..a31146632 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.scholar.rst.txt @@ -0,0 +1,6 @@ +scitex.scholar API Reference +============================ + +.. automodule:: scitex.scholar + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.session.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.session.rst.txt new file mode 100644 index 000000000..ababb2fdd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.session.rst.txt @@ -0,0 +1,8 @@ +scitex.session API Reference +============================ + +.. automodule:: scitex.session + :members: + :no-undoc-members: + :show-inheritance: + :exclude-members: _InjectedSentinel diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.social.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.social.rst.txt new file mode 100644 index 000000000..e6ba5dc39 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.social.rst.txt @@ -0,0 +1,6 @@ +scitex.social API Reference +=========================== + +.. automodule:: scitex.social + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.stats.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.stats.rst.txt new file mode 100644 index 000000000..c816a97be --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.stats.rst.txt @@ -0,0 +1,6 @@ +scitex.stats API Reference +========================== + +.. automodule:: scitex.stats + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.str.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.str.rst.txt new file mode 100644 index 000000000..436f10973 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.str.rst.txt @@ -0,0 +1,6 @@ +scitex.str API Reference +======================== + +.. automodule:: scitex.str + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.template.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.template.rst.txt new file mode 100644 index 000000000..be04bf7e3 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.template.rst.txt @@ -0,0 +1,6 @@ +scitex.template API Reference +============================= + +.. automodule:: scitex.template + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/api/scitex.writer.rst.txt b/src/scitex/_sphinx_html/_sources/api/scitex.writer.rst.txt new file mode 100644 index 000000000..d32944356 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/api/scitex.writer.rst.txt @@ -0,0 +1,6 @@ +scitex.writer +============= + +.. automodule:: scitex.writer + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/core_concepts.rst.txt b/src/scitex/_sphinx_html/_sources/core_concepts.rst.txt new file mode 100644 index 000000000..4484557c4 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/core_concepts.rst.txt @@ -0,0 +1,181 @@ +Core Concepts +============= + +Research Workflow +----------------- + +SciTeX covers the full research pipeline, from literature review to publication: + +.. image:: _static/workflow.png + :width: 100% + :alt: Research workflow: Question → Literature → Data → Analysis → Figures → Manuscript → Verify → Publication + +Each stage maps to a SciTeX module. The ``@stx.session`` decorator ties them +together, ensuring every step is reproducible and provenance-tracked. + +Architecture +------------ + +SciTeX is organized around a simple principle: every research script should be +a reproducible, self-documenting unit of work. The ``@stx.session`` decorator +enforces this by managing outputs, logging, and configuration automatically. + +.. image:: _static/architecture.png + :width: 100% + :alt: Module architecture: Experiment (session, config, io, logging, repro), Analysis & Visualization (stats, dsp, plt, diagram), Publication (scholar, writer, clew) + +Modules are grouped into three layers -- **Experiment** infrastructure (blue), +**Analysis & Visualization** tools (orange), and **Publication** (purple). +See :doc:`modules/index` for the full module reference. + +The Session Model +----------------- + +``@stx.session`` is the core abstraction. It wraps a function and provides: + +1. **Output directory**: ``script_out/FINISHED_SUCCESS//`` +2. **Logging**: All stdout/stderr captured to ``script.log`` +3. **Config injection**: YAML files from ``./config/`` merged and injected +4. **CLI generation**: Function parameters become ``--flags`` +5. **Provenance**: File hashes recorded to SQLite for reproducibility + +.. code-block:: python + + import scitex as stx + + @stx.session + def main( + lr=0.001, # --lr 0.01 + epochs=100, # --epochs 50 + CONFIG=stx.INJECTED, # from ./config/*.yaml + plt=stx.INJECTED, # pre-configured matplotlib + logger=stx.INJECTED, # session logger + ): + """Train a model. Docstring becomes --help text.""" + logger.info(f"Training with lr={lr}, epochs={epochs}") + + # stx.io.save paths are relative to session output dir + stx.io.save({"lr": lr, "epochs": epochs}, "params.yaml") + + return 0 + +Session output tree: + +.. code-block:: text + + train_out/ + ├── RUNNING/ # while script runs + │ └── 20260213_143022_AB12/ + │ ├── params.yaml + │ └── train.log + └── FINISHED_SUCCESS/ # after successful exit + └── 20260213_143022_AB12/ # moved here on completion + ├── params.yaml + └── train.log + +Universal I/O +------------- + +``stx.io.save`` and ``stx.io.load`` dispatch on file extension: + +.. list-table:: + :header-rows: 1 + + * - Extension + - Data Type + - Backend + * - ``.csv`` + - DataFrame + - pandas + * - ``.npy``, ``.npz`` + - ndarray + - numpy + * - ``.pkl``, ``.pickle`` + - any object + - pickle + * - ``.yaml``, ``.yml`` + - dict + - PyYAML + * - ``.json`` + - dict/list + - json + * - ``.png``, ``.jpg``, ``.svg``, ``.pdf`` + - Figure + - matplotlib + * - ``.hdf5``, ``.h5`` + - dict/array + - h5py + * - ``.mat`` + - dict + - scipy.io + * - ``.pth``, ``.pt`` + - state_dict + - torch + * - ``.parquet`` + - DataFrame + - pyarrow + +When saving a matplotlib Figure, SciTeX also exports: + +- A ``.csv`` with the plotted data (extracted from axes) +- A ``.yaml`` recipe for reproducing the figure + +Provenance Tracking (Clew) +-------------------------- + +Inside ``@stx.session``, every ``stx.io.save`` and ``stx.io.load`` call +records the file's SHA-256 hash to a local SQLite database. This enables: + +- **Verification**: Check if output files have been modified since creation +- **DAG reconstruction**: Trace which inputs produced which outputs +- **Cross-session linking**: If script B loads a file that script A produced, + the parent-child relationship is recorded automatically + +.. code-block:: bash + + # Check verification status + scitex clew status + + # Verify a specific session + scitex clew run + + # Generate a dependency diagram + scitex clew mermaid + +Configuration +------------- + +SciTeX uses a priority-based config system: + +1. **CLI flags** (highest priority): ``--lr 0.01`` +2. **Config files**: ``./config/*.yaml`` (merged alphabetically) +3. **Function defaults** (lowest priority): ``lr=0.001`` + +.. code-block:: yaml + + # config/experiment.yaml + DATA_DIR: ./data + MODEL: + hidden_size: 256 + dropout: 0.1 + + # config/PATH.yaml + OUTPUT_DIR: ${HOME}/results # env var substitution + +Access in code: + +.. code-block:: python + + @stx.session + def main(CONFIG=stx.INJECTED, **kw): + data_dir = CONFIG["DATA_DIR"] + hidden = CONFIG["MODEL"]["hidden_size"] + +Best Practices +-------------- + +1. **One session per script**: Each ``.py`` file should have one ``@stx.session`` function +2. **Use relative paths in save/load**: They resolve relative to the session output directory +3. **Return 0 for success**: The exit code determines the output directory name (``FINISHED_SUCCESS`` vs ``FINISHED_ERROR``) +4. **Put config in** ``./config/*.yaml``: Keeps parameters separate from code +5. **Use** ``stx.repro.fix_seeds(42)`` **for determinism**: Fixes numpy, torch, random seeds in one call diff --git a/src/scitex/_sphinx_html/_sources/gallery.rst.txt b/src/scitex/_sphinx_html/_sources/gallery.rst.txt new file mode 100644 index 000000000..9afe7c776 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/gallery.rst.txt @@ -0,0 +1,206 @@ +Plot Gallery +============ + +``stx.plt`` wraps matplotlib axes with data-tracking methods. +All ``plot_*`` methods record data for automatic CSV export. + +Generate the full gallery locally: + +.. code-block:: python + + import scitex as stx + stx.plt.gallery.generate(output_dir="./gallery") + +Line Plots +---------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/line/stx_line.png + :width: 100% + + ``ax.plot_line(x, y)`` + + - .. figure:: _static/gallery/line/stx_shaded_line.png + :width: 100% + + ``ax.plot_shaded_line(x, y_mean, y_std)`` + + * - .. figure:: _static/gallery/line/plot.png + :width: 100% + + ``ax.plot(x, y)`` (standard matplotlib) + + - .. figure:: _static/gallery/line/step.png + :width: 100% + + ``ax.step(x, y)`` + +Statistical Plots +----------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/statistical/stx_mean_std.png + :width: 100% + + ``ax.plot_mean_std(groups)`` + + - .. figure:: _static/gallery/statistical/stx_mean_ci.png + :width: 100% + + ``ax.plot_mean_ci(groups)`` + + * - .. figure:: _static/gallery/statistical/stx_median_iqr.png + :width: 100% + + ``ax.plot_median_iqr(groups)`` + + - .. figure:: _static/gallery/statistical/stx_errorbar.png + :width: 100% + + ``ax.plot_errorbar(x, y, yerr)`` + +Distribution Plots +------------------ + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/distribution/stx_kde.png + :width: 100% + + ``ax.plot_kde(data)`` + + - .. figure:: _static/gallery/distribution/stx_ecdf.png + :width: 100% + + ``ax.plot_ecdf(data)`` + + * - .. figure:: _static/gallery/distribution/stx_joyplot.png + :width: 100% + + ``ax.plot_joyplot(groups)`` + + - .. figure:: _static/gallery/distribution/hist.png + :width: 100% + + ``ax.hist(data)`` + +Categorical Plots +----------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/categorical/stx_violin.png + :width: 100% + + ``ax.plot_violin(groups)`` + + - .. figure:: _static/gallery/categorical/stx_box.png + :width: 100% + + ``ax.plot_box(groups)`` + + * - .. figure:: _static/gallery/categorical/stx_bar.png + :width: 100% + + ``ax.plot_bar(labels, values)`` + + - .. figure:: _static/gallery/categorical/stx_barh.png + :width: 100% + + ``ax.plot_barh(labels, values)`` + +Scatter Plots +------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/scatter/stx_scatter.png + :width: 100% + + ``ax.plot_scatter(x, y)`` + + - .. figure:: _static/gallery/scatter/scatter.png + :width: 100% + + ``ax.scatter(x, y)`` (standard matplotlib) + +Heatmaps and Grids +------------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/grid/stx_heatmap.png + :width: 100% + + ``ax.plot_heatmap(matrix)`` + + - .. figure:: _static/gallery/grid/stx_conf_mat.png + :width: 100% + + ``ax.plot_conf_mat(cm)`` + + * - .. figure:: _static/gallery/grid/stx_image.png + :width: 100% + + ``ax.plot_image(img)`` + + - .. figure:: _static/gallery/grid/stx_imshow.png + :width: 100% + + ``ax.plot_imshow(data)`` + +Area Plots +---------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/area/stx_fill_between.png + :width: 100% + + ``ax.plot_fill_between(x, y1, y2)`` + + - .. figure:: _static/gallery/area/stx_fillv.png + :width: 100% + + ``ax.plot_fillv(x_start, x_end)`` + +Special Plots +------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/special/stx_raster.png + :width: 100% + + ``ax.plot_raster(spike_times)`` + + - .. figure:: _static/gallery/special/stx_rectangle.png + :width: 100% + + ``ax.plot_rectangle(xy, w, h)`` + +Contour and Vector Plots +------------------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/contour/stx_contour.png + :width: 100% + + ``ax.plot_contour(x, y, z)`` + + - .. figure:: _static/gallery/vector/quiver.png + :width: 100% + + ``ax.quiver(x, y, u, v)`` diff --git a/src/scitex/_sphinx_html/_sources/index.rst.txt b/src/scitex/_sphinx_html/_sources/index.rst.txt new file mode 100644 index 000000000..e8dcdd7b0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/index.rst.txt @@ -0,0 +1,78 @@ +.. SciTeX documentation master file + +SciTeX -- Modular Python Toolkit for Researchers and AI Agents +============================================================= + +A Python framework for reproducible scientific research. + +.. image:: _static/workflow.png + :alt: SciTeX Ecosystem + :align: center + :width: 800px + +Role in SciTeX Ecosystem +------------------------ + +``scitex`` is the **unified orchestrator** package. It re-exports from sub-packages +so users have a single import (``import scitex``). It does not contain runtime logic +itself -- it delegates to sub-packages. + +.. code-block:: text + + scitex (this package) -- orchestrator, templates, CLI, MCP server + |-- scitex.app <- scitex-app (runtime SDK: file I/O, config, validation) + |-- scitex.ui <- scitex-ui (React/TS components: workspace, data-table) + +-- scitex.plt <- figrecipe (figures: plotting, diagrams, recipes) + +- **scitex-app** (`docs `_): Runtime SDK that apps import at execution time +- **scitex-ui** (`docs `_): Shared React/TypeScript component library +- **figrecipe** (`docs `_): Reference app -- figures, diagrams, recipes + +Four Freedoms for Research +-------------------------- + +0. The freedom to **run** your research anywhere -- your machine, your terms. +1. The freedom to **study** how every step works -- from raw data to final manuscript. +2. The freedom to **redistribute** your workflows, not just your papers. +3. The freedom to **modify** any module and share improvements with the community. + +AGPL-3.0 -- because research infrastructure deserves the same freedoms as the software it runs on. + +.. code-block:: python + + import scitex as stx + + @stx.session + def main(n_samples=100, plt=stx.INJECTED): + import numpy as np + x = np.linspace(0, 2 * np.pi, n_samples) + y = np.sin(x) + np.random.normal(0, 0.1, n_samples) + + fig, ax = plt.subplots() + ax.plot_line(x, y) + stx.io.save(fig, "sine.png") # PNG + CSV + YAML recipe + return 0 + +- ``@stx.session`` -- Reproducible runs with CLI, config, and provenance tracking +- ``stx.io`` -- Save/load 30+ formats through a single interface +- ``stx.plt`` -- Publication figures with auto CSV data export +- ``stx.stats`` -- 23 statistical tests with effect sizes and CI +- ``stx.scholar`` -- Search, download, and enrich papers +- 120+ MCP tools for AI-assisted research workflows + +.. toctree:: + :maxdepth: 2 + :caption: Getting Started + + modules/index + installation + quickstart + core_concepts + gallery + +.. toctree:: + :maxdepth: 1 + :caption: API Reference + :hidden: + + api/index diff --git a/src/scitex/_sphinx_html/_sources/installation.rst.txt b/src/scitex/_sphinx_html/_sources/installation.rst.txt new file mode 100644 index 000000000..5b692ce9f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/installation.rst.txt @@ -0,0 +1,166 @@ +Installation +============ + +Requirements +------------ + +- **Python 3.10+** +- ``uv`` (strongly recommended) — install with ``pip install uv`` or + ``curl -LsSf https://astral.sh/uv/install.sh | sh`` +- ``pip`` 21+ also works, but expect 30–90 min for ``scitex[all]`` + (see warning below) + + +.. warning:: + + ``pip install "scitex[all]"`` typically takes **30–90 minutes** because + pip's serial resolver walks version histories of the large transitive + dependency set (numpy/pandas/torch/jax/playwright/openalex-local/…). + Use **uv** instead — it resolves the same set in parallel in **1–3 + minutes**. Every ``pip install`` line on this page also works as + ``uv pip install`` and we recommend the uv form. + + +Core Install +------------ + +The base package pulls in only lightweight dependencies and gives you access +to session management, path utilities, string helpers, and the module +discovery system. + +.. code-block:: bash + + uv pip install scitex # recommended + pip install scitex # also works, slower for [all] + + +Recommended: Install Everything +------------------------------- + +If you want the full experience (plotting, statistics, I/O, scholar, writer, +and every other module): + +.. code-block:: bash + + uv pip install "scitex[all]" # ~3 min + pip install "scitex[all]" # ~30–90 min (resolver thrash) + + +Research Workflow +----------------- + +For a typical research project you need figures, statistics, and literature +search but not audio, browser automation, or cloud tools: + +.. code-block:: bash + + pip install "scitex[plt,stats,scholar]" + + +Per-Module Extras +----------------- + +Install only what you need. Each extra maps to a self-contained capability. + +.. list-table:: + :header-rows: 1 + :widths: 15 55 + + * - Extra + - Description + * - ``plt`` + - Publication-ready figures via figrecipe (matplotlib, seaborn, Pillow) + * - ``stats`` + - Hypothesis testing, effect sizes, power analysis (scitex-stats, scipy, statsmodels) + * - ``io`` + - Unified I/O for 40+ formats (HDF5, Excel, YAML, PDF, images, ...) + * - ``scholar`` + - Literature search and PDF management (CrossRef, OpenAlex, Semantic Scholar) + * - ``writer`` + - LaTeX manuscript compilation, BibTeX management, Overleaf export + * - ``audio`` + - Text-to-speech and audio utilities (scitex-audio) + * - ``ai`` + - LLM APIs (OpenAI, Anthropic, Google, Groq) and ML tools (scikit-learn) + * - ``browser`` + - Web automation via Playwright + * - ``capture`` + - Screenshot capture (mss, Playwright) + * - ``dataset`` + - Scientific dataset access (DANDI, OpenNeuro, PhysioNet) + * - ``cloud`` + - Cloud integration utilities + * - ``app`` + - Unified file storage SDK (scitex-app) + * - ``session`` + - Session decorator with reproducibility logging + * - ``diagram`` + - Diagram generation (Mermaid, Graphviz) + * - ``db`` + - Database access (SQLAlchemy, PostgreSQL) + * - ``cv`` + - Computer vision (OpenCV, Pillow) + * - ``dsp`` + - Digital signal processing (scipy, tensorpac) + * - ``social`` + - Social media posting (socialia) + * - ``tunnel`` + - SSH tunnel management (scitex-tunnel) + * - ``all`` + - Everything above + + +Example combinations: + +.. code-block:: bash + + # Neuroscience analysis + pip install "scitex[plt,stats,dsp,dataset]" + + # Paper writing + pip install "scitex[writer,scholar,plt]" + + # AI agent development + pip install "scitex[ai,browser,capture]" + + +Development Install +------------------- + +Clone the repository and install in editable mode with development tools: + +.. code-block:: bash + + git clone https://github.com/ywatanabe1989/scitex-python.git + cd scitex-python + pip install -e ".[dev]" + +The ``dev`` extra includes pytest, ruff, mypy, Sphinx, and build tools. + +Using uv (recommended) +^^^^^^^^^^^^^^^^^^^^^^^ + +`uv `_ resolves and installs dependencies +in parallel from a Rust resolver — roughly 10–30× faster than pip on +``scitex[all]`` (3 min vs. 30–90 min). Install it once with +``pip install uv`` (or the standalone shell installer), then prefix +every install command on this page with ``uv``: + +.. code-block:: bash + + uv pip install -e ".[dev]" + + +Verifying the Installation +-------------------------- + +.. code-block:: python + + import scitex as stx + print(stx.__version__) + +To check which optional modules are available: + +.. code-block:: python + + stx.usage.list() diff --git a/src/scitex/_sphinx_html/_sources/modules/ai.rst.txt b/src/scitex/_sphinx_html/_sources/modules/ai.rst.txt new file mode 100644 index 000000000..b1f49f0c2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/ai.rst.txt @@ -0,0 +1,81 @@ +AI Module (``stx.ai``) +====================== + +Machine learning utilities for training, classification, and metrics +with PyTorch and scikit-learn. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Training utilities + from scitex.ai import LearningCurveLogger, EarlyStopping + + logger = LearningCurveLogger() + stopper = EarlyStopping(patience=10, direction="minimize") + + for epoch in range(100): + # ... training loop ... + logger({"loss": loss, "acc": acc}, step="Training") + if stopper(val_loss, {"model": model_path}, epoch): + break + + logger.plot_learning_curves(spath="curves.png") + + # Classification + from scitex.ai import ClassificationReporter, Classifier + + clf = Classifier()("SVC") + reporter = ClassificationReporter(output_dir="./results") + reporter.calculate_metrics(y_true, y_pred, y_proba) + reporter.save_summary() + +Training +-------- + +- ``LearningCurveLogger`` -- Track and visualize training/validation/test metrics across epochs +- ``EarlyStopping`` -- Monitor validation metrics and stop when improvement plateaus + +Classification +-------------- + +- ``ClassificationReporter`` -- Unified reporter for single/multi-task classification (balanced accuracy, MCC, ROC-AUC, confusion matrices) +- ``Classifier`` -- Factory for scikit-learn classifiers (SVC, KNN, Logistic Regression, AdaBoost, ...) +- ``CrossValidationExperiment`` -- Cross-validation framework + +Metrics +------- + +Standardized ``calc_*`` functions: + +- ``calc_bacc`` -- Balanced accuracy +- ``calc_mcc`` -- Matthews Correlation Coefficient +- ``calc_conf_mat`` -- Confusion matrix +- ``calc_roc_auc`` -- ROC-AUC score +- ``calc_pre_rec_auc`` -- Precision-Recall AUC +- ``calc_feature_importance`` -- Feature importance scores + +Visualization +------------- + +- ``plot_learning_curve`` -- Training/validation curves +- ``stx_conf_mat`` -- Confusion matrix heatmap +- ``plot_roc_curve`` -- ROC curve +- ``plot_pre_rec_curve`` -- Precision-Recall curve +- ``plot_feature_importance`` -- Feature importance bar plots + +Other +----- + +- ``MultiTaskLoss`` -- Multi-task learning loss weighting +- ``get_optimizer`` / ``set_optimizer`` -- Optimizer management +- ``GenAI`` -- Generative AI wrapper (lazy-loaded) +- Clustering: ``pca``, ``umap`` + +API Reference +------------- + +See :doc:`/api/scitex.ai` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/app.rst.txt b/src/scitex/_sphinx_html/_sources/modules/app.rst.txt new file mode 100644 index 000000000..4b03e4a06 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/app.rst.txt @@ -0,0 +1,4 @@ +app Module (``stx.app``) +======================== + +See :doc:`/api/scitex.app` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/audio.rst.txt b/src/scitex/_sphinx_html/_sources/modules/audio.rst.txt new file mode 100644 index 000000000..eaf9823f8 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/audio.rst.txt @@ -0,0 +1,4 @@ +audio Module (``stx.audio``) +============================ + +See :doc:`/api/scitex.audio` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/audit.rst.txt b/src/scitex/_sphinx_html/_sources/modules/audit.rst.txt new file mode 100644 index 000000000..ca8e0bcdc --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/audit.rst.txt @@ -0,0 +1,4 @@ +audit Module (``stx.audit``) +============================ + +See :doc:`/api/scitex.audit` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/benchmark.rst.txt b/src/scitex/_sphinx_html/_sources/modules/benchmark.rst.txt new file mode 100644 index 000000000..10c989b1e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/benchmark.rst.txt @@ -0,0 +1,4 @@ +benchmark Module (``stx.benchmark``) +==================================== + +See :doc:`/api/scitex.benchmark` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/bridge.rst.txt b/src/scitex/_sphinx_html/_sources/modules/bridge.rst.txt new file mode 100644 index 000000000..12fe2d373 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/bridge.rst.txt @@ -0,0 +1,4 @@ +bridge Module (``stx.bridge``) +============================== + +See :doc:`/api/scitex.bridge` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/browser.rst.txt b/src/scitex/_sphinx_html/_sources/modules/browser.rst.txt new file mode 100644 index 000000000..d8ab6222e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/browser.rst.txt @@ -0,0 +1,4 @@ +browser Module (``stx.browser``) +================================ + +See :doc:`/api/scitex.browser` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/canvas.rst.txt b/src/scitex/_sphinx_html/_sources/modules/canvas.rst.txt new file mode 100644 index 000000000..bd92b96bc --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/canvas.rst.txt @@ -0,0 +1,4 @@ +canvas Module (``stx.canvas``) +============================== + +See :doc:`/api/scitex.canvas` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/capture.rst.txt b/src/scitex/_sphinx_html/_sources/modules/capture.rst.txt new file mode 100644 index 000000000..ced769f55 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/capture.rst.txt @@ -0,0 +1,4 @@ +capture Module (``stx.capture``) +================================ + +See :doc:`/api/scitex.capture` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/clew.rst.txt b/src/scitex/_sphinx_html/_sources/modules/clew.rst.txt new file mode 100644 index 000000000..8dbe05f85 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/clew.rst.txt @@ -0,0 +1,93 @@ +Clew Module (``stx.clew``) +========================== + +Hash-based provenance tracking for reproducible science. Clew (Ariadne's +thread) records file hashes during ``@stx.session`` runs and traces +dependency chains back to source. + +How It Works +------------ + +1. ``@stx.session`` starts a tracking session +2. ``stx.io.load()`` records input file hashes +3. ``stx.io.save()`` records output file hashes +4. Session close computes a combined hash of all inputs/outputs +5. Later, ``stx.clew`` can verify nothing has changed + +.. code-block:: python + + import scitex as stx + + # Automatic -- just use @stx.session + stx.io + @stx.session + def main(): + data = stx.io.load("input.csv") # Tracked as input + result = process(data) + stx.io.save(result, "output.png") # Tracked as output + return 0 + + # Verify later + stx.clew.status() # Like git status + stx.clew.run("session_id") # Verify by hash + stx.clew.chain("output.png") # Trace to source + +CLI Commands +------------ + +.. code-block:: bash + + scitex clew status # Show changed files + scitex clew list # List all tracked runs + scitex clew run # Verify a specific run + scitex clew chain # Trace dependency chain + scitex clew stats # Database statistics + +Verification Levels +------------------- + +- **CACHE** -- Hash comparison only (fast). Checks if files match stored hashes. +- **RERUN** -- Re-execute scripts and compare outputs (thorough). Catches logic errors. + +.. code-block:: python + + # Fast: hash comparison + result = stx.clew.run("session_id") + + # Thorough: re-execute and compare + result = stx.clew.run("session_id", from_scratch=True) + +Dependency Chains +----------------- + +Clew traces ``parent_session`` links to build a DAG from final output +back to original source: + +.. code-block:: python + + chain = stx.clew.chain("final_figure.png") + # Shows: source.py → intermediate.csv → analysis.py → final_figure.png + + # Visualize as Mermaid DAG + stx.clew.mermaid("session_id") + +Verification Statuses +--------------------- + +- ``VERIFIED`` -- Files match expected hashes +- ``MISMATCH`` -- Files differ from stored hashes +- ``MISSING`` -- Files no longer exist +- ``UNKNOWN`` -- No prior tracking data + +Key Functions +------------- + +- ``status()`` -- Show changed items (like ``git status``) +- ``run(session_id)`` -- Verify a specific run +- ``chain(target_file)`` -- Trace dependency chain +- ``list_runs(limit, status)`` -- List tracked runs +- ``stats()`` -- Database statistics + +API Reference +------------- + +See :doc:`/api/scitex.clew` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/cli.rst.txt b/src/scitex/_sphinx_html/_sources/modules/cli.rst.txt new file mode 100644 index 000000000..c785b8f32 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/cli.rst.txt @@ -0,0 +1,4 @@ +cli Module (``stx.cli``) +======================== + +See :doc:`/api/scitex.cli` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/cloud.rst.txt b/src/scitex/_sphinx_html/_sources/modules/cloud.rst.txt new file mode 100644 index 000000000..f6b08e85f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/cloud.rst.txt @@ -0,0 +1,4 @@ +cloud Module (``stx.cloud``) +============================ + +See :doc:`/api/scitex.cloud` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/compat.rst.txt b/src/scitex/_sphinx_html/_sources/modules/compat.rst.txt new file mode 100644 index 000000000..7977c33bc --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/compat.rst.txt @@ -0,0 +1,4 @@ +compat Module (``stx.compat``) +============================== + +See :doc:`/api/scitex.compat` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/config.rst.txt b/src/scitex/_sphinx_html/_sources/modules/config.rst.txt new file mode 100644 index 000000000..dbdcb26ac --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/config.rst.txt @@ -0,0 +1,87 @@ +Config Module (``stx.config``) +=============================== + +YAML-based configuration with priority resolution and path management. + +Priority Resolution +------------------- + +All config values follow the same precedence: + +.. code-block:: text + + direct argument > config/YAML > environment variable > default + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Get global config (reads ~/.scitex/config.yaml) + config = stx.config.get_config() + + # Resolve with precedence + log_level = config.resolve("logging.level", default="INFO") + # Checks: direct → YAML → SCITEX_LOGGING_LEVEL env → "INFO" + + # Access nested values + config.get_nested("scholar", "crossref_email") + + # Path management + paths = stx.config.get_paths() + paths.scholar # ~/.scitex/scholar + paths.cache # ~/.scitex/cache + +YAML Configuration +------------------ + +.. code-block:: yaml + + # ~/.scitex/config.yaml (or ./config/*.yaml for projects) + logging: + level: INFO + + scholar: + crossref_email: ${CROSSREF_EMAIL:-user@example.com} + +Environment variable substitution with ``${VAR:-default}`` syntax is +supported in YAML files. + +Key Classes +----------- + +- ``ScitexConfig`` -- YAML-based config with env var substitution and precedence resolution +- ``PriorityConfig`` -- Dict-based config resolver for programmatic use +- ``ScitexPaths`` -- Centralized path manager (all paths derive from ``~/.scitex/``) +- ``EnvVar`` -- Environment variable definition dataclass + +Path Management +--------------- + +``ScitexPaths`` manages all SciTeX directories: + +.. code-block:: python + + paths = stx.config.get_paths() + paths.base # ~/.scitex (SCITEX_DIR) + paths.logs # ~/.scitex/logs + paths.cache # ~/.scitex/cache + paths.scholar # ~/.scitex/scholar + paths.rng # ~/.scitex/rng + paths.capture # ~/.scitex/capture + +Utility Functions +----------------- + +- ``get_config(path)`` -- Get singleton ScitexConfig instance +- ``get_paths(base_dir)`` -- Get singleton ScitexPaths instance +- ``load_yaml(path)`` -- Load YAML with env var substitution +- ``load_dotenv(path)`` -- Load ``.env`` file +- ``get_scitex_dir()`` -- Get SCITEX_DIR with precedence + +API Reference +------------- + +See :doc:`/api/scitex.config` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/container.rst.txt b/src/scitex/_sphinx_html/_sources/modules/container.rst.txt new file mode 100644 index 000000000..60631f757 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/container.rst.txt @@ -0,0 +1,4 @@ +container Module (``stx.container``) +==================================== + +See :doc:`/api/scitex.container` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/context.rst.txt b/src/scitex/_sphinx_html/_sources/modules/context.rst.txt new file mode 100644 index 000000000..fe6009e47 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/context.rst.txt @@ -0,0 +1,4 @@ +context Module (``stx.context``) +================================ + +See :doc:`/api/scitex.context` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/cv.rst.txt b/src/scitex/_sphinx_html/_sources/modules/cv.rst.txt new file mode 100644 index 000000000..3de4145dd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/cv.rst.txt @@ -0,0 +1,4 @@ +cv Module (``stx.cv``) +====================== + +See :doc:`/api/scitex.cv` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/dataset.rst.txt b/src/scitex/_sphinx_html/_sources/modules/dataset.rst.txt new file mode 100644 index 000000000..35b8c8c4c --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/dataset.rst.txt @@ -0,0 +1,4 @@ +dataset Module (``stx.dataset``) +================================ + +See :doc:`/api/scitex.dataset` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/datetime.rst.txt b/src/scitex/_sphinx_html/_sources/modules/datetime.rst.txt new file mode 100644 index 000000000..915d124e1 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/datetime.rst.txt @@ -0,0 +1,4 @@ +datetime Module (``stx.datetime``) +================================== + +See :doc:`/api/scitex.datetime` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/db.rst.txt b/src/scitex/_sphinx_html/_sources/modules/db.rst.txt new file mode 100644 index 000000000..c961228cb --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/db.rst.txt @@ -0,0 +1,4 @@ +db Module (``stx.db``) +====================== + +See :doc:`/api/scitex.db` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/decorators.rst.txt b/src/scitex/_sphinx_html/_sources/modules/decorators.rst.txt new file mode 100644 index 000000000..960b6ad6d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/decorators.rst.txt @@ -0,0 +1,79 @@ +Decorators Module (``stx.decorators``) +======================================= + +Function decorators for type conversion, batching, caching, and more. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.decorators import torch_fn, batch_fn, cache_disk, timeout + + @torch_fn + def process(x): + """Auto-converts inputs to torch tensors, outputs back.""" + return x * 2 + + @batch_fn + def predict(data, batch_size=32): + """Process data in batches with progress bar.""" + return model(data) + + @cache_disk + def expensive_computation(params): + """Results cached to disk for reuse.""" + return heavy_compute(params) + + @timeout(seconds=30) + def risky_call(): + """Raises TimeoutError if exceeds 30s.""" + return external_api() + +Type Conversion +--------------- + +Auto-convert between data frameworks: + +- ``@torch_fn`` -- Inputs to PyTorch tensors, outputs back to original type +- ``@numpy_fn`` -- Inputs to NumPy arrays +- ``@pandas_fn`` -- Inputs to pandas objects +- ``@xarray_fn`` -- Inputs to xarray objects + +Batch Processing +---------------- + +- ``@batch_fn`` -- Split input into batches with tqdm progress +- ``@batch_numpy_fn`` -- NumPy conversion + batching +- ``@batch_torch_fn`` -- PyTorch conversion + batching +- ``@batch_pandas_fn`` -- Pandas conversion + batching + +Caching +------- + +- ``@cache_mem`` -- In-memory function result caching +- ``@cache_disk`` -- Persistent disk-based caching +- ``@cache_disk_async`` -- Async disk caching + +Utilities +--------- + +- ``@deprecated(reason, forward_to)`` -- Mark functions as deprecated +- ``@not_implemented`` -- Mark as not yet implemented +- ``@timeout(seconds)`` -- Enforce execution time limits +- ``@preserve_doc`` -- Preserve docstrings when wrapping + +Auto-Ordering +------------- + +.. code-block:: python + + from scitex.decorators import enable_auto_order + + enable_auto_order() + # Now decorators are applied in optimal order regardless of code order + +API Reference +------------- + +See :doc:`/api/scitex.decorators` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/dev.rst.txt b/src/scitex/_sphinx_html/_sources/modules/dev.rst.txt new file mode 100644 index 000000000..14ab092d1 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/dev.rst.txt @@ -0,0 +1,4 @@ +dev Module (``stx.dev``) +======================== + +See :doc:`/api/scitex.dev` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/diagram.rst.txt b/src/scitex/_sphinx_html/_sources/modules/diagram.rst.txt new file mode 100644 index 000000000..b1d05f528 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/diagram.rst.txt @@ -0,0 +1,98 @@ +Diagram Module (``stx.diagram``) +================================= + +Paper-optimized diagram generation with Mermaid and Graphviz backends. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.diagram import Diagram + + # Create from Python + d = Diagram(type="workflow", title="Analysis Pipeline") + d.add_node("load", "Load Data", shape="stadium") + d.add_node("proc", "Process", shape="rounded", emphasis="primary") + d.add_node("save", "Save Results", shape="stadium", emphasis="success") + d.add_edge("load", "proc") + d.add_edge("proc", "save") + + # Export + d.to_mermaid("pipeline.mmd") + d.to_graphviz("pipeline.dot") + + # Or from YAML specification + d = Diagram.from_yaml("pipeline.diagram.yaml") + +YAML Specification +------------------ + +.. code-block:: yaml + + type: workflow + title: SciTeX Analysis Pipeline + + paper: + column: single # single or double + mode: publication # draft or publication + reading_direction: left_to_right + + layout: + groups: + Input: [load, preprocess] + Analysis: [analyze, test] + + nodes: + - id: load + label: Load Data + shape: stadium + - id: analyze + label: Statistical Test + shape: rounded + emphasis: primary + + edges: + - from: load + to: analyze + +Node Shapes +------------ + +``box``, ``rounded``, ``stadium``, ``diamond``, ``circle``, ``codeblock`` + +Node Emphasis +------------- + +- ``normal`` -- Default (dark) +- ``primary`` -- Key nodes (blue) +- ``success`` -- Positive outcomes (green) +- ``warning`` -- Issues (red) +- ``muted`` -- Secondary (gray) + +Diagram Types +------------- + +- ``workflow`` -- Left-to-right sequential processes +- ``decision`` -- Top-to-bottom decision trees +- ``pipeline`` -- Data pipeline stages +- ``hierarchy`` -- Tree structures +- ``comparison`` -- Side-by-side comparison + +Paper Modes +----------- + +- **draft** -- Full arrows, medium spacing, all edges visible +- **publication** -- Tight spacing, return edges invisible, optimized for column width + +Backends +-------- + +- **Mermaid** (``.mmd``) -- Web/markdown rendering +- **Graphviz DOT** (``.dot``) -- Tighter layouts, render with ``dot -Tpng`` +- **YAML** (``.diagram.yaml``) -- Semantic spec, human/LLM-readable + +API Reference +------------- + +See :doc:`/api/scitex.diagram` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/dict.rst.txt b/src/scitex/_sphinx_html/_sources/modules/dict.rst.txt new file mode 100644 index 000000000..156005490 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/dict.rst.txt @@ -0,0 +1,4 @@ +dict Module (``stx.dict``) +========================== + +See :doc:`/api/scitex.dict` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/dsp.rst.txt b/src/scitex/_sphinx_html/_sources/modules/dsp.rst.txt new file mode 100644 index 000000000..fc502bd2b --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/dsp.rst.txt @@ -0,0 +1,74 @@ +DSP Module (``stx.dsp``) +======================== + +Digital signal processing tools for filtering, spectral analysis, +and time-frequency decomposition. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import numpy as np + + # Generate test signal + fs = 1000 # Hz + t = np.arange(0, 1, 1/fs) + signal = np.sin(2 * np.pi * 10 * t) + 0.5 * np.sin(2 * np.pi * 50 * t) + + # Filtering + filtered = stx.dsp.filt.bandpass(signal, fs=fs, low=5, high=30) + low_pass = stx.dsp.filt.lowpass(signal, fs=fs, cutoff=20) + high_pass = stx.dsp.filt.highpass(signal, fs=fs, cutoff=5) + + # Power spectral density + freqs, psd = stx.dsp.psd(signal, fs=fs) + + # Band powers + powers = stx.dsp.band_powers(signal, fs=fs, bands={ + "delta": (1, 4), + "theta": (4, 8), + "alpha": (8, 13), + "beta": (13, 30), + }) + + # Hilbert transform (analytic signal) + analytic = stx.dsp.hilbert(signal) + amplitude = np.abs(analytic) + phase = np.angle(analytic) + + # Wavelet decomposition + coeffs = stx.dsp.wavelet(signal, fs=fs, freqs=np.arange(1, 50)) + +Available Functions +------------------- + +**Filtering** (``stx.dsp.filt``) + +- ``bandpass(signal, fs, low, high)`` +- ``lowpass(signal, fs, cutoff)`` +- ``highpass(signal, fs, cutoff)`` +- ``notch(signal, fs, freq)`` + +**Spectral Analysis** + +- ``psd(signal, fs)`` -- Power spectral density +- ``band_powers(signal, fs, bands)`` -- Power in frequency bands +- ``wavelet(signal, fs, freqs)`` -- Continuous wavelet transform + +**Time-Frequency** + +- ``hilbert(signal)`` -- Analytic signal via Hilbert transform +- ``pac(signal, fs)`` -- Phase-amplitude coupling + +**Utilities** + +- ``demo_sig(fs, duration)`` -- Generate demo signals for testing +- ``crop(signal, start, end, fs)`` -- Crop signal to time range +- ``detect_ripples(signal, fs)`` -- Detect sharp-wave ripples + +API Reference +------------- + +See :doc:`/api/scitex.dsp` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/etc.rst.txt b/src/scitex/_sphinx_html/_sources/modules/etc.rst.txt new file mode 100644 index 000000000..485270b22 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/etc.rst.txt @@ -0,0 +1,4 @@ +etc Module (``stx.etc``) +======================== + +See :doc:`/api/scitex.etc` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/events.rst.txt b/src/scitex/_sphinx_html/_sources/modules/events.rst.txt new file mode 100644 index 000000000..098e8048d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/events.rst.txt @@ -0,0 +1,4 @@ +events Module (``stx.events``) +============================== + +See :doc:`/api/scitex.events` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/gen.rst.txt b/src/scitex/_sphinx_html/_sources/modules/gen.rst.txt new file mode 100644 index 000000000..48539cbe7 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/gen.rst.txt @@ -0,0 +1,36 @@ +Gen Module (``stx.gen``) +======================== + +General utilities for path management, shell commands, and system operations. + +.. note:: + + Session management has moved to ``@stx.session`` (see :doc:`/core_concepts`). + The ``scitex.gen.start()`` / ``scitex.gen.close()`` pattern is deprecated. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Timestamped output directories + path = stx.gen.mk_spath("./results") + # → ./results/20260213_143022/ + + # Run shell commands + stx.gen.run("ls -la") + + # Clipboard operations + stx.gen.copy("text to clipboard") + text = stx.gen.paste() + + # String to valid path + stx.gen.title2path("My Experiment #1") + # → "my_experiment_1" + +API Reference +------------- + +See :doc:`/api/scitex.gen` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/gists.rst.txt b/src/scitex/_sphinx_html/_sources/modules/gists.rst.txt new file mode 100644 index 000000000..1adc47fff --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/gists.rst.txt @@ -0,0 +1,4 @@ +gists Module (``stx.gists``) +============================ + +See :doc:`/api/scitex.gists` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/git.rst.txt b/src/scitex/_sphinx_html/_sources/modules/git.rst.txt new file mode 100644 index 000000000..a6a0e0d7e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/git.rst.txt @@ -0,0 +1,4 @@ +git Module (``stx.git``) +======================== + +See :doc:`/api/scitex.git` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/index.rst.txt b/src/scitex/_sphinx_html/_sources/modules/index.rst.txt new file mode 100644 index 000000000..0c60cea18 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/index.rst.txt @@ -0,0 +1,111 @@ +Module Overview +=============== + +SciTeX is organized into focused modules. +All modules are accessible via ``import scitex as stx`` followed by ``stx.``. + +.. toctree:: + :maxdepth: 2 + :caption: Core + + session + io + config + logging + repro + clew + +.. toctree:: + :maxdepth: 2 + :caption: Science & Analysis + + stats + plt + dsp + diagram + canvas + +.. toctree:: + :maxdepth: 2 + :caption: Literature & Writing + + scholar + writer + notebook + +.. toctree:: + :maxdepth: 2 + :caption: Machine Learning + + ai + nn + torch + cv + benchmark + +.. toctree:: + :maxdepth: 2 + :caption: Data & I/O + + pd + db + dataset + schema + +.. toctree:: + :maxdepth: 2 + :caption: Infrastructure + + app + cloud + container + tunnel + cli + browser + capture + audio + notify + social + +.. toctree:: + :maxdepth: 2 + :caption: Utilities + + gen + template + decorators + introspect + str + dict + path + os + sh + git + parallel + linalg + datetime + types + rng + context + resource + utils + etc + web + msword + tex + bridge + compat + module + gists + media + security + ui + dev + audit + +.. toctree:: + :maxdepth: 2 + :caption: Other + + events + project diff --git a/src/scitex/_sphinx_html/_sources/modules/introspect.rst.txt b/src/scitex/_sphinx_html/_sources/modules/introspect.rst.txt new file mode 100644 index 000000000..e7fe4fa1a --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/introspect.rst.txt @@ -0,0 +1,70 @@ +Introspect Module (``stx.introspect``) +======================================= + +IPython-like code inspection for exploring Python packages. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Function signature (like IPython's func?) + stx.introspect.q("scitex.stats.test_ttest_ind") + # → name, signature, parameters, return type + + # Full source code (like IPython's func??) + stx.introspect.qq("scitex.stats.test_ttest_ind") + # → complete source with line numbers + + # List module members (like enhanced dir()) + stx.introspect.dir("scitex.plt", filter="public", kind="functions") + + # Recursive API tree + df = stx.introspect.list_api("scitex", max_depth=2) + +IPython-Style Shortcuts +----------------------- + +- ``q(dotted_path)`` -- Signature and parameters (like ``func?``) +- ``qq(dotted_path)`` -- Full source code (like ``func??``) +- ``dir(dotted_path, filter, kind)`` -- List members with filtering + +Filters: ``"public"``, ``"private"``, ``"dunder"``, ``"all"`` + +Kinds: ``"functions"``, ``"classes"``, ``"data"``, ``"modules"`` + +Documentation +------------- + +- ``get_docstring(path, format)`` -- Extract docstrings (``"raw"``, ``"parsed"``, ``"summary"``) +- ``get_exports(path)`` -- Get ``__all__`` exports +- ``find_examples(path)`` -- Find usage examples in tests/examples + +Type Analysis +------------- + +- ``get_type_hints_detailed(path)`` -- Full type annotation analysis +- ``get_class_hierarchy(path)`` -- Inheritance tree (MRO + subclasses) +- ``get_class_annotations(path)`` -- Class variable annotations + +Code Analysis +------------- + +- ``get_imports(path, categorize)`` -- All imports (AST-based, grouped by stdlib/third-party/local) +- ``get_dependencies(path, recursive)`` -- Module dependency tree +- ``get_call_graph(path, max_depth)`` -- Function call graph (with timeout protection) + +API Tree +-------- + +.. code-block:: python + + # Generate full module tree as DataFrame + df = stx.introspect.list_api("scitex", max_depth=3, docstring=True) + +API Reference +------------- + +See :doc:`/api/scitex.introspect` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/io.rst.txt b/src/scitex/_sphinx_html/_sources/modules/io.rst.txt new file mode 100644 index 000000000..222150bb8 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/io.rst.txt @@ -0,0 +1,115 @@ +IO Module (``stx.io``) +====================== + +Universal file I/O through ``stx.io.save()`` and ``stx.io.load()``. +Format is determined by file extension. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Save + stx.io.save(data, "output.csv") # DataFrame → CSV + stx.io.save(arr, "output.npy") # ndarray → NumPy + stx.io.save(fig, "output.png") # Figure → PNG + CSV + YAML recipe + stx.io.save(obj, "output.pkl") # any object → pickle + stx.io.save(d, "output.yaml") # dict → YAML + stx.io.save(d, "output.json") # dict → JSON + + # Load + data = stx.io.load("input.csv") # → DataFrame + arr = stx.io.load("input.npy") # → ndarray + obj = stx.io.load("input.pkl") # → original object + d = stx.io.load("input.yaml") # → dict + +Supported Formats +----------------- + +.. list-table:: + :header-rows: 1 + + * - Extension + - Save Type + - Load Return + * - ``.csv`` + - DataFrame, dict, ndarray + - DataFrame + * - ``.npy`` + - ndarray + - ndarray + * - ``.npz`` + - dict of ndarrays + - NpzFile + * - ``.pkl`` / ``.pickle`` + - any Python object + - original object + * - ``.yaml`` / ``.yml`` + - dict + - dict + * - ``.json`` + - dict, list + - dict or list + * - ``.png`` / ``.jpg`` / ``.svg`` / ``.pdf`` / ``.tiff`` + - matplotlib Figure + - ndarray (image) or Figure + * - ``.hdf5`` / ``.h5`` + - dict, ndarray + - dict or ndarray + * - ``.mat`` + - dict + - dict + * - ``.pth`` / ``.pt`` + - PyTorch state_dict + - dict + * - ``.parquet`` + - DataFrame + - DataFrame + * - ``.txt`` + - str + - str + +Figure Saving +------------- + +When saving a matplotlib Figure, ``stx.io.save`` automatically: + +1. Saves the image file (``.png``, ``.svg``, etc.) +2. Exports a ``.csv`` with the plotted data extracted from axes +3. Exports a ``.yaml`` recipe for reproducing the figure + +.. code-block:: python + + fig, ax = stx.plt.subplots() + ax.plot_line(x, y, label="signal") + stx.io.save(fig, "results/plot.png") + # Creates: + # results/plot.png (the figure) + # results/plot.csv (x, y data) + # results/plot.yaml (recipe for stx.plt.reproduce) + +Provenance Tracking +------------------- + +Inside ``@stx.session``, every ``save`` and ``load`` records file hashes +to a local SQLite database for reproducibility verification. + +.. code-block:: python + + @stx.session + def main(logger=stx.INJECTED, **kw): + data = stx.io.load("input.csv") # hash recorded as input + stx.io.save(result, "output.csv") # hash recorded as output + +Other Functions +--------------- + +- ``stx.io.glob(pattern)`` -- Find files matching a glob pattern +- ``stx.io.load_configs(config_dir)`` -- Load and merge YAML config files + +API Reference +------------- + +See :doc:`/api/scitex.io` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/linalg.rst.txt b/src/scitex/_sphinx_html/_sources/modules/linalg.rst.txt new file mode 100644 index 000000000..fbc5a46ca --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/linalg.rst.txt @@ -0,0 +1,4 @@ +linalg Module (``stx.linalg``) +============================== + +See :doc:`/api/scitex.linalg` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/linter.rst.txt b/src/scitex/_sphinx_html/_sources/modules/linter.rst.txt new file mode 100644 index 000000000..bdcde77b9 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/linter.rst.txt @@ -0,0 +1,131 @@ +Linter Module (``stx.linter``) +=============================== + +AST-based Python linter enforcing SciTeX conventions for reproducible +scientific code. + +.. note:: + + ``stx.linter`` wraps the standalone + `scitex-linter `_ package. + Install with: ``pip install scitex-linter``. + +Quick Reference +--------------- + +.. code-block:: bash + + # Check a file + scitex linter check my_script.py + + # Check with specific severity + scitex linter check my_script.py --severity warning + + # List all rules + scitex linter list-rules + + # Filter by category + scitex linter list-rules --category session + +.. code-block:: python + + from scitex_linter import check_file, list_rules + + # Check a file + results = check_file("my_script.py") + + # List available rules + rules = list_rules() + +Rule Categories +--------------- + +45 rules across 8 categories: + +.. list-table:: + :header-rows: 1 + :widths: 15 25 60 + + * - Prefix + - Category + - Examples + * - ``STX-S`` + - **Session** + - Missing ``@stx.session``, missing ``if __name__`` guard, missing return + * - ``STX-I`` + - **Import** + - Using ``import mngs`` instead of ``import scitex``, bare ``import numpy`` + * - ``STX-IO`` + - **I/O** + - Using ``open()`` instead of ``stx.io``, hardcoded paths + * - ``STX-P`` + - **Plotting** + - Using ``plt.show()`` instead of ``stx.io.save``, missing ``set_xyt`` + * - ``STX-ST`` + - **Statistics** + - Using ``scipy.stats`` directly instead of ``stx.stats`` + * - ``STX-PA`` + - **Path** + - Hardcoded absolute paths, missing ``stx.gen.mk_spath`` + * - ``STX-FM`` + - **Format** + - Non-snake_case names, magic numbers, missing docstrings + +Severity Levels +--------------- + +- **error** -- Must fix (breaks reproducibility or correctness) +- **warning** -- Should fix (best practice violations) +- **info** -- Suggestions for improvement + +Interfaces +---------- + +The linter is available through multiple interfaces: + +**CLI:** + +.. code-block:: bash + + scitex linter check script.py + scitex-linter check script.py # standalone CLI + +**Python API:** + +.. code-block:: python + + from scitex_linter import check_file, check_source + + results = check_file("script.py") + results = check_source("import numpy as np\n...") + +**Flake8 Plugin:** + +.. code-block:: bash + + flake8 --select=STX script.py + +**MCP Tools:** + +.. code-block:: python + + # Available as MCP tools for AI agents + linter_check(path="script.py", severity="warning") + linter_list_rules(category="session") + linter_check_source(source="...", filepath="") + +Configuration +------------- + +Configure via ``pyproject.toml``: + +.. code-block:: toml + + [tool.scitex-linter] + severity = "warning" + ignore = ["STX-S002", "STX-FM001"] + +API Reference +------------- + +See :doc:`/api/scitex.linter` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/logging.rst.txt b/src/scitex/_sphinx_html/_sources/modules/logging.rst.txt new file mode 100644 index 000000000..299227548 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/logging.rst.txt @@ -0,0 +1,107 @@ +Logging Module (``stx.logging``) +================================= + +Unified logging with file/console output, custom warnings, exception +hierarchy, and stream redirection. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + from scitex import logging + + # Get a logger + logger = logging.getLogger(__name__) + logger.info("Processing data") + logger.success("Analysis complete") # Custom level (31) + logger.fail("Model diverged") # Custom level (35) + + # Configure globally + logging.configure(level="DEBUG", log_file="./run.log") + logging.set_level("WARNING") + + # Temporary file logging + with logging.log_to_file("analysis.log"): + logger.info("This goes to both console and file") + + # Warnings + logging.warn("Large dataset", category=logging.PerformanceWarning) + logging.warn_deprecated("old_func", "new_func", version="3.0") + logging.filterwarnings("ignore", category=logging.UnitWarning) + +Log Levels +---------- + +.. list-table:: + :header-rows: 1 + :widths: 20 15 65 + + * - Level + - Value + - Description + * - ``DEBUG`` + - 10 + - Detailed diagnostic information + * - ``INFO`` + - 20 + - General operational messages + * - ``WARNING`` + - 30 + - Something unexpected but not fatal + * - ``SUCCESS`` + - 31 + - Custom: operation completed successfully + * - ``FAIL`` + - 35 + - Custom: operation failed (non-fatal) + * - ``ERROR`` + - 40 + - Serious problem + * - ``CRITICAL`` + - 50 + - Program may not continue + +Warning Categories +------------------ + +- ``SciTeXWarning`` -- Base warning class +- ``UnitWarning`` -- SI unit convention issues +- ``StyleWarning`` -- Formatting issues +- ``SciTeXDeprecationWarning`` -- Deprecated features +- ``PerformanceWarning`` -- Performance issues +- ``DataLossWarning`` -- Potential data loss + +Exception Hierarchy +------------------- + +All inherit from ``SciTeXError``: + +- **I/O**: ``IOError``, ``FileFormatError``, ``SaveError``, ``LoadError`` +- **Config**: ``ConfigurationError``, ``ConfigFileNotFoundError``, ``ConfigKeyError`` +- **Path**: ``PathError``, ``InvalidPathError``, ``PathNotFoundError`` +- **Data**: ``DataError``, ``ShapeError``, ``DTypeError`` +- **Plotting**: ``PlottingError``, ``FigureNotFoundError``, ``AxisError`` +- **Stats**: ``StatsError``, ``TestError`` +- **Scholar**: ``ScholarError``, ``SearchError``, ``PDFDownloadError``, ``DOIResolutionError`` +- **NN**: ``NNError``, ``ModelError`` +- **Template**: ``TemplateError``, ``TemplateViolationError`` + +Stream Redirection +------------------ + +.. code-block:: python + + from scitex.logging import tee + import sys + + # Redirect stdout/stderr to log files + sys.stdout, sys.stderr = tee(sys, sdir="./output") + +The ``@stx.session`` decorator handles this automatically. + +API Reference +------------- + +See :doc:`/api/scitex.logging` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/media.rst.txt b/src/scitex/_sphinx_html/_sources/modules/media.rst.txt new file mode 100644 index 000000000..22313640a --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/media.rst.txt @@ -0,0 +1,4 @@ +media Module (``stx.media``) +============================ + +See :doc:`/api/scitex.media` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/module.rst.txt b/src/scitex/_sphinx_html/_sources/modules/module.rst.txt new file mode 100644 index 000000000..1c9d3aa8b --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/module.rst.txt @@ -0,0 +1,4 @@ +module Module (``stx.module``) +============================== + +See :doc:`/api/scitex.module` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/msword.rst.txt b/src/scitex/_sphinx_html/_sources/modules/msword.rst.txt new file mode 100644 index 000000000..9254b4da2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/msword.rst.txt @@ -0,0 +1,4 @@ +msword Module (``stx.msword``) +============================== + +See :doc:`/api/scitex.msword` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/nn.rst.txt b/src/scitex/_sphinx_html/_sources/modules/nn.rst.txt new file mode 100644 index 000000000..0239f5b86 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/nn.rst.txt @@ -0,0 +1,79 @@ +NN Module (``stx.nn``) +====================== + +PyTorch neural network layers for signal processing and neuroscience +applications. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import torch + + # Bandpass filtering as a differentiable layer + bpf = stx.nn.BandPassFilter( + bands=[[4, 8], [8, 13], [13, 30]], # theta, alpha, beta + fs=256, seq_len=1024 + ) + filtered = bpf(signal) # (batch, channels, 3, 1024) + + # Power spectral density + psd = stx.nn.PSD(sample_rate=256) + power, freqs = psd(signal) + + # Phase-amplitude coupling + pac = stx.nn.PAC(seq_len=1024, fs=256) + coupling = pac(signal) + +Signal Processing Layers +------------------------- + +**Filtering** (all differentiable): + +- ``BandPassFilter(bands, fs, seq_len)`` -- Multi-band frequency filtering +- ``BandStopFilter(bands, fs, seq_len)`` -- Reject frequency bands +- ``LowPassFilter(cutoffs_hz, fs, seq_len)`` -- Anti-aliasing / smoothing +- ``HighPassFilter(cutoffs_hz, fs, seq_len)`` -- High-frequency emphasis +- ``GaussianFilter(sigma)`` -- Gaussian kernel smoothing +- ``DifferentiableBandPassFilter(...)`` -- Learnable bandpass parameters + +**Spectral Analysis**: + +- ``Spectrogram(sampling_rate, n_fft)`` -- STFT-based magnitude spectrogram +- ``PSD(sample_rate, prob)`` -- FFT-based power spectral density +- ``Wavelet(samp_rate, freq_scale)`` -- Continuous wavelet transform + +**Phase & Coupling**: + +- ``Hilbert(seq_len)`` -- Analytic signal (phase + amplitude) +- ``ModulationIndex(n_bins)`` -- Phase-amplitude coupling metric +- ``PAC(seq_len, fs, ...)`` -- Complete PAC analysis pipeline + +Channel Manipulation +-------------------- + +- ``SwapChannels()`` -- Random channel permutation (training augmentation) +- ``DropoutChannels(dropout)`` -- Drop entire channels +- ``ChannelGainChanger(n_chs)`` -- Learnable per-channel scaling +- ``FreqGainChanger(n_bands, fs)`` -- Learnable per-band scaling + +Attention & Shape +----------------- + +- ``SpatialAttention(n_chs_in)`` -- Adaptive channel weighting +- ``TransposeLayer(axis1, axis2)`` -- Dimension permutation +- ``AxiswiseDropout(dropout_prob, dim)`` -- Drop entire axis + +Architectures +------------- + +- ``ResNet1D(n_chs, n_out, n_blks)`` -- 1D residual network +- ``BNet`` / ``BNet_Res`` -- Multi-head EEG classifier +- ``MNet1000`` -- 2D CNN feature extractor + +API Reference +------------- + +See :doc:`/api/scitex.nn` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/notebook.rst.txt b/src/scitex/_sphinx_html/_sources/modules/notebook.rst.txt new file mode 100644 index 000000000..00b17aa97 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/notebook.rst.txt @@ -0,0 +1,4 @@ +notebook Module (``stx.notebook``) +================================== + +See :doc:`/api/scitex.notebook` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/notify.rst.txt b/src/scitex/_sphinx_html/_sources/modules/notify.rst.txt new file mode 100644 index 000000000..32373f3c8 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/notify.rst.txt @@ -0,0 +1,4 @@ +notify Module (``stx.notify``) +============================== + +See :doc:`/api/scitex.notify` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/os.rst.txt b/src/scitex/_sphinx_html/_sources/modules/os.rst.txt new file mode 100644 index 000000000..b6405d019 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/os.rst.txt @@ -0,0 +1,4 @@ +os Module (``stx.os``) +====================== + +See :doc:`/api/scitex.os` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/parallel.rst.txt b/src/scitex/_sphinx_html/_sources/modules/parallel.rst.txt new file mode 100644 index 000000000..24942b28c --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/parallel.rst.txt @@ -0,0 +1,4 @@ +parallel Module (``stx.parallel``) +================================== + +See :doc:`/api/scitex.parallel` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/path.rst.txt b/src/scitex/_sphinx_html/_sources/modules/path.rst.txt new file mode 100644 index 000000000..ca9d7d7cd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/path.rst.txt @@ -0,0 +1,4 @@ +path Module (``stx.path``) +========================== + +See :doc:`/api/scitex.path` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/pd.rst.txt b/src/scitex/_sphinx_html/_sources/modules/pd.rst.txt new file mode 100644 index 000000000..540d969bd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/pd.rst.txt @@ -0,0 +1,45 @@ +PD Module (``stx.pd``) +====================== + +Pandas DataFrame helper functions for common transformations. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import pandas as pd + + df = pd.DataFrame({ + "subject": ["A", "A", "B", "B"], + "condition": ["ctrl", "exp", "ctrl", "exp"], + "score": [10, 15, 12, 18], + }) + + # Find individual (unique) values + subjects = stx.pd.find_indi(df, "subject") + + # Convert to long format + melted = stx.pd.melt_cols(df, id_vars=["subject"]) + + # Merge columns + merged = stx.pd.merge_cols(df, cols=["subject", "condition"], sep="_") + + # Force to DataFrame + stx.pd.force_df({"a": [1, 2], "b": [3, 4]}) + +Available Functions +------------------- + +- ``find_indi(df, col)`` -- Find unique individual identifiers +- ``find_pval(df)`` -- Find p-value columns in a DataFrame +- ``force_df(data)`` -- Convert any data to a DataFrame +- ``melt_cols(df, id_vars)`` -- Melt columns to long format +- ``merge_cols(df, cols, sep)`` -- Merge multiple columns into one +- ``to_xyz(df, x, y, z)`` -- Reshape to x, y, z pivot format + +API Reference +------------- + +See :doc:`/api/scitex.pd` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/plt.rst.txt b/src/scitex/_sphinx_html/_sources/modules/plt.rst.txt new file mode 100644 index 000000000..41a0c4b1f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/plt.rst.txt @@ -0,0 +1,161 @@ +PLT Module (``stx.plt``) +======================== + +Publication-ready figures powered by `figrecipe `_. + +.. note:: + + ``stx.plt`` wraps matplotlib via the **figrecipe** package, adding + mm-based layout, data-tracking axes, auto CSV export, and reproducible + YAML recipes. The standalone package can also be used directly: + ``pip install figrecipe``. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Create figure (returns FigWrapper, AxisWrapper) + fig, ax = stx.plt.subplots() + fig, axes = stx.plt.subplots(2, 2) + + # Data-tracking plot methods (all record data for CSV export) + ax.plot_line(x, y, label="signal") + ax.plot_scatter(x, y, alpha=0.5) + ax.plot_bar(labels, values) + ax.plot_heatmap(matrix) + ax.plot_violin(groups) + ax.plot_box(groups) + ax.plot_kde(data) + + # Axis helper (xlabel, ylabel, title in one call) + ax.set_xyt("Time (s)", "Amplitude (mV)", "EEG Signal") + + # Save (auto-exports CSV + YAML recipe) + stx.io.save(fig, "figure.png") + +Plot Types (47) +--------------- + +All ``ax.plot_*`` methods track their input data so it can be exported as CSV. + +.. list-table:: + :header-rows: 1 + :widths: 25 75 + + * - Category + - Types + * - **Line & Curve** + - ``plot``, ``step``, ``fill``, ``fill_between``, ``fill_betweenx``, ``errorbar``, ``stackplot``, ``stairs`` + * - **Scatter & Points** + - ``scatter`` + * - **Bar & Categorical** + - ``bar``, ``barh`` + * - **Distribution** + - ``hist``, ``hist2d``, ``boxplot``, ``violinplot``, ``ecdf`` + * - **2D Image & Matrix** + - ``imshow``, ``matshow``, ``pcolor``, ``pcolormesh``, ``hexbin``, ``spy`` + * - **Contour & Surface** + - ``contour``, ``contourf``, ``tricontour``, ``tricontourf``, ``tripcolor``, ``triplot`` + * - **Spectral & Signal** + - ``specgram``, ``psd``, ``csd``, ``cohere``, ``angle_spectrum``, ``magnitude_spectrum``, ``phase_spectrum``, ``acorr``, ``xcorr`` + * - **Vector & Flow** + - ``quiver``, ``barbs``, ``streamplot`` + * - **Special** + - ``pie``, ``stem``, ``eventplot``, ``loglog``, ``semilogx``, ``semilogy``, ``graph`` + +Standard matplotlib methods (``ax.plot``, ``ax.scatter``, etc.) also work +and are tracked. + +MM-Based Layout +--------------- + +Figures use millimeter dimensions for precise control: + +.. code-block:: python + + fig, ax = stx.plt.subplots( + axes_width_mm=80, + axes_height_mm=60, + ) + + # Multi-panel with exact spacing + fig, axes = stx.plt.subplots( + nrows=2, ncols=3, + axes_width_mm=50, + axes_height_mm=40, + ) + +Axis Helpers +------------ + +.. code-block:: python + + # Set xlabel, ylabel, title in one call + ax.set_xyt("X Label", "Y Label", "Title") + + # Automatic axis label formatting with units + ax.set_xyt("Frequency (Hz)", "Power (dB)", "Power Spectrum") + +Figure Composition +------------------ + +Combine multiple figures into panels: + +.. code-block:: python + + # Compose panels A, B, C + stx.plt.compose( + sources=["fig_a.png", "fig_b.png", "fig_c.png"], + output_path="combined.png", + layout="horizontal", + panel_labels=True, + ) + +Statistical Annotations +----------------------- + +Add significance brackets to figures: + +.. code-block:: python + + # In the declarative spec + stat_annotations: + - x1: 0 + x2: 1 + y: 5.5 + text: "***" + - x1: 0 + x2: 2 + y: 6.5 + p_value: 0.02 + style: stars + +Reproducible Figures +-------------------- + +When saved via ``stx.io.save``, figures get a ``.yaml`` recipe. +Reproduce any figure from its recipe: + +.. code-block:: python + + stx.plt.reproduce("figure.yaml", output_path="reproduced.png") + +Style Presets +------------- + +.. code-block:: python + + import figrecipe as fr + + fr.load_style("SCITEX") # Publication defaults + fr.load_style("MATPLOTLIB") # Standard matplotlib + +See the :doc:`/gallery` for visual examples. + +API Reference +------------- + +See :doc:`/api/scitex.plt` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/project.rst.txt b/src/scitex/_sphinx_html/_sources/modules/project.rst.txt new file mode 100644 index 000000000..10402cc17 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/project.rst.txt @@ -0,0 +1,4 @@ +project Module (``stx.project``) +================================ + +See :doc:`/api/scitex.project` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/repro.rst.txt b/src/scitex/_sphinx_html/_sources/modules/repro.rst.txt new file mode 100644 index 000000000..2c7789763 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/repro.rst.txt @@ -0,0 +1,70 @@ +Repro Module (``stx.repro``) +============================ + +Reproducibility utilities: random state management, ID generation, +timestamps, and array hashing. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Fix all random seeds (numpy, torch, random, ...) + rng = stx.repro.get() # Global manager (seed=42) + rng = stx.repro.reset(seed=123) # Reset with new seed + + # Named generators for deterministic results + data_gen = rng.get_np_generator("data") + data = data_gen.random(100) # Same seed+name = same result + + # Unique identifiers + stx.repro.gen_id() + # → "2026Y-02M-13D-14h30m15s_a3Bc9xY2" + + stx.repro.gen_timestamp() + # → "2026-0213-1430" + + # Verify reproducibility + rng.verify(data, "train_data") # First: caches hash + rng.verify(data, "train_data") # Later: verifies match + +RandomStateManager +------------------ + +Central class for managing random states across libraries. + +.. code-block:: python + + rng = stx.repro.RandomStateManager(seed=42) + + # Named generators (same name + seed = deterministic) + np_gen = rng.get_np_generator("experiment") + torch_gen = rng.get_torch_generator("model") + + # Checkpoint and restore + rng.checkpoint("before_training") + rng.restore("before_training.pkl") + + # Temporary seed change + with rng.temporary_seed(999): + noise = rng.get_np_generator("noise").random(10) + +Automatically fixes seeds for: ``random``, ``numpy``, ``torch`` (+ CUDA), +``tensorflow``, ``jax``. + +Available Functions +------------------- + +- ``get(verbose)`` -- Get or create global RandomStateManager singleton +- ``reset(seed, verbose)`` -- Reset global instance with new seed +- ``fix_seeds(seed, ...)`` -- Legacy function (use RandomStateManager instead) +- ``gen_id(time_format, N)`` -- Generate unique timestamp + random ID +- ``gen_timestamp()`` -- Generate timestamp string for file naming +- ``hash_array(array_data)`` -- SHA256 hash of numpy array (16 chars) + +API Reference +------------- + +See :doc:`/api/scitex.repro` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/resource.rst.txt b/src/scitex/_sphinx_html/_sources/modules/resource.rst.txt new file mode 100644 index 000000000..d5b88ca76 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/resource.rst.txt @@ -0,0 +1,4 @@ +resource Module (``stx.resource``) +================================== + +See :doc:`/api/scitex.resource` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/rng.rst.txt b/src/scitex/_sphinx_html/_sources/modules/rng.rst.txt new file mode 100644 index 000000000..31ed089f2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/rng.rst.txt @@ -0,0 +1,4 @@ +rng Module (``stx.rng``) +======================== + +See :doc:`/api/scitex.rng` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/schema.rst.txt b/src/scitex/_sphinx_html/_sources/modules/schema.rst.txt new file mode 100644 index 000000000..12c215622 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/schema.rst.txt @@ -0,0 +1,4 @@ +schema Module (``stx.schema``) +============================== + +See :doc:`/api/scitex.schema` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/scholar.rst.txt b/src/scitex/_sphinx_html/_sources/modules/scholar.rst.txt new file mode 100644 index 000000000..42ec9fc23 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/scholar.rst.txt @@ -0,0 +1,131 @@ +Scholar Module (``stx.scholar``) +================================= + +Literature management: search papers, download PDFs, enrich BibTeX, +and organize a local library across multiple projects. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.scholar import Scholar + + scholar = Scholar(project="my_research") + + # Load and enrich BibTeX + papers = scholar.load_bibtex("references.bib") + enriched = scholar.enrich_papers(papers) + # Adds: DOIs, abstracts, citation counts, impact factors + + # Save to library and export + scholar.save_papers_to_library(enriched) + scholar.save_papers_as_bibtex(enriched, "enriched.bib") + + # Search your library + results = scholar.search_library("neural oscillations") + + # Download PDFs + scholar.download_pdfs(dois, output_dir) + +CLI Usage +--------- + +.. code-block:: bash + + # Full pipeline from BibTeX + scitex scholar bibtex refs.bib --project myresearch --num-workers 8 + + # Search papers + scitex scholar search "deep learning EEG" + + # Download PDFs + scitex scholar download --doi 10.1038/nature12373 + + # Institutional authentication + scitex scholar auth --method openathens + scitex scholar auth --method shibboleth --institution "MIT" + +Data Sources +------------ + +Searches and enriches from: + +- **CrossRef** (167M+ papers) -- DOI resolution, citation counts +- **Semantic Scholar** -- Abstracts, references, influence scores +- **PubMed** -- Biomedical literature +- **arXiv** -- Preprints +- **OpenAlex** (284M+ works) -- Open metadata + +Key Classes +----------- + +- ``Scholar`` -- Main entry point (search, enrich, download, organize) +- ``Paper`` -- Type-safe metadata container (Pydantic model) +- ``Papers`` -- Collection with filtering, sorting, and export +- ``ScholarConfig`` -- YAML-based configuration +- ``ScholarLibrary`` -- Local library storage and caching + +Paper Metadata +-------------- + +Each ``Paper`` contains structured metadata sections: + +.. code-block:: python + + paper.metadata.basic # title, authors, year, abstract, keywords + paper.metadata.id # DOI, arXiv, PMID, Semantic Scholar ID + paper.metadata.publication # journal, impact factor, volume, issue + paper.metadata.citation_count # total + yearly breakdown (2015--2024) + paper.metadata.url # DOI URL, publisher, arXiv, PDFs + paper.metadata.access # open access status, license + +Filtering and Sorting +--------------------- + +.. code-block:: python + + # Criteria-based filtering + recent = papers.filter(year_min=2020, has_doi=True) + elite = papers.filter(min_impact_factor=10, min_citations=500) + + # Lambda filtering + custom = papers.filter(lambda p: "EEG" in (p.metadata.basic.title or "")) + + # Sorting + papers.sort_by("year", reverse=True) + papers.sort_by("citation_count", reverse=True) + + # Chaining + top_recent = papers.filter(year_min=2020).sort_by("citation_count", reverse=True) + +Project Organization +-------------------- + +.. code-block:: python + + scholar = Scholar(project="review_paper") + scholar.list_projects() + papers = scholar.load_project() + + # Export to multiple formats + scholar.save_papers_as_bibtex(papers, "output.bib") + papers.to_dataframe() # pandas DataFrame + +Storage Architecture +-------------------- + +.. code-block:: text + + ~/.scitex/scholar/library/ + +-- MASTER/ # Centralized master storage + | +-- 8DIGIT01/ # Hash-based unique ID from DOI + | | +-- metadata.json + | | +-- paper.pdf + +-- project_name/ # Project-specific symlinks + +-- Author-Year-Journal -> ../MASTER/8DIGIT01 + +API Reference +------------- + +See :doc:`/api/scitex.scholar` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/security.rst.txt b/src/scitex/_sphinx_html/_sources/modules/security.rst.txt new file mode 100644 index 000000000..36f9a0b7a --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/security.rst.txt @@ -0,0 +1,4 @@ +security Module (``stx.security``) +================================== + +See :doc:`/api/scitex.security` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/session.rst.txt b/src/scitex/_sphinx_html/_sources/modules/session.rst.txt new file mode 100644 index 000000000..6b2f7a491 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/session.rst.txt @@ -0,0 +1,210 @@ +Session Decorator (``@stx.session``) +===================================== + +The ``@stx.session`` decorator is the primary entry point for SciTeX +scripts. It wraps a function to provide automatic CLI generation, +output directory management, configuration injection, and provenance tracking. + +Basic Usage +----------- + +.. code-block:: python + + import scitex as stx + + @stx.session + def main( + data_path="data.csv", # CLI: --data-path data.csv + threshold=0.5, # CLI: --threshold 0.7 + CONFIG=stx.INJECTED, # Auto-injected session config + plt=stx.INJECTED, # Pre-configured matplotlib + logger=stx.INJECTED, # Session logger + ): + """Analyze experimental data.""" + data = stx.io.load(data_path) + result = process(data, threshold) + stx.io.save(result, "output.csv") + return 0 # exit code (0 = success) + + if __name__ == "__main__": + main() # No arguments triggers CLI mode + +Run from the command line: + +.. code-block:: bash + + python my_script.py --data-path experiment.csv --threshold 0.3 + python my_script.py --help # Shows all parameters with defaults + +How It Works +------------ + +.. image:: ../_static/session_lifecycle.png + :width: 60% + :align: center + :alt: Session lifecycle: main() → Parse CLI → Create dir → Load config → Execute → SUCCESS or ERROR + +When ``main()`` is called **without arguments**, the decorator: + +1. **Parses CLI arguments** from the function signature (type hints and defaults become ``argparse`` options) +2. **Creates a session directory** under ``script_out/RUNNING/{session_id}/`` +3. **Loads configuration** from ``./config/*.yaml`` files into ``CONFIG`` +4. **Injects globals** (``CONFIG``, ``plt``, ``COLORS``, ``logger``, ``rngg``) into the function +5. **Redirects stdout/stderr** to log files +6. **Executes the function** with parsed arguments +7. **Moves output** from ``RUNNING/`` to ``FINISHED_SUCCESS/`` (or ``FINISHED_ERROR/``) + +When called **with arguments** (e.g., ``main(data_path="x.csv")``), the decorator +is bypassed and the function runs directly -- useful for testing and notebooks. + +Output Directory Structure +-------------------------- + +Each run produces a self-contained output directory: + +.. code-block:: text + + my_script_out/ + +-- FINISHED_SUCCESS/ + | +-- 2026Y-02M-13D-14h30m15s_Z5MR/ + | +-- CONFIGS/ + | | +-- CONFIG.yaml # Frozen configuration + | | +-- CONFIG.pkl # Pickled config + | +-- logs/ + | | +-- stdout.log # Captured stdout + | | +-- stderr.log # Captured stderr + | +-- output.csv # Your saved files + | +-- sine.png # Your saved figures + | +-- sine.csv # Auto-exported figure data + +-- FINISHED_ERROR/ + | +-- ... # Runs that returned non-zero + +-- RUNNING/ + +-- ... # Currently active sessions + +The session ID format is ``YYYY-MM-DD-HH:MM:SS_XXXX`` where ``XXXX`` is +a random 4-character suffix for uniqueness. + +Injected Parameters +------------------- + +Use ``stx.INJECTED`` as the default value to receive auto-injected objects: + +.. list-table:: + :header-rows: 1 + :widths: 20 20 60 + + * - Parameter Name + - Type + - Description + * - ``CONFIG`` + - ``DotDict`` + - Session config with ``ID``, ``SDIR_RUN``, ``FILE``, ``ARGS``, plus all ``./config/*.yaml`` values + * - ``plt`` + - module + - ``matplotlib.pyplot`` configured for the session (Agg backend, style settings) + * - ``COLORS`` + - ``DotDict`` + - Color palette for consistent plotting + * - ``logger`` + - Logger + - SciTeX logger writing to session log files + * - ``rngg`` + - ``RandomStateManager`` + - Reproducibility manager (seeds fixed by default) + +Only request the parameters you need: + +.. code-block:: python + + @stx.session + def main(n=100, CONFIG=stx.INJECTED): + """Minimal example -- only CONFIG injected.""" + print(f"Session ID: {CONFIG.ID}") + print(f"Output dir: {CONFIG.SDIR_RUN}") + return 0 + +CONFIG Object +------------- + +The injected ``CONFIG`` is a ``DotDict`` supporting both dictionary and +dot-notation access: + +.. code-block:: python + + CONFIG["MODEL"]["hidden_size"] # dict-style + CONFIG.MODEL.hidden_size # dot-style (equivalent) + +It contains: + +.. code-block:: python + + CONFIG.ID # "2026Y-02M-13D-14h30m15s_Z5MR" + CONFIG.PID # Process ID + CONFIG.FILE # Path to the script + CONFIG.SDIR_OUT # Base output directory + CONFIG.SDIR_RUN # Current session's output directory + CONFIG.START_DATETIME # When the session started + CONFIG.ARGS # Parsed CLI arguments as dict + CONFIG.EXIT_STATUS # 0 (success), 1 (error), or None + +Any YAML files in ``./config/`` are merged into CONFIG: + +.. code-block:: yaml + + # ./config/EXPERIMENT.yaml + learning_rate: 0.001 + batch_size: 32 + +.. code-block:: python + + # Accessible as: + CONFIG.EXPERIMENT.learning_rate # 0.001 + CONFIG.EXPERIMENT.batch_size # 32 + +Decorator Options +----------------- + +.. code-block:: python + + @stx.session(verbose=True, agg=False, notify=True, sdir_suffix="v2") + def main(...): + ... + +.. list-table:: + :header-rows: 1 + :widths: 20 15 15 50 + + * - Option + - Type + - Default + - Description + * - ``verbose`` + - bool + - ``False`` + - Enable verbose logging + * - ``agg`` + - bool + - ``True`` + - Use matplotlib Agg backend (set ``False`` for interactive plots) + * - ``notify`` + - bool + - ``False`` + - Send notification when session completes + * - ``sdir_suffix`` + - str + - ``None`` + - Append suffix to output directory name + +Best Practices +-------------- + +1. **One session per script** -- each ``.py`` file should have one ``@stx.session`` function +2. **Return 0 for success** -- the return value becomes the exit status +3. **Save outputs with** ``stx.io.save`` -- files go into the session directory and are provenance-tracked +4. **Put config in YAML** -- use ``./config/*.yaml`` instead of hardcoding parameters +5. **Use** ``stx.repro.fix_seeds()`` -- already called by default via ``rngg`` + +API Reference +------------- + +See :doc:`/api/scitex.session` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/sh.rst.txt b/src/scitex/_sphinx_html/_sources/modules/sh.rst.txt new file mode 100644 index 000000000..4cc94f3ae --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/sh.rst.txt @@ -0,0 +1,4 @@ +sh Module (``stx.sh``) +====================== + +See :doc:`/api/scitex.sh` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/social.rst.txt b/src/scitex/_sphinx_html/_sources/modules/social.rst.txt new file mode 100644 index 000000000..28daf833d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/social.rst.txt @@ -0,0 +1,4 @@ +social Module (``stx.social``) +============================== + +See :doc:`/api/scitex.social` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/stats.rst.txt b/src/scitex/_sphinx_html/_sources/modules/stats.rst.txt new file mode 100644 index 000000000..5cf6bbf74 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/stats.rst.txt @@ -0,0 +1,152 @@ +Stats Module (``stx.stats``) +============================ + +23 statistical tests with effect sizes, confidence intervals, and +publication-ready formatting. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import numpy as np + + g1 = np.random.normal(0, 1, 50) + g2 = np.random.normal(0.5, 1, 50) + + # Run a test + result = stx.stats.test_ttest_ind(g1, g2) + + # Result is a flat dict with all details + print(result["statistic"]) # t-statistic + print(result["pvalue"]) # p-value + print(result["effect_size"]) # Cohen's d + print(result["stars"]) # Significance stars + + # Get as DataFrame or LaTeX + df = stx.stats.test_ttest_ind(g1, g2, return_as="dataframe") + tex = stx.stats.test_ttest_ind(g1, g2, return_as="latex") + +Available Tests +--------------- + +**Parametric** + +- ``test_ttest_1samp(data, popmean)`` -- One-sample t-test +- ``test_ttest_ind(g1, g2)`` -- Independent two-sample t-test +- ``test_ttest_rel(g1, g2)`` -- Paired t-test +- ``test_anova(*groups)`` -- One-way ANOVA +- ``test_anova_2way(data, factor1, factor2)`` -- Two-way ANOVA +- ``test_anova_rm(data, groups)`` -- Repeated measures ANOVA + +**Non-parametric** + +- ``test_mannwhitneyu(g1, g2)`` -- Mann-Whitney U test +- ``test_wilcoxon(g1, g2)`` -- Wilcoxon signed-rank test +- ``test_kruskal(*groups)`` -- Kruskal-Wallis H test +- ``test_friedman(*groups)`` -- Friedman test +- ``test_brunner_munzel(g1, g2)`` -- Brunner-Munzel test + +**Correlation** + +- ``test_pearson(x, y)`` -- Pearson correlation +- ``test_spearman(x, y)`` -- Spearman rank correlation +- ``test_kendall(x, y)`` -- Kendall tau correlation +- ``test_theilsen(x, y)`` -- Theil-Sen robust regression + +**Categorical** + +- ``test_chi2(observed)`` -- Chi-squared test +- ``test_fisher(table)`` -- Fisher's exact test +- ``test_mcnemar(table)`` -- McNemar test +- ``test_cochran_q(*groups)`` -- Cochran's Q test + +**Normality** + +- ``test_shapiro(data)`` -- Shapiro-Wilk test +- ``test_ks_1samp(data)`` -- One-sample Kolmogorov-Smirnov test +- ``test_ks_2samp(x, y)`` -- Two-sample Kolmogorov-Smirnov test +- ``test_normality(*samples)`` -- Multi-sample normality check + +Seaborn-Style Data Parameter +---------------------------- + +All two-sample and one-sample tests accept an optional ``data`` parameter +for DataFrame/CSV column resolution (like seaborn): + +.. code-block:: python + + import pandas as pd + + df = pd.read_csv("experiment.csv") + + # Two-sample: column names as x/y + result = stx.stats.test_ttest_ind(x="before", y="after", data=df) + + # One-sample: column name as x + result = stx.stats.test_shapiro(x="scores", data=df) + + # Multi-group: value + group columns + result = stx.stats.test_anova(data=df, value_col="score", group_col="treatment") + + # Also works with CSV path + result = stx.stats.test_ttest_ind(x="col1", y="col2", data="data.csv") + +Test Recommendation +------------------- + +Not sure which test to use? Let SciTeX recommend: + +.. code-block:: python + + recommendations = stx.stats.recommend_tests( + n_groups=2, + sample_sizes=[30, 35], + outcome_type="continuous", + paired=False, + ) + +Output Formats +-------------- + +Every test supports ``return_as`` parameter: + +- ``"dict"`` (default) -- Returns plain dict with all results +- ``"dataframe"`` -- Returns pandas DataFrame + +Descriptive Statistics +---------------------- + +.. code-block:: python + + stx.stats.describe(data) # mean, std, median, IQR, etc. + stx.stats.effect_sizes.cohens_d(g1, g2) # Cohen's d + stx.stats.test_normality(g1, g2) # Multi-sample normality + stx.stats.p_to_stars(0.003) # "**" + +Multiple Comparison Correction +------------------------------ + +.. code-block:: python + + corrected = stx.stats.correct_pvalues( + [0.01, 0.03, 0.05, 0.001], + method="fdr_bh", + ) + +Post-hoc Tests +-------------- + +.. code-block:: python + + stx.stats.posthoc_test( + [g1, g2, g3], + group_names=["Control", "Treatment A", "Treatment B"], + method="tukey", + ) + +API Reference +------------- + +See :doc:`/api/scitex.stats` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/str.rst.txt b/src/scitex/_sphinx_html/_sources/modules/str.rst.txt new file mode 100644 index 000000000..1702d22b5 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/str.rst.txt @@ -0,0 +1,4 @@ +str Module (``stx.str``) +======================== + +See :doc:`/api/scitex.str` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/template.rst.txt b/src/scitex/_sphinx_html/_sources/modules/template.rst.txt new file mode 100644 index 000000000..f69f76a14 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/template.rst.txt @@ -0,0 +1,85 @@ +Template Module (``stx.template``) +==================================== + +Project scaffolding and code snippet templates for quick starts. + +Project Templates +----------------- + +.. code-block:: bash + + # Clone a project template + scitex template clone research my_project + scitex template clone pip_project my_package + scitex template clone paper my_paper + +.. list-table:: + :header-rows: 1 + :widths: 20 80 + + * - Template + - Description + * - ``research`` + - Full scientific workflow (scripts, data, docs, config) + * - ``research_minimal`` + - Essential modules only + * - ``pip_project`` + - Distributable Python package for PyPI + * - ``singularity`` + - Reproducible containerized environment + * - ``paper_directory`` + - Academic paper with LaTeX/BibTeX structure + +Git Strategies +-------------- + +.. list-table:: + :header-rows: 1 + :widths: 20 80 + + * - Strategy + - Behavior + * - ``child`` (default) + - Fresh git repo, isolated from template + * - ``parent`` + - Use parent repo if available + * - ``origin`` + - Preserve template's git history + * - ``None`` + - No git initialization + +Code Templates +-------------- + +.. code-block:: bash + + # List available code templates + scitex template code list + + # Get a template + scitex template code session # Full @stx.session script + scitex template code session-minimal # Lightweight session + scitex template code session-plot # Figure-focused session + scitex template code session-stats # Statistics-focused session + scitex template code io # I/O operations + scitex template code plt # Plotting patterns + scitex template code stats # Statistical analysis + scitex template code scholar # Literature management + +Python API +---------- + +.. code-block:: python + + from scitex.template import clone_template, get_code_template + + # Clone project + clone_template("research", "my_experiment", git_strategy="child") + + # Get code snippet + code = get_code_template("session", filepath="analyze.py") + +API Reference +------------- + +See :doc:`/api/scitex.template` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/tex.rst.txt b/src/scitex/_sphinx_html/_sources/modules/tex.rst.txt new file mode 100644 index 000000000..47e28c849 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/tex.rst.txt @@ -0,0 +1,4 @@ +tex Module (``stx.tex``) +======================== + +See :doc:`/api/scitex.tex` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/torch.rst.txt b/src/scitex/_sphinx_html/_sources/modules/torch.rst.txt new file mode 100644 index 000000000..fbcb78586 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/torch.rst.txt @@ -0,0 +1,4 @@ +torch Module (``stx.torch``) +============================ + +See :doc:`/api/scitex.torch` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/tunnel.rst.txt b/src/scitex/_sphinx_html/_sources/modules/tunnel.rst.txt new file mode 100644 index 000000000..7cf5a4dc6 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/tunnel.rst.txt @@ -0,0 +1,4 @@ +tunnel Module (``stx.tunnel``) +============================== + +See :doc:`/api/scitex.tunnel` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/types.rst.txt b/src/scitex/_sphinx_html/_sources/modules/types.rst.txt new file mode 100644 index 000000000..79a96c66c --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/types.rst.txt @@ -0,0 +1,4 @@ +types Module (``stx.types``) +============================ + +See :doc:`/api/scitex.types` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/ui.rst.txt b/src/scitex/_sphinx_html/_sources/modules/ui.rst.txt new file mode 100644 index 000000000..127ad15f8 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/ui.rst.txt @@ -0,0 +1,4 @@ +ui Module (``stx.ui``) +====================== + +See :doc:`/api/scitex.ui` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/utils.rst.txt b/src/scitex/_sphinx_html/_sources/modules/utils.rst.txt new file mode 100644 index 000000000..270e2757f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/utils.rst.txt @@ -0,0 +1,4 @@ +utils Module (``stx.utils``) +============================ + +See :doc:`/api/scitex.utils` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/web.rst.txt b/src/scitex/_sphinx_html/_sources/modules/web.rst.txt new file mode 100644 index 000000000..cb407ca28 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/web.rst.txt @@ -0,0 +1,4 @@ +web Module (``stx.web``) +======================== + +See :doc:`/api/scitex.web` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/modules/writer.rst.txt b/src/scitex/_sphinx_html/_sources/modules/writer.rst.txt new file mode 100644 index 000000000..4f24d75a2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/modules/writer.rst.txt @@ -0,0 +1,164 @@ +Writer Module (``stx.writer``) +============================== + +LaTeX manuscript compilation, figure/table management, bibliography +handling, and IMRAD writing guidelines. + +.. note:: + + ``stx.writer`` wraps the standalone + `scitex-writer `_ package. + Install with: ``pip install scitex-writer``. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.writer import Writer + from pathlib import Path + + writer = Writer(Path("my_paper")) + + # Compile manuscript → PDF + result = writer.compile_manuscript() + if result.success: + print(f"PDF: {result.output_pdf}") + + # Compile supplementary materials + result = writer.compile_supplementary() + + # Compile revision with change tracking + result = writer.compile_revision(track_changes=True) + +CLI Usage +--------- + +.. code-block:: bash + + # Compile + scitex writer compile manuscript ./my-paper + scitex writer compile supplementary ./my-paper + scitex writer compile revision ./my-paper --track-changes + + # Bibliography + scitex writer bib list ./my-paper + scitex writer bib add ./my-paper "@article{...}" + + # Tables and figures + scitex writer tables add ./my-paper data.csv + scitex writer figures list ./my-paper + + # Writing guidelines + scitex writer guidelines get abstract + +Project Structure +----------------- + +A writer project follows this layout: + +.. code-block:: text + + my_paper/ + +-- 00_shared/ + | +-- bibliography.bib + | +-- figures/ + | +-- tables/ + +-- 01_manuscript/ + | +-- main.tex + | +-- sections/ + +-- 02_supplementary/ + | +-- main.tex + +-- 03_revision/ + +-- main.tex + +Create a new project: + +.. code-block:: bash + + scitex template clone paper my_paper + +Key Classes +----------- + +- ``Writer`` -- Main entry point for compilation and project management +- ``CompilationResult`` -- Compilation outcome (success, output path, logs) +- ``ManuscriptTree`` -- Document tree for the main manuscript +- ``SupplementaryTree`` -- Document tree for supplementary materials +- ``RevisionTree`` -- Document tree for revision responses + +Document Management +------------------- + +**Figures:** + +.. code-block:: python + + # Add figure (copies image + creates caption file) + writer.add_figure("fig1", "plot.png", caption="Results") + + # List figures + writer.list_figures() + + # Convert between formats + writer.convert_figure("figure.pdf", "figure.png", dpi=300) + +**Tables:** + +.. code-block:: python + + # Add table from CSV + writer.add_table("tab1", csv_content, caption="Demographics") + + # CSV ↔ LaTeX conversion + writer.csv_to_latex("data.csv", "table.tex") + writer.latex_to_csv("table.tex", "data.csv") + +**Bibliography:** + +.. code-block:: python + + # Add BibTeX entry + writer.add_bibentry('@article{key, title={...}, ...}') + + # Merge multiple .bib files + writer.merge_bibfiles(output_file="bibliography.bib") + +Writing Guidelines +------------------ + +IMRAD guidelines for each manuscript section: + +.. code-block:: bash + + scitex writer guidelines list + scitex writer guidelines get introduction + +.. code-block:: python + + from scitex.writer import guidelines + + # Get guideline for a section + guide = guidelines.get("methods") + + # Build editing prompt: guideline + draft + prompt = guidelines.build("discussion", draft_text) + +Compilation Options +------------------- + +.. code-block:: python + + result = writer.compile_manuscript( + timeout=300, # Max compilation time (seconds) + no_figs=False, # Exclude figures + no_tables=False, # Exclude tables + draft=False, # Draft mode (fast, lower quality) + dark_mode=False, # Dark color scheme + quiet=False, # Suppress output + ) + +API Reference +------------- + +See :doc:`/api/scitex.writer` for the auto-generated Python API. diff --git a/src/scitex/_sphinx_html/_sources/quickstart.rst.txt b/src/scitex/_sphinx_html/_sources/quickstart.rst.txt new file mode 100644 index 000000000..5f94fba36 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/quickstart.rst.txt @@ -0,0 +1,231 @@ +Quick Start +=========== + +Three Interfaces +---------------- + +SciTeX exposes the same capabilities through three interfaces: +Python API, CLI commands, and MCP tools for AI agents. + +Python API +^^^^^^^^^^ + +``@stx.session`` -- Reproducible Experiment Tracking + +.. code-block:: python + + import scitex as stx + + @stx.session + def main(filename="demo.jpg"): + fig, ax = stx.plt.subplots() + ax.plot_line(t, signal) + ax.set_xyt("Time (s)", "Amplitude", "Title") + stx.io.save(fig, filename) + return 0 + +Output: + +.. code-block:: text + + script_out/FINISHED_SUCCESS/2025-01-08_12-30-00_AbC1/ + |-- demo.jpg # Figure with embedded metadata + |-- demo.csv # Auto-exported plot data + |-- CONFIGS/CONFIG.yaml # Reproducible parameters + +-- logs/{stdout,stderr}.log # Execution logs + +``stx.io`` -- Universal File I/O (30+ formats) + +.. code-block:: python + + stx.io.save(df, "output.csv") + stx.io.save(fig, "output.jpg") + df = stx.io.load("output.csv") + +``stx.stats`` -- Publication-Ready Statistics (23 tests) + +.. code-block:: python + + result = stx.stats.test_ttest_ind(group1, group2, return_as="dataframe") + # Includes: p-value, effect size, CI, normality check, power + +``stx.plt`` -- Publication-Ready Figures + +.. code-block:: python + + fig, ax = stx.plt.subplots() + ax.plot_line(x, y, label="signal") + ax.set_xyt("Time (s)", "Amplitude", "Sine Wave") + stx.io.save(fig, "plot.png") + # Creates: plot.png + plot.csv + plot.yaml (recipe for reproduction) + +``stx.scholar`` -- Literature Management + +.. code-block:: python + + # Enrich BibTeX with abstracts, DOIs, citation counts + stx.scholar.enrich_bibtex("refs.bib", add_abstracts=True) + +CLI Commands +^^^^^^^^^^^^ + +.. code-block:: bash + + scitex --help-recursive # Show all commands + scitex scholar fetch "10.1038/..." # Download paper by DOI + scitex scholar bibtex refs.bib # Enrich BibTeX + scitex stats recommend # Suggest statistical tests + scitex audio speak "Done" # Text-to-speech + scitex capture snap # Screenshot + +MCP Tools (120+ tools for AI agents) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Turn AI agents into autonomous scientific researchers. + +.. list-table:: + :header-rows: 1 + :widths: 20 10 70 + + * - Category + - Tools + - Description + * - writer + - 28 + - LaTeX manuscript compilation + * - scholar + - 23 + - PDF download, metadata enrichment + * - capture + - 12 + - Screen monitoring and capture + * - introspect + - 12 + - Python code introspection + * - audio + - 10 + - Text-to-speech, audio playback + * - stats + - 10 + - Automated statistical testing + * - plt + - 9 + - Matplotlib figure creation + * - diagram + - 9 + - Mermaid and Graphviz diagrams + * - dataset + - 8 + - Neuroimaging/physiology datasets + * - social + - 7 + - Social media posting + * - canvas + - 7 + - Figure composition + * - template + - 6 + - Project scaffolding + * - verify + - 6 + - Reproducibility verification + * - dev + - 6 + - Version checking + * - ui + - 5 + - Notifications + * - linter + - 3 + - Code pattern checking + +**Claude Code Setup** — add ``.mcp.json`` to your project root. Use ``SCITEX_ENV_SRC`` +to load all configuration from a ``.src`` file — this keeps ``.mcp.json`` static +across environments: + +.. code-block:: json + + { + "mcpServers": { + "scitex": { + "command": "scitex", + "args": ["mcp", "start"], + "env": { + "SCITEX_ENV_SRC": "${SCITEX_ENV_SRC}" + } + } + } + } + +Switch environments via your shell profile: + +.. code-block:: bash + + # Local machine + export SCITEX_ENV_SRC=~/.scitex/scitex/local.src + + # Remote server + export SCITEX_ENV_SRC=~/.scitex/scitex/remote.src + +Generate a template ``.src`` file: + +.. code-block:: bash + + scitex env-template -o ~/.scitex/scitex/local.src + +Or install globally: + +.. code-block:: bash + + scitex mcp install + +Complete Example +---------------- + +A typical research script combining session, I/O, plotting, and statistics: + +.. code-block:: python + + import scitex as stx + + @stx.session + def main( + n=200, + noise=0.1, + CONFIG=stx.INJECTED, + plt=stx.INJECTED, + logger=stx.INJECTED, + ): + """Analyze noisy sine wave.""" + import numpy as np + + # Generate data + x = np.linspace(0, 4 * np.pi, n) + y_clean = np.sin(x) + y_noisy = y_clean + np.random.normal(0, noise, n) + + # Save raw data + stx.io.save({"x": x, "y_clean": y_clean, "y_noisy": y_noisy}, "data.npz") + + # Visualize + fig, ax = plt.subplots() + ax.plot_scatter(x, y_noisy, alpha=0.3, label="Noisy") + ax.plot_line(x, y_clean, color="red", label="True") + ax.set_xyt("x", "y", f"Sine Wave (noise={noise})") + stx.io.save(fig, "sine.png") + + # Correlation between noisy and clean + result = stx.stats.test_pearson(y_clean, y_noisy) + logger.info(f"Pearson r={result['effect_size']:.3f}, p={result['pvalue']:.1e}") + + # Save summary + stx.io.save({"r": result["effect_size"], "p": result["pvalue"]}, "stats.yaml") + + return 0 + +Next Steps +---------- + +- :doc:`core_concepts` -- Architecture and design principles +- :doc:`modules/index` -- Detailed module documentation +- :doc:`gallery` -- Plot examples diff --git a/src/scitex/_sphinx_html/_sources/source/api/ai.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/ai.rst.txt new file mode 100644 index 000000000..e5fb03cee --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/ai.rst.txt @@ -0,0 +1,82 @@ +AI Module (``stx.ai``) +====================== + +Machine learning utilities for training, classification, and metrics +with PyTorch and scikit-learn. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Training utilities + from scitex.ai import LearningCurveLogger, EarlyStopping + + logger = LearningCurveLogger() + stopper = EarlyStopping(patience=10, direction="minimize") + + for epoch in range(100): + # ... training loop ... + logger({"loss": loss, "acc": acc}, step="Training") + if stopper(val_loss, {"model": model_path}, epoch): + break + + logger.plot_learning_curves(spath="curves.png") + + # Classification + from scitex.ai import ClassificationReporter, Classifier + + clf = Classifier()("SVC") + reporter = ClassificationReporter(output_dir="./results") + reporter.calculate_metrics(y_true, y_pred, y_proba) + reporter.save_summary() + +Training +-------- + +- ``LearningCurveLogger`` -- Track and visualize training/validation/test metrics across epochs +- ``EarlyStopping`` -- Monitor validation metrics and stop when improvement plateaus + +Classification +-------------- + +- ``ClassificationReporter`` -- Unified reporter for single/multi-task classification (balanced accuracy, MCC, ROC-AUC, confusion matrices) +- ``Classifier`` -- Factory for scikit-learn classifiers (SVC, KNN, Logistic Regression, AdaBoost, ...) +- ``CrossValidationExperiment`` -- Cross-validation framework + +Metrics +------- + +Standardized ``calc_*`` functions: + +- ``calc_bacc`` -- Balanced accuracy +- ``calc_mcc`` -- Matthews Correlation Coefficient +- ``calc_conf_mat`` -- Confusion matrix +- ``calc_roc_auc`` -- ROC-AUC score +- ``calc_pre_rec_auc`` -- Precision-Recall AUC +- ``calc_feature_importance`` -- Feature importance scores + +Visualization +------------- + +- ``plot_learning_curve`` -- Training/validation curves +- ``stx_conf_mat`` -- Confusion matrix heatmap +- ``plot_roc_curve`` -- ROC curve +- ``plot_pre_rec_curve`` -- Precision-Recall curve +- ``plot_feature_importance`` -- Feature importance bar plots + +Other +----- + +- ``MultiTaskLoss`` -- Multi-task learning loss weighting +- ``get_optimizer`` / ``set_optimizer`` -- Optimizer management +- ``GenAI`` -- Generative AI wrapper (lazy-loaded) +- Clustering: ``pca``, ``umap`` + +API Reference +------------- + +.. automodule:: scitex.ai + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/app.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/app.rst.txt new file mode 100644 index 000000000..18161dba2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/app.rst.txt @@ -0,0 +1,101 @@ +App Module (``stx.app``) +======================== + +Runtime SDK for SciTeX applications. Provides a unified interface for +file storage, configuration, and lifecycle management that works +identically in local and cloud environments. + +.. note:: + + ``stx.app`` delegates to the standalone + `scitex-app `_ package. + Install with: ``pip install scitex-app``. + +Overview +-------- + +SciTeX applications are self-contained scientific tools that can run +locally or on the SciTeX cloud platform. The ``stx.app`` module +provides the runtime SDK that each application uses to interact with +its environment. + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + + # Get current application info + info = stx.app.get_info() + + # Access application preferences + prefs = stx.app.get_prefs() + + # Check dependencies + stx.app.check_deps() + +Key Features +------------ + +**Unified File Storage** + Read and write files through a single API that abstracts local + filesystem and cloud storage. + + .. code-block:: python + + # These work identically locally and in the cloud + stx.app.write_file("results/output.csv", data) + content = stx.app.read_file("config/settings.yaml") + +**Configuration Management** + Application preferences are stored in a standard location and + accessible via dot-notation. + + .. code-block:: python + + prefs = stx.app.get_prefs() + print(prefs.theme) + print(prefs.default_format) + + stx.app.set_prefs(theme="dark", default_format="pdf") + +**Application Lifecycle** + Query and manage the running application. + + .. code-block:: python + + info = stx.app.get_info() + print(info.name) + print(info.version) + + current = stx.app.get_current() # Currently active app + +**Dependency Checking** + Verify that all required packages are available. + + .. code-block:: python + + missing = stx.app.check_deps() + if missing: + print(f"Missing: {missing}") + +Creating an Application +----------------------- + +Scaffold a new SciTeX application from a template: + +.. code-block:: bash + + scitex template clone app my_tool + +This creates a project with bridge-init configuration, MountPoint +definitions, and EventBus integration pre-configured. + +API Reference +------------- + +.. automodule:: scitex.app + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/audio.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/audio.rst.txt new file mode 100644 index 000000000..bc0a211a2 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/audio.rst.txt @@ -0,0 +1,78 @@ +Audio Module (``stx.audio``) +============================ + +Text-to-speech synthesis and audio file playback. Supports multiple +TTS backends with automatic fallback. + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + + # Text-to-speech + stx.audio.speak("Analysis complete. 42 significant results found.") + + # Play an audio file + stx.audio.play("notification.wav") + +Key Functions +------------- + +``speak(text, backend=None, **kwargs)`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Convert text to speech and play it through the default audio output. +If no backend is specified, the first available backend is used. + +.. code-block:: python + + # Use default backend + stx.audio.speak("Hello from SciTeX") + + # Specify a backend + stx.audio.speak("Hello", backend="espeak") + +``play(path)`` +^^^^^^^^^^^^^^ + +Play an audio file (WAV, MP3, etc.). + +.. code-block:: python + + stx.audio.play("alert.wav") + stx.audio.play("recording.mp3") + +``list_backends()`` +^^^^^^^^^^^^^^^^^^^ + +List available TTS backends on the current system. + +.. code-block:: python + + backends = stx.audio.list_backends() + # e.g., ['espeak', 'festival', 'pyttsx3'] + +Use Cases +--------- + +Audible notifications are useful for long-running experiments: + +.. code-block:: python + + import scitex as stx + + @stx.session + def main(CONFIG=stx.INJECTED): + result = train_model() # Takes hours + stx.audio.speak(f"Training done. Accuracy: {result.accuracy:.1%}") + return 0 + +API Reference +------------- + +.. automodule:: scitex.audio + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/audit.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/audit.rst.txt new file mode 100644 index 000000000..e7f92881e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/audit.rst.txt @@ -0,0 +1,7 @@ +audit Module (``stx.audit``) +============================ + +.. automodule:: scitex.audit + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/benchmark.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/benchmark.rst.txt new file mode 100644 index 000000000..014b80120 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/benchmark.rst.txt @@ -0,0 +1,7 @@ +benchmark Module (``stx.benchmark``) +==================================== + +.. automodule:: scitex.benchmark + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/bridge.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/bridge.rst.txt new file mode 100644 index 000000000..8028c570b --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/bridge.rst.txt @@ -0,0 +1,7 @@ +bridge Module (``stx.bridge``) +============================== + +.. automodule:: scitex.bridge + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/browser.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/browser.rst.txt new file mode 100644 index 000000000..c91604cc8 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/browser.rst.txt @@ -0,0 +1,7 @@ +browser Module (``stx.browser``) +================================ + +.. automodule:: scitex.browser + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/canvas.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/canvas.rst.txt new file mode 100644 index 000000000..210c63590 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/canvas.rst.txt @@ -0,0 +1,7 @@ +canvas Module (``stx.canvas``) +============================== + +.. automodule:: scitex.canvas + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/capture.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/capture.rst.txt new file mode 100644 index 000000000..68c87a179 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/capture.rst.txt @@ -0,0 +1,81 @@ +Capture Module (``stx.capture``) +================================= + +Screenshot capture and screen monitoring utilities. Useful for +documenting GUI states, recording experiment progress, and +automated visual testing. + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + + # Take a screenshot + img = stx.capture.snap() + + # Save it + stx.io.save(img, "screenshot.png") + +Key Functions +------------- + +``snap(region=None)`` +^^^^^^^^^^^^^^^^^^^^^ + +Capture a screenshot of the entire screen or a specific region. + +.. code-block:: python + + # Full screen + img = stx.capture.snap() + + # Specific region (x, y, width, height) + img = stx.capture.snap(region=(0, 0, 800, 600)) + +``monitor(interval=1.0, duration=None, output_dir=".")`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Capture screenshots at regular intervals. Useful for monitoring +long-running GUI processes. + +.. code-block:: python + + # Capture every 5 seconds for 1 minute + stx.capture.monitor(interval=5.0, duration=60, output_dir="./captures") + +``crop(image, region)`` +^^^^^^^^^^^^^^^^^^^^^^^ + +Crop a captured image to a specific region. + +.. code-block:: python + + img = stx.capture.snap() + cropped = stx.capture.crop(img, region=(100, 100, 400, 300)) + stx.io.save(cropped, "cropped.png") + +Use Cases +--------- + +Documenting experiment results displayed in a GUI: + +.. code-block:: python + + import scitex as stx + + @stx.session + def main(CONFIG=stx.INJECTED): + run_experiment_gui() + img = stx.capture.snap() + stx.io.save(img, "final_state.png") + return 0 + +API Reference +------------- + +.. automodule:: scitex.capture + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/clew.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/clew.rst.txt new file mode 100644 index 000000000..017427e08 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/clew.rst.txt @@ -0,0 +1,94 @@ +Clew Module (``stx.clew``) +========================== + +Hash-based provenance tracking for reproducible science. Clew (Ariadne's +thread) records file hashes during ``@stx.session`` runs and traces +dependency chains back to source. + +How It Works +------------ + +1. ``@stx.session`` starts a tracking session +2. ``stx.io.load()`` records input file hashes +3. ``stx.io.save()`` records output file hashes +4. Session close computes a combined hash of all inputs/outputs +5. Later, ``stx.clew`` can verify nothing has changed + +.. code-block:: python + + import scitex as stx + + # Automatic -- just use @stx.session + stx.io + @stx.session + def main(): + data = stx.io.load("input.csv") # Tracked as input + result = process(data) + stx.io.save(result, "output.png") # Tracked as output + return 0 + + # Verify later + stx.clew.status() # Like git status + stx.clew.run("session_id") # Verify by hash + stx.clew.chain("output.png") # Trace to source + +CLI Commands +------------ + +.. code-block:: bash + + scitex clew status # Show changed files + scitex clew list # List all tracked runs + scitex clew run # Verify a specific run + scitex clew chain # Trace dependency chain + scitex clew stats # Database statistics + +Verification Levels +------------------- + +- **CACHE** -- Hash comparison only (fast). Checks if files match stored hashes. +- **RERUN** -- Re-execute scripts and compare outputs (thorough). Catches logic errors. + +.. code-block:: python + + # Fast: hash comparison + result = stx.clew.run("session_id") + + # Thorough: re-execute and compare + result = stx.clew.run("session_id", from_scratch=True) + +Dependency Chains +----------------- + +Clew traces ``parent_session`` links to build a DAG from final output +back to original source: + +.. code-block:: python + + chain = stx.clew.chain("final_figure.png") + # Shows: source.py → intermediate.csv → analysis.py → final_figure.png + + # Visualize as Mermaid DAG + stx.clew.mermaid("session_id") + +Verification Statuses +--------------------- + +- ``VERIFIED`` -- Files match expected hashes +- ``MISMATCH`` -- Files differ from stored hashes +- ``MISSING`` -- Files no longer exist +- ``UNKNOWN`` -- No prior tracking data + +Key Functions +------------- + +- ``status()`` -- Show changed items (like ``git status``) +- ``run(session_id)`` -- Verify a specific run +- ``chain(target_file)`` -- Trace dependency chain +- ``list_runs(limit, status)`` -- List tracked runs +- ``stats()`` -- Database statistics + +API Reference +------------- + +.. automodule:: scitex.clew + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/cli.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/cli.rst.txt new file mode 100644 index 000000000..c6054e8fd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/cli.rst.txt @@ -0,0 +1,7 @@ +cli Module (``stx.cli``) +======================== + +.. automodule:: scitex.cli + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/cloud.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/cloud.rst.txt new file mode 100644 index 000000000..6c265efe4 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/cloud.rst.txt @@ -0,0 +1,123 @@ +Cloud Module (``stx.cloud``) +============================ + +Cloud platform integration for the SciTeX ecosystem. Provides +programmatic access to remote execution, file storage, job management, +and repository operations. + +Overview +-------- + +The cloud module connects local SciTeX workflows to the cloud platform, +enabling remote computation, shared storage, and collaborative +features. All operations are available through Python API, CLI, and +MCP tools. + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + + # Check cloud connection + status = stx.cloud.status() + + # Submit a job + job_id = stx.cloud.jobs.submit(script="train.py", resources={"gpu": 1}) + + # Check job status + stx.cloud.jobs.status(job_id) + +Key Features +------------ + +Job Management +^^^^^^^^^^^^^^ + +Submit, monitor, and retrieve results from remote compute jobs. + +.. code-block:: python + + # Submit a job + job_id = stx.cloud.jobs.submit( + script="train.py", + resources={"gpu": 1, "memory": "16G"}, + ) + + # Poll status + status = stx.cloud.jobs.status(job_id) + + # List all jobs + stx.cloud.jobs.list() + + # Cancel a running job + stx.cloud.jobs.cancel(job_id) + +File Storage +^^^^^^^^^^^^ + +Upload and download files to/from cloud storage. + +.. code-block:: python + + # Upload a file + stx.cloud.files.upload("local_data.h5", remote="data/experiment.h5") + + # Download a file + stx.cloud.files.download("data/experiment.h5", local="./downloaded.h5") + + # List remote files + stx.cloud.files.list("data/") + +Data API +^^^^^^^^ + +CRUD operations on structured data stored in the cloud. + +.. code-block:: python + + # Create a record + stx.cloud.data.create(collection="results", data={"accuracy": 0.95}) + + # Search records + results = stx.cloud.data.search(collection="results", query={"accuracy": {"$gt": 0.9}}) + + # List collections + stx.cloud.data.list() + +Repository Operations +^^^^^^^^^^^^^^^^^^^^^ + +Manage git repositories through the cloud API. + +.. code-block:: python + + stx.cloud.repo.list() + stx.cloud.repo.status("my-project") + stx.cloud.repo.push("my-project") + +CLI Access +---------- + +.. code-block:: bash + + # Job management + scitex cloud jobs submit train.py --gpu 1 + scitex cloud jobs status JOB_ID + scitex cloud jobs list + + # File operations + scitex cloud files upload data.h5 + scitex cloud files list + + # Status + scitex cloud status + +API Reference +------------- + +.. automodule:: scitex.cloud + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/compat.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/compat.rst.txt new file mode 100644 index 000000000..7438ae6ca --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/compat.rst.txt @@ -0,0 +1,7 @@ +compat Module (``stx.compat``) +============================== + +.. automodule:: scitex.compat + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/config.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/config.rst.txt new file mode 100644 index 000000000..11a770d0b --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/config.rst.txt @@ -0,0 +1,88 @@ +Config Module (``stx.config``) +=============================== + +YAML-based configuration with priority resolution and path management. + +Priority Resolution +------------------- + +All config values follow the same precedence: + +.. code-block:: text + + direct argument > config/YAML > environment variable > default + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Get global config (reads ~/.scitex/config.yaml) + config = stx.config.get_config() + + # Resolve with precedence + log_level = config.resolve("logging.level", default="INFO") + # Checks: direct → YAML → SCITEX_LOGGING_LEVEL env → "INFO" + + # Access nested values + config.get_nested("scholar", "crossref_email") + + # Path management + paths = stx.config.get_paths() + paths.scholar # ~/.scitex/scholar + paths.cache # ~/.scitex/cache + +YAML Configuration +------------------ + +.. code-block:: yaml + + # ~/.scitex/config.yaml (or ./config/*.yaml for projects) + logging: + level: INFO + + scholar: + crossref_email: ${CROSSREF_EMAIL:-user@example.com} + +Environment variable substitution with ``${VAR:-default}`` syntax is +supported in YAML files. + +Key Classes +----------- + +- ``ScitexConfig`` -- YAML-based config with env var substitution and precedence resolution +- ``PriorityConfig`` -- Dict-based config resolver for programmatic use +- ``ScitexPaths`` -- Centralized path manager (all paths derive from ``~/.scitex/``) +- ``EnvVar`` -- Environment variable definition dataclass + +Path Management +--------------- + +``ScitexPaths`` manages all SciTeX directories: + +.. code-block:: python + + paths = stx.config.get_paths() + paths.base # ~/.scitex (SCITEX_DIR) + paths.logs # ~/.scitex/logs + paths.cache # ~/.scitex/cache + paths.scholar # ~/.scitex/scholar + paths.rng # ~/.scitex/rng + paths.capture # ~/.scitex/capture + +Utility Functions +----------------- + +- ``get_config(path)`` -- Get singleton ScitexConfig instance +- ``get_paths(base_dir)`` -- Get singleton ScitexPaths instance +- ``load_yaml(path)`` -- Load YAML with env var substitution +- ``load_dotenv(path)`` -- Load ``.env`` file +- ``get_scitex_dir()`` -- Get SCITEX_DIR with precedence + +API Reference +------------- + +.. automodule:: scitex.config + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/container.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/container.rst.txt new file mode 100644 index 000000000..6ac42573b --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/container.rst.txt @@ -0,0 +1,7 @@ +container Module (``stx.container``) +==================================== + +.. automodule:: scitex.container + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/context.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/context.rst.txt new file mode 100644 index 000000000..7a7f5b8ff --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/context.rst.txt @@ -0,0 +1,7 @@ +context Module (``stx.context``) +================================ + +.. automodule:: scitex.context + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/cv.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/cv.rst.txt new file mode 100644 index 000000000..e4b53ed96 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/cv.rst.txt @@ -0,0 +1,7 @@ +cv Module (``stx.cv``) +====================== + +.. automodule:: scitex.cv + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/dataset.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/dataset.rst.txt new file mode 100644 index 000000000..3ceca7e6d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/dataset.rst.txt @@ -0,0 +1,125 @@ +Dataset Module (``stx.dataset``) +================================= + +Unified access to public scientific datasets from major neuroscience +and biomedical repositories. Search, browse, and fetch datasets +without learning each repository's API. + +Supported Sources +----------------- + +.. list-table:: + :header-rows: 1 + :widths: 25 75 + + * - Source + - Description + * - `DANDI `_ + - Neurophysiology data (NWB format) -- electrophysiology, calcium imaging + * - `OpenNeuro `_ + - Brain imaging data (BIDS format) -- fMRI, EEG, MEG, PET + * - `PhysioNet `_ + - Physiological signal data -- ECG, EEG, clinical waveforms + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + + # Search across all sources + results = stx.dataset.search("epilepsy EEG") + + # Fetch a specific dataset + data = stx.dataset.fetch("dandi", dandiset_id="000003") + + # List available sources + sources = stx.dataset.list_sources() + # ['dandi', 'openneuro', 'physionet'] + +Key Functions +------------- + +``search(query, source=None)`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Search for datasets across one or all supported repositories. + +.. code-block:: python + + # Search all sources + results = stx.dataset.search("motor imagery BCI") + + # Search a specific source + results = stx.dataset.search("sleep staging", source="physionet") + + for r in results: + print(f"{r.source}: {r.title} ({r.id})") + +``fetch(source, **kwargs)`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Download or stream a dataset from a specific source. + +.. code-block:: python + + # Fetch from DANDI + data = stx.dataset.fetch("dandi", dandiset_id="000003") + + # Fetch from OpenNeuro + data = stx.dataset.fetch("openneuro", dataset_id="ds000117") + + # Fetch from PhysioNet + data = stx.dataset.fetch("physionet", database="mimic-iv", version="2.0") + +``list_sources()`` +^^^^^^^^^^^^^^^^^^ + +List all available dataset sources and their status. + +.. code-block:: python + + sources = stx.dataset.list_sources() + # ['dandi', 'openneuro', 'physionet'] + +Local Database +-------------- + +Build a local search index for faster repeated queries: + +.. code-block:: python + + # Build/update the local database + stx.dataset.db_build(sources=["dandi", "openneuro"]) + + # Search the local index (fast, offline) + results = stx.dataset.db_search("resting state fMRI") + + # Get database statistics + stx.dataset.db_stats() + +CLI Access +---------- + +.. code-block:: bash + + # Search datasets + scitex dataset search "epilepsy EEG" + + # Fetch a dataset + scitex dataset fetch dandi --dandiset-id 000003 + + # List sources + scitex dataset list-sources + + # Build local database + scitex dataset db-build + +API Reference +------------- + +.. automodule:: scitex.dataset + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/datetime.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/datetime.rst.txt new file mode 100644 index 000000000..78541bb81 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/datetime.rst.txt @@ -0,0 +1,7 @@ +datetime Module (``stx.datetime``) +================================== + +.. automodule:: scitex.datetime + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/db.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/db.rst.txt new file mode 100644 index 000000000..5945aa66d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/db.rst.txt @@ -0,0 +1,7 @@ +db Module (``stx.db``) +====================== + +.. automodule:: scitex.db + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/decorators.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/decorators.rst.txt new file mode 100644 index 000000000..b1a5f2fd0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/decorators.rst.txt @@ -0,0 +1,80 @@ +Decorators Module (``stx.decorators``) +======================================= + +Function decorators for type conversion, batching, caching, and more. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.decorators import torch_fn, batch_fn, cache_disk, timeout + + @torch_fn + def process(x): + """Auto-converts inputs to torch tensors, outputs back.""" + return x * 2 + + @batch_fn + def predict(data, batch_size=32): + """Process data in batches with progress bar.""" + return model(data) + + @cache_disk + def expensive_computation(params): + """Results cached to disk for reuse.""" + return heavy_compute(params) + + @timeout(seconds=30) + def risky_call(): + """Raises TimeoutError if exceeds 30s.""" + return external_api() + +Type Conversion +--------------- + +Auto-convert between data frameworks: + +- ``@torch_fn`` -- Inputs to PyTorch tensors, outputs back to original type +- ``@numpy_fn`` -- Inputs to NumPy arrays +- ``@pandas_fn`` -- Inputs to pandas objects +- ``@xarray_fn`` -- Inputs to xarray objects + +Batch Processing +---------------- + +- ``@batch_fn`` -- Split input into batches with tqdm progress +- ``@batch_numpy_fn`` -- NumPy conversion + batching +- ``@batch_torch_fn`` -- PyTorch conversion + batching +- ``@batch_pandas_fn`` -- Pandas conversion + batching + +Caching +------- + +- ``@cache_mem`` -- In-memory function result caching +- ``@cache_disk`` -- Persistent disk-based caching +- ``@cache_disk_async`` -- Async disk caching + +Utilities +--------- + +- ``@deprecated(reason, forward_to)`` -- Mark functions as deprecated +- ``@not_implemented`` -- Mark as not yet implemented +- ``@timeout(seconds)`` -- Enforce execution time limits +- ``@preserve_doc`` -- Preserve docstrings when wrapping + +Auto-Ordering +------------- + +.. code-block:: python + + from scitex.decorators import enable_auto_order + + enable_auto_order() + # Now decorators are applied in optimal order regardless of code order + +API Reference +------------- + +.. automodule:: scitex.decorators + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/dev.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/dev.rst.txt new file mode 100644 index 000000000..63e389f2f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/dev.rst.txt @@ -0,0 +1,163 @@ +Dev Module (``stx.dev``) +======================== + +Development tools and ecosystem management for the SciTeX package family. + +.. note:: + + ``stx.dev`` delegates to the standalone + `scitex-dev `_ package. + Install with: ``pip install scitex-dev``. + +Overview +-------- + +The dev module provides utilities for maintaining the SciTeX ecosystem of +packages, building documentation, managing versions, and creating +MCP/CLI wrappers for scientific tools. It is primarily used by package +maintainers and contributors rather than end users. + +Ecosystem Management +-------------------- + +The SciTeX ecosystem comprises 14+ packages. ``stx.dev`` provides a +unified registry and coordination tools. + +.. code-block:: python + + import scitex as stx + + # List all ecosystem packages + stx.dev.list_versions() + + # Check version consistency across the ecosystem + stx.dev.check_versions() + + # Synchronize local clones + stx.dev.ecosystem_sync() + + # Commit across multiple packages + stx.dev.ecosystem_commit("fix: update shared constants") + +.. list-table:: Ecosystem Packages + :header-rows: 1 + :widths: 30 70 + + * - Package + - Purpose + * - ``scitex`` + - Hub package (re-exports all modules) + * - ``scitex-io`` + - File I/O for 30+ formats + * - ``scitex-stats`` + - Statistical testing with auto-reporting + * - ``scitex-linter`` + - AST-based convention checker + * - ``scitex-clew`` + - Claim-evidence-workflow pipeline + * - ``figrecipe`` + - Publication-quality plotting + * - ``scitex-dev`` + - Development and ecosystem tools + * - ``scitex-notification`` + - Multi-backend notifications + * - ``scitex-app`` + - Runtime SDK for SciTeX applications + +LLM-friendly Types +------------------- + +``stx.dev`` provides structured return types designed for consumption +by both humans and AI agents: + +.. code-block:: python + + from scitex.dev import Result, ErrorCode + + # Wrap function results for consistent handling + result = Result(ok=True, data={"accuracy": 0.95}) + result = Result(ok=False, error=ErrorCode.NOT_FOUND, message="File missing") + + # Decorator to add return_as= parameter + @stx.dev.supports_return_as + def analyze(data): + return {"mean": data.mean()} + + analyze(data, return_as="json") # JSON string + analyze(data, return_as="dict") # Python dict + +MCP and CLI Wrappers +-------------------- + +Convert Python functions into MCP tools or CLI commands: + +.. code-block:: python + + from scitex.dev import wrap_as_mcp, wrap_as_cli + + def my_tool(path: str, threshold: float = 0.5) -> dict: + """Analyze a data file.""" + ... + + # Register as MCP tool (for AI agent access) + mcp_tool = wrap_as_mcp(my_tool) + + # Register as CLI command (for terminal access) + cli_cmd = wrap_as_cli(my_tool) + +Documentation +------------- + +Build and search unified documentation across the ecosystem: + +.. code-block:: python + + # Build Sphinx docs for a package + stx.dev.build_docs("scitex-io") + + # Get docstring for any public function + stx.dev.get_docs("stx.io.save") + + # Full-text search across all packages + results = stx.dev.search("load_configs") + +Hot Reload +---------- + +Reload modules during interactive development: + +.. code-block:: python + + stx.dev.reload("scitex.io") # Re-import scitex.io from disk + +HPC Testing +----------- + +Submit test suites to HPC clusters and poll results: + +.. code-block:: bash + + scitex dev test-hpc --package scitex-io + scitex dev test-hpc-poll --job-id 12345 + +Bulk Rename +----------- + +Rename symbols across an entire codebase safely: + +.. code-block:: python + + stx.dev.bulk_rename( + root="./src", + old="old_function_name", + new="new_function_name", + dry_run=True, # Preview changes first + ) + +API Reference +------------- + +.. automodule:: scitex.dev + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/diagram.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/diagram.rst.txt new file mode 100644 index 000000000..7e3a9f997 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/diagram.rst.txt @@ -0,0 +1,99 @@ +Diagram Module (``stx.diagram``) +================================= + +Paper-optimized diagram generation with Mermaid and Graphviz backends. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.diagram import Diagram + + # Create from Python + d = Diagram(type="workflow", title="Analysis Pipeline") + d.add_node("load", "Load Data", shape="stadium") + d.add_node("proc", "Process", shape="rounded", emphasis="primary") + d.add_node("save", "Save Results", shape="stadium", emphasis="success") + d.add_edge("load", "proc") + d.add_edge("proc", "save") + + # Export + d.to_mermaid("pipeline.mmd") + d.to_graphviz("pipeline.dot") + + # Or from YAML specification + d = Diagram.from_yaml("pipeline.diagram.yaml") + +YAML Specification +------------------ + +.. code-block:: yaml + + type: workflow + title: SciTeX Analysis Pipeline + + paper: + column: single # single or double + mode: publication # draft or publication + reading_direction: left_to_right + + layout: + groups: + Input: [load, preprocess] + Analysis: [analyze, test] + + nodes: + - id: load + label: Load Data + shape: stadium + - id: analyze + label: Statistical Test + shape: rounded + emphasis: primary + + edges: + - from: load + to: analyze + +Node Shapes +------------ + +``box``, ``rounded``, ``stadium``, ``diamond``, ``circle``, ``codeblock`` + +Node Emphasis +------------- + +- ``normal`` -- Default (dark) +- ``primary`` -- Key nodes (blue) +- ``success`` -- Positive outcomes (green) +- ``warning`` -- Issues (red) +- ``muted`` -- Secondary (gray) + +Diagram Types +------------- + +- ``workflow`` -- Left-to-right sequential processes +- ``decision`` -- Top-to-bottom decision trees +- ``pipeline`` -- Data pipeline stages +- ``hierarchy`` -- Tree structures +- ``comparison`` -- Side-by-side comparison + +Paper Modes +----------- + +- **draft** -- Full arrows, medium spacing, all edges visible +- **publication** -- Tight spacing, return edges invisible, optimized for column width + +Backends +-------- + +- **Mermaid** (``.mmd``) -- Web/markdown rendering +- **Graphviz DOT** (``.dot``) -- Tighter layouts, render with ``dot -Tpng`` +- **YAML** (``.diagram.yaml``) -- Semantic spec, human/LLM-readable + +API Reference +------------- + +.. automodule:: scitex.diagram + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/dict.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/dict.rst.txt new file mode 100644 index 000000000..7157aba95 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/dict.rst.txt @@ -0,0 +1,7 @@ +dict Module (``stx.dict``) +========================== + +.. automodule:: scitex.dict + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/dsp.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/dsp.rst.txt new file mode 100644 index 000000000..4e16f6f2d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/dsp.rst.txt @@ -0,0 +1,75 @@ +DSP Module (``stx.dsp``) +======================== + +Digital signal processing tools for filtering, spectral analysis, +and time-frequency decomposition. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import numpy as np + + # Generate test signal + fs = 1000 # Hz + t = np.arange(0, 1, 1/fs) + signal = np.sin(2 * np.pi * 10 * t) + 0.5 * np.sin(2 * np.pi * 50 * t) + + # Filtering + filtered = stx.dsp.filt.bandpass(signal, fs=fs, low=5, high=30) + low_pass = stx.dsp.filt.lowpass(signal, fs=fs, cutoff=20) + high_pass = stx.dsp.filt.highpass(signal, fs=fs, cutoff=5) + + # Power spectral density + freqs, psd = stx.dsp.psd(signal, fs=fs) + + # Band powers + powers = stx.dsp.band_powers(signal, fs=fs, bands={ + "delta": (1, 4), + "theta": (4, 8), + "alpha": (8, 13), + "beta": (13, 30), + }) + + # Hilbert transform (analytic signal) + analytic = stx.dsp.hilbert(signal) + amplitude = np.abs(analytic) + phase = np.angle(analytic) + + # Wavelet decomposition + coeffs = stx.dsp.wavelet(signal, fs=fs, freqs=np.arange(1, 50)) + +Available Functions +------------------- + +**Filtering** (``stx.dsp.filt``) + +- ``bandpass(signal, fs, low, high)`` +- ``lowpass(signal, fs, cutoff)`` +- ``highpass(signal, fs, cutoff)`` +- ``notch(signal, fs, freq)`` + +**Spectral Analysis** + +- ``psd(signal, fs)`` -- Power spectral density +- ``band_powers(signal, fs, bands)`` -- Power in frequency bands +- ``wavelet(signal, fs, freqs)`` -- Continuous wavelet transform + +**Time-Frequency** + +- ``hilbert(signal)`` -- Analytic signal via Hilbert transform +- ``pac(signal, fs)`` -- Phase-amplitude coupling + +**Utilities** + +- ``demo_sig(fs, duration)`` -- Generate demo signals for testing +- ``crop(signal, start, end, fs)`` -- Crop signal to time range +- ``detect_ripples(signal, fs)`` -- Detect sharp-wave ripples + +API Reference +------------- + +.. automodule:: scitex.dsp + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/etc.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/etc.rst.txt new file mode 100644 index 000000000..b10d3a1f4 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/etc.rst.txt @@ -0,0 +1,7 @@ +etc Module (``stx.etc``) +======================== + +.. automodule:: scitex.etc + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/events.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/events.rst.txt new file mode 100644 index 000000000..2039cfecd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/events.rst.txt @@ -0,0 +1,7 @@ +events Module (``stx.events``) +============================== + +.. automodule:: scitex.events + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/gen.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/gen.rst.txt new file mode 100644 index 000000000..4a982c9fc --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/gen.rst.txt @@ -0,0 +1,38 @@ +Gen Module (``stx.gen``) +======================== + +General utilities for path management, shell commands, and system operations. + +.. note:: + + Session management has moved to ``@stx.session`` (see :doc:`/core_concepts`). + The ``scitex.gen.start()`` / ``scitex.gen.close()`` pattern is deprecated. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Timestamped output directories + path = stx.gen.mk_spath("./results") + # → ./results/20260213_143022/ + + # Run shell commands + stx.gen.run("ls -la") + + # Clipboard operations + stx.gen.copy("text to clipboard") + text = stx.gen.paste() + + # String to valid path + stx.gen.title2path("My Experiment #1") + # → "my_experiment_1" + +API Reference +------------- + +.. automodule:: scitex.gen + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/gists.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/gists.rst.txt new file mode 100644 index 000000000..b77c7eaf9 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/gists.rst.txt @@ -0,0 +1,7 @@ +gists Module (``stx.gists``) +============================ + +.. automodule:: scitex.gists + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/git.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/git.rst.txt new file mode 100644 index 000000000..fcec156e3 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/git.rst.txt @@ -0,0 +1,7 @@ +git Module (``stx.git``) +======================== + +.. automodule:: scitex.git + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/index.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/index.rst.txt new file mode 100644 index 000000000..50f15de62 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/index.rst.txt @@ -0,0 +1,118 @@ +API Reference +============= + +SciTeX is organized into focused modules. +All modules are accessible via ``import scitex as stx`` followed by ``stx.``. + +.. toctree:: + :maxdepth: 2 + :caption: Core + + session + io + config + logging + repro + clew + +.. toctree:: + :maxdepth: 2 + :caption: Science & Analysis + + stats + plt + dsp + diagram + canvas + +.. toctree:: + :maxdepth: 2 + :caption: Literature & Writing + + scholar + writer + notebook + +.. toctree:: + :maxdepth: 2 + :caption: Machine Learning + + ai + nn + torch + cv + benchmark + +.. toctree:: + :maxdepth: 2 + :caption: Data & I/O + + pd + db + dataset + schema + +.. toctree:: + :maxdepth: 2 + :caption: Infrastructure + + app + cloud + container + tunnel + cli + browser + capture + audio + notification + social + +.. toctree:: + :maxdepth: 2 + :caption: Development + + dev + template + linter + introspect + audit + +.. toctree:: + :maxdepth: 2 + :caption: Utilities + + gen + decorators + str + dict + path + os + sh + git + parallel + linalg + datetime + types + rng + context + resource + utils + etc + web + msword + tex + bridge + compat + module + gists + media + security + ui + usage + +.. toctree:: + :maxdepth: 2 + :caption: Other + + events + project diff --git a/src/scitex/_sphinx_html/_sources/source/api/introspect.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/introspect.rst.txt new file mode 100644 index 000000000..180c1dafb --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/introspect.rst.txt @@ -0,0 +1,71 @@ +Introspect Module (``stx.introspect``) +======================================= + +IPython-like code inspection for exploring Python packages. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Function signature (like IPython's func?) + stx.introspect.q("scitex.stats.test_ttest_ind") + # → name, signature, parameters, return type + + # Full source code (like IPython's func??) + stx.introspect.qq("scitex.stats.test_ttest_ind") + # → complete source with line numbers + + # List module members (like enhanced dir()) + stx.introspect.dir("scitex.plt", filter="public", kind="functions") + + # Recursive API tree + df = stx.introspect.list_api("scitex", max_depth=2) + +IPython-Style Shortcuts +----------------------- + +- ``q(dotted_path)`` -- Signature and parameters (like ``func?``) +- ``qq(dotted_path)`` -- Full source code (like ``func??``) +- ``dir(dotted_path, filter, kind)`` -- List members with filtering + +Filters: ``"public"``, ``"private"``, ``"dunder"``, ``"all"`` + +Kinds: ``"functions"``, ``"classes"``, ``"data"``, ``"modules"`` + +Documentation +------------- + +- ``get_docstring(path, format)`` -- Extract docstrings (``"raw"``, ``"parsed"``, ``"summary"``) +- ``get_exports(path)`` -- Get ``__all__`` exports +- ``find_examples(path)`` -- Find usage examples in tests/examples + +Type Analysis +------------- + +- ``get_type_hints_detailed(path)`` -- Full type annotation analysis +- ``get_class_hierarchy(path)`` -- Inheritance tree (MRO + subclasses) +- ``get_class_annotations(path)`` -- Class variable annotations + +Code Analysis +------------- + +- ``get_imports(path, categorize)`` -- All imports (AST-based, grouped by stdlib/third-party/local) +- ``get_dependencies(path, recursive)`` -- Module dependency tree +- ``get_call_graph(path, max_depth)`` -- Function call graph (with timeout protection) + +API Tree +-------- + +.. code-block:: python + + # Generate full module tree as DataFrame + df = stx.introspect.list_api("scitex", max_depth=3, docstring=True) + +API Reference +------------- + +.. automodule:: scitex.introspect + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/io.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/io.rst.txt new file mode 100644 index 000000000..9489168df --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/io.rst.txt @@ -0,0 +1,181 @@ +I/O Module (``stx.io``) +======================== + +Unified file I/O for 30+ scientific data formats. A single ``save()`` +and ``load()`` interface handles format detection by file extension, +so you never need to remember which library reads ``.npy`` vs ``.h5`` +vs ``.parquet``. + +.. note:: + + Core format handlers are provided by the standalone + `scitex-io `_ package. + ``stx.io`` adds integration with ``stx.session`` (provenance tracking), + ``stx.clew`` (claim verification), and automatic CSV export for figures. + +Supported Formats +----------------- + +.. list-table:: + :header-rows: 1 + :widths: 25 75 + + * - Category + - Extensions + * - **Tabular** + - ``.csv``, ``.tsv``, ``.xlsx``, ``.xls``, ``.parquet``, ``.feather`` + * - **Array** + - ``.npy``, ``.npz``, ``.mat``, ``.zarr``, ``.h5`` / ``.hdf5`` + * - **Config** + - ``.yaml``, ``.yml``, ``.json``, ``.toml``, ``.ini``, ``.conf`` + * - **Figure** + - ``.png``, ``.jpg``, ``.jpeg``, ``.svg``, ``.pdf``, ``.tiff`` + * - **Text** + - ``.txt``, ``.log``, ``.md``, ``.rst`` + * - **Audio** + - ``.wav``, ``.mp3``, ``.flac`` + * - **Serialized** + - ``.pkl``, ``.pickle``, ``.joblib`` + * - **Bibliography** + - ``.bib`` + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + import pandas as pd + import numpy as np + + # --- Save and load a DataFrame --- + df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]}) + stx.io.save(df, "results.csv") + df_loaded = stx.io.load("results.csv") + + # --- Save and load a NumPy array --- + arr = np.random.randn(100, 3) + stx.io.save(arr, "data.npy") + arr_loaded = stx.io.load("data.npy") + + # --- Save a figure (PNG + CSV data export) --- + fig, ax = stx.plt.subplots() + ax.stx_line([1, 2, 3, 4, 5], id="my_data") + stx.io.save(fig, "plot.png") + # Creates: plot.png, plot.csv, plot.yaml + +Key Functions +------------- + +``save(obj, path, **kwargs)`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Save any supported object to a file. The format is determined by the +file extension. Built-in features beyond simple save: + +- **Auto directory creation** -- no ``os.makedirs()`` needed +- **Path resolution** -- relative paths resolve to ``_out/`` +- **Symlinks** -- ``symlink_from_cwd=True`` for short access paths +- **Save logging** -- prints file path and size on success +- **Clew hash tracking** -- file hashes recorded automatically for verification +- **Figure CSV export** -- saves plot data alongside image files + +.. code-block:: python + + # Format detected from extension + stx.io.save(fig, "figure.pdf") # Also exports CSV + YAML recipe + stx.io.save(df, "output.parquet") # DataFrame + stx.io.save({"lr": 0.001}, "config.yaml") # Dict + stx.io.save(arr, "weights.npy") # NumPy array + + # Symlink for convenient access + stx.io.save(df, "results/data.csv", symlink_from_cwd=True) + +``load(path)`` +^^^^^^^^^^^^^^ + +Load data from a file. Returns the appropriate Python object +(DataFrame, ndarray, dict, etc.). + +.. code-block:: python + + df = stx.io.load("results.csv") # -> pd.DataFrame + arr = stx.io.load("weights.npy") # -> np.ndarray + cfg = stx.io.load("config.yaml") # -> dict + data = stx.io.load("experiment.h5") # -> dict of arrays + +``load_configs(pattern="./config/*.yaml")`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Load and merge multiple YAML configuration files into a single +``DotDict``. Used internally by ``@stx.session`` to build the +``CONFIG`` object. + +.. code-block:: python + + CONF = stx.io.load_configs("./config/*.yaml") + print(CONF.MODEL.hidden_size) + +``list_formats()`` +^^^^^^^^^^^^^^^^^^ + +List all registered format handlers. + +.. code-block:: python + + fmts = stx.io.list_formats() + # ['.csv', '.h5', '.hdf5', '.json', '.mat', '.npy', ...] + +HDF5 and Zarr Exploration +------------------------- + +For hierarchical formats, use the explorer interface: + +.. code-block:: python + + # HDF5 + stx.io.explore_h5("data.h5") # Print tree structure + stx.io.has_h5_key("data.h5", "/group/dataset") + + # Zarr + stx.io.explore_zarr("data.zarr") + stx.io.has_zarr_key("data.zarr", "/group/array") + +Format Registry +--------------- + +Register custom loaders and savers for new file extensions: + +.. code-block:: python + + @stx.io.register_loader(".custom") + def load_custom(path, **kwargs): + with open(path) as f: + return parse_custom(f.read()) + + @stx.io.register_saver(".custom") + def save_custom(obj, path, **kwargs): + with open(path, "w") as f: + f.write(serialize_custom(obj)) + +Caching +------- + +Built-in load caching for repeated reads of the same file: + +.. code-block:: python + + stx.io.configure_cache(maxsize=128) + data = stx.io.load("big_file.h5") # First call: reads from disk + data = stx.io.load("big_file.h5") # Second call: from cache + + stx.io.get_cache_info() # Cache hit/miss statistics + stx.io.clear_load_cache() # Flush the cache + +API Reference +------------- + +.. automodule:: scitex.io + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/linalg.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/linalg.rst.txt new file mode 100644 index 000000000..2f7ce9a85 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/linalg.rst.txt @@ -0,0 +1,7 @@ +linalg Module (``stx.linalg``) +============================== + +.. automodule:: scitex.linalg + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/linter.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/linter.rst.txt new file mode 100644 index 000000000..bd9072ba0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/linter.rst.txt @@ -0,0 +1,191 @@ +Linter Module (``stx.linter``) +=============================== + +AST-based Python linter enforcing SciTeX conventions for reproducible +scientific code. Uses a plugin architecture where each downstream +package contributes its own rules. + +.. note:: + + ``stx.linter`` wraps the standalone + `scitex-linter `_ package. + Install with: ``pip install scitex-linter``. + +Quick Start +----------- + +.. code-block:: bash + + # Check a file + scitex linter check my_script.py + + # Check with specific severity + scitex linter check my_script.py --severity warning + + # List all rules + scitex linter list-rules + + # Filter by category + scitex linter list-rules --category session + +.. code-block:: python + + from scitex_linter import check_file, list_rules + + # Check a file + results = check_file("my_script.py") + + # List available rules + rules = list_rules() + +Rule Categories +--------------- + +47+ rules across 7 categories, contributed by multiple packages: + +.. list-table:: + :header-rows: 1 + :widths: 10 20 15 55 + + * - Prefix + - Category + - Source + - Examples + * - ``STX-S`` + - **Session** + - scitex-linter + - Missing ``@stx.session``, missing ``if __name__`` guard, missing return, + ``load_configs()`` result not UPPER_CASE, magic numbers in module scope + * - ``STX-I`` + - **Import** + - scitex-linter + - Using ``import mngs`` instead of ``import scitex``, bare ``import numpy``, + wildcard imports + * - ``STX-IO`` + - **I/O** + - scitex-io + - Using ``open()`` instead of ``stx.io``, hardcoded paths, + using ``pd.read_csv`` directly + * - ``STX-P`` + - **Plotting** + - figrecipe + - Using ``plt.show()`` instead of ``stx.io.save``, missing ``set_xyt``, + using raw matplotlib calls + * - ``STX-ST`` + - **Statistics** + - scitex-stats + - Using ``scipy.stats`` directly instead of ``stx.stats``, + missing multiple comparison correction + * - ``STX-PA`` + - **Path** + - scitex-linter + - Hardcoded absolute paths, missing ``stx.gen.mk_spath`` + * - ``STX-FM`` + - **Format** + - figrecipe + - Non-snake_case names, magic numbers, missing docstrings + +Severity Levels +--------------- + +- **error** -- Must fix (breaks reproducibility or correctness) +- **warning** -- Should fix (best practice violations) +- **info** -- Suggestions for improvement + +Plugin Architecture +------------------- + +Each downstream package defines its own linter rules via the +``scitex_linter.plugins`` entry point. The linter discovers and +aggregates rules automatically at runtime. + +.. code-block:: toml + + # In a downstream package's pyproject.toml + [project.entry-points."scitex_linter.plugins"] + my_package = "my_package._linter_plugin:get_plugin" + +The plugin function returns a dictionary of rules, call patterns, +axes hints, and AST checker classes: + +.. code-block:: python + + def get_plugin(): + from ._rules import MyRule001, MyRule002 + return { + "rules": [MyRule001, MyRule002], + "call_rules": {"my_func": "Use stx.my_func() instead"}, + "axes_hints": {}, + "checkers": [], + } + +Interfaces +---------- + +The linter is available through four interfaces: + +**CLI (via scitex):** + +.. code-block:: bash + + scitex linter check script.py + scitex linter list-rules --category io --severity warning + +**Standalone CLI:** + +.. code-block:: bash + + scitex-linter check script.py + +**Python API:** + +.. code-block:: python + + from scitex_linter import check_file, check_source, list_rules + + results = check_file("script.py") + results = check_source("import numpy as np\n...") + rules = list_rules(category="io", severity="warning") + +**Flake8 Plugin:** + +.. code-block:: bash + + flake8 --select=STX script.py + +**MCP Tools (for AI agents):** + +.. code-block:: python + + linter_check(path="script.py", severity="warning") + linter_list_rules(category="session") + linter_check_source(source="...", filepath="") + +Configuration +------------- + +Configure via ``pyproject.toml``: + +.. code-block:: toml + + [tool.scitex-linter] + severity = "warning" + ignore = ["STX-S002", "STX-FM001"] + +Example Output +-------------- + +.. code-block:: text + + my_script.py:3:1: STX-I001 [warning] Use 'import scitex as stx' instead of 'import mngs' + my_script.py:15:5: STX-IO003 [error] Use 'stx.io.load()' instead of 'pd.read_csv()' + my_script.py:22:1: STX-S001 [warning] Missing '@stx.session' decorator on main() + + 3 issues found (1 error, 2 warnings) + +API Reference +------------- + +.. automodule:: scitex.linter + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/logging.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/logging.rst.txt new file mode 100644 index 000000000..f8a5512db --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/logging.rst.txt @@ -0,0 +1,108 @@ +Logging Module (``stx.logging``) +================================= + +Unified logging with file/console output, custom warnings, exception +hierarchy, and stream redirection. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + from scitex import logging + + # Get a logger + logger = logging.getLogger(__name__) + logger.info("Processing data") + logger.success("Analysis complete") # Custom level (31) + logger.fail("Model diverged") # Custom level (35) + + # Configure globally + logging.configure(level="DEBUG", log_file="./run.log") + logging.set_level("WARNING") + + # Temporary file logging + with logging.log_to_file("analysis.log"): + logger.info("This goes to both console and file") + + # Warnings + logging.warn("Large dataset", category=logging.PerformanceWarning) + logging.warn_deprecated("old_func", "new_func", version="3.0") + logging.filterwarnings("ignore", category=logging.UnitWarning) + +Log Levels +---------- + +.. list-table:: + :header-rows: 1 + :widths: 20 15 65 + + * - Level + - Value + - Description + * - ``DEBUG`` + - 10 + - Detailed diagnostic information + * - ``INFO`` + - 20 + - General operational messages + * - ``WARNING`` + - 30 + - Something unexpected but not fatal + * - ``SUCCESS`` + - 31 + - Custom: operation completed successfully + * - ``FAIL`` + - 35 + - Custom: operation failed (non-fatal) + * - ``ERROR`` + - 40 + - Serious problem + * - ``CRITICAL`` + - 50 + - Program may not continue + +Warning Categories +------------------ + +- ``SciTeXWarning`` -- Base warning class +- ``UnitWarning`` -- SI unit convention issues +- ``StyleWarning`` -- Formatting issues +- ``SciTeXDeprecationWarning`` -- Deprecated features +- ``PerformanceWarning`` -- Performance issues +- ``DataLossWarning`` -- Potential data loss + +Exception Hierarchy +------------------- + +All inherit from ``SciTeXError``: + +- **I/O**: ``IOError``, ``FileFormatError``, ``SaveError``, ``LoadError`` +- **Config**: ``ConfigurationError``, ``ConfigFileNotFoundError``, ``ConfigKeyError`` +- **Path**: ``PathError``, ``InvalidPathError``, ``PathNotFoundError`` +- **Data**: ``DataError``, ``ShapeError``, ``DTypeError`` +- **Plotting**: ``PlottingError``, ``FigureNotFoundError``, ``AxisError`` +- **Stats**: ``StatsError``, ``TestError`` +- **Scholar**: ``ScholarError``, ``SearchError``, ``PDFDownloadError``, ``DOIResolutionError`` +- **NN**: ``NNError``, ``ModelError`` +- **Template**: ``TemplateError``, ``TemplateViolationError`` + +Stream Redirection +------------------ + +.. code-block:: python + + from scitex.logging import tee + import sys + + # Redirect stdout/stderr to log files + sys.stdout, sys.stderr = tee(sys, sdir="./output") + +The ``@stx.session`` decorator handles this automatically. + +API Reference +------------- + +.. automodule:: scitex.logging + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/media.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/media.rst.txt new file mode 100644 index 000000000..34e386c28 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/media.rst.txt @@ -0,0 +1,7 @@ +media Module (``stx.media``) +============================ + +.. automodule:: scitex.media + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/module.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/module.rst.txt new file mode 100644 index 000000000..6ba06a686 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/module.rst.txt @@ -0,0 +1,7 @@ +module Module (``stx.module``) +============================== + +.. automodule:: scitex.module + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/msword.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/msword.rst.txt new file mode 100644 index 000000000..a48391fae --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/msword.rst.txt @@ -0,0 +1,7 @@ +msword Module (``stx.msword``) +============================== + +.. automodule:: scitex.msword + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/nn.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/nn.rst.txt new file mode 100644 index 000000000..a4f886c7d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/nn.rst.txt @@ -0,0 +1,80 @@ +NN Module (``stx.nn``) +====================== + +PyTorch neural network layers for signal processing and neuroscience +applications. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import torch + + # Bandpass filtering as a differentiable layer + bpf = stx.nn.BandPassFilter( + bands=[[4, 8], [8, 13], [13, 30]], # theta, alpha, beta + fs=256, seq_len=1024 + ) + filtered = bpf(signal) # (batch, channels, 3, 1024) + + # Power spectral density + psd = stx.nn.PSD(sample_rate=256) + power, freqs = psd(signal) + + # Phase-amplitude coupling + pac = stx.nn.PAC(seq_len=1024, fs=256) + coupling = pac(signal) + +Signal Processing Layers +------------------------- + +**Filtering** (all differentiable): + +- ``BandPassFilter(bands, fs, seq_len)`` -- Multi-band frequency filtering +- ``BandStopFilter(bands, fs, seq_len)`` -- Reject frequency bands +- ``LowPassFilter(cutoffs_hz, fs, seq_len)`` -- Anti-aliasing / smoothing +- ``HighPassFilter(cutoffs_hz, fs, seq_len)`` -- High-frequency emphasis +- ``GaussianFilter(sigma)`` -- Gaussian kernel smoothing +- ``DifferentiableBandPassFilter(...)`` -- Learnable bandpass parameters + +**Spectral Analysis**: + +- ``Spectrogram(sampling_rate, n_fft)`` -- STFT-based magnitude spectrogram +- ``PSD(sample_rate, prob)`` -- FFT-based power spectral density +- ``Wavelet(samp_rate, freq_scale)`` -- Continuous wavelet transform + +**Phase & Coupling**: + +- ``Hilbert(seq_len)`` -- Analytic signal (phase + amplitude) +- ``ModulationIndex(n_bins)`` -- Phase-amplitude coupling metric +- ``PAC(seq_len, fs, ...)`` -- Complete PAC analysis pipeline + +Channel Manipulation +-------------------- + +- ``SwapChannels()`` -- Random channel permutation (training augmentation) +- ``DropoutChannels(dropout)`` -- Drop entire channels +- ``ChannelGainChanger(n_chs)`` -- Learnable per-channel scaling +- ``FreqGainChanger(n_bands, fs)`` -- Learnable per-band scaling + +Attention & Shape +----------------- + +- ``SpatialAttention(n_chs_in)`` -- Adaptive channel weighting +- ``TransposeLayer(axis1, axis2)`` -- Dimension permutation +- ``AxiswiseDropout(dropout_prob, dim)`` -- Drop entire axis + +Architectures +------------- + +- ``ResNet1D(n_chs, n_out, n_blks)`` -- 1D residual network +- ``BNet`` / ``BNet_Res`` -- Multi-head EEG classifier +- ``MNet1000`` -- 2D CNN feature extractor + +API Reference +------------- + +.. automodule:: scitex.nn + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/notebook.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/notebook.rst.txt new file mode 100644 index 000000000..b66a0a1c0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/notebook.rst.txt @@ -0,0 +1,7 @@ +notebook Module (``stx.notebook``) +================================== + +.. automodule:: scitex.notebook + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/notification.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/notification.rst.txt new file mode 100644 index 000000000..33d9b0658 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/notification.rst.txt @@ -0,0 +1,134 @@ +Notification Module (``stx.notification``) +=============================== + +Multi-backend notification system for alerting researchers when +long-running tasks complete, errors occur, or results are ready. + +.. note:: + + ``stx.notification`` delegates to the standalone + `scitex-notification `_ + package. Install with: ``pip install scitex-notification``. + +Supported Backends +------------------ + +.. list-table:: + :header-rows: 1 + :widths: 20 80 + + * - Backend + - Description + * - ``desktop`` + - Native desktop notifications (Linux ``notify-send``, macOS, Windows) + * - ``email`` + - Email via SMTP + * - ``slack`` + - Slack messages via webhook or Bot API + * - ``webhook`` + - Generic HTTP POST to any URL + +Quick Start +----------- + +.. code-block:: python + + import scitex as stx + + # Send a notification (uses default backend) + stx.notification.send("Training complete! Accuracy: 95.2%") + + # Send to a specific backend + stx.notification.send("Job finished", backend="slack") + + # List available backends + stx.notification.list_backends() + +Key Functions +------------- + +``send(message, backend=None, **kwargs)`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Send a notification through one or more backends. + +.. code-block:: python + + # Simple message + stx.notification.send("Experiment finished successfully.") + + # With title + stx.notification.send("95.2% accuracy achieved", title="Training Complete") + + # To a specific backend + stx.notification.send("Results ready", backend="email") + +``config(**kwargs)`` +^^^^^^^^^^^^^^^^^^^^ + +Configure notification backends. Settings persist across sessions. + +.. code-block:: python + + # Configure Slack + stx.notification.config( + slack_webhook="https://hooks.slack.com/services/...", + ) + + # Configure email + stx.notification.config( + email_to="researcher@university.edu", + email_from="scitex@lab.org", + smtp_host="smtp.university.edu", + ) + +``list_backends()`` +^^^^^^^^^^^^^^^^^^^ + +List available and configured backends. + +.. code-block:: python + + backends = stx.notification.list_backends() + # [{'name': 'desktop', 'available': True, 'configured': True}, + # {'name': 'slack', 'available': True, 'configured': False}, ...] + +Integration with ``@stx.session`` +---------------------------------- + +Enable automatic notifications when a session completes: + +.. code-block:: python + + import scitex as stx + + @stx.session(notify=True) + def main(CONFIG=stx.INJECTED): + """Long-running experiment.""" + result = train_model() + return 0 # Sends "Session FINISHED_SUCCESS" notification + + if __name__ == "__main__": + main() + +CLI Access +---------- + +.. code-block:: bash + + # Send a notification + scitex notify send "Job complete" + + # Check backend status + scitex notify backends + + # Configure a backend + scitex notify config --slack-webhook "https://..." + +API Reference +------------- + +.. automodule:: scitex.notification + :members: + :no-undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/os.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/os.rst.txt new file mode 100644 index 000000000..be2fda313 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/os.rst.txt @@ -0,0 +1,7 @@ +os Module (``stx.os``) +====================== + +.. automodule:: scitex.os + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/parallel.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/parallel.rst.txt new file mode 100644 index 000000000..620d8333d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/parallel.rst.txt @@ -0,0 +1,7 @@ +parallel Module (``stx.parallel``) +================================== + +.. automodule:: scitex.parallel + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/path.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/path.rst.txt new file mode 100644 index 000000000..672ff6967 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/path.rst.txt @@ -0,0 +1,7 @@ +path Module (``stx.path``) +========================== + +.. automodule:: scitex.path + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/pd.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/pd.rst.txt new file mode 100644 index 000000000..9a34275d0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/pd.rst.txt @@ -0,0 +1,46 @@ +PD Module (``stx.pd``) +====================== + +Pandas DataFrame helper functions for common transformations. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import pandas as pd + + df = pd.DataFrame({ + "subject": ["A", "A", "B", "B"], + "condition": ["ctrl", "exp", "ctrl", "exp"], + "score": [10, 15, 12, 18], + }) + + # Find individual (unique) values + subjects = stx.pd.find_indi(df, "subject") + + # Convert to long format + melted = stx.pd.melt_cols(df, id_vars=["subject"]) + + # Merge columns + merged = stx.pd.merge_cols(df, cols=["subject", "condition"], sep="_") + + # Force to DataFrame + stx.pd.force_df({"a": [1, 2], "b": [3, 4]}) + +Available Functions +------------------- + +- ``find_indi(df, col)`` -- Find unique individual identifiers +- ``find_pval(df)`` -- Find p-value columns in a DataFrame +- ``force_df(data)`` -- Convert any data to a DataFrame +- ``melt_cols(df, id_vars)`` -- Melt columns to long format +- ``merge_cols(df, cols, sep)`` -- Merge multiple columns into one +- ``to_xyz(df, x, y, z)`` -- Reshape to x, y, z pivot format + +API Reference +------------- + +.. automodule:: scitex.pd + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/plt.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/plt.rst.txt new file mode 100644 index 000000000..82b3d0cf0 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/plt.rst.txt @@ -0,0 +1,243 @@ +scitex.plt +========== + +Figure and Axis Creation +------------------------ + +.. autofunction:: scitex.plt.subplots + +.. autofunction:: scitex.plt.figure + +Gallery +------- + +.. automodule:: scitex.plt.gallery + :members: + :undoc-members: + +Axis Methods +------------ + +The following methods are available on ``ax`` objects returned by ``stx.plt.subplots()``. + +Line Plots +~~~~~~~~~~ + +.. code-block:: python + + fig, ax = stx.plt.subplots() + +.. py:method:: ax.stx_line(values_1d, xx=None, track=True, id=None, **kwargs) + + Plot a simple line from 1D array. + + :param values_1d: Y values + :param xx: Optional X values + :param track: Track data for CSV export + :param id: Identifier for tracking + +.. py:method:: ax.stx_shaded_line(xs, ys_lower, ys_middle, ys_upper, color=None, label=None, track=True, id=None, **kwargs) + + Plot a line with shaded area between bounds. + + :param xs: X values + :param ys_lower: Lower bound Y values + :param ys_middle: Middle line Y values + :param ys_upper: Upper bound Y values + +Statistical Plots +~~~~~~~~~~~~~~~~~ + +.. py:method:: ax.stx_mean_std(values_2d, xx=None, sd=1, track=True, id=None, **kwargs) + + Plot mean line with standard deviation shading. + + :param values_2d: 2D array (samples x timepoints) + :param xx: Optional X values + :param sd: Number of standard deviations for shading + +.. py:method:: ax.stx_mean_ci(values_2d, xx=None, perc=95, track=True, id=None, **kwargs) + + Plot mean line with confidence interval shading. + + :param values_2d: 2D array (samples x timepoints) + :param xx: Optional X values + :param perc: Confidence interval percentage (default: 95) + +.. py:method:: ax.stx_median_iqr(values_2d, xx=None, track=True, id=None, **kwargs) + + Plot median line with interquartile range shading. + + :param values_2d: 2D array (samples x timepoints) + :param xx: Optional X values + +.. py:method:: ax.stx_errorbar(x, y, yerr=None, xerr=None, track=True, id=None, **kwargs) + + Error bar plot with scitex styling. + + :param x: X coordinates + :param y: Y coordinates + :param yerr: Y error values + :param xerr: X error values + +Distribution Plots +~~~~~~~~~~~~~~~~~~ + +.. py:method:: ax.stx_kde(values_1d, cumulative=False, fill=False, track=True, id=None, **kwargs) + + Plot kernel density estimate. + + :param values_1d: 1D array of values + :param cumulative: Plot cumulative distribution + :param fill: Fill under curve + +.. py:method:: ax.stx_ecdf(values_1d, track=True, id=None, **kwargs) + + Plot empirical cumulative distribution function. + + :param values_1d: 1D array of values + +.. py:method:: ax.hist(x, bins=10, range=None, align_bins=True, track=True, id=None, **kwargs) + + Plot histogram with bin alignment support. + + :param x: Input data + :param bins: Number of bins or bin edges + :param align_bins: Align bins with other histograms on same axis + +Categorical Plots +~~~~~~~~~~~~~~~~~ + +.. py:method:: ax.stx_box(values_list, colors=None, track=True, id=None, **kwargs) + + Boxplot with scitex styling. + + :param values_list: List of arrays for each box + :param colors: Optional colors for boxes + +.. py:method:: ax.stx_violin(values_list, x=None, y=None, hue=None, labels=None, colors=None, half=False, track=True, id=None, **kwargs) + + Violin plot with scitex styling. + + :param values_list: List of arrays or DataFrame + :param half: Show half violins + +Scatter Plots +~~~~~~~~~~~~~ + +.. py:method:: ax.stx_scatter(x, y, track=True, id=None, **kwargs) + + Scatter plot with scitex styling. + + :param x: X coordinates + :param y: Y coordinates + +.. py:method:: ax.stx_scatter_hist(x, y, hist_bins=20, scatter_alpha=0.6, track=True, id=None, **kwargs) + + Scatter plot with marginal histograms. + + :param x: X coordinates + :param y: Y coordinates + :param hist_bins: Number of histogram bins + +Bar Plots +~~~~~~~~~ + +.. py:method:: ax.stx_bar(x, height, track=True, id=None, **kwargs) + + Vertical bar plot with scitex styling. + + :param x: X coordinates + :param height: Bar heights + +.. py:method:: ax.stx_barh(y, width, track=True, id=None, **kwargs) + + Horizontal bar plot with scitex styling. + + :param y: Y coordinates + :param width: Bar widths + +Heatmaps +~~~~~~~~ + +.. py:method:: ax.stx_heatmap(values_2d, x_labels=None, y_labels=None, cmap="viridis", cbar_label="", show_annot=True, track=True, id=None, **kwargs) + + Plot annotated heatmap. + + :param values_2d: 2D array + :param x_labels: Column labels + :param y_labels: Row labels + :param show_annot: Show value annotations + +.. py:method:: ax.stx_conf_mat(conf_mat_2d, x_labels=None, y_labels=None, title="Confusion Matrix", track=True, id=None, **kwargs) + + Plot confusion matrix. + + :param conf_mat_2d: 2D confusion matrix array + :param x_labels: Predicted class labels + :param y_labels: True class labels + +.. py:method:: ax.stx_image(arr_2d, track=True, id=None, **kwargs) + + Display 2D array as image. + + :param arr_2d: 2D array + +Special Plots +~~~~~~~~~~~~~ + +.. py:method:: ax.stx_raster(spike_times_list, time=None, labels=None, colors=None, track=True, id=None, **kwargs) + + Plot spike raster. + + :param spike_times_list: List of spike time arrays per neuron + :param time: Optional time array + +.. py:method:: ax.stx_fillv(starts_1d, ends_1d, color="red", alpha=0.2, track=True, id=None, **kwargs) + + Fill vertical regions. + + :param starts_1d: Start positions + :param ends_1d: End positions + +.. py:method:: ax.stx_rectangle(xx, yy, width, height, track=True, id=None, **kwargs) + + Draw rectangle. + + :param xx: X position + :param yy: Y position + :param width: Rectangle width + :param height: Rectangle height + +.. py:method:: ax.stx_joyplot(arrays, track=True, id=None, **kwargs) + + Plot joyplot (ridgeline plot). + + :param arrays: List of arrays + +Seaborn Wrappers +~~~~~~~~~~~~~~~~ + +.. py:method:: ax.sns_barplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_boxplot(data=None, x=None, y=None, strip=False, track=True, id=None, **kwargs) +.. py:method:: ax.sns_violinplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_stripplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_swarmplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_heatmap(*args, xyz=False, track=True, id=None, **kwargs) +.. py:method:: ax.sns_histplot(data=None, x=None, y=None, bins=10, track=True, id=None, **kwargs) +.. py:method:: ax.sns_kdeplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_scatterplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_lineplot(data=None, x=None, y=None, track=True, id=None, **kwargs) +.. py:method:: ax.sns_jointplot(*args, track=True, id=None, **kwargs) +.. py:method:: ax.sns_pairplot(*args, track=True, id=None, **kwargs) + +Axis Utilities +~~~~~~~~~~~~~~ + +.. py:method:: ax.set_xyt(x=None, y=None, t=None) + + Set xlabel, ylabel, and title in one call. + +.. py:method:: ax.hide_spines(*spines) + + Hide specified spines (top, right, bottom, left). diff --git a/src/scitex/_sphinx_html/_sources/source/api/project.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/project.rst.txt new file mode 100644 index 000000000..b0440a59f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/project.rst.txt @@ -0,0 +1,7 @@ +project Module (``stx.project``) +================================ + +.. automodule:: scitex.project + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/repro.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/repro.rst.txt new file mode 100644 index 000000000..0e8dc4fea --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/repro.rst.txt @@ -0,0 +1,71 @@ +Repro Module (``stx.repro``) +============================ + +Reproducibility utilities: random state management, ID generation, +timestamps, and array hashing. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + + # Fix all random seeds (numpy, torch, random, ...) + rng = stx.repro.get() # Global manager (seed=42) + rng = stx.repro.reset(seed=123) # Reset with new seed + + # Named generators for deterministic results + data_gen = rng.get_np_generator("data") + data = data_gen.random(100) # Same seed+name = same result + + # Unique identifiers + stx.repro.gen_id() + # → "2026Y-02M-13D-14h30m15s_a3Bc9xY2" + + stx.repro.gen_timestamp() + # → "2026-0213-1430" + + # Verify reproducibility + rng.verify(data, "train_data") # First: caches hash + rng.verify(data, "train_data") # Later: verifies match + +RandomStateManager +------------------ + +Central class for managing random states across libraries. + +.. code-block:: python + + rng = stx.repro.RandomStateManager(seed=42) + + # Named generators (same name + seed = deterministic) + np_gen = rng.get_np_generator("experiment") + torch_gen = rng.get_torch_generator("model") + + # Checkpoint and restore + rng.checkpoint("before_training") + rng.restore("before_training.pkl") + + # Temporary seed change + with rng.temporary_seed(999): + noise = rng.get_np_generator("noise").random(10) + +Automatically fixes seeds for: ``random``, ``numpy``, ``torch`` (+ CUDA), +``tensorflow``, ``jax``. + +Available Functions +------------------- + +- ``get(verbose)`` -- Get or create global RandomStateManager singleton +- ``reset(seed, verbose)`` -- Reset global instance with new seed +- ``fix_seeds(seed, ...)`` -- Legacy function (use RandomStateManager instead) +- ``gen_id(time_format, N)`` -- Generate unique timestamp + random ID +- ``gen_timestamp()`` -- Generate timestamp string for file naming +- ``hash_array(array_data)`` -- SHA256 hash of numpy array (16 chars) + +API Reference +------------- + +.. automodule:: scitex.repro + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/resource.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/resource.rst.txt new file mode 100644 index 000000000..d4fbcc001 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/resource.rst.txt @@ -0,0 +1,7 @@ +resource Module (``stx.resource``) +================================== + +.. automodule:: scitex.resource + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/rng.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/rng.rst.txt new file mode 100644 index 000000000..a6ab74def --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/rng.rst.txt @@ -0,0 +1,7 @@ +rng Module (``stx.rng``) +======================== + +.. automodule:: scitex.rng + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/schema.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/schema.rst.txt new file mode 100644 index 000000000..919582dbf --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/schema.rst.txt @@ -0,0 +1,7 @@ +schema Module (``stx.schema``) +============================== + +.. automodule:: scitex.schema + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/scholar.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/scholar.rst.txt new file mode 100644 index 000000000..2be71119e --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/scholar.rst.txt @@ -0,0 +1,133 @@ +Scholar Module (``stx.scholar``) +================================= + +Literature management: search papers, download PDFs, enrich BibTeX, +and organize a local library across multiple projects. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.scholar import Scholar + + scholar = Scholar(project="my_research") + + # Load and enrich BibTeX + papers = scholar.load_bibtex("references.bib") + enriched = scholar.enrich_papers(papers) + # Adds: DOIs, abstracts, citation counts, impact factors + + # Save to library and export + scholar.save_papers_to_library(enriched) + scholar.save_papers_as_bibtex(enriched, "enriched.bib") + + # Search your library + results = scholar.search_library("neural oscillations") + + # Download PDFs + scholar.download_pdfs(dois, output_dir) + +CLI Usage +--------- + +.. code-block:: bash + + # Full pipeline from BibTeX + scitex scholar bibtex refs.bib --project myresearch --num-workers 8 + + # Search papers + scitex scholar search "deep learning EEG" + + # Download PDFs + scitex scholar download --doi 10.1038/nature12373 + + # Institutional authentication + scitex scholar auth --method openathens + scitex scholar auth --method shibboleth --institution "MIT" + +Data Sources +------------ + +Searches and enriches from: + +- **CrossRef** (167M+ papers) -- DOI resolution, citation counts +- **Semantic Scholar** -- Abstracts, references, influence scores +- **PubMed** -- Biomedical literature +- **arXiv** -- Preprints +- **OpenAlex** (284M+ works) -- Open metadata + +Key Classes +----------- + +- ``Scholar`` -- Main entry point (search, enrich, download, organize) +- ``Paper`` -- Type-safe metadata container (Pydantic model) +- ``Papers`` -- Collection with filtering, sorting, and export +- ``ScholarConfig`` -- YAML-based configuration +- ``ScholarLibrary`` -- Local library storage and caching + +Paper Metadata +-------------- + +Each ``Paper`` contains structured metadata sections: + +.. code-block:: python + + paper.metadata.basic # title, authors, year, abstract, keywords + paper.metadata.id # DOI, arXiv, PMID, Semantic Scholar ID + paper.metadata.publication # journal, impact factor, volume, issue + paper.metadata.citation_count # total + yearly breakdown (2015--2024) + paper.metadata.url # DOI URL, publisher, arXiv, PDFs + paper.metadata.access # open access status, license + +Filtering and Sorting +--------------------- + +.. code-block:: python + + # Criteria-based filtering + recent = papers.filter(year_min=2020, has_doi=True) + elite = papers.filter(min_impact_factor=10, min_citations=500) + + # Lambda filtering + custom = papers.filter(lambda p: "EEG" in (p.metadata.basic.title or "")) + + # Sorting + papers.sort_by("year", reverse=True) + papers.sort_by("citation_count", reverse=True) + + # Chaining + top_recent = papers.filter(year_min=2020).sort_by("citation_count", reverse=True) + +Project Organization +-------------------- + +.. code-block:: python + + scholar = Scholar(project="review_paper") + scholar.list_projects() + papers = scholar.load_project() + + # Export to multiple formats + scholar.save_papers_as_bibtex(papers, "output.bib") + papers.to_dataframe() # pandas DataFrame + +Storage Architecture +-------------------- + +.. code-block:: text + + ~/.scitex/scholar/library/ + +-- MASTER/ # Centralized master storage + | +-- 8DIGIT01/ # Hash-based unique ID from DOI + | | +-- metadata.json + | | +-- paper.pdf + +-- project_name/ # Project-specific symlinks + +-- Author-Year-Journal -> ../MASTER/8DIGIT01 + +API Reference +------------- + +.. automodule:: scitex.scholar + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/security.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/security.rst.txt new file mode 100644 index 000000000..232a5da7f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/security.rst.txt @@ -0,0 +1,7 @@ +security Module (``stx.security``) +================================== + +.. automodule:: scitex.security + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/session.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/session.rst.txt new file mode 100644 index 000000000..8f16f4670 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/session.rst.txt @@ -0,0 +1,213 @@ +Session Decorator (``@stx.session``) +===================================== + +The ``@stx.session`` decorator is the primary entry point for SciTeX +scripts. It wraps a function to provide automatic CLI generation, +output directory management, configuration injection, and provenance tracking. + +Basic Usage +----------- + +.. code-block:: python + + import scitex as stx + + @stx.session + def main( + data_path="data.csv", # CLI: --data-path data.csv + threshold=0.5, # CLI: --threshold 0.7 + CONFIG=stx.INJECTED, # Auto-injected session config + plt=stx.INJECTED, # Pre-configured matplotlib + logger=stx.INJECTED, # Session logger + ): + """Analyze experimental data.""" + data = stx.io.load(data_path) + result = process(data, threshold) + stx.io.save(result, "output.csv") + return 0 # exit code (0 = success) + + if __name__ == "__main__": + main() # No arguments triggers CLI mode + +Run from the command line: + +.. code-block:: bash + + python my_script.py --data-path experiment.csv --threshold 0.3 + python my_script.py --help # Shows all parameters with defaults + +How It Works +------------ + +.. image:: ../_static/session_lifecycle.png + :width: 60% + :align: center + :alt: Session lifecycle: main() → Parse CLI → Create dir → Load config → Execute → SUCCESS or ERROR + +When ``main()`` is called **without arguments**, the decorator: + +1. **Parses CLI arguments** from the function signature (type hints and defaults become ``argparse`` options) +2. **Creates a session directory** under ``script_out/RUNNING/{session_id}/`` +3. **Loads configuration** from ``./config/*.yaml`` files into ``CONFIG`` +4. **Injects globals** (``CONFIG``, ``plt``, ``COLORS``, ``logger``, ``rngg``) into the function +5. **Redirects stdout/stderr** to log files +6. **Executes the function** with parsed arguments +7. **Moves output** from ``RUNNING/`` to ``FINISHED_SUCCESS/`` (or ``FINISHED_ERROR/``) + +When called **with arguments** (e.g., ``main(data_path="x.csv")``), the decorator +is bypassed and the function runs directly -- useful for testing and notebooks. + +Output Directory Structure +-------------------------- + +Each run produces a self-contained output directory: + +.. code-block:: text + + my_script_out/ + +-- FINISHED_SUCCESS/ + | +-- 2026Y-02M-13D-14h30m15s_Z5MR/ + | +-- CONFIGS/ + | | +-- CONFIG.yaml # Frozen configuration + | | +-- CONFIG.pkl # Pickled config + | +-- logs/ + | | +-- stdout.log # Captured stdout + | | +-- stderr.log # Captured stderr + | +-- output.csv # Your saved files + | +-- sine.png # Your saved figures + | +-- sine.csv # Auto-exported figure data + +-- FINISHED_ERROR/ + | +-- ... # Runs that returned non-zero + +-- RUNNING/ + +-- ... # Currently active sessions + +The session ID format is ``YYYY-MM-DD-HH:MM:SS_XXXX`` where ``XXXX`` is +a random 4-character suffix for uniqueness. + +Injected Parameters +------------------- + +Use ``stx.INJECTED`` as the default value to receive auto-injected objects: + +.. list-table:: + :header-rows: 1 + :widths: 20 20 60 + + * - Parameter Name + - Type + - Description + * - ``CONFIG`` + - ``DotDict`` + - Session config with ``ID``, ``SDIR_RUN``, ``FILE``, ``ARGS``, plus all ``./config/*.yaml`` values + * - ``plt`` + - module + - ``matplotlib.pyplot`` configured for the session (Agg backend, style settings) + * - ``COLORS`` + - ``DotDict`` + - Color palette for consistent plotting + * - ``logger`` + - Logger + - SciTeX logger writing to session log files + * - ``rngg`` + - ``RandomStateManager`` + - Reproducibility manager (seeds fixed by default) + +Only request the parameters you need: + +.. code-block:: python + + @stx.session + def main(n=100, CONFIG=stx.INJECTED): + """Minimal example -- only CONFIG injected.""" + print(f"Session ID: {CONFIG.ID}") + print(f"Output dir: {CONFIG.SDIR_RUN}") + return 0 + +CONFIG Object +------------- + +The injected ``CONFIG`` is a ``DotDict`` supporting both dictionary and +dot-notation access: + +.. code-block:: python + + CONFIG["MODEL"]["hidden_size"] # dict-style + CONFIG.MODEL.hidden_size # dot-style (equivalent) + +It contains: + +.. code-block:: python + + CONFIG.ID # "2026Y-02M-13D-14h30m15s_Z5MR" + CONFIG.PID # Process ID + CONFIG.FILE # Path to the script + CONFIG.SDIR_OUT # Base output directory + CONFIG.SDIR_RUN # Current session's output directory + CONFIG.START_DATETIME # When the session started + CONFIG.ARGS # Parsed CLI arguments as dict + CONFIG.EXIT_STATUS # 0 (success), 1 (error), or None + +Any YAML files in ``./config/`` are merged into CONFIG: + +.. code-block:: yaml + + # ./config/EXPERIMENT.yaml + learning_rate: 0.001 + batch_size: 32 + +.. code-block:: python + + # Accessible as: + CONFIG.EXPERIMENT.learning_rate # 0.001 + CONFIG.EXPERIMENT.batch_size # 32 + +Decorator Options +----------------- + +.. code-block:: python + + @stx.session(verbose=True, agg=False, notify=True, sdir_suffix="v2") + def main(...): + ... + +.. list-table:: + :header-rows: 1 + :widths: 20 15 15 50 + + * - Option + - Type + - Default + - Description + * - ``verbose`` + - bool + - ``False`` + - Enable verbose logging + * - ``agg`` + - bool + - ``True`` + - Use matplotlib Agg backend (set ``False`` for interactive plots) + * - ``notify`` + - bool + - ``False`` + - Send notification when session completes + * - ``sdir_suffix`` + - str + - ``None`` + - Append suffix to output directory name + +Best Practices +-------------- + +1. **One session per script** -- each ``.py`` file should have one ``@stx.session`` function +2. **Return 0 for success** -- the return value becomes the exit status +3. **Save outputs with** ``stx.io.save`` -- files go into the session directory and are provenance-tracked +4. **Put config in YAML** -- use ``./config/*.yaml`` instead of hardcoding parameters +5. **Use** ``stx.repro.fix_seeds()`` -- already called by default via ``rngg`` + +API Reference +------------- + +.. automodule:: scitex.session + :members: + :no-undoc-members: + :exclude-members: _InjectedSentinel diff --git a/src/scitex/_sphinx_html/_sources/source/api/sh.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/sh.rst.txt new file mode 100644 index 000000000..7c4694af6 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/sh.rst.txt @@ -0,0 +1,7 @@ +sh Module (``stx.sh``) +====================== + +.. automodule:: scitex.sh + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/social.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/social.rst.txt new file mode 100644 index 000000000..cc82af401 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/social.rst.txt @@ -0,0 +1,7 @@ +social Module (``stx.social``) +============================== + +.. automodule:: scitex.social + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/stats.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/stats.rst.txt new file mode 100644 index 000000000..17ca488dd --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/stats.rst.txt @@ -0,0 +1,153 @@ +Stats Module (``stx.stats``) +============================ + +23 statistical tests with effect sizes, confidence intervals, and +publication-ready formatting. + +Quick Reference +--------------- + +.. code-block:: python + + import scitex as stx + import numpy as np + + g1 = np.random.normal(0, 1, 50) + g2 = np.random.normal(0.5, 1, 50) + + # Run a test + result = stx.stats.test_ttest_ind(g1, g2) + + # Result is a flat dict with all details + print(result["statistic"]) # t-statistic + print(result["pvalue"]) # p-value + print(result["effect_size"]) # Cohen's d + print(result["stars"]) # Significance stars + + # Get as DataFrame or LaTeX + df = stx.stats.test_ttest_ind(g1, g2, return_as="dataframe") + tex = stx.stats.test_ttest_ind(g1, g2, return_as="latex") + +Available Tests +--------------- + +**Parametric** + +- ``test_ttest_1samp(data, popmean)`` -- One-sample t-test +- ``test_ttest_ind(g1, g2)`` -- Independent two-sample t-test +- ``test_ttest_rel(g1, g2)`` -- Paired t-test +- ``test_anova(*groups)`` -- One-way ANOVA +- ``test_anova_2way(data, factor1, factor2)`` -- Two-way ANOVA +- ``test_anova_rm(data, groups)`` -- Repeated measures ANOVA + +**Non-parametric** + +- ``test_mannwhitneyu(g1, g2)`` -- Mann-Whitney U test +- ``test_wilcoxon(g1, g2)`` -- Wilcoxon signed-rank test +- ``test_kruskal(*groups)`` -- Kruskal-Wallis H test +- ``test_friedman(*groups)`` -- Friedman test +- ``test_brunner_munzel(g1, g2)`` -- Brunner-Munzel test + +**Correlation** + +- ``test_pearson(x, y)`` -- Pearson correlation +- ``test_spearman(x, y)`` -- Spearman rank correlation +- ``test_kendall(x, y)`` -- Kendall tau correlation +- ``test_theilsen(x, y)`` -- Theil-Sen robust regression + +**Categorical** + +- ``test_chi2(observed)`` -- Chi-squared test +- ``test_fisher(table)`` -- Fisher's exact test +- ``test_mcnemar(table)`` -- McNemar test +- ``test_cochran_q(*groups)`` -- Cochran's Q test + +**Normality** + +- ``test_shapiro(data)`` -- Shapiro-Wilk test +- ``test_ks_1samp(data)`` -- One-sample Kolmogorov-Smirnov test +- ``test_ks_2samp(x, y)`` -- Two-sample Kolmogorov-Smirnov test +- ``test_normality(*samples)`` -- Multi-sample normality check + +Seaborn-Style Data Parameter +---------------------------- + +All two-sample and one-sample tests accept an optional ``data`` parameter +for DataFrame/CSV column resolution (like seaborn): + +.. code-block:: python + + import pandas as pd + + df = pd.read_csv("experiment.csv") + + # Two-sample: column names as x/y + result = stx.stats.test_ttest_ind(x="before", y="after", data=df) + + # One-sample: column name as x + result = stx.stats.test_shapiro(x="scores", data=df) + + # Multi-group: value + group columns + result = stx.stats.test_anova(data=df, value_col="score", group_col="treatment") + + # Also works with CSV path + result = stx.stats.test_ttest_ind(x="col1", y="col2", data="data.csv") + +Test Recommendation +------------------- + +Not sure which test to use? Let SciTeX recommend: + +.. code-block:: python + + recommendations = stx.stats.recommend_tests( + n_groups=2, + sample_sizes=[30, 35], + outcome_type="continuous", + paired=False, + ) + +Output Formats +-------------- + +Every test supports ``return_as`` parameter: + +- ``"dict"`` (default) -- Returns plain dict with all results +- ``"dataframe"`` -- Returns pandas DataFrame + +Descriptive Statistics +---------------------- + +.. code-block:: python + + stx.stats.describe(data) # mean, std, median, IQR, etc. + stx.stats.effect_sizes.cohens_d(g1, g2) # Cohen's d + stx.stats.test_normality(g1, g2) # Multi-sample normality + stx.stats.p_to_stars(0.003) # "**" + +Multiple Comparison Correction +------------------------------ + +.. code-block:: python + + corrected = stx.stats.correct_pvalues( + [0.01, 0.03, 0.05, 0.001], + method="fdr_bh", + ) + +Post-hoc Tests +-------------- + +.. code-block:: python + + stx.stats.posthoc_test( + [g1, g2, g3], + group_names=["Control", "Treatment A", "Treatment B"], + method="tukey", + ) + +API Reference +------------- + +.. automodule:: scitex.stats + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/str.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/str.rst.txt new file mode 100644 index 000000000..b29b4f485 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/str.rst.txt @@ -0,0 +1,7 @@ +str Module (``stx.str``) +======================== + +.. automodule:: scitex.str + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/template.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/template.rst.txt new file mode 100644 index 000000000..1a8984122 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/template.rst.txt @@ -0,0 +1,144 @@ +Template Module (``stx.template``) +==================================== + +Project scaffolding and code snippet templates for quick starts. +Create fully structured research projects, Python packages, or +academic papers with a single command. + +Project Templates +----------------- + +.. code-block:: bash + + # Clone a project template + scitex template clone research my_project + scitex template clone pip_project my_package + scitex template clone paper my_paper + scitex template clone app my_app + scitex template clone singularity my_container + +.. list-table:: + :header-rows: 1 + :widths: 25 75 + + * - Template + - Description + * - ``research`` + - Full scientific workflow (scripts, data, docs, config, session scaffolding) + * - ``research_minimal`` + - Essential modules only for lightweight experiments + * - ``pip_project`` + - Distributable Python package for PyPI (``pyproject.toml``, tests, CI) + * - ``paper`` + - Academic paper with LaTeX/BibTeX structure, SciTeX writer integration + * - ``app`` + - SciTeX application with bridge-init, MountPoint, and EventBus + * - ``singularity`` + - Reproducible containerized environment (Singularity/Apptainer definition) + +What You Get +^^^^^^^^^^^^ + +A ``research`` template creates: + +.. code-block:: text + + my_project/ + +-- config/ + | +-- EXPERIMENT.yaml # Experiment parameters + +-- scripts/ + | +-- main.py # @stx.session entry point + +-- data/ # Raw data directory + +-- docs/ # Documentation + +-- tests/ # Test suite + +-- Makefile # Common tasks + +-- pyproject.toml # Package metadata + +Git Strategies +-------------- + +Control how git is initialized in the cloned template: + +.. list-table:: + :header-rows: 1 + :widths: 20 80 + + * - Strategy + - Behavior + * - ``child`` (default) + - Fresh git repo, isolated from template + * - ``parent`` + - Use parent repo if available + * - ``origin`` + - Preserve template's git history + * - ``None`` + - No git initialization + +.. code-block:: python + + from scitex.template import clone_template + + clone_template("research", "my_project", git_strategy="child") + +Code Templates +-------------- + +Ready-to-use code snippets for common SciTeX patterns. Each snippet +is a complete, runnable script. + +.. code-block:: bash + + # List available code templates + scitex template code list + + # Get a template (prints to stdout) + scitex template code session # Full @stx.session script + scitex template code session-minimal # Lightweight session + scitex template code session-plot # Figure-focused session + scitex template code session-stats # Statistics-focused session + scitex template code io # I/O operations + scitex template code plt # Plotting patterns + scitex template code stats # Statistical analysis + scitex template code scholar # Literature management + + # Save to a file + scitex template code session --output analyze.py + +Python API +---------- + +.. code-block:: python + + from scitex.template import clone_template, get_code_template + + # Clone a project template + clone_template("research", "my_experiment", git_strategy="child") + + # Get a code snippet as a string + code = get_code_template("session") + print(code) + + # Get a code snippet and write to file + code = get_code_template("session", filepath="analyze.py") + +MCP Interface +------------- + +Code templates are also available to AI agents via MCP tools: + +.. code-block:: python + + # List templates + template_list_code_templates() + + # Get a specific template + template_get_code_template(name="session-plot") + + # Clone a project + template_clone_template(template_type="research", name="my_project") + +API Reference +------------- + +.. automodule:: scitex.template + :members: diff --git a/src/scitex/_sphinx_html/_sources/source/api/tex.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/tex.rst.txt new file mode 100644 index 000000000..e0f775bd9 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/tex.rst.txt @@ -0,0 +1,7 @@ +tex Module (``stx.tex``) +======================== + +.. automodule:: scitex.tex + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/torch.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/torch.rst.txt new file mode 100644 index 000000000..1a11fe241 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/torch.rst.txt @@ -0,0 +1,7 @@ +torch Module (``stx.torch``) +============================ + +.. automodule:: scitex.torch + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/tunnel.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/tunnel.rst.txt new file mode 100644 index 000000000..e28928527 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/tunnel.rst.txt @@ -0,0 +1,7 @@ +tunnel Module (``stx.tunnel``) +============================== + +.. automodule:: scitex.tunnel + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/types.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/types.rst.txt new file mode 100644 index 000000000..f4f1e1031 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/types.rst.txt @@ -0,0 +1,7 @@ +types Module (``stx.types``) +============================ + +.. automodule:: scitex.types + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/ui.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/ui.rst.txt new file mode 100644 index 000000000..2a8a65a64 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/ui.rst.txt @@ -0,0 +1,7 @@ +ui Module (``stx.ui``) +====================== + +.. automodule:: scitex.ui + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/utils.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/utils.rst.txt new file mode 100644 index 000000000..9b893ac20 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/utils.rst.txt @@ -0,0 +1,7 @@ +utils Module (``stx.utils``) +============================ + +.. automodule:: scitex.utils + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/web.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/web.rst.txt new file mode 100644 index 000000000..5b6589d9d --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/web.rst.txt @@ -0,0 +1,7 @@ +web Module (``stx.web``) +======================== + +.. automodule:: scitex.web + :members: + :undoc-members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/api/writer.rst.txt b/src/scitex/_sphinx_html/_sources/source/api/writer.rst.txt new file mode 100644 index 000000000..c03eaeee1 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/api/writer.rst.txt @@ -0,0 +1,166 @@ +Writer Module (``stx.writer``) +============================== + +LaTeX manuscript compilation, figure/table management, bibliography +handling, and IMRAD writing guidelines. + +.. note:: + + ``stx.writer`` wraps the standalone + `scitex-writer `_ package. + Install with: ``pip install scitex-writer``. + +Quick Reference +--------------- + +.. code-block:: python + + from scitex.writer import Writer + from pathlib import Path + + writer = Writer(Path("my_paper")) + + # Compile manuscript → PDF + result = writer.compile_manuscript() + if result.success: + print(f"PDF: {result.output_pdf}") + + # Compile supplementary materials + result = writer.compile_supplementary() + + # Compile revision with change tracking + result = writer.compile_revision(track_changes=True) + +CLI Usage +--------- + +.. code-block:: bash + + # Compile + scitex writer compile manuscript ./my-paper + scitex writer compile supplementary ./my-paper + scitex writer compile revision ./my-paper --track-changes + + # Bibliography + scitex writer bib list ./my-paper + scitex writer bib add ./my-paper "@article{...}" + + # Tables and figures + scitex writer tables add ./my-paper data.csv + scitex writer figures list ./my-paper + + # Writing guidelines + scitex writer guidelines get abstract + +Project Structure +----------------- + +A writer project follows this layout: + +.. code-block:: text + + my_paper/ + +-- 00_shared/ + | +-- bibliography.bib + | +-- figures/ + | +-- tables/ + +-- 01_manuscript/ + | +-- main.tex + | +-- sections/ + +-- 02_supplementary/ + | +-- main.tex + +-- 03_revision/ + +-- main.tex + +Create a new project: + +.. code-block:: bash + + scitex template clone paper my_paper + +Key Classes +----------- + +- ``Writer`` -- Main entry point for compilation and project management +- ``CompilationResult`` -- Compilation outcome (success, output path, logs) +- ``ManuscriptTree`` -- Document tree for the main manuscript +- ``SupplementaryTree`` -- Document tree for supplementary materials +- ``RevisionTree`` -- Document tree for revision responses + +Document Management +------------------- + +**Figures:** + +.. code-block:: python + + # Add figure (copies image + creates caption file) + writer.add_figure("fig1", "plot.png", caption="Results") + + # List figures + writer.list_figures() + + # Convert between formats + writer.convert_figure("figure.pdf", "figure.png", dpi=300) + +**Tables:** + +.. code-block:: python + + # Add table from CSV + writer.add_table("tab1", csv_content, caption="Demographics") + + # CSV ↔ LaTeX conversion + writer.csv_to_latex("data.csv", "table.tex") + writer.latex_to_csv("table.tex", "data.csv") + +**Bibliography:** + +.. code-block:: python + + # Add BibTeX entry + writer.add_bibentry('@article{key, title={...}, ...}') + + # Merge multiple .bib files + writer.merge_bibfiles(output_file="bibliography.bib") + +Writing Guidelines +------------------ + +IMRAD guidelines for each manuscript section: + +.. code-block:: bash + + scitex writer guidelines list + scitex writer guidelines get introduction + +.. code-block:: python + + from scitex.writer import guidelines + + # Get guideline for a section + guide = guidelines.get("methods") + + # Build editing prompt: guideline + draft + prompt = guidelines.build("discussion", draft_text) + +Compilation Options +------------------- + +.. code-block:: python + + result = writer.compile_manuscript( + timeout=300, # Max compilation time (seconds) + no_figs=False, # Exclude figures + no_tables=False, # Exclude tables + draft=False, # Draft mode (fast, lower quality) + dark_mode=False, # Dark color scheme + quiet=False, # Suppress output + ) + +API Reference +------------- + +.. automodule:: scitex.writer + :members: + :show-inheritance: diff --git a/src/scitex/_sphinx_html/_sources/source/cli.rst.txt b/src/scitex/_sphinx_html/_sources/source/cli.rst.txt new file mode 100644 index 000000000..aa4958a32 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/cli.rst.txt @@ -0,0 +1,98 @@ +CLI Reference +============= + +SciTeX provides a unified command-line interface. All commands follow the +pattern: + +.. code-block:: bash + + scitex [options] + +Run ``scitex --help-recursive`` to see every available command. + +General +------- + +.. code-block:: bash + + scitex --help-recursive # Show all commands across all modules + scitex list-python-apis # List all Python APIs (210 items) + scitex mcp list-tools # List all MCP tools (120+ tools) + +Scholar +------- + +Literature search, PDF management, and metadata enrichment. + +.. code-block:: bash + + scitex scholar fetch # Download paper by DOI + scitex scholar bibtex # Enrich BibTeX file with metadata + scitex scholar search # Search for papers + +Stats +----- + +Statistical testing with automatic test recommendation. + +.. code-block:: bash + + scitex stats recommend # Suggest appropriate statistical tests + scitex stats run # Run a specific test on data + +Audio +----- + +Text-to-speech and audio playback. + +.. code-block:: bash + + scitex audio speak # Convert text to speech + scitex audio play # Play an audio file + +Capture +------- + +Screen capture and monitoring. + +.. code-block:: bash + + scitex capture snap # Take a screenshot + scitex capture monitor # Start screen monitoring + +Template +-------- + +Project scaffolding from built-in templates. + +.. code-block:: bash + + scitex template clone + +Available template types: + +- ``research`` -- Research project with session tracking +- ``pip`` -- Python pip package +- ``paper`` -- LaTeX manuscript project +- ``app`` -- SciTeX app with bridge integration +- ``singularity`` -- Singularity container definition + +Introspect +---------- + +Python code introspection for exploring APIs. + +.. code-block:: bash + + scitex introspect api # List APIs for a module + scitex introspect source # View source code of a function + +Dev +--- + +Ecosystem development and version management. + +.. code-block:: bash + + scitex dev versions # Show versions of all installed packages + scitex dev ecosystem # Manage ecosystem packages diff --git a/src/scitex/_sphinx_html/_sources/source/concepts.rst.txt b/src/scitex/_sphinx_html/_sources/source/concepts.rst.txt new file mode 100644 index 000000000..8db46951a --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/concepts.rst.txt @@ -0,0 +1,267 @@ +Core Concepts +============= + +This page explains the design patterns behind SciTeX. Understanding +these patterns will help you use the toolkit effectively and extend it +for your own workflows. + + +Modular Architecture +-------------------- + +SciTeX is not a monolith. Each module is backed by an independent +package that can be installed and used on its own: + +.. code-block:: bash + + pip install scitex-io # Use standalone: import scitex_io + pip install scitex-stats # Use standalone: import scitex_stats + pip install figrecipe # Use standalone: import figrecipe + +When you install ``scitex``, these packages are available under a +unified namespace: + +.. code-block:: python + + import scitex as stx + + stx.io.save(data, "out.csv") # scitex-io + stx.stats.run_test(...) # scitex-stats + stx.plt.subplots() # figrecipe + +**Lazy loading** ensures that importing ``scitex`` does not pull in every +dependency. Modules are loaded only when first accessed. If you never +touch ``stx.scholar``, its dependencies are never imported and startup +remains fast. + +The main ``scitex`` package itself contains no runtime logic for I/O, +statistics, or plotting. It is an orchestrator: it re-exports +sub-package APIs, provides the CLI entry point, hosts the MCP server, +and owns the session decorator. + + +Session Decorator +----------------- + +The ``@stx.session`` decorator converts a plain Python function into a +reproducible, CLI-enabled experiment. + +.. code-block:: python + + import scitex as stx + + @stx.session + def main( + n_epochs=50, + learning_rate=0.001, + CONFIG=stx.session.INJECTED, + logger=stx.session.INJECTED, + ): + logger.info(f"Training for {n_epochs} epochs at lr={learning_rate}") + return 0 + + if __name__ == "__main__": + main() + +**Why it exists.** Research scripts tend to accumulate boilerplate: +argument parsing, output directory creation, logging setup, random seed +management, config file loading. The session decorator handles all of +these so that the function body contains only experiment logic. + +**What it provides:** + +1. **Automatic CLI.** Function parameters become command-line arguments. + ``n_epochs=50`` becomes ``--n-epochs 50`` with no argparse code. + +2. **Config injection.** Parameters in ``./config/*.yaml`` are aggregated + into a single ``CONFIG`` dict and injected at runtime. + +3. **Reproducibility.** Random seeds are fixed. All parameters, stdout, + and stderr are logged to the output directory. + +4. **Output organization.** Each run gets a timestamped directory under + ``script_out/``: + + .. code-block:: text + + script_out/FINISHED_SUCCESS/2026-03-18_14-30-00_AbC1/ + +-- CONFIGS/CONFIG.yaml # All parameters + +-- logs/stdout.log # Captured output + +-- logs/stderr.log # Captured errors + +Parameters marked ``stx.session.INJECTED`` are sentinel values. The +decorator replaces them with runtime objects (logger, config, plotting +backend, color palette, random generator). You never pass these +yourself -- they signal to the decorator what to inject. + + +Unified I/O +------------ + +``stx.io.save`` and ``stx.io.load`` provide a single interface for 30+ +file formats. The format is determined by the file extension: + +.. code-block:: python + + stx.io.save(dataframe, "results.csv") + stx.io.save(array, "weights.npy") + stx.io.save(fig, "figure.png") + stx.io.save(config, "params.yaml") + +The same call pattern works for every type. No need to remember +``pd.to_csv``, ``np.save``, ``fig.savefig``, or ``yaml.dump``. + +**Figure data export.** When saving a matplotlib figure, SciTeX +automatically exports the plotted data as a CSV file alongside the +image. This is a deliberate design choice: every figure in a publication +should be backed by accessible data, so that reviewers and readers can +verify the plot independently. + +.. code-block:: python + + stx.io.save(fig, "plot.png") + # Creates: plot.png (the image) + # plot.csv (the underlying data) + +This behavior is powered by figrecipe's ``RecordingFigure``, which +tracks all data passed to plotting calls and serializes it on save. + + +Three Interfaces +----------------- + +Every SciTeX feature is accessible through three interfaces: + +1. **Python API** -- for scripts and notebooks +2. **CLI** -- for shell workflows and automation +3. **MCP** -- for AI agents via the Model Context Protocol + +For example, running a statistical test: + +.. code-block:: python + + # Python API + result = stx.stats.run_test("ttest_ind", group1, group2) + +.. code-block:: bash + + # CLI + scitex stats run ttest_ind --data data.csv + +.. code-block:: text + + # MCP tool (called by AI agents) + stats_run_test(test="ttest_ind", data=[[1,2,3],[4,5,6]]) + +This three-interface design means that any workflow a human builds in +Python can be replicated by an AI agent through MCP, or scripted in a +shell pipeline through the CLI. The interfaces share the same +underlying implementation, so behavior is identical across all three. + +The MCP server aggregates 120+ tools from all sub-packages. AI agents +can discover available tools, read documentation, and execute full +research pipelines -- from literature search to manuscript compilation -- +without human intervention. + + +Delegation Pattern +------------------- + +The ``scitex`` package is intentionally thin. It delegates all domain +logic to standalone packages: + +.. list-table:: + :header-rows: 1 + :widths: 25 25 50 + + * - scitex module + - Standalone package + - Responsibility + * - ``stx.io`` + - scitex-io + - File I/O (30+ formats) + * - ``stx.stats`` + - scitex-stats + - Statistical testing (23 tests) + * - ``stx.plt`` + - figrecipe + - Publication-ready figures + * - ``stx.writer`` + - scitex-writer + - LaTeX manuscript compilation + * - ``stx.scholar`` + - scitex-scholar + - Literature search, PDF download + * - ``stx.dataset`` + - scitex-dataset + - Scientific dataset access + +**Why delegation?** Each sub-package has its own release cycle, test +suite, and dependency tree. A bug fix in ``scitex-io`` does not require +releasing all of ``scitex``. Users who only need file I/O can +``pip install scitex-io`` without pulling in matplotlib, LaTeX tooling, +or audio dependencies. + +From the user's perspective, the delegation is invisible. A single +``import scitex as stx`` provides access to everything. The lazy loader +in ``scitex.__init__`` resolves ``stx.io`` to the ``scitex_io`` package +on first access. + + +Configuration +-------------- + +SciTeX uses a layered configuration system: + +**Project-level config (YAML files)** + +Place YAML files in ``./config/`` at your project root. The session +decorator aggregates all files in this directory into a single ``CONFIG`` +dict: + +.. code-block:: text + + config/ + +-- model.yaml # {"hidden_size": 256, "n_layers": 4} + +-- training.yaml # {"epochs": 100, "batch_size": 32} + +.. code-block:: python + + @stx.session + def main(CONFIG=stx.session.INJECTED): + print(CONFIG["hidden_size"]) # 256 + print(CONFIG["epochs"]) # 100 + +**Environment-level config (.env.d/)** + +Credentials, API keys, and machine-specific paths live in ``.env.d/``: + +.. code-block:: text + + .env.d/ + +-- entry.src # Single entry point (source this) + +-- 00_scitex.env # Base paths + +-- 01_scholar.env # OpenAthens credentials + +-- 01_audio.env # TTS backend config + +Source the entry point in your shell profile: + +.. code-block:: bash + + # In ~/.bashrc or ~/.zshrc + source /path/to/.env.d/entry.src + +**MCP environment (.src files)** + +For AI agent deployments, a single ``.src`` file bundles all environment +variables. The MCP server loads it at startup via ``SCITEX_ENV_SRC``: + +.. code-block:: bash + + export SCITEX_ENV_SRC=~/.scitex/scitex/local.src + +This keeps the ``.mcp.json`` configuration static across machines -- +only the ``.src`` file changes between local and remote environments. + +The configuration hierarchy is: CLI arguments override YAML config, +which overrides environment variables, which override built-in defaults. diff --git a/src/scitex/_sphinx_html/_sources/source/ecosystem.rst.txt b/src/scitex/_sphinx_html/_sources/source/ecosystem.rst.txt new file mode 100644 index 000000000..a4d47e881 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/ecosystem.rst.txt @@ -0,0 +1,123 @@ +Ecosystem +========= + +SciTeX is a modular toolkit composed of standalone packages. Each package +can be installed and used independently, or accessed through the unified +``import scitex`` interface. + +Delegation Pattern +------------------ + +The ``scitex`` package itself contains no runtime logic. It acts as an +orchestrator that re-exports functionality from sub-packages via lazy +imports. When you write ``scitex.io.load("data.csv")``, the call is +delegated to the ``scitex_io`` package under the hood. + +This means: + +- **Standalone use**: ``pip install scitex-io`` then ``import scitex_io`` +- **Unified use**: ``pip install scitex[io]`` then ``import scitex; scitex.io.load(...)`` + +Both paths execute the same code. The ``scitex`` package simply provides +the namespace glue. + +.. code-block:: python + + # These are equivalent: + import scitex_io + scitex_io.load("data.csv") + + import scitex + scitex.io.load("data.csv") + +Package Reference +----------------- + +.. list-table:: + :header-rows: 1 + :widths: 20 18 22 40 + + * - Package + - scitex Module + - PyPI + - Description + * - scitex-io + - ``scitex.io`` + - ``pip install scitex-io`` + - Unified file I/O for 30+ formats + * - scitex-stats + - ``scitex.stats`` + - ``pip install scitex-stats`` + - Publication-ready statistics (23+ tests) + * - figrecipe + - ``scitex.plt`` + - ``pip install figrecipe`` + - Publication-ready matplotlib figures + * - scitex-writer + - ``scitex.writer`` + - ``pip install scitex-writer`` + - LaTeX manuscript compilation + * - scitex-scholar + - ``scitex.scholar`` + - ``pip install scitex-scholar`` + - Literature search and management + * - scitex-audio + - ``scitex.audio`` + - ``pip install scitex-audio`` + - Text-to-speech and audio + * - scitex-dev + - ``scitex.dev`` + - ``pip install scitex-dev`` + - Developer tools, ecosystem management + * - scitex-clew + - ``scitex.clew`` + - ``pip install scitex-clew`` + - Hash-based reproducibility verification + * - scitex-linter + - ``scitex.linter`` + - ``pip install scitex-linter`` + - AST-based code pattern checking + * - scitex-dataset + - ``scitex.dataset`` + - ``pip install scitex-dataset`` + - Scientific dataset access (DANDI, OpenNeuro, PhysioNet) + * - crossref-local + - ``scitex.scholar.crossref`` + - ``pip install crossref-local`` + - Local CrossRef database (167M+ papers) + * - openalex-local + - ``scitex.scholar.openalex`` + - ``pip install openalex-local`` + - Local OpenAlex database (250M+ papers) + * - socialia + - ``scitex.social`` + - ``pip install socialia`` + - Social media posting (Twitter, LinkedIn) + * - scitex-app + - ``scitex.app`` + - ``pip install scitex-app`` + - Runtime SDK for SciTeX apps + * - scitex-cloud + - ``scitex.cloud`` + - ``pip install scitex-cloud`` + - Cloud platform integration + * - scitex-notification + - ``scitex.notify`` + - ``pip install scitex-notification`` + - Multi-backend notifications + +Installation +------------ + +Install individual packages or use extras through the main package: + +.. code-block:: bash + + # Full installation (all packages) + pip install scitex[all] + + # Typical research setup + pip install scitex[plt,stats,scholar] + + # Individual standalone package + pip install figrecipe diff --git a/src/scitex/_sphinx_html/_sources/source/gallery.rst.txt b/src/scitex/_sphinx_html/_sources/source/gallery.rst.txt new file mode 100644 index 000000000..9afe7c776 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/gallery.rst.txt @@ -0,0 +1,206 @@ +Plot Gallery +============ + +``stx.plt`` wraps matplotlib axes with data-tracking methods. +All ``plot_*`` methods record data for automatic CSV export. + +Generate the full gallery locally: + +.. code-block:: python + + import scitex as stx + stx.plt.gallery.generate(output_dir="./gallery") + +Line Plots +---------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/line/stx_line.png + :width: 100% + + ``ax.plot_line(x, y)`` + + - .. figure:: _static/gallery/line/stx_shaded_line.png + :width: 100% + + ``ax.plot_shaded_line(x, y_mean, y_std)`` + + * - .. figure:: _static/gallery/line/plot.png + :width: 100% + + ``ax.plot(x, y)`` (standard matplotlib) + + - .. figure:: _static/gallery/line/step.png + :width: 100% + + ``ax.step(x, y)`` + +Statistical Plots +----------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/statistical/stx_mean_std.png + :width: 100% + + ``ax.plot_mean_std(groups)`` + + - .. figure:: _static/gallery/statistical/stx_mean_ci.png + :width: 100% + + ``ax.plot_mean_ci(groups)`` + + * - .. figure:: _static/gallery/statistical/stx_median_iqr.png + :width: 100% + + ``ax.plot_median_iqr(groups)`` + + - .. figure:: _static/gallery/statistical/stx_errorbar.png + :width: 100% + + ``ax.plot_errorbar(x, y, yerr)`` + +Distribution Plots +------------------ + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/distribution/stx_kde.png + :width: 100% + + ``ax.plot_kde(data)`` + + - .. figure:: _static/gallery/distribution/stx_ecdf.png + :width: 100% + + ``ax.plot_ecdf(data)`` + + * - .. figure:: _static/gallery/distribution/stx_joyplot.png + :width: 100% + + ``ax.plot_joyplot(groups)`` + + - .. figure:: _static/gallery/distribution/hist.png + :width: 100% + + ``ax.hist(data)`` + +Categorical Plots +----------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/categorical/stx_violin.png + :width: 100% + + ``ax.plot_violin(groups)`` + + - .. figure:: _static/gallery/categorical/stx_box.png + :width: 100% + + ``ax.plot_box(groups)`` + + * - .. figure:: _static/gallery/categorical/stx_bar.png + :width: 100% + + ``ax.plot_bar(labels, values)`` + + - .. figure:: _static/gallery/categorical/stx_barh.png + :width: 100% + + ``ax.plot_barh(labels, values)`` + +Scatter Plots +------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/scatter/stx_scatter.png + :width: 100% + + ``ax.plot_scatter(x, y)`` + + - .. figure:: _static/gallery/scatter/scatter.png + :width: 100% + + ``ax.scatter(x, y)`` (standard matplotlib) + +Heatmaps and Grids +------------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/grid/stx_heatmap.png + :width: 100% + + ``ax.plot_heatmap(matrix)`` + + - .. figure:: _static/gallery/grid/stx_conf_mat.png + :width: 100% + + ``ax.plot_conf_mat(cm)`` + + * - .. figure:: _static/gallery/grid/stx_image.png + :width: 100% + + ``ax.plot_image(img)`` + + - .. figure:: _static/gallery/grid/stx_imshow.png + :width: 100% + + ``ax.plot_imshow(data)`` + +Area Plots +---------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/area/stx_fill_between.png + :width: 100% + + ``ax.plot_fill_between(x, y1, y2)`` + + - .. figure:: _static/gallery/area/stx_fillv.png + :width: 100% + + ``ax.plot_fillv(x_start, x_end)`` + +Special Plots +------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/special/stx_raster.png + :width: 100% + + ``ax.plot_raster(spike_times)`` + + - .. figure:: _static/gallery/special/stx_rectangle.png + :width: 100% + + ``ax.plot_rectangle(xy, w, h)`` + +Contour and Vector Plots +------------------------- + +.. list-table:: + :widths: 50 50 + + * - .. figure:: _static/gallery/contour/stx_contour.png + :width: 100% + + ``ax.plot_contour(x, y, z)`` + + - .. figure:: _static/gallery/vector/quiver.png + :width: 100% + + ``ax.quiver(x, y, u, v)`` diff --git a/src/scitex/_sphinx_html/_sources/source/index.rst.txt b/src/scitex/_sphinx_html/_sources/source/index.rst.txt new file mode 100644 index 000000000..9a5d505de --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/index.rst.txt @@ -0,0 +1,88 @@ +SciTeX Documentation +==================== + +SciTeX is a modular Python toolkit for research automation. It provides a +unified interface across the full scientific workflow: from data loading and +statistical analysis, through publication-ready plotting and manuscript +compilation, to AI-assisted literature review. Every module is installable +independently, and the entire surface area is exposed to AI agents through +an MCP (Model Context Protocol) server. + +Key Features +------------ + +- **Session decorator** -- wrap any experiment function with ``@stx.session`` + to get automatic directory management, reproducibility logging, and + error-safe cleanup. + +- **Unified I/O** -- ``stx.io.save`` / ``stx.io.load`` handle 40+ formats + (CSV, HDF5, YAML, images, PDFs, ...) through a single call. + +- **Statistics** -- ``stx.stats`` provides hypothesis testing, effect sizes, + power analysis, and multiple-comparison correction with APA-formatted + output. + +- **Plotting** -- ``stx.plt`` produces publication-ready figures via + `figrecipe `_, with + millimetre-based layouts, journal style presets, and automatic CSV data + export alongside every saved figure. + +- **Manuscript writing** -- ``stx.writer`` compiles LaTeX manuscripts, + manages BibTeX, and exports to Overleaf. + +- **Literature management** -- ``stx.scholar`` searches CrossRef, OpenAlex, + and Google Scholar; downloads and parses PDFs; and maintains a local + citation database. + +- **MCP for AI agents** -- every capability above is available as a + tool call through the built-in MCP server, so LLM agents can run + statistics, create figures, and compile papers programmatically. + +Getting Started +--------------- + +1. :doc:`installation` -- install the core package and choose the extras you + need. +2. :doc:`quickstart` -- a five-minute walkthrough of the session decorator, + I/O, and plotting. +3. :doc:`api/index` -- full API reference generated from docstrings. + + +.. toctree:: + :maxdepth: 2 + :caption: Getting Started + + installation + quickstart + + +.. toctree:: + :maxdepth: 2 + :caption: Guides + + concepts + gallery + ecosystem + + +.. toctree:: + :maxdepth: 2 + :caption: Interfaces + + cli + mcp + + +.. toctree:: + :maxdepth: 2 + :caption: Reference + + api/index + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/scitex/_sphinx_html/_sources/source/installation.rst.txt b/src/scitex/_sphinx_html/_sources/source/installation.rst.txt new file mode 100644 index 000000000..5b692ce9f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/installation.rst.txt @@ -0,0 +1,166 @@ +Installation +============ + +Requirements +------------ + +- **Python 3.10+** +- ``uv`` (strongly recommended) — install with ``pip install uv`` or + ``curl -LsSf https://astral.sh/uv/install.sh | sh`` +- ``pip`` 21+ also works, but expect 30–90 min for ``scitex[all]`` + (see warning below) + + +.. warning:: + + ``pip install "scitex[all]"`` typically takes **30–90 minutes** because + pip's serial resolver walks version histories of the large transitive + dependency set (numpy/pandas/torch/jax/playwright/openalex-local/…). + Use **uv** instead — it resolves the same set in parallel in **1–3 + minutes**. Every ``pip install`` line on this page also works as + ``uv pip install`` and we recommend the uv form. + + +Core Install +------------ + +The base package pulls in only lightweight dependencies and gives you access +to session management, path utilities, string helpers, and the module +discovery system. + +.. code-block:: bash + + uv pip install scitex # recommended + pip install scitex # also works, slower for [all] + + +Recommended: Install Everything +------------------------------- + +If you want the full experience (plotting, statistics, I/O, scholar, writer, +and every other module): + +.. code-block:: bash + + uv pip install "scitex[all]" # ~3 min + pip install "scitex[all]" # ~30–90 min (resolver thrash) + + +Research Workflow +----------------- + +For a typical research project you need figures, statistics, and literature +search but not audio, browser automation, or cloud tools: + +.. code-block:: bash + + pip install "scitex[plt,stats,scholar]" + + +Per-Module Extras +----------------- + +Install only what you need. Each extra maps to a self-contained capability. + +.. list-table:: + :header-rows: 1 + :widths: 15 55 + + * - Extra + - Description + * - ``plt`` + - Publication-ready figures via figrecipe (matplotlib, seaborn, Pillow) + * - ``stats`` + - Hypothesis testing, effect sizes, power analysis (scitex-stats, scipy, statsmodels) + * - ``io`` + - Unified I/O for 40+ formats (HDF5, Excel, YAML, PDF, images, ...) + * - ``scholar`` + - Literature search and PDF management (CrossRef, OpenAlex, Semantic Scholar) + * - ``writer`` + - LaTeX manuscript compilation, BibTeX management, Overleaf export + * - ``audio`` + - Text-to-speech and audio utilities (scitex-audio) + * - ``ai`` + - LLM APIs (OpenAI, Anthropic, Google, Groq) and ML tools (scikit-learn) + * - ``browser`` + - Web automation via Playwright + * - ``capture`` + - Screenshot capture (mss, Playwright) + * - ``dataset`` + - Scientific dataset access (DANDI, OpenNeuro, PhysioNet) + * - ``cloud`` + - Cloud integration utilities + * - ``app`` + - Unified file storage SDK (scitex-app) + * - ``session`` + - Session decorator with reproducibility logging + * - ``diagram`` + - Diagram generation (Mermaid, Graphviz) + * - ``db`` + - Database access (SQLAlchemy, PostgreSQL) + * - ``cv`` + - Computer vision (OpenCV, Pillow) + * - ``dsp`` + - Digital signal processing (scipy, tensorpac) + * - ``social`` + - Social media posting (socialia) + * - ``tunnel`` + - SSH tunnel management (scitex-tunnel) + * - ``all`` + - Everything above + + +Example combinations: + +.. code-block:: bash + + # Neuroscience analysis + pip install "scitex[plt,stats,dsp,dataset]" + + # Paper writing + pip install "scitex[writer,scholar,plt]" + + # AI agent development + pip install "scitex[ai,browser,capture]" + + +Development Install +------------------- + +Clone the repository and install in editable mode with development tools: + +.. code-block:: bash + + git clone https://github.com/ywatanabe1989/scitex-python.git + cd scitex-python + pip install -e ".[dev]" + +The ``dev`` extra includes pytest, ruff, mypy, Sphinx, and build tools. + +Using uv (recommended) +^^^^^^^^^^^^^^^^^^^^^^^ + +`uv `_ resolves and installs dependencies +in parallel from a Rust resolver — roughly 10–30× faster than pip on +``scitex[all]`` (3 min vs. 30–90 min). Install it once with +``pip install uv`` (or the standalone shell installer), then prefix +every install command on this page with ``uv``: + +.. code-block:: bash + + uv pip install -e ".[dev]" + + +Verifying the Installation +-------------------------- + +.. code-block:: python + + import scitex as stx + print(stx.__version__) + +To check which optional modules are available: + +.. code-block:: python + + stx.usage.list() diff --git a/src/scitex/_sphinx_html/_sources/source/mcp.rst.txt b/src/scitex/_sphinx_html/_sources/source/mcp.rst.txt new file mode 100644 index 000000000..429480610 --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/mcp.rst.txt @@ -0,0 +1,152 @@ +MCP Server +========== + +What is MCP? +------------ + +The `Model Context Protocol `_ (MCP) is +an open protocol that lets AI agents call external tools through a +standardized interface. Instead of generating code and hoping it works, an +agent can invoke a well-defined tool and receive structured results. + +SciTeX implements an MCP server that exposes 120+ tools covering the full +research workflow. Any MCP-compatible client -- Claude Code, Cursor, or +custom agents -- can use these tools to conduct literature searches, run +statistics, create figures, and compile manuscripts. + +Setup +----- + +Add the following to ``.mcp.json`` in your project root: + +.. code-block:: json + + { + "mcpServers": { + "scitex": { + "command": "scitex", + "args": ["mcp", "start"], + "env": { + "SCITEX_ENV_SRC": "${SCITEX_ENV_SRC}" + } + } + } + } + +Then set the environment source file in your shell profile: + +.. code-block:: bash + + # Local machine + export SCITEX_ENV_SRC=~/.scitex/scitex/local.src + + # Remote server + export SCITEX_ENV_SRC=~/.scitex/scitex/remote.src + +Generate a template ``.src`` file: + +.. code-block:: bash + + scitex env-template -o ~/.scitex/scitex/local.src + +Or install the MCP server globally: + +.. code-block:: bash + + scitex mcp installation + +Tool Categories +--------------- + +.. list-table:: + :header-rows: 1 + :widths: 20 10 70 + + * - Category + - Tools + - Description + * - writer + - 28 + - LaTeX manuscript compilation + * - scholar + - 23 + - PDF download, metadata enrichment + * - capture + - 12 + - Screen monitoring and capture + * - introspect + - 12 + - Python code introspection + * - audio + - 10 + - Text-to-speech, audio playback + * - stats + - 10 + - Automated statistical testing + * - plt + - 9 + - Matplotlib figure creation + * - diagram + - 9 + - Mermaid and Graphviz diagrams + * - dataset + - 8 + - Scientific dataset access + * - social + - 7 + - Social media posting + * - canvas + - 7 + - Scientific figure canvas + * - template + - 6 + - Project scaffolding + * - verify + - 6 + - Reproducibility verification + * - dev + - 6 + - Ecosystem version management + * - ui + - 5 + - Notifications + * - linter + - 3 + - Code pattern checking + +All tools accept JSON parameters and return structured results. + +Example Workflow +---------------- + +A typical AI-driven research workflow chains tools across categories: + +1. **Scholar** -- Search literature and download papers + + .. code-block:: text + + scholar_search_papers(query="neural oscillations gamma band") + scholar_fetch_papers(dois=["10.1038/s41586-024-..."]) + +2. **Stats** -- Analyze experimental data + + .. code-block:: text + + stats_recommend_tests(data=[[1.2, 3.4, ...], [2.1, 4.5, ...]]) + stats_run_test(test="mann_whitney_u", groups=[[...], [...]]) + +3. **Plt** -- Create publication-ready figures + + .. code-block:: text + + plt_bar(data={"Control": [1,2,3], "Treatment": [4,5,6]}, + ylabel="Response", title="Figure 1") + +4. **Writer** -- Compile the manuscript + + .. code-block:: text + + writer_compile_manuscript(project="my_paper") + +The agent orchestrates these steps autonomously, passing outputs from one +tool as inputs to the next. diff --git a/src/scitex/_sphinx_html/_sources/source/quickstart.rst.txt b/src/scitex/_sphinx_html/_sources/source/quickstart.rst.txt new file mode 100644 index 000000000..a1952758f --- /dev/null +++ b/src/scitex/_sphinx_html/_sources/source/quickstart.rst.txt @@ -0,0 +1,287 @@ +Quickstart +========== + +This guide covers the most common SciTeX workflows with working code +examples. For design rationale, see :doc:`concepts`. + + +Session Decorator +----------------- + +The ``@stx.session`` decorator is the recommended entry point for any +SciTeX script. It converts your function into a self-contained, +reproducible experiment with automatic CLI generation, config loading, +logging, and organized output directories. + +.. code-block:: python + + import scitex as stx + + @stx.session + def main( + n_samples=100, + CONFIG=stx.session.INJECTED, + plt=stx.session.INJECTED, + logger=stx.session.INJECTED, + ): + """Generate sample data and plot.""" + import numpy as np + + x = np.linspace(0, 2 * np.pi, n_samples) + y = np.sin(x) + + fig, ax = stx.plt.subplots() + ax.plot_line(x, y) + ax.set_xyt("Time", "Amplitude", "Sine Wave") + stx.io.save(fig, "sine.png") # Saves sine.png + sine.csv + return 0 + + if __name__ == "__main__": + main() + +Run from the command line -- arguments are generated automatically from +the function signature: + +.. code-block:: bash + + python script.py --n-samples 200 + +Parameters marked with ``stx.session.INJECTED`` are provided by the +session runtime. You never pass them yourself: + +- **CONFIG** -- aggregated YAML parameters from ``./config/*.yaml`` +- **plt** -- matplotlib wrapped by figrecipe +- **logger** -- colored, file-backed logger +- **COLORS** -- publication color palette +- **rngg** -- seeded random number generator + +Output is organized into a timestamped directory: + +.. code-block:: text + + script_out/FINISHED_SUCCESS/2026-03-18_14-30-00_AbC1/ + +-- sine.png # Figure with embedded metadata + +-- sine.csv # Auto-exported plot data + +-- CONFIGS/CONFIG.yaml # Reproducible parameters + +-- logs/stdout.log # Standard output + +-- logs/stderr.log # Standard error + + +Unified File I/O +----------------- + +``stx.io.save`` and ``stx.io.load`` handle 30+ formats through a single +interface. The format is inferred from the file extension. + +.. code-block:: python + + import scitex as stx + import numpy as np + import pandas as pd + + # DataFrame -- CSV + df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]}) + stx.io.save(df, "data.csv") + df = stx.io.load("data.csv") + + # NumPy array -- NPY + arr = np.random.randn(100, 50) + stx.io.save(arr, "array.npy") + arr = stx.io.load("array.npy") + + # Figure -- PNG (also generates CSV of plotted data) + fig, ax = stx.plt.subplots() + ax.plot_line([1, 2, 3, 4, 5]) + stx.io.save(fig, "plot.png") # Creates plot.png AND plot.csv + + # Dictionary -- YAML + params = {"learning_rate": 0.001, "epochs": 100} + stx.io.save(params, "params.yaml") + params = stx.io.load("params.yaml") + + # Dictionary -- JSON + metadata = {"subject": "S01", "task": "rest"} + stx.io.save(metadata, "meta.json") + metadata = stx.io.load("meta.json") + + # Arbitrary object -- Pickle + stx.io.save({"complex": [1, 2, 3]}, "data.pkl") + obj = stx.io.load("data.pkl") + +When saving a matplotlib figure, SciTeX automatically exports the +underlying data as a CSV file alongside the image. This ensures every +figure in a paper can be independently verified and reproduced. + + +Statistical Analysis +-------------------- + +SciTeX wraps 23 statistical tests with a consistent interface that +includes effect sizes, confidence intervals, and power analysis. + +.. code-block:: python + + import scitex as stx + import numpy as np + + group1 = np.random.randn(30) + 0.5 + group2 = np.random.randn(30) + + # Run a t-test with full reporting + result = stx.stats.run_test( + "ttest_ind", group1, group2, return_as="dataframe" + ) + print(result) + # Columns: test, statistic, p_value, effect_size, ci_lower, ci_upper, power + +Not sure which test to use? Let SciTeX recommend one: + +.. code-block:: python + + data = {"group_a": group1, "group_b": group2} + recommendations = stx.stats.recommend_tests(data) + print(recommendations) + +Additional utilities: + +.. code-block:: python + + # Multiple comparison correction + corrected = stx.stats.correct_pvalues([0.01, 0.04, 0.06], method="bonferroni") + + # Effect size calculation + d = stx.stats.effect_size(group1, group2, test="cohens_d") + + # Format results for publication + formatted = stx.stats.format_results(result) + # "t(58) = 2.34, p = .021, d = 0.60" + + +Publication-Ready Figures +------------------------- + +SciTeX delegates to `figrecipe `_ +for publication-quality matplotlib figures with a consistent API. + +**Basic line plot** + +.. code-block:: python + + import scitex as stx + import numpy as np + + x = np.linspace(0, 10, 200) + + fig, ax = stx.plt.subplots() + ax.plot_line(x, np.sin(x)) + ax.set_xyt("Time (s)", "Amplitude", "Sine Wave") + stx.io.save(fig, "line.png") + +**Multi-panel figure** + +.. code-block:: python + + import scitex as stx + import numpy as np + + fig, axes = stx.plt.subplots(1, 3) + + # Panel A: line plot + x = np.linspace(0, 10, 200) + axes[0].plot_line(x, np.sin(x)) + axes[0].set_xyt("Time", "Value", "Line") + + # Panel B: violin plot + data = [np.random.randn(50) + i for i in range(3)] + axes[1].stx_violin(data) + axes[1].set_xyt("Group", "Value", "Violin") + + # Panel C: heatmap + matrix = np.random.randn(10, 10) + axes[2].stx_heatmap(matrix) + axes[2].set_xyt("X", "Y", "Heatmap") + + stx.io.save(fig, "panels.png") + +**Statistical visualization** + +.. code-block:: python + + import scitex as stx + import numpy as np + + data = np.random.randn(100, 50) + + fig, ax = stx.plt.subplots() + ax.stx_mean_std(data) + ax.set_xyt("Time", "Value", "Mean +/- SD") + + stx.io.save(fig, "stats_plot.png") + + +Literature Management +--------------------- + +The scholar module handles paper discovery, PDF downloads, and BibTeX +enrichment. + +**CLI usage** + +.. code-block:: bash + + # Enrich a BibTeX file with missing metadata (DOIs, abstracts) + scitex scholar bibtex refs.bib + + # Fetch a paper by DOI + scitex scholar fetch "10.1038/s41586-024-07487-w" + + # Search for papers + scitex scholar search "deep learning EEG" --limit 20 + +**Python API** + +.. code-block:: python + + import scitex as stx + + # Search for papers + results = stx.scholar.search("transformer attention mechanism", limit=10) + + # Parse and enrich a BibTeX file + entries = stx.scholar.parse_bibtex("refs.bib") + enriched = stx.scholar.enrich_bibtex("refs.bib") + + +CLI Usage +--------- + +SciTeX provides a unified CLI that mirrors the Python module structure. + +.. code-block:: bash + + # Show all available commands + scitex --help-recursive + + # Statistics + scitex stats recommend # Suggest tests for your data + scitex stats run ttest_ind # Run a specific test + + # Scholar / Literature + scitex scholar fetch "10.1038/..." # Download paper by DOI + scitex scholar bibtex refs.bib # Enrich BibTeX metadata + scitex scholar search "query" # Search for papers + + # Figures and diagrams + scitex plt info # Show available plot types + + # Utilities + scitex audio speak "Analysis complete" # Text-to-speech notification + scitex capture snap # Take a screenshot + + # Introspection + scitex introspect api scitex.stats # List APIs for a module + scitex list-python-apis # List all Python APIs + scitex mcp list-tools # List all MCP tools + +Every CLI command corresponds to a Python function and an MCP tool. +See :doc:`concepts` for details on this three-interface design. diff --git a/src/scitex/_sphinx_html/_static/_sphinx_javascript_frameworks_compat.js b/src/scitex/_sphinx_html/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 000000000..81415803e --- /dev/null +++ b/src/scitex/_sphinx_html/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/src/scitex/_sphinx_html/_static/architecture.mmd b/src/scitex/_sphinx_html/_static/architecture.mmd new file mode 100644 index 000000000..54ad1616a --- /dev/null +++ b/src/scitex/_sphinx_html/_static/architecture.mmd @@ -0,0 +1,35 @@ +%%{init: {"theme": "default"}}%% +graph LR + subgraph Experiment + session["session"] + config["config"] + io["io"] + logging["logging"] + repro["repro"] + end + + subgraph Analysis & Visualization + stats["stats"] + dsp["dsp"] + plt["plt"] + diagram["diagram"] + end + + subgraph Publication + scholar["scholar"] + writer["writer"] + clew["clew"] + end + + style session fill:#e8f4fd,stroke:#2196F3,stroke-width:2px + style config fill:#e8f4fd,stroke:#2196F3 + style io fill:#e8f4fd,stroke:#2196F3 + style logging fill:#e8f4fd,stroke:#2196F3 + style repro fill:#e8f4fd,stroke:#2196F3 + style stats fill:#fff3e0,stroke:#FF9800 + style dsp fill:#fff3e0,stroke:#FF9800 + style plt fill:#fff3e0,stroke:#FF9800 + style diagram fill:#fff3e0,stroke:#FF9800 + style scholar fill:#f3e5f5,stroke:#9C27B0 + style writer fill:#f3e5f5,stroke:#9C27B0 + style clew fill:#f3e5f5,stroke:#9C27B0 diff --git a/src/scitex/_sphinx_html/_static/base-stemmer.js b/src/scitex/_sphinx_html/_static/base-stemmer.js new file mode 100644 index 000000000..e6fa0c492 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/base-stemmer.js @@ -0,0 +1,476 @@ +// @ts-check + +/**@constructor*/ +BaseStemmer = function() { + /** @protected */ + this.current = ''; + this.cursor = 0; + this.limit = 0; + this.limit_backward = 0; + this.bra = 0; + this.ket = 0; + + /** + * @param {string} value + */ + this.setCurrent = function(value) { + this.current = value; + this.cursor = 0; + this.limit = this.current.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }; + + /** + * @return {string} + */ + this.getCurrent = function() { + return this.current; + }; + + /** + * @param {BaseStemmer} other + */ + this.copy_from = function(other) { + /** @protected */ + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.in_grouping = function(s, min, max) { + /** @protected */ + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor++; + return true; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_in_grouping = function(s, min, max) { + /** @protected */ + while (this.cursor < this.limit) { + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) + return true; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) + return true; + this.cursor++; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.in_grouping_b = function(s, min, max) { + /** @protected */ + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor--; + return true; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_in_grouping_b = function(s, min, max) { + /** @protected */ + while (this.cursor > this.limit_backward) { + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return true; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true; + this.cursor--; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.out_grouping = function(s, min, max) { + /** @protected */ + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { + this.cursor++; + return true; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_out_grouping = function(s, min, max) { + /** @protected */ + while (this.cursor < this.limit) { + var ch = this.current.charCodeAt(this.cursor); + if (ch <= max && ch >= min) { + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) { + return true; + } + } + this.cursor++; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.out_grouping_b = function(s, min, max) { + /** @protected */ + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { + this.cursor--; + return true; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_out_grouping_b = function(s, min, max) { + /** @protected */ + while (this.cursor > this.limit_backward) { + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch <= max && ch >= min) { + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) { + return true; + } + } + this.cursor--; + } + return false; + }; + + /** + * @param {string} s + * @return {boolean} + */ + this.eq_s = function(s) + { + /** @protected */ + if (this.limit - this.cursor < s.length) return false; + if (this.current.slice(this.cursor, this.cursor + s.length) != s) + { + return false; + } + this.cursor += s.length; + return true; + }; + + /** + * @param {string} s + * @return {boolean} + */ + this.eq_s_b = function(s) + { + /** @protected */ + if (this.cursor - this.limit_backward < s.length) return false; + if (this.current.slice(this.cursor - s.length, this.cursor) != s) + { + return false; + } + this.cursor -= s.length; + return true; + }; + + /** + * @param {Among[]} v + * @return {number} + */ + this.find_among = function(v) + { + /** @protected */ + var i = 0; + var j = v.length; + + var c = this.cursor; + var l = this.limit; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >>> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; // smaller + // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) + var w = v[k]; + var i2; + for (i2 = common; i2 < w[0].length; i2++) + { + if (c + common == l) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c + w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c + w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + // find_among_b is for backwards processing. Same comments apply + /** + * @param {Among[]} v + * @return {number} + */ + this.find_among_b = function(v) + { + /** @protected */ + var i = 0; + var j = v.length + + var c = this.cursor; + var lb = this.limit_backward; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; + var w = v[k]; + var i2; + for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) + { + if (c - common == lb) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c - w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c - w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + /* to replace chars between c_bra and c_ket in this.current by the + * chars in s. + */ + /** + * @param {number} c_bra + * @param {number} c_ket + * @param {string} s + * @return {number} + */ + this.replace_s = function(c_bra, c_ket, s) + { + /** @protected */ + var adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += adjustment; + if (this.cursor >= c_ket) this.cursor += adjustment; + else if (this.cursor > c_bra) this.cursor = c_bra; + return adjustment; + }; + + /** + * @return {boolean} + */ + this.slice_check = function() + { + /** @protected */ + if (this.bra < 0 || + this.bra > this.ket || + this.ket > this.limit || + this.limit > this.current.length) + { + return false; + } + return true; + }; + + /** + * @param {number} c_bra + * @return {boolean} + */ + this.slice_from = function(s) + { + /** @protected */ + var result = false; + if (this.slice_check()) + { + this.replace_s(this.bra, this.ket, s); + result = true; + } + return result; + }; + + /** + * @return {boolean} + */ + this.slice_del = function() + { + /** @protected */ + return this.slice_from(""); + }; + + /** + * @param {number} c_bra + * @param {number} c_ket + * @param {string} s + */ + this.insert = function(c_bra, c_ket, s) + { + /** @protected */ + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) this.bra += adjustment; + if (c_bra <= this.ket) this.ket += adjustment; + }; + + /** + * @return {string} + */ + this.slice_to = function() + { + /** @protected */ + var result = ''; + if (this.slice_check()) + { + result = this.current.slice(this.bra, this.ket); + } + return result; + }; + + /** + * @return {string} + */ + this.assign_to = function() + { + /** @protected */ + return this.current.slice(0, this.limit); + }; +}; diff --git a/src/scitex/_sphinx_html/_static/basic.css b/src/scitex/_sphinx_html/_static/basic.css new file mode 100644 index 000000000..4738b2edc --- /dev/null +++ b/src/scitex/_sphinx_html/_static/basic.css @@ -0,0 +1,906 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_static/check-solid.svg b/src/scitex/_sphinx_html/_static/check-solid.svg new file mode 100644 index 000000000..92fad4b5c --- /dev/null +++ b/src/scitex/_sphinx_html/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/scitex/_sphinx_html/_static/clipboard.min.js b/src/scitex/_sphinx_html/_static/clipboard.min.js new file mode 100644 index 000000000..54b3c4638 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/src/scitex/_sphinx_html/_static/copybutton.css b/src/scitex/_sphinx_html/_static/copybutton.css new file mode 100644 index 000000000..f1916ec7d --- /dev/null +++ b/src/scitex/_sphinx_html/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/src/scitex/_sphinx_html/_static/copybutton.js b/src/scitex/_sphinx_html/_static/copybutton.js new file mode 100644 index 000000000..2ea7ff3e2 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_static/copybutton_funcs.js b/src/scitex/_sphinx_html/_static/copybutton_funcs.js new file mode 100644 index 000000000..dbe1aaad7 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/src/scitex/_sphinx_html/_static/css/badge_only.css b/src/scitex/_sphinx_html/_static/css/badge_only.css new file mode 100644 index 000000000..88ba55b96 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_static/css/fonts/Roboto-Slab-Regular.woff b/src/scitex/_sphinx_html/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f815f63f99da80ad2be69e4021023ec2981eaea0 GIT binary patch literal 86288 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

?{$ttSxRjVh}H^dtH>Gh8~|G9}n0tA?K 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

gupx-#7OZjDX<*=Nvu&nvnc1s*n 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 OA+8o+g0|)wi2noZyn^8X literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/css/fonts/lato-normal.woff b/src/scitex/_sphinx_html/_static/css/fonts/lato-normal.woff new file mode 100644 index 0000000000000000000000000000000000000000..ae1307ff5f4c48678621c240f8972d5a6e20b22c GIT binary patch literal 309192 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

r$F7Gx0xC*xh*9#j zAAfXY=u6D`3#26R?^aux)m^vhe{>|TQ{w+-H?rJZH3^Z#o5{2c`^+o1xPK0k5J*^j zE+JseU?8FIe&1A{ezXuX zy2n6x7!V_n10QW4rN{8?jrU1p9*yclq{aF)*-u5j{0sO+>O=J_?%$y+E1^$cx+;w8 z4r#F?;lr>LzlMeINh!gG{XAp1j=!g*c}B~W71*N^JMg?E+NN&0yNTcC-U9mJK^jM3 z&0DA@d8@(H^SQG8@q|a}G%nl$zdj+7#i|EoJ@7hm%{*a-6D8n8Y`bxlF<-q|arp{d zcMD|@5VUKzB@@u!nl)412E=~nMOmGCKQ}8m^~Wc&#~!Y*`nlJ)HZ~K8nu0o8himBT zIspAd=;?}3J7^ZjS}}pyHIDIEPOO@qMab@Yv)J?}n$+`%c0mGyEgS6JZ&RRM*O{CH z%G}`eQ1-(wiN}6@yWMDAFsfP!PfUdd-7c`}cNCa@Y%%6M_sWeA9@CN8$dzcUOcSFa+|9>2ksw<(l(Jw3pW0BZXeh5Vo!6F&MGCFFN4{e zN7yyC!|3>84YX153Se2{wZpbA0d?M4Voh)_uncB9E$MWH<4{u%`DKOQ0aYLoW!~X? zl4$8u?p79eUcZ5SWo(^e*{|gouzsvcFNFE_grzgC$rv)xB%uXd=E67gnD4}!oMJor z7LDrPMmUw6?8{5 z;Vzz{o?VcgQa}DVw~8Y?f0};y+G5sj8a;39d2|nY9e>z_j32*gv|tw7goJGEdn}u| z>dLN|#p>!uyglueKlH64sC+%(hgUZc9t!GY1;w*vR`@O-M}&^J0(7RfCWsm{dM8IF z`-nlXpUkQmybK3!VMK5j!A1oenaThNUD2u_){UT3W!r1YxSFyi3-<1(lvY(Yfi zq7C7D;@Y%F*2I)^fHKP6~n_t#85^rwr>+G)E zpdarivup-;2Kig@m&?jBwBx+h6r^=s6*dY5jMuAS)rbk(GGkkyCaEh$CDOz9#-3qd&}7p z1k3H`dxhDeO;Waz&R5K$=2&W#(3DG!77BZ)Y+*^#svD$t{#bVK9vZT++|0{;72FoR z9{j??YnYA2mPSB@*-=JXfIv99oGTa$_@t2=56NHD%)yptsj_(yMI=%CKc0EZKDQZF z!ZNp?-_2MjTqiWFXJzl^3L12p9K=%Lm4$Tk1ea!0cSo z0i=FZ>U1MxPat)nZd0@+jnQ>aQ*r4T`(r>Dnyhia2u)ii!pj300m_?Qk<4X?j^LUh0_>w!Z?8RzR}Lj^eUjDk3^Pqr6Y5$mp14xtGSd=Lc|F;pjH)EqN|M5AX${2DRMEJ#&bfH=H zAPWd@dm)TfC0q*tw<($zLNWFP^1+BqV8h3@+xucB7uR}>Z__*HJlwFlNLrg38iE_8 z!B{ta2vn{giN$asraxwlIC)4BqgF=XcC5trfhyj^8GC$9ky{0R7^H_F@#7ZcJp1B0 ze4~si^Gaq_gqX37QSQ|2Z112q6mKj}5Q@oUdsr`77RLH=6}__dfjL8G-P_fJPU+Cq zLs$vEfH7P<>oJjuh1$68gV%y&Y~U*!5^F&L3wfA>uRMrNSbIdG>%qez=amiXq0FwS z8gV~86bvD_ULG0P`<+t4f1;tvcIv3VVMD!ESUrabnIkAB;arc+e6!YZg@zpm`{-QK zPT8u6MDoR(NJR44xGp~|PwxWPG`QW-A6n=${6lmsPag!=G`c;}A6n^~GLcB*vvFVk ze-w8c-DLHLR{M@kB(nHc-Ix8#)8XJ6F!8Y0VYTV|Y9$^AAblTYRwe{|LUu%SlW8 z6TCJ1IM`naVt69hxnechay>2S_3mTGe_Jf|0|^<~3rs`ZKa0}y4RlqXZ|HVU`$Ziv z4fIwX-`&Rmm`;9)6ObFB|Frkv>*sPdg&ti=_>g^ffXd;_8|N9JBMx|d_ikCf$i9NZ zfLU+Ee%$SKj+$iANW*^z?xuDPKm2GdBodipczy7V?H#$Ae_y%|9(dXN-vgELmRqL} z4cMZ|tV&!fN{XEBrjqaP zj+Q^hQz&%dv+{O(r?uND)$^rt>DSIl_aaKRH_ZefNw#Fg)mN$Bws0}atu_X71fcc} z_kwK)LpTt>h3IOVnU4wGms_{}bWKaCGZr%U@dWawlkJ;sE7&5F)dvgyNEp;zd zXzMpj=b~VQTTJbSvKm#hQ9#f}HD8lJa_4T+_VML|C04(y2}11lv5?#NA#JEUT9cV211#Px%d);BClDJcQ0+Td z>uajj{EK9jURL*dbj#egbtSwndj;E<-<{}|Gg&j>(!Qb@uyhbOutT^C3r6t3$c)%n zdUm%r0tLmwAfAnJDSagGX~0p zv!P-N`f?a;y(}IGEKO^}Lr&*xt*Ms|6>Hp`Pz+n%oEf(_4G(W7Ar+C|KB9}7Wt-Zz zx-q_Oz`J6VLJkuLjBJWrV_CPN$I(?nJ*z#t$5Lx-t^tT{N8)4Oa6NgYUC^87o!uKD z^<>Q&lU&II>(O*W?k9biM;ANMeHAb{*?TE#et*%2_`vL3q#~KJq+4i zn#t~;so}_!PYcZ6guLG3bw}Ryj&?=f)dx4)M?t$A?4r_0Fc4w5P$1;o)cJeKxL5$2 z73o&Dob_N6i*_AN9agTQ|)ikd}KB zx}v;UgW!X~5tQW>;eU1>72hpxcL7*x4aUVhAq~bF`@{>!Hzc0*d#+T2EkAwPa&FZ$ zmENEbZFfiII9#PP-1vaSjXCE52~#;C}T<*b65I1ghcfx{Q1SpS4vW$ z@8j*;v~~yQmr@<<%c%;GCi?ELT#N<>Ma3v=kh4a+ka>tGp!is2yDD|YeuaE>;t(MbC{Wav`662m(KB`Oo8RL(^z$ffsL$WkcJ&)(zL$D_#G z%Nd|NWanDD$Z6txGMLRo-~$7*ld9=h3PI#q%fae1?@dAbpqr&7MBUAb;BnaD_}LRo znd!^sd*8;+at>&o1#JeyD1#p<4@gTDQNGXStID%>-ke(0*u@>V%FWEmp6%{aa;A&o zIqRL#UORO*?cZC^GU|!1XEf&WHgU7xS!U1@&bB?>D&DQwJSQ&P>1GDo0nj!n!@JQo zX$IYbOw;t;)t@u*cXvg$dJ)IU-MwdkNX<iS;C~fFvn>Hn+ z;66Aq;q%Q>VtLc{7$v;Day7R`!1pLORB-Nm0ca|{SKJENpVMSH`@r75{XtOr_`?Ey z`(9UQ`_V%FOh)TwetY{KUM;J=_HcwMY13z_BZ(zo%8qorrb_!++x=(y51W0?`)STX zgJ{gpwv%cq@Vm&C)pa5z_4SGVO}UPt4wpwllQ%XPqO@)id4+@~QP&!NyLKf1M*Goy ze1QcM)I4EQ)W?!^u~+hN$Q7Erc^Ow8pd8~TKG~=@RAkD$q22s&vgUvzsoySt9cz&` zz289%%b$b~O(r$wBuC|(bzA05epol?3{OGk7k&O9gKb0ieB6SbPwpxk?Z|K0 z;}(bz-45yrBH+m^+s5oRh3~!O$x80Yg4aU)(Z8(w)$jso7+G|KA=3!0Xm1@q@e z@r)RIeWiUVrTqqos(5O6jP;v++qrq$trFJ3m~qHdFJj}nt(TjKltiiwbFaM8<0{_= zbSxJH@mYF}yIU%vH|9+>Bzc3|>v#%j4GK<}u~LY1cf{ z&M6%jpJg#ypH%J@cITIuY(MSaf0-q5S20`m=QX)M!RXhg0arZOf8u}oy8^vgMDvco zyc~PuqFhS(=^Fpj9NETv6>GaV-MDI1ZN;G6I?=vwE1KW<4I4QkMFNyZL;nM~vybfE zS7#%^;7@stH|+vLL;%lInLe-B=QT3g5pERFy#4{@ipjDehVKO^hx2Jn3By*Gn)Z5^ zG{60@dq3Kf;NjC$GUb}5oS1?aH;V1lHt8b!2O`VTTkNyuB4?UVB-U$UzI6u z*j@UC|7jjsSnaPkMNW|sAuTpu{-^n5MPs3=0oL0$b((I2ofYzpwXk|5`i|h^a`zqK z$KL)982g{s;-4)XUg2DX%f2wVYqhk_b;IuJFZ}bmZ6!W?z%yoZ{Ia#?j%Am-|AD=x z?rH6moYYJoW!#I!jcGt6cRjE(7RI?MRukzdJYPc&9miBnp3|{y1=3xA$m04llOwz(gh2btLMQ zb^4=44<6k!Q@7c4Mtw)-;=Hf*3YvPf3t*<*ad{svj^i#nK@G38SEz~bt-pnD#g5F5 zcF$|uZ84L~&q#-lOV{Fh?y!{#X_^DROF+^uqsd&XsX%hFXjV|4q3R?eh+?a)&86~`OZ}Cce%(f(7 z*RPP4uUcjc+~$wjB%sf_5wf-%-^3R}nepr;GK;nXTByr07+NKdaCTM6+&p$wiQEKO z`J5JqZqRHBjR9_r<$Ex%eBcK(|08ah^LWdVDfMGmI$esb>)vncyE-*IrUxObhFUx+)s+ZLtb8lU3Y(APX$ zKgg~SYQs6bnQql=pfSmP%PIZDa;SCUGfPin(z?;Q#G%Vj>j!t5m04`MRJ?nn?rNqj z?y%-C9y)~TpTp%Oa!S1yblEyfKN0mi(i$TAk2k6x>|F6{RN8LsGjk3Lyc4CxW8@gi zCfpvmxzB!Z)O_G0%Qzq(oMQWEbPg9uE{w3Sexr}{hSWF6rg#;~(dys0&nK~dJkIU_S zA(9f#DU5i_88;vwm!kYQ9%sEhBYNsZ&n0$7uvub)%V3T;D~M#prZTA7HI>J%qJj znsJV6$3!Jsb(vVe!@-RQf7pwq^?m^w+wQTg{bVzsmA1aA9u=($ zn}Ho2pub+F+Z_Q}=$$OBNO(cU?J|_V9-pk=ZDt+QW_`n{^2(A72VJRpw{E)%3^JX` z8*!+Q+!~%H$~YYIPi)}~n}Jncf<{EneVF6zMdh; zunX>y?RC{eBR#_h(1+Duh^dR+;sRTNJ>vJym}HU++XZ3T8PIs5j=y!E{a)TUMg@w9 z*Mo4CDQdQLGqPrBMoPf}7AL-b01Y5pmeP!e^L;1(kG!jhCmHvn(J7zm_Yw1|;{Zq2 z6P@!)zX}(eCocf9Bg_kk_lcj88WkvSPnmoEEyy*1B zhj%!SV}aE7_fDG8&8EPpkGh+c5iEN747#aW7f`IOw60^Xm~X9PU+|@^w4d2XOHmYy1XgaE7@GeqG$4PO#{1r?>H%$wcA_;l*<4!#McEok)>}#-8 zshcpb7{qPSy;1_4_NoyNLVA`67fOceE>+qy>qU2#2${u4mQ)onMwSQ_GP?f*PSdrb zh3woe1mO}P&Y|h6P@h)8RENyf)YZlnP&p_Qswzwsnd?avX~!e8cu=z^os%3fn0%It>Sp%69A3JT$M`0@%`)ctZ#55>8`5p2<_&k44;|cF z2(UJeIpG+e?$1XI4l}vquzm<^g*`ZcZ!IQTZ=8jmU%&ORXwGYV1{ga5B&zTD9EIG* z-}j?y_Q{Z8xL#gGFNf#5eemWtv!#u$ZL|c4wyl-NHz6$xwXkApijF>;8}HQBN5jWE zjTYL}qHT%bMo=mQ5O@pGq!+@`xD$x! zXEzGbaIAy|TsOV#nKL6~5}%KmDl^G~HpvdDstmEs^&QhNU_-@&?$&3PHJsyE00a0= zW)i^NP9NRLui}nYz!EAH^N|?mj}n2&i=lsj4_^ z;fv+W;#v2*zn8*bKaB;FPbv#0R>Y{?;3~83KOLrjl~Hnm-z3Qn1rv!++I|y#)o9I& zWbP1s1zp8cNLcgsyjV`A6JH5w!Us-N;>luCj7YyOFkjXn`+e!Nu{F?XN0YGKDCqQA z_^R>v?va?Xbo(bC=TAO?9i}tUOq1f@Oxae;W8ING=AO<$i+ZaEViSVX;s)(eq-o5E zs&V&|U}MR8%iLnpqXDU{`L->>!xAsIS+Ae!Grl=-xy^*ndi_$LVIWfv0FP2H)^?Vx z9>5oC?MUrjNjTZ>&z_By4Q&QtagrV0dhrOaIKB2aXXSpCXRbU-w`&8nN>oK(~b z^$y%FN0TmumV)MAh@uBODP;$bUklQKk=BPJx4%~OJFjir(KYjfAzPXfHIX~3l4k>p zM~q6Je%lc}knISK)isw2h{CbXjP!y}1-2FzAQ9&5Wi6bH54OFj&dNK`qQ@U73TzN&$mz7+ZsV3gj|J|$}svn_%FYh8R#$w zv6x!b>M4TQ>n^Dwb>6I^Rl)YnLvPD z{AN(Mfp-a-%15$9Lunji1ozHaZ62P`nqL0fpf~~e9-~a|sFB7rh8=O*guNz4(a|}Zx5Egc|o1bAa{TIl{m}RKYQ5Z6|(G54J!d>Td zoI#a_&nHXm{K-Zl- zTgzf5*TTxWi*1X`WE>r6W~Mvq4k|C``mx&2qT*3>$@OW5|ndII=mKGr(B}p0>~e-R#QOMuzp)oUE9Pr@HkP zjyFW;ELU7%{LXY6h8f}G<0)Zih5fLUhDzT#{FgOQPlfYYOK3{NZ!b(7IR)k((*+}d z<4ZuOaP{Cx-((+Oj=ItB~J3N=%Tut<4ar07-dqews!tqzppO7@O!tL#Gd>HOEYX%%f|BBPQOt@5$FZ*ur z**cUJA9}y|P<-eoT=^0T98*8hafx0P9(eiO~=z(of1 zf@hI?f{{N#`WVoFlirPaBRK4tQj@?DRD#8ZhN~pT2{cayJ{;U{Es-)UpvNL2J)Flg z+KQwC@VY3woau}eURmGGEs=U%Z-Q!|tU?lYpX*fhk=mp9Nk%*;R9c@M}6*X1@E z7QD4bNk)90b2ebBqm(-SxqOtb^uj)u`=N}EjFp;-IiGmvL33I6KkKuB{s3fj`Dk>x zgO50)txpJRevj=d?`en)1|jTm7QeLzRt+#^ER7@tKjR%HV5HLVyB6XEwMPpF+)iQ6 zNZ1_fEmJ{-(yMwsRe|`a5JgL9Jiy`6o2O>A51HifT_@GkI8o2=SH$E5hySN7-s55B_jsgqku7> zVvw_9(A@UZy`+zTCL-74J5=4d9R|tRlYzYeYl5tBfO)Wxt7oo zC$Hg~Va|H}-lV3&v(_JH23*qq_}rvVT3Qa&yZB_Q-lkyC_7l(VpVaW4|U5 z&n20ZqjlOU0Ufs0eYt*9<>x5@S*~9pGwU|?3+F_~G}UVi%NbgkcU@z(X82QkwA{ts zlq(MC&Y48tJ!z?eOLezcZg@u#W2(?X2U6XEJ)&z3iZXD3G5rE#*~A+YeOLZ27~RH} zmcxdc{xa-WQ@p#_G@p?}`@*5m_3oeRfTjmdWdX(xXvxhPqc)YP_6Ca0rAQrrR#c$Z zG#qx|UPd%=03a`DO@E-5?vQ7_LU2c#^ml- zwb%+OnVT)7EciWIwU}bkDheUg(X3Rm^EROf3W%f2AE_!LEOI>~p%`(=A1Uw; zBvUkUupYcbz((s;e>z?CSwI};;0q(KuXl11bU&AEq?P{Cyb+nb(O|4lcI^spb`iIM ztDL-om6p!W^q;D4Uo*It!~dXm`1yS*(~(;BnH$Pa;U^h4YVXa(9_~uxi0AED`a8#u z4Y`DEh8oM)kq_KIc3!!A6=ES0^{(m>b$6%Cqf4A$T3y&q$6qKN)&OW8C9>V>o_ACN zfvu(b=&H8Gr8{H?-gABDaW+rcw5{;@xDFqQ&kUY=L{U2xlesFh+WSI?&FokD?;Hky zqkMg{<$A?$Z|c75HaxcRv)*<@PBU=Au{$oG{ZmT$va=l8TX_^)Rb8sJQ=YX8=A!9G zaFKffO9BCalw8uADW8JESWzl~keSZB_)OGuK-@Y6yHs|EfVIy2qM)Xtv4t zJiB&e*9Oa$*h^4qIM?!t>N!icva8P|j>8i{9fpZJdmBla#1X+yt9upOnH3Sd1f_RY^b0GRp|%MO4hcJ3X99@M8?3l&|1UPpM-@KRG_Z) z9t?E%RYDjK!x_7YBX+eeCs*>GGv;;jq`VpUerz*eI_osB2s(DFs0zzhGkVUXVq7PkFvw`TOoli z^n0O~9^EMD@JO*ry;R$Zy}yI#d^(fH3g#&wy^fJJv~b>TD>m3>-q45Iy3@q$M0#M6 z;O}$EEF{U|(!&siZOMo4#OBovuJzCJhlSR^mT0+*>p0oIRQfB;cS?g!uYc^I|KK9} z62nj}Lt7}@JiRjcP7x0o^`*wKx0l?Cd#^2N(SgPiE~U8qr16u0ottV}FWH{oE1vmO zPLt6Phg9C*F0W1nJ#Gq*a&EdJdk>NpcsX1t4t{&5F_+?T({n}rVWSWJ<=nqc@GiNN zmFbpzyG53vTk_1a=#ps8ow1Ks!a|yUt>d+YzOUoe8vfg`UjBWN_ua!kr#=^Mxa}Og z;v(ho>rjggJ%+bTl_v4x@Q_zGjL?5uR0Z6N=Of|=NQa2LjOg{RWd?4iH`z4>1H_Y!K+XExc@GShs&f2JC8>?4gd3rvI_?R1GtyFyXZHor) z;H_OP0|cP4f(yS(c$|5M7uii;?S~NABRc43!3t6I9%}qeYQbU`$o@N|3lIXCbQy3O zienTq2$uLyYzjV5%v;#1b3S#8bR8dEWkvIF#uKfH3EB})u3{+gJ(Or*y&ri zzUvY2RYZ_oI#{6mn^stmJ-XoG0aJ8Br%D6etXN35o#4sPx7}#TuroUBqdqAAIyE|9XYZ@uV03?Q!PfHaJELet6yHE_74bw(>}Kf1o%?Or zbwe@8Yl0ATi`_vhbq(Zxd4L&_)@Am9%<93chMezaS3%P5R`zi&bt!s4@PNbJcY zI{<=maid8>nQ;UBhb>C&J6x$Q(?MUJ@$^^ci9HXg>rU6RZiptbi4@@xD*M7wMh?T! zW@rr=cw!lfxG^g-f4ky0QLC2RNLo#AFuO>pjd(QtM$XFWqqnl4)hX0kQbQLevy2*eTPuuc)gM=znGH1HcIQx5(fmlb3n7FFU;#poE&MJJ%Zf`INQ>1^+b z1;2j-jckcCbS+DV)8DCr1+~42pULREAhGiRyvlwdJx?9d$Rd|cQL=j^JTEX!STuS_ zKF+dvmOrmM6s~;jy{2C6P`qM%9zC&KmD;E|SzRM9O?I-^{&0J;$>!cn8?y4))Rwgm z*lWioLqRT)TDxA@4A`f0M7VtYP7olHjK6%S5DR`k-P~f6zN~}a?snY)$DM9u^ z(y)=Ulq$M|yegz+__(Ei7)8@_7vVhMqOiD>3SG$F6WKTt<#G%`z|o$+k_Ck}4cGqp zV~Td?M?>+r>>^5IOyYWe81zcHIoeHIGWLys>)V?=x&TY`IZ$E!lMYrK z0$Zlx7dD&^Pc3=6GKs_MFAGsZijntb^ziALa_B3;Y3fXz0g$L2oVf1&oGzAZkb_!Ik!`<3?qDUZm^jJcvw|uV9 z;C(zX5JzvE9ZpnRk}JEg+JGMno(y8B&ykod8Xng@wlA)%D=xKEuplj-my$`y$fl@+ zFv@TfSr)No%l`tHR!2Of4!%m{cN=-%wi{hrE265JPliiAEEHNBlWXx;_(O|A3z@_e z9adq^3#r>_wYwI7HrRv}T6hD+B&(`;T5Qa;AhG@kYKY-zaBVh5=~+hBpS>2{PH2i`SE}&G9yUbgeCqtdRRXy%LreUxDFYu2)I_*k$pS2) zO?y2hvr9PNGJHBkxc7U!;R~gLVFOpH%-U$mj4ucRnKr|M_Afca8FVn?ESrMkHbr0_ z^f)4+bc{=A84~+uz{~|A-7Wv;d0Gw9jvglo)pt^eHnr>^B9Mv*myn5NF1G(bKZq6~ zK`Kbp;G3}ADQ2lt@UdDBSEU4@d=^s446Mu!bryLF_E985r$DM&j#Q-twR{#v=?I+C z(Jz6$OYGm!2^f>H$djptxQXyoNNb!AF z)!SFqF;{eOT;-`=tXx(BSYotwlOt5&5pvI5t1PmKliO4e*sJY4bOW9tFS>~xLk?~E z#)k)7Zp{&y$wJZ+d8CDblgEb<&6eP&O`)I= zYraQN`M6cn&ybOsA~dmzIxT@;;Cu?5P8o9LKO8^FFAcN+KtkV@99-KK)=vWln+=oV z)K}BbS8`!7PB}$t^_Qem@)OA>Jo4fu5EVHHy}arsP$xNH4gpgC+6RH``P&UvhbY`{ ziVm{>_glmUYjyxJnJ$c&iXTd1@^AOof)OTuv;8+V^f=VvLU4Ig-6r*PIAHscdQ56q z5g0;wfm0^Be?pkZ{`v5JsqlU*A^n66lW<+8{$vJ$xX#a)vRtg2he3&+VvoMsWT<{LEu3vDMSmm7(Ih-nu zU(zPJ3Vc2xcP7Sjx46%B-Nbr zEKGG*Y&0kwZLuBg^Q^39EAH4|?VpEUD@#`_$uQJ02QgAf3vHf1bK)y7jp0T?&V3K% z(UN5_ml+b1t+j}^P?@AG%hU7sx)qb`W9?2g&echEGaYtB+#MEfmXoP$BU6SPPVlue z%+|R72_3O^m;LSVgqjg^G=gO+9pWj$c58u9wvv!+!8X1OZC6aVnL(z~{?~qfcB-k?46EeamddFHme--0@`)!*dwBW`TBrIT}&98Wl2?N@U9X@ns;xhJ4Lx&tsfZ z2d@R3vVc+4J~HL=tc%`t#Y)v$_&{=g-Bq%1+(6qrIxDpPh;EPY?j~6*7T9f}zw&>Q z68_l~D*hDF=a{M_{>a*;yV$m<JJbqJIL|!A*w2QF%Do2 z@k6@A`OaeDTk}Dxyb`Hqd0?dTRO?j7eO)^r>HRpv-v#407@)CT{Sf>5!jG>GLtyLP zFsdhDNS|AaC94`{f;$h!;D{Cg^z~z>U7GNT5+trqnHgdmjx3wu9GwE{6 zPD^7vY{b=;jh5!$ka}9XM&yG9`1R=c5=O(C zMk5M$!G2_=IWdDw&#u4%qtNFygf9*UNubYWfV2@~kvdeus4$d& z9nN=_)}k>GoMg|ci*n&*uC``lw4Z8%N6_2wolNZ2OQKs&8V7^QDzH}q_@`ITjaNzE zS8wR2EWq6>DTC>2=Z_c^&@Uajn$Nphm2BZ(hUE0kPtvPr2hM+4o&Ys=@Z(n-Z_Lvl z-S-u&9q9XCww{#I*F!JW1&!~+4nQ??a37~K9#4HlSx*d7LgLhH|sR(zSTUvPW^75Rf8aCP!sYD5PrdEa+zQh??k$N|h zcsI^pCpo-5Fb*17O$yPY<9P43f7o?5CncH0cAW zV9iE{s^9Wa0!)U2soC?SEy3R6e8@TgxEH%#?`hVw>!P=e?F$_t?2W zttFuE8646R_{%dO3)bbDD4~so=BmmvnV;Q8%+p1Vy%x>pa+}HGHWWvwF$q(rzUE=P z7WeU(ooC6zO(_zMFn$osL<`=r)zx)HOJK!FF33?ZkU`JdaBI|{mKquP5d1jaxzq`d zu-i>OV&(ENmH9$%kUhnF4BLo(Fs?9?4l76`%9Lz%>{^#D{g_aPXhFEkWYPo2JQd;)2YY zP_lvxvH^$eAxbSA0tlK&Q)<7Q8n7mB86B^dcB0M~qR#dfTfQkt6#AASI(hgGtHRB+ zYw2#l-CL#5Gz8l%BYn$*cgt8De!>bcmLIH?oI0fziLI2%_z{X>8hrN4SU%N5zk1Rv z->ja#!OKB)2(p^QJN3bzM0NXQeE{aUG~m7G{c8Mj3tV+{J^g6;BC2ptRO&Guue~bN zu&AN+_KSU6Ag6E(1)*j_Oy#fu{PL3ja3$%L-`XV9Lw82@Gw9K8-i1lR#$WP+|Lo+E z)JV!NMwZYa6y|L*>X7^z2dl5uR2Wg!9%%U6Zd9Cz(p@vFx9}szh9KlsKJm)D!<29B zn_pem^fNiB_IlvXKD2_v>Aa`<84A5C2vG)Oyv5g1$b2ilgD7N_>mpxx3=5W3lR3i! zUY9TaN;I0-_rONAUt{piZN5VL-HfRF{*|~&{|Km%X>KNXJ}Jl{&sO^!Lke=*=x0fz zUJ^#VIP99C@I?b53kJfEK)QUrv!y*T7{PYhupHs5AwwR^QZm{dr5OVuYYKAuD72Ij zI4Q1XEmM6B6{6(_&783v-Dw?eQ@SjsWNDmHQiQ!Y$V*ZG`}{5sAT3IlMU*U!GD-@w z7YBYR>UU4nwC%N&l!PHTrko@aKkfip(Z-(&H$skY-Cvs(wXwVj>@kC zlKmX7tQ$y0$dwp_KOz!km_NWUt&e?J6Mm&4_?@edx> zhW#DreCHoW152JlU+nqMOgq=po4;IVzx!lVhdH$4qUa)h42M-b zA+017LeY?z{9X|`JtA`Y*mx{av2Y@6Aqq-CtV6n32P{$ca3VaRSVTh6;F$a#k!f9` zLpr$%=`j@I`7(rFkJv5NhMZ(E%bD-Dy^Bg7l4jvV%tEm^grX5K`TZht`a~u4v9nmB z|48RQ6q=Zgqh$z4(`$0l8g)wC9DpPu!G4SIIyQF*SssQxf2&TA=Rw3yQP#`4t3M@t zFA%QCjgGu*?VG@rn^>E)Qlgg~OH)cA+y}jze2}jq$lpi8Udj@-|7(!+lHXK=ximyMv_K2Iw<99ryZ6#_fcqy+28LHQ4<55AD@YkD3UC9o>#Ia`{-+umh1b$X}(_xfxuHSm=@!E7$SiCjFjNl4`Hc`=?dH9XXdSs34?;ckqvAM^CR3#)l1YI!EA zd4AOKWYzwyu?XUE#_!p*>t$5OUAUSn3aT+XlP)f*j33WUOWrk4|5w#r(<31s$8Fc6 z{>v>Q*G;C|-DtLY?3ZzfJ##MUZ!Vc?V$yuKM{a|hnzUF%)U(o?774)>rP*H7ha^KI zEkhR!*ZC|4T*sxPS9aPP%EPyDG>OBAdMOsPYq2M)alof}R^Yy@sD5KzQeue+=K(Xa zd-ftTB!CiwdQ9y_mbtDP_Wk|?;)Z3tTBebaDh3IQJ6fuqy zT0y)s+j-Tva_`stGa9Fd2eyY6|Mt@@ykXa1zp{O5y@=htsoLo6%LnFxqJZtVG42GD zEMKT7Y2AY6@0KjA+ynmh;;$LoaXsflIo!|AUiJhi>GbMphj+X>h1)T+4S6Nz!p9H; z8_9IC*5oqiR=#dB1i3jOfG+Ncw`0X4R&(RCL_CD_KR!@Tynp{#!k96eB6TD|>R1@Z zJ|miOm_JTc_`5mC8MBMdI8E1QFjvJE=#B0#1)?8n?ji`e@b8+-+COb zO0j>58$Zdn=lExcmv0Z{*bo+QYAliYuHX@yixOy}$4=8N8TFNOE5FuOq!lYbYMb0O zCRP2h&xL+S^Rb{QYv+`-nS;;MSKCCJi3{?lQ~=`dWD;5}wHL80 zd&2LLd1Bx2ClOzM8*sU19)#&lG5{EG+L85lpB%?-1KuVaor84)u;c5bg#J*o74X4E zlw&S1frc){0e@|;75Z9#ff}of3Di&khK~!cPbxS*L7PXwo zYu=U6JSkv$mBR7N1^&OGt0H5h9I3+n&ux$-d_rt!C47H6f<5rbFtP}c|3A`k6n&xzTlr$Pas{jQl)65ilP50{a7M*BVUl7E5;_6U>8cU zi>5eCUK%g2KweZV75lG@?`bEg&Zwx>ga#B7jUUFu`^N`_WKl4qlk`CJjTouRUlY{O z2PBH&aTNWc=-c_BQ(oli5{Y-)8o(#)?oZE+kGe9s^k>1^2??Hs^FV>^YfO*pspe#u zmrSQnMVYKSZOoM(bWu zGt8l}S<_OooVl=BQTG$cNWGI zTqLwebTMP9HM^#{f~l=Uk#Y@yIP7v$ZJo$d_`~;oS?~I+4J$}p zJH%VFq8c7m-5GwkM>>-cjb$mS4Z{{7^bW$>Yq}0;05e-?Og<(i|9E|&&L#%RaaxT< zY`!|1tc+ER@1$7mq@6Oz2H2HFtCKc4`t1`#xX<99aInpCD7Rmix7m4bG;_F~B4&Q| z7mkE@v@DfzHK2`(KNAt9dpuoeCzqU;+H891wrv1!=c**Wxa!0}S8kb0(V9hQ8G+3K zZ?`Xd{;2SXZ*sTiFB2;UaNFc-W%LtPrw)n z=u*o~XI79|nbYIk4N=?SqCUpkEiSZGXi(08wW^xGjADeH8FE1{&q-!RGY`qKY#uZb zF=WcGrN%4~5K~<#thP(fCA2r-l3h?=6G_o7t)lIclB zc-@vaw$hV0t}nh{Q*bO>6QMxwRf^TYN`*K~^s+CyS7m2`dqHz$sU!M(RpwM2`|8>z#{ts z6;RtlQ|I2xWukW2u5PM>m<(Y@S1N;Qu92{g;)5(yEZw&U-5+iahF#|w;j4Tbjf)IZ z&iy!zuZF1NZoY1$Wg`M-(25nz6M@PHUiHc^{<0UQyTsTtS2b|{=6bsM5Cu$e)uE|8fC`=gcyIc$*2d>kf7c-e#wph5}Fa1Mcg4Z=62 z4xpStuFG8Czz2M)9p%Id>XhMK80*nt4flzm3q8RG)7J%r2fOQlN(8w3J~Py5?+wxY z%q1iv0^{gaq(4 zm0<40-s)xQvFNd&|8|zUDM;T_JyQ0=jm95<&$X2HphjNxm4XQbaG(TRC!){uKlVpS&)=MYa_byzoJ?C!cibpPv4A<9N&PH+c z&04hyYl3c%%FG(eWxwn_D$mQ!$d;K^crl~A9$hmZ%@?bi>sItG%Q~vfTPwdxLTlt^ zRd|#%(6wx|RD8YA>d;=uoRabWMqH_@kr(3Ka@(KOWKO$$jFVy7S|+-oy|FCs-D05C z%rvLnHcwQSQkHVuct~w*HbR-CwCBCekURHzzUQT>KE(7(YeqvxgXcPB5+bd6QrVZv zwU_N_Q@uIRlZ&W<=WW|pm(|w-{9A8skcBPHnLY`j%V*z?cl$MoVXezT1+v39fY$E9 za`eq%)0BdFRF;zKT~}tY)!dJ7=Vnbzi1_A=a&wlIn6k~{6(ki4f-zRa!wjd@l+=z{ zE9?Tq>eDgUFw$9S)oiSqw(EszS!rTRIOU5O8!j0OM(h-ZL&VUtJ4Si7AD~Cgd6vkS)pn+6szgldWZl zFNY_lBmSMsS-Q%0mAWMZ4w9hg5S7f~%S_MFmQg~`u_J0R^){G1)kj7h7h`b60 zUP&%x8*(=|F`YEgi~Bw2uwj^Gno?!N<=I_DoKaKdgO8q#tb{uW>@`^(f2OlUE!Vh; zXw)*NnBmhQS|t{eS0uB^k1hKz<~uo8np^g$tb;KwiYp6d_ts{{d%UnbZJxMcQ4M4V zX-tts{XC~}YO_|Lnlif>@Alf?YQGfF8~Ed+sy)=V1@5@n~(|M%b8X)3?4I3%l4?a%uJxrgT2CM!0;$ z%rLi_DVRN`2b7v!9lPkbLD7amcI)35#^}NeJ|2%kClVUQ>Y`O)Q;&dpZ{wed&x~0z^QDq$sH^$vdn0E`Td$fHlQa0lMKt;NOOoPl z(9T9~bNXO$=_QhAy63+t<@;+YZTwQk{*vBx)*=Bym*XIX!%%hclR~T7`uE5jU)Tll=26FpgbxYKnB zU*eM;tHhT>)lCcZ zkNED}=q@YqBYmaQ_M&L(UV4G9R;ED|4gnMt(jE8Y7@4WpgtkQIQ+IqI7)924KEgN_3N>q) z%1yE=KhSbLMz9XM333*|>~YV{tMP|sbP5;-juPP0k3%6_b6=Pz$}b+>BQPXgvVs=c zq&>Cfe3cs>N0bFGO4%3MN@1%?hssJdFH2iqW!t3Jqjm zELXDO?}@qN_Ln7ed>2hvDL|iSeQt3w?SDwCc_CTwoVLAId|tYUX&o?;4OC96a(7hJ z!W%E^dAT~0=-2wxXc%{Rm8t#IhBj)qT0F4D$o8wYBcORVJ6V#{GH!i<-HF@x&mzf$8MSmhfj3YW zHEhnW9Tj7YCXOCPsZ8^w;$Q_+g$SYgIt_0Sm|*mdvWy8V<)gEalMQ68wqKTS!chyq zb*vu20l}T%&V95zOF9DgZHww4MP*tbRT`SoCs<0tz=W7?jr?j@IhFV1<<-*`1~3Um zgp}~(F(>a_4V6=4Mg=eIVp?lOwP0A1W2n*`5+rL|>^Q>=NlGXlQxy~g61_;IqjRPH zuv$^srTk(GIfakp6lrJ)c*!y4%n3&cszbG+(n}o^VmFEPruO48nHu?|UrNV(_JbHE z$0eK%F={oYWoZt{E@_S41OGXnQ>?+xJ8Z+_o6m3E{6Q$ZX)6=!Uk<<8{!Hf-?XN~g zHSD-iQasF0LROB>>S6xUa7IqT)W57|?Bdy+d?$m@g9LwUaq-#pw=r~zuS+lzW~2Oj znTmN`9%qkS8jK-+voUw;8`^I1Kc(j;OJ!#`YB%hP4=A-gxUDFZKN znb&E*V%Gmi8VeZMh{6{C{;+gmVbd5}=eDLj@d(v_@YSSmPF3`y&H93k<7)rV6Ys>7 z5kNE+VmTSXi(u5sVMsnFVs~ky{C&GjR(+bg+xDUMAO{foDKjrnEyvdNSd(IOQQl`w!#kems>z|H)$#*~_lNiuWgLLTtnS4lD zzv7F)eIJLCXqtpCuH!%FO8sv)!BpPQB>Zzd!J9F~`5KL%qIsYgH|XybNf?WNloR+> zQ@ZQW%G6PG{3eYL)YpN)1q8=MLoC_AO7SD6gFGbbK|!Vab56Dw@pUMtXJ_>6R2iF- z$q?qy%=(w%&-fTJ$z+v9_?S^{aD1t;fT_qv*x>i}ZiH-dY7DCTYw^Hr=Mglpd`K7m zk>S@|DilelKojOa)?4@mZz8*(;rpw&0E~J7$#CJ`j@*9}h|#ygR`sCV@jlF=pS>>+ zh|)p#fY0hIs>b2=|BHTxS6!iA@ZZesh-b<<^MCkNPVuP2^8`9%^Hy%-EdcU&K^QBn zQgxT@DixU2h6d?-xY|v$^dJDM_(P*VKl|KIZOsNSW%r3bo|pXEYfsxldzA3x54pxg z{1Q^q2E$V*(ri~w;}$QbZ6aFfz_vovK*?Dd`0KQ%R)`6C%S-wB46?1z?Mfb%zQLG>Y{ zylXGMt!)wpF>KN!2|JdUuI^t3ckdBdNs~Tvx{B=BxAA(3kGc3gJ=c-NhP1Tj7kkmE z;7=kXK=HLl;|^}~1eFI~+o}E*6<-MVd~odq%4!mMu(jfNWR2JKTHkpyJ?ucv#M$`+ zb=kfclX7bD^HeL<;l7O;)=*G8QAeJ1FquB8XGEM3()<8Uu!&)UG0Pn(d-(c5r%8Nv zUf~1qjGX^E`2FOK^#)8gn$r{?o?nM-72)^LS8OkN;P=Xh--UuCT?WaZKNV`h*mS6; z!B88Yfb;1kU>ksLd9ndXXLO*f|rQzrOPAk?QQv6P93jU;{ ze)R^@^vhRRz}`P^=Fjy-SvOZRnO+XLun*bKmie%1bZ@AObu&q=7$%A$2u-(}I*Ul= zvRmpW+w)A;4K#6O_fxrYoToCimM^%LFR)G)vz)G`f*Q-*g&!pgpHK4|Ii+#;W`ZzH z`Ll}qOt`S_!dzJH3zA9rin}-y7An(FSlyfAWH*f!b~H5g&uD!W8#*Mn-_U=pw$fEmW~No>_-4Yf~dZa(mBnyRVT-=Yc`eCw&BdRKxn5xR0$4-$b+dgfu$NizMACJ(uHi%!e*3J(e99Y{GBEy+t4m zy0ds>Yc+2}rX!EJWiNu8nydH<16@>U57=)*ICjHwvpfXhjo2_q1~Cs7Hm{D`yQ~4_x!ybl#~*lR9TR@c zOkhq8$UDgIssRq+BOQWzi#EuAY?1%iAh(|CfSl||o$N5%=3Qn%x4J!1ex^#D+Ym*0~^nWOczC9jl;1aVb&ov>#Uiz zA1m2clNtENhp-TUbE;(4WHf8eB3s2wqU*)mHlOTPL4U1=S|HF~9PfwgrH`Bcy%csy z1|jB~Vw^>;Qp}i0enrVZBZJgeIw@;IPJuY7<7lY{?F~e|)wNGt3TbM^+>SD6%+g#a z=A6K#S*F`8=XHr|Zi%LnTp7Ibdi=~>!3D$|q48ErM|6?-F*xiK)zC*|^hm;QrzocR zD-PI^AF4jZV8+>f%^s!{X>I`XmK~3;DZaFmJ0+8|QdU?dml|5J?U5zB#$?qM)=d&Z zv1ScnN$=&z?8W8ZLJ;oj5pA83xxgS=`)nSm$6_bwd_cW_4D<)s6rGDa!UZ@LoiW8v z$dD4lMEijjQv9kHYs-pg!*S@MFbHW1e~;6?*&cD$22V=dAu8q-7vI`>R;nQ`r={bf zS;?H4NGdY2*&lY{gkt}p5;@qscN539sUKfMAL;ikcbf>VCLzGz+WrRruHkzZ^UVg1 zZT`8yw95xm&KRal5gZ;d9BHBm0^*-W8rzR5y1i+p?8*_snJ$1Y^#O@ACOB@eM|5YC z=)wlYmGu{GRVl7k33a_IYyUH;ZpC7-1dYRwYQ+Lni~`GPJjXVjOu8%^`&NJYN%PoX zmWGxnUT82p=>Y^%-Bps^)_mPaq?^HUXFZ~K^h8e&L{I9Xcbh~{HYi^Ivg0z*6VQZ+ zo)Z56PQL(c>;7TrC5kf!)G|Fb{L;GrbY;4ZtHIZN zSaeI$#ip~wrlZ~;4n$w+i#*U1J!8ds!He?voNsa8H|^4y?ChiM%Xlz!JVkK6!%Cx1Dh(!ALH#Ci4n3tP+ zFik4RG&f*0H;^=q5SSyKeNtO`N*do+HrCCi{nsHiP@gosy*D^8oy=l2nqe?k0>avY z!%q79K5pu1Lw0mLq0%(AO|M%{+Y~Xa9=pdc9Pobxfwyva03q1GU?=@wAUtKHZXbO)YY_TC^%j;ApeIyc#r8iZ!yU}pAX$aj zBX#@f&9<=)f5A?At8V(~5-{8itnFg3<1HW^M0v;Z9(~~8vwo8;JWFH^?!aP%{`Y=* zr){jSw&CAc`>g=_|DJB###*rrKVj{60_bx@*5C~+M(SG((Erb9;4fu*U|Um6Lm_~^ zsz*pu1Ct~&JBL9*b54I+4Z`Arc`Yr23&#knjp|4%{OvaPlqdJ#rW42NlcN`(ZKw?3 zWHrQHCIiLcnyJMNC!r*=_D&WZT&Z!y4n;_GSJh$ z_h=Cms;T%gN(d6}mzI8y;8?|V2oBizl7%yagJ2r*)o+}RACF4E1PxM-xVIS9kVVae zhlU>GM1qfFy^Gi_FN>h~>kin_r+YN3bM%TYQLwt%EjNU&_i`#+P0aCenz18R!-e*8Vq8rO zer=8N6JAaZax&R5{@!LK^c%r|^mjd%7r`t6pGllPp+e>QTTXUm9&89)RY5(ly#03U zcZwizyqs-|I@yGMu!41ENz!u3+A@Rq?H=n}2(PnR9tQ!?vN^tFb5KuaAWddC9gKrI z6jA={waqkv$~={Eb1*KzWB`Lx3*MGoj;CtNSn|WP|J*sh{Um(1Ied4Hh#MJeq{2`* zauzLe_G9EMM&vA2qym<3DZ6kfhH&Y_Tps_hdw{`00)3U|fGvbM&%3J+vkp;*Fz+R# zQ!&DzXUq$o1NSAha?5bU_oAqkgV>|7ltd$FCoIR|H zCGFtsGWX<2jpaP?G|!hW+gpo$ZC)Cy`u071BlENL2ii4;^Tc2)(PC^b@lS1&51Sp@ zZc48e57x55Wv}zR>l=}faJb*gWY;>q$66@0hx7C+o2eqlBgd^&gukwxy=Qg(wyjLN zw4hblnk$ZO;2orG3{^fHCz<+AJY zm($6ro~`7aQdAD^e6BT9t0Dr9B}#2}Wh85-6E1HJGeiW=Jkli9j3f>Fr75;5d#$9S zE^%#|ORo;c-J3+3(=%UXT1|5&^_lG(EAyA}f`QMk{f0wXG)r7w{@&Zuj|FSOk5|Wx z;k(R9+_%^F?H86OCO3*N^9AbbIi4&p?wBzm7!zHL41=2=IrH93i1aeH_b^)QoN;;( zMgcOzoB^F2+$6zSM8Op z;yp+3QwIObco%`#&^nuo06D&_*vt5P@BQeGnZb3$3ul~rj) zSudU;0M|lVjld?C&k?QZ!dl}!;umMJoELWZz^Bw??ZhNq4vx6)>}p)t(YUfDwWf<} zjT6)E$0peijWqwy=(~AQk21D)$7xP+t?n=3KR1u_*`&1kzjU8h#N8>`dmQU}l##bP zqO7xrSO;#a>)t7GUD$!RHv6=ui)l#_(-y@h$q$W`?CdIB*ipE$CHz5eIhMF+{yhQg zciy4!>&yRkJpQ-P4$-xFi|4B1W?7G%%}sSff{BHlU|>^hf18Z3twp4&va^{>JE0x8 zeFiZxP~*4io<>D9f%#g-=n;KQS=qiEPpj!$x3x;HC!h$d@bJ62O$goqCM`3Anr%*Q z#J=H87ahMx`%Rhown7wFHb0^;KjM9UM2@d#GLhLaNsol=rSv0%xWXI{jJ?nEwD+K0 zL9y9qRKP1(>C&B`DwTH= zn%wa5=N+O?#El-ut3B^6w7qOzpO;Bf%Ym=f`_}dGVM*wOO0Evfc$KXi2eCGY(03gf zU5Wj11{u!cdX9=pU43u}n z_AFkz-j5!NuSXuz3s#bd$M&_{9LIG~U-}(;D(-K`!Alj`7nH@$G_-^3FHvhE3@!4G zt)FW5e~i`G76=<3u+!5tAkX^SmPF)gQ9*qk4_{En2Kzz}DFieKw|gS9T;OpOcq;j# zoTx`pa zgBo|*X+J}BcO+Z(tvDEXag*v`ZxvUZ*u?(WRd1*1I(e@IDNJeTTMc?8hNahvOxOgF=2!IRyWJN zb^=M6oue^j8^6ysYO6`ub~TUnR2Fbc7U_;Qz!myWwBvirCIu!Lu3Xp?Cb8tIrCT@O zb@tL$bMPNH<6q|=+NfKmF{bJTnJked)dglSrn(wG7gFb1PyU7cv)yR++aO+OzWG2duh7u zeuqR@To!3;JVkITKTXBQ^~$r4dle^Us>zUYpy6S~$mp_c8C~R{niW&?pgS7_zORq( z>G>|;8gBG%knnZH*oG0xtL$5h#}rIp`&L83LSlEB(|M`p>sFeVTYRgE<%jMet_)ZF z#gs%h_Yhdl66wlk-_ABve(L%7~Z<}&NetZ_O1`Ykt*icz!-m~V8>8}2* z;p+`eVjoSY4+`@;$+JBzUNKM@m}lTK+MmbmN$CY-7G6)=f9zlGd3o8B+8d9j-)HQP zUb<(pG3JGu#C%Z8x9M2<3TybmJhLk`sb;T_>bUa5qBZzqgiZ(YcNV{Aq3U($8{950 z!XvGlf&2J6UFB_^@l7yAXZ^S9{`dG}w^+=Has#gWPd#nU6xVyBi@3*FOT90Ii{9Xm zQ97^4-+BC=g{xno_aC^^j~~ImlxjTi1$e#9ArLr#LVo!4S7>@6RRDd1-?c`#=nn24 zrSk*%JC|RZaP{p!kk9YFw^83@l515%3x(?B|HER?a|TV#j;P!K+mly20f~`chXmCq zs8fPu)WBsyq)wLzO6Z|egaB)Z<)t(^q5UV484N#WkF>=;T2ezv+-b8GWFO z17k#1IfSM3tVw!V6xUuP56VDUB=^nm*CkyIz=LuEEZXV}`2G%xz`i?dv_?a6oHoz= z!TqgqpvImJuHnsn_FFXH#CNVvb^~9EhSYbL{hT@tYZ=#R(!SmOf3&>?SXQnE_cHXbV+Zkn9O!y> zS+2I&5f`ud{KhZ(uL1uN`8R18qMw2H!Xd~tJA;?rMl-jg59J9dzdPz8K5+MX7% zt4+)26w6L;(VsE#)&gmK(h@*3K{cESmi!KFa&9w&3i#Os3d46Y zlqN$s{|(KIvOi=XFU4I6yKQ1d+lc&Rrc5j(ryOI1ELSxtgLDhEe6u50KO< zRbvQwDH5(NMZNG=IQu(GNt&Gf`q0$dDldk==xDPP5}~5dASo0L8pz2#ve^^|i2gIR z&whPqQ!WnRjHc+#>G-dy2jo(GllRaf0byHhcfS^VU8X zEvvrJ5v9Ow4?KzIDnAL1ac}OuKS}6rUxb9T+;ZWex{VvuYI2+EPH51g2{skJ?9C?F zT^?D8duOogf~pG@6$vq(+&lb*d$5VO_r-A;@KoNhwrVWc?yKw*`cR1DrQ>nGqij`J zu-w1nL*9sMgy;NDsP%rCCbw$g#Mxn>ShhWjzM^K@M))qegp2>^iYSx2zW%$nDmALkvdtU`nmqN;O z<&HXEs}=@c*`Do9-|2x_E5NB|ne}VtxfZN79()tRB_08RUK+_|Oj|^A zumQ<)8>px3wv4tDnm!Hdyh-;#=LV{5&Lb+11&I3S2=zl&>JrhV5~J4q0Z(D+X!*BL z9q(?}#EL}76BJTb<;YvXcmc*`7SV;aJM&gRfz+FkrEhl5I{a=~g$I_F20Bp#Dz9y? zfU6R>oEPDA;>k=ZD=J0=;6NuO_Vg0!-%uK1Jzj>X?;AZKQrQ}G)O4HR5RvYF2w72- z7knb}y8DGZlx;GW?K+V;CEj652wW99ta0ia(SiW_wKPF5VoE?2@J}cwa*JKJ2yqUMN{gt*VqGHG17zUgVwCv4^VO?f(USzjl{t4Jc4lFbWHbZsn z;$TZPW&apDO0p|J>bKQJ{f+s=Ba?FEb8C8MW?QGZ#;fweEYguHEhNaBBqk_xXDA)vzw94y9;Up(4Uhh9A;UUR4>SW6M>ClP*ldKMdTtJT z4aXl_NB`(ZBKV#>#*tp!L!upq{@S5iy9ZnQ(*E{o8*9DaY9~VsFdsiP|8Mw-L z*6;XR1vr~2qJ8LV8D?%dVG9MNv~n$IyU^CY@>KUGrJlvv(>An8JgMqsu2N8$vV6SD zm+U1H?X~%$Ayuy7IMdMg=Tn$XVo+Hu5l3BB@9U{mo8P!QwR)HF@}%53k$1kWC;~y9 zuhcL_4{4I?_RiX$JKF7 z{}WdQwR+U&oYLs-VpxD@#_Y@ndy;s~BurHE<*4>Q zuw+Qj{?LwNvJ0L?nqB&@cvM2Vt(G8PrS}KTNc94D6+3}s3WgU1#uEizo6@Gt z|3moHV4T2s>a;8u-$uo42SxI)QTkE4=cskg@CH~z_4#I^!Bw4lP6{0M%}INY>MD+D zELhhmh^bEsV|8Q?KY;;%b*o(;TLS>a6R)ngy`vv(-H9Mk0{b9&bE zUdVA8WnFIFLmoY!0vpH`S|3hvw_U$ZXBEc4eflnl-*mx^N;q~dRl#`x>BdrLH1L>G z_WDY$a=dIvUzUr=*6l+TiGXk<&5Sb9(|lZS!Ez}7WCd$LPQ#rxb1H_mcs@FYkwxCw zDzannFO51oPa-4Oy@AL8x6)mh}7hm@3&DV}m z*@ANFDFlW6=aIsm^T3&8bpvKG&04Pa(=Tf+^&97n_0N?{TcQ!fxsGK@VC&$`q2`9&B{gj;EcQ;l2 zOR;}TCWOF_G@ka+MVM`t9-6W+TH&_!+478}+xkT(oiOm9-+(8snZ)Y1@9!p0qHjfC zr6(cQf1*1q?ca>Ar&uCn|Cp zn-|u(RIWa7&x&16jwY@N9OQmDG&;G^?z2Wv?&Ng5Y_93}R?VREq#0cONwZQGVJS7{ z$L)71TkW?@Qqw6>MDKq>Mnbl<@siH)V~!XdZU1-KN^#o$Lx*Q8^f#}ABHnG2eMR?+ zxVArx5^ld2CcJc4aLY)-t84Q84V9x?`uNZOvO&%reuB%sSa-i+$>u= zqVfH~kWVB;O1g2IL^fxeL`h@@fee`k_GhXZzTu*`n+yX)Wr4y}dmCus6_boGP|FbV zv{P7M{dRP03=cAgk!0;Q`txeMi3oH0YP=69Zkyf{_3=lZ9O}rXGmnYd`co(x$VBBn zG|Bb6$>v-weKi$_?6kGLgy(?dYb|!~lU6r*@!lr~ocY*R1E`#w2d15*GK(kQ$&z&= z#gvz1?OX+_h0_5yze~UsvWwQAzIkiV1AR{maOe7f6eu> z(ojt1{8-%ci;>0g2qR6-v8Hpehnu+bVcmYO<;)mfeJGc9Z;GHjp*P{=t+(~#EMrF8 zZ=cl^Gsjnl3an|22}Ne0;5N@3=`9`ei|=HoKii5`mJnf5od+Q5;i71(0k*x$p0N#j zZEo1h^nJrIpU4Z|);X;bBBxZPBq@2WrlY7IFsWk+y91cek}rdPi3K>pEP`IYqW^1)meg4J3G)oEmoU0A^A?KYj{QXakn8I~WI{m6_+2iV9D)4;l`3_QSw zd8EH;i~mD5OfK7IZU34@vG3maHh5DZSkL8thC?^{5Qbk7Mb_t1V`5kC$2r%zCJ9EH z#zgEl-Dr;Y#rUBiPSFdZ0-WtuT#51KNJN@RqU2a}3L@j(7zdW5gwVpe*e%61dZ5FD zzN;(~abZllZnqsSm#TEyVt7i(HqxLH63{1(bEPL`B>|??*J$-yxOtp^uzKws^MgA@ z#|G0Fboml=seM=E3p8uaqa118$HeP~JaKQmHPMNgn$BKLYiQ@^)L*gIf^kf;N(od( z+~Ji)nh5pzt=%m#9%E-sf-|E6d-$WeLqHD25t{Tmn$LKk@sdIORB|KNHwDn?e@LAv zFn9EL3=GdycUHAOGwSt%UqPdq(sv$KUsJY3_`=Z4hUJ6|HL}RhCTmtg(fIdO87S6ExeE*le<)eq3^OxsHli#-^G~Rry?T8FhBOP z=A^O;?9o*0|yTIVWT}v`U!f=Zu zxH%}SrETF}kKg}tw)Jz2*m1WJV-8#6xN|>bB14IT``d^7k?-)TeGfowGDT_L2e9qp z=1r<@t(ID>m`u!oWsq;OguSfI4kjkDmf@b_N6zs!z#V}HSeyE47bU|w;mb;47%2eB ziBD6PHz@W=IsK+EZZ__-{CQk$xKH-)wv6qnLtPX~r-&WaO6w?YEKAFn zLkYIN56UjP{~?!+Q^xek9R)SrPv6!5LyE*OZxwc76DItO7Z$>Fi$Q}PpCve_WoUuQ zg;SXL3ZITd`4(%ieM>cu*T0RPLzwE~K(+c1+h<@swt}`RTZ0tj-guaoUiP zRyrO^f4nt}0r@O1-%70>*PqlE!B6d>&k zWyFaN>S`rhc(Z@shvte*94j4XFlfD%U_oY|)Q7qe(+Gzyq@Q=<_e^-7!iTmIYYqpE z`Kyrt_c6}y`eRGtX1r5reO9ImsVr9!EApOPeSo`U@-0*SmD`WnW&fn*DA#gZ==-4KfUE3-)_AM;mchA`$$ zk$ZLZp}GMOQmu$k(&Zwp3Qeu62=&>6b>QejS!1|trwmJ%^coGBW}tbtoh2Pnl-lg) zI8C`_3wU{e^PaBTTc*a*SEWxNr=6<)B^78@rGV|TWDwwI!RVM#VF`LyU4zY4$T}G^ zdPhV>W|bb4vqHE$m#f{W&EHruW8Jg|;@F}+TO|lM|7vViAg(!Nps7YwWJ6|W^Y8{+ zRuO(M@>TWa`C!CME+uZTFYp029qevydG}he6$I|-MgBZ#icNzyH$uMP1@mYosbCf^ z^v9$pdG+T{I>uQwZlCx39?tR-&%f4Z%4X~RPkInW4TTd*NL591Mh_GqJcBr>db~BucWqYckZ6Mz-YK#s4GQ=H!ux0 zNZnL}Lcb1}L1W2bQ{X}IUbTjtUorcb?q4j3OQy`)zWy-v*8SDXKmrMB-=|eW^@B-! zK#<7vw$!2;QHDFMB>Kl0?{XIf0{RthrV=0@kaD$m-gR}T;X)xG{K$>hkBYR8_t0nM z18M#@_im9x&H6X;+kshu#(c@Gj>*>q^_MSl&eOq>#Pu0No`aXNLJ7_u<8tN%ZIM_= z0og#HgtohH%gEuGK=>#~DPFSIkA2uc{>rF&#fMB*)%kR8dAZ5h zHlk6j91B>_5%b!6b9%cBOcdW366<{y_@#!>sXbZ9r7@*Z2!HSK$=5bl9haGimB=8H zO*aJf_XIk$mt9#OFn~iq_cYKa4&--i8g(rq?-M~PxxAr-*f6$nJI?gO#ShXN~=_ekzxnIc4i_CywZ% zwjMeAH~V>85jQ;`P?pMpIcLIZOqX2&8+w2Zdml;m{Y<{N!8NsqQ+}Ac68L`6rU)Su zL?RgneHbi5-tRbHqW&(EQl?T=j#7G#l2hBC14Z0o~LHD*<~GFIqd{j_1w)yo-}jSOFE|8Ns|)3Vm@kV-IhLcc)Dll zEipJCds;b|+b%>ieiywTA{5|&hn&Es^(} zQ*9Wle=6Rrs8EDuPK<=Sa8--Hv8G1d^gNqHrVzuE^|?&%Xg|Bs;D~wiJ#sw)~Ft z5}cG*(Whs-z<|r=^tJ&%(2NI{U02umXcdj~wRO&v0a4?!0YXs!3R z{R|daQ?DL2$Wwlnc!Z9&i>Z5ABB*nSW+xZa;TUg|u<+DY(K8%v&=x{|gd4&fkeUw% zRN_RW`YWB(CAWzaoMvqatM>SatM;_L0jF%e^@*z_+a<~|_1(6GdtQLTNBIIrj-w&U z@6U<*7+Vgb`n;{02znce9sx`YeC}`^K!=#FqFi0h3_XEo#_UYuT9b<;`zxnx&FR^g z4+_wE6~cI+pJLNXNKsN1ui;AJ%jW*cz)y`pcjDfrwwKTiyix73$pJyJ7L|!$73Vyh z9N9ZSR;|GkdX?TZW)Uy~m9aT_on!*K?m;ulBRJNqxBIWvdF0UjQqj(4258cNON@DH zxCUy~r0_ar@{J0wSjf{%jt$)U5Qa?F4IJMP$xKKhBm3m12x<>5X|V__|=#-kbTB2oO2~64a8<;If2Fx6)sEkz$x}O=P-JX~0TbSdnh~Ynx+7E{NwAu~KI8)_kYAEac7)GJk z5ifmS?YVB|4=#+?oFP2}VBcvslNTf3^*&Cnm|SvS*7Tpc*(`*^{VJ`BE{R|3tUgH@ zwrV)V17A*LXI!Vp&ai$Qt)=0d(4TCTEMETMz8!ZuSm*4i+XrycRNpRLo#Qf)Vi`Z9 zwFebGy}*T&dtgZ%TNeHKrE_oOtEk}xUz^;zIYJnBtCj{EH{_uS8x?M7$UT$CR5-FB zuUe>hC_ZC_1-G^MxCjelD&CR{4qsq%c_xfYM-YV-h}jiF))Kz(7#Ja{XPiGUrU9>8 z5OG_i$pEP%xx!3p^!huqf?kDpJq=tBsJq%U2g7GIeZ2gn$Uflrp0QxJKJ`%S#Xb%aGaHf>5QTKlnt1` zt4$(EjFW#?CcS9<=al{D>I=Rc`M|9PY2&q=rX~)g=6v-#-}8b*1Pkheb462!H(v8> z#}(Fv^8Bklsp7v4uSFa-JM5bYmpkzWU{n{V;ADDu$8Z)p@mT7?$$ zZ$^n-hrcSkMG-8s;8#W!A42spB-eymmpA~MuBMu_7?(Vgv>2l*QR~;hjlSk);AX-! zfh`!qWy10LooE@61D;rmav8x6u2hi3^KE?x9Kr>xfV;O|+#MdDWGQ<`G{fp5gk@{; zKHV-FJLlFxlf*w?ZL(Ii3%*Mm7eZkQI=pM_C_L788Z8;Eg$vvZ&s;>$I9xK;fGolU zsYC-9aV>vbdQt_9A% zps-dZ-$)dj51}}5`Yn~<{Faf0j0Nibzpe;oHuvT49iE?z4i_OPTpuz;4CkPlR%t2tu@)!A6ZRvwiCfiOn7mgMuwhM0B&7%XNa`#XA2y3O0$j{yukyG?Ul?YZ^&8 zK;m0esY&7m-Re!nF2I^@@hW>2xV3}b(BiZocl}IJiXWO?z^m5|$IpVp} z?n|YTj<(SyQ@aD6>LRi77bIhw_`X4NnIszo7n`Duiu6W##N2T$y^r_#a($B28x@}z z<=yAj_>}mhqc@)Ybn_uoD;p0D9cJgdauYh?`*gUSA#JVqOfZE>6|vg7C1o}CE!sJe-+GizCZ?HMuQetgFjj*^HsnTOQX)K z)p}BhX1GpKJBL;g_15_P&2ak>?GdLFR~Kc0$4cz$8qNZ-ChXZ_9c zz3%nrrya}jORn+f*{z81nB&YkcZ@@>}lN7q;|Ct#8S#XPKb$FI6~rmfM=- zOE#Bx-&x~R&6AGl_$5dA13~;oCHlEMTxSh(_Qi&@r)|rRRXfSqmhZ&7;`G#FS{elL zl|HA|$^6W5BNr^*8Fj(2tHl&B2%;%{PNb6=%Awl!-^-t>F%y!XXR#C$AVs$yxs=bD z8e%@hNet?3C10?E5op!lfZ`uuuBZ4rAbJtw#U1uzO9J)>$<;pnfJQ4Wqe_bZW4Q!b zSX!PJG}z)1wN1c-)rVdAqOi0rWNh)p_I{?P&reZt8%&bqmJpWxO#J`f^a(@NeGmY|(=hykqI3FGj^ zLpHa0HC#ZD*-x4(jGJBjpBNsvhR=n5V%4gA+#tGm*ObZlZ|fgf;QcKvA0&IDFS!xy z4#en#4&*ynXA%C-a(WAxb$<)L(H9f)e@cH>v)6Qx{a;i@3NZ@TfwY5lmf#!*TM0f$ z`9@!6BiM}`s>9s|PF#fd?r&N8Ao&`7sf}QS{|{wch*5|Rq!m2A0Jq=Y67WINH2M-5 z!TzVRdZX_XBN!dTC`yOB3!JzN?>*RB^+CEdUWEA|Ne;I7_y0S%?{EDJw0w@S86<+_ zR2GKFeo+{1v{8s0q%~)JVaR@e!;?q_a$(;#0=_;&wFUH0%Ze~Pv96sFIv0r<=6sZ^ zht#=iktSKJ(I?vBHn<5cKDx8r_%dk(*0-h;gon((S;U%0Dhj+z*y0!!YJck=o zBkeZhU)!5l${`{YnU59Y-@m0gTE>w7F8$^!*;lEXJMV@qnS^6@zS413cr1?^DU0uv zv`Pva{?TI>zJuV)CN6}bzH(E*;1g`WX8vs$3!=|=(3W5-=)?r!Z3P=YOVg8NyoY+$ z@mAS2T_bf~6N3#~CX zC`&|kceYIhRWj!d&FVJ$zf75JD%_swktY}5QPTdv0+x-_%IPkG8<*$vpGn^QY|Z(N zq4tNTV7u(z?2QVxdd{uQ3U&{@z7b1T4?Q|V3c19NAxo`|3aWa}sHYJ*y-OPv!v9X$ zhb$8|D#$k~sy8YkH!5y8TsF7#Rf^1zRYKD}8?ft5ABSV`k)q+|sIwfKs;~J&MdFbZ zaycDCHsB!}1^=4u$c-v0QAYt$t|;Y*tP$<(k)ofrS{qgHUouzdFU{;fp*bTruJ_F5a&?8g8?7{x1y7M^vtO*B<9SEyA))})yYRM+K+uj7ZP>}j(NsJu#zR@U^= z2DCur&3Mv!@KMY8g4sT%&%H)$BV5QkomP7r;;YIJD8QLD2ff8R#Vi*d)lp$^gWDF?n}Q!NbOiqekw zzeY>$lxTm@2EPQ$4B4qw0q&Pj$o!(bRRF>gidW!{pTFo|>fbW_Z_>X7`=3#+7vO(K zLJquV$Zpl9+N}y80w|#?(T@7{(Y3PRML+GdY^vF-0OWuYniB0uZLlm@D+gXQWH&uz z2e+xVs{#o8tLL{o<@CGEU*E#Ng!;RDov9s>4bQfzW&?12`ah!^&4vFDF6ICJ{{{Py zU4l)ud=-EhP(oUw9j*+x?Rajy9gr(Y|jt( z#!@1m!Mbfq(Uu+^jCJELtm~O#ujQQa&URVN^HEbYtw}|3mwA#W>yos>GU*y)GHLen zxrdha8A5qdMgBdmb6!n4J?E|GFRI-^qP?1a`BUd_=3Sxyr8E;tNzZTy@9z`MCzS%tbVPjZ{#;@ z(_Wn$qn)X*MZ(4O%=Lk31-tbt;$2M%6th2)#c0PXvzk&G4|P7#Kh`&A7MNMN9xEG= zcXr}heH?9DSJO{CRyrqFN81Q8T7#B%P0+xmWd;v=S<|sjZ z+1WrfYYCmao9P@fM?C~_Ooym}G~TSbp88$z)}~ICtr8~*>V8XyjSCVSyBLOc&}A79 zF(GdO)30X?UoqYu_{nrkv`68aEcpdZJd{`~un%=8!$zRjJLI2^sniL|gB3lwQkN%Z zO`21_LF!J#P?RSPIF~4zfgV%KWTS^C`laiL+3f}UoPD%otiJQ6;1l=!@hCB*P-MWR zcE)Q0&LI^(iJ@u+9^F&>jSvEhdTQ`xGR?rZeD0%*AM((t)ScYXoMal%TTo+ag(PHs z%zjmg$nVM&lDvCgd!KP9tIxbqc0i1_amuN{nN}hZi14^k&S&AaRJsomEs>zhnV^OV89eUhNA*=GH%t9$EIxV)zCbNi5qLyfElV zQS94GXAO*ZG#?I&m1_u{DppKqT}3BbNZlXv8kRNY7a~z!8;Ssb?My)v; z-EzH-3^0&-(51ddKk{MEt7<}Aa{V=sbu$dPdZ8&V8C}_xa3KzoXq|M%fi@ZWw&qmq zwzJymAAD>@)i$;Fg#Bkg5Q;oW? z1*S@BuQ8nX*l+{a@1Y)eI)DewnxuBe@EcHJPC49}tm$m9qkw^Gp^YRblEVQNf>t{3 z@TzW15eQ=cq!G&sq;T2a5*xRUtR^~X$jNHzM$htBt9WX>SOoxh=S1d(Mujx1Pl-+= zHR=7s&WP30{LO*On%46^^FDC6_j~8yt+kYmlmg$gsMEAe-wWk~v~1r?NLo-wMkrUVKxYFMWXra-_){WX1og&cj8YX+Vrbw47?r>@jkS_$L~%}Wj%J@| zXZ_2L5^xFaD8n|zwilC$gpGv7#Mpd^+~@fHutk!{s(qnF=g%G!BII7dY*gOCQV~-ICp=um9Z*==1M=dt$zNpOp0*jdc;kRZA2*Ogh1gk_h&#Cc&&-dro+Lu<8FzM=uu!U*NAN| zzg7`~b6&659g1)Or7nwwF~|AGvF#cFMD+nv@gQOa1+n4b09#uPfar6Dj2uFD(%s!0 z7`K&g_}dSMDLTU^lT|2zKH~@+>~>5{GYkyQg}3C-jCqVT9v*oXx8Aqs>7Y?8$JHoq z{Z3=|b7=k*!g?D^2D6xdGIEUqOAcl)2Dh zJT`t4K_k6%hP?PFS6d;aURKGp)|*3!yR|EVVNBkzyA@dfr@ zc@?XLLTTHy@XX)y2A{{^TCI-|DM%fWq+H$NoNxbIWG&C_iH+h=XP;>2PH6| zsnyKIal)U;9>%J{aWWSb;n7>gbt0K56~)=RJ=1!X79^&XZ*pYfoid$tBW`p%{OxAYS$HeYL`er%~u))dp2D%TTZPUIqS@agz$w z&n}a~cqHKB35C-&5xF|n3XlO%Q?jG>2rI!i6^hp?y`Xdumjsu-?>NSA1M!!+goiMW zSH3!-$EEL%OI35`wAf(1+`j-$J1+Ga%NgS@ibSR&pN^cCL?;E<0cD+2o%%J;#~kbh zN7T3VFIEifpN=4kJ2;=zX!995nm*L7u8y*e)N0c+fmMeULPLsv5KltyOci?3jCiD6 z+cu~O@$67|NshdHWYy-R(C6?YO(JwQX=1XhVRH8C$(PgCTJIB!NxaE6&18x147uv7 z*Xf#m*%C3EYA5*Y^O7Bs8Jh_wa79Qp#Qa?8WLFXK_>M|70*cTm*}>ZhOOiBG(a1w3 zp_pSX9Q-gwWKK>MDW?@Q)9I@d!4xNV{BrFaA<%KQ-cqO#&#alV&b{y{jqs_&qA2Oz zZ7pbJ>tr_OfVOo*kGI#|o0rZs6Sc)2;uyOyc^+A;Q;A@qZ>sy{bUCIYykiC z1&7-`m6lPKA?W%E(N`^(y31934R;&c#2&$akToA$yKjU@tlgWifgv|w{X3q^l09EG z`m~m$pLo^}q|7gNaw3PQdK^vzwp#>?Veu*oA|SC=Gff8pyV_*)?l@i3h?MX%`cY|J z@5G+?A1#(*KnT#V#5h(xJT^SkyJ8&@n>=+XQTUvj(rRsEH$BR8`IA6>U>iV;`O{qL zXTxNMBw96I3GFkVS7$)g9{ny!CL;UY#ORFPFLg>TaW-dzmRXW(=j6((r_6jPxt#OO zId1#oGuiEameQ{wOO78=u?He0FopQQ$h`rIY8xb=cuCZ*EXI=85#{AqhGN-S^P8%~ zZqm6cQQWS~YFdIgq=yTFv|e2ubj*3l6YPPj^4m$l9Sl7(>x0=*a=y*!S!mgrx?uIh zcag^*){n)C9tPx}IEjmXB-P%uo_v~x$o7)@!GjVCNG>B=xYQ4X@^nlUwz` z2LRv~n!bxyXV`Gn)uw3MT2WkbASZ>1IRgiH z_xk0|+9OGfXDH_Qovrg{Lq|_G&N)<(I%aSB%f4+V&9$%=IB5#04fOjb7wX?cF4^!` z@CZoWxbhe}r_Mg&msz(CA8>vOwfP7*2?v}+$V{2Vgz8%Gm;YGHj%&+~du5i`-|4nhy0w0A#H-=IC%TXjI$p7p4q%t~R@ z>h);e6T6Z7)tetJ_01+hx=?12WBA|c^lz03wEJ2Bqp2-h@CHO`DNnKmHKZN$ zK20fh^kk^_@8l1qf@}t!4W-&Jtbegmra{jUUPaV=%=q#EqFjkfx&zhjevKUd84iucLjq6;Zeqe@Bx>M-$L& zzQ3bMsT{!>Zm$1^jus>=_`uaccWL5XdpQ?#RDaxUK^3!c|8T=2W-lW7ovp+P0YkHK zgK!;GY)AQHBcuXFS1e}~b2->Jd+dvJi7jdM1u*|Yc~wWqOUXX|CQC4pfQ2hdd3&V! z$TyWW`3#4LC?1UqQ_ykSlI(#U!Dgi1Fs;6Vv%^E!P&~s|=9r>~F?M;!ZDyNcII)Zs z--KvdxkHTQoo_m6+Q18DbBi|_eF=>*%o3F{E`}~?6_3MyDe;m?9BMXE(pe&;AJ$$w zb;q)ea;p{0H?}v%GCRo*#rnrGpFdVOd;@AP2URzC+ppudcUXIr*1o7e?x|+(ab!_*dYwJ< zMY_(GbT#iyygr+nQ$+L9d&kiQfi_&r6Wk(SGL` zMEXx+I=qf|PSC?fE5158;MV3WBzix+eP9VW0aQ@2^y8(%X}FKp4pb9 z4ezi+x?h=?J*<9XmEf0)e0%z-(G9XH&Z)r2@-$4G&&Ccciy*Vaw*mispI-h|v*JI7m%oVPovq=KkM>u_z3 zbE92DPtVKAJ9ZVa+$wyv8R`n#5La{~d=kGlIK_#%iM{xKCQx-tn>R-V1u;A z^zkZ@J+LVnHnS)@5qaIL&X~VW3JjE{6N#eQ_eivTbfm8ZGJ;v>NTwDXv!EXIT8*#_ zZaN>wT^L`y1QuSmb7ZM8JRe7;;!WCfI~7(oo-fYT&`Qm14D9NaHeAv9ZTVRS>TKd| znNJzVL*JB27_pqV>gB99BtxkcB;#MtN9^TV*0k9TuOYIuD1Hv(?_65|AIs6h1Ff4Q z0=ZNkEvpA;c5jFGeuH`MCd5p^PHixzb~TU@_pp_E6lL3*lh57VF)wvNRppMc^YSNy z7Ef(5n0$_FoVe%hyXR@v)&%-ycYyQd%>Z=j{8X2-LimRL3`5zV@%B*!LBK)p;R+SK zP|BAb{HlJl^Qhg*Z*`Z9xsS)kYIctjjaS|V%;MEA-@k4#3Rrv?;LbfSq<3i5HWM3K zmk&d*&ZhQC_MU5TT*7JkE<0kwj-xO87!XGvX#+gvxQbo#o9o9SnsqB)HOF$M9VLDS zjJO}`S6B>7Lea=M%}YPKiTo*gfzb?Q}Lb8RLZq?PYdJi z0w&B?Sg+tQL9ejFio#nhTP?Q=OdQL!>FE`*$+oE6KZ(fD+dt)@EL!dpSOa)Ap2wZX zi4IXO(-kVaMY#=VS&LE%kArE`51HCY0qc!K2)&dL{6nX+UY< z)1&$GX7hmbK!&5E^3X53uT+a$J887RHw$cnF;PmzYDw4Cy0R3Y@|(F&v#jNreR=Gf z8FPP!JYV~NV7Nm*IXq$IQ^Hw?{BXNGXE~{UaXSS^d5641u|+UnDpNT*Bh-y}uo4jA%}r6Z%zjq^p0A<_n0%POd%5^ z)Vq;_va}$%&!nIlfhji@o3I37TwuB_YYy2u*0}s|zYb(fqm*DNK@$hV-g(K5v=L}*&Y{Ih%>;5hoJ z#`typrBvG?@&4fcpz4$Br0b-oHW9^JE;} z+|vAf^_=pYvV4~mO;XH=Oa#9~tE1J&^j0D5d4?Pgk>uL^&BPoIA>^gjH>ZGM32p&Q zY0)fbEBJ78N3%?VNsPW;?EZM+$H0_~xxM+l`K+mP?+b4}1i+2}?ZgQ`KpY@U>Bo)I z-q9*s~m8QIjq6y)VIhJ`6 zBPCV-r}nY5ma`V0JUQ$r6JHCHN6d8e!pVhVOPL9ug>9Ibh?BcNh7eM_{#2Buvv^JN zHSq9wE+s8&6Xpa_K3U%z&hV3G+*4${ zR`m4DC@S=Qt+Mw>VlpOu2H@)!bX0vrq|mc57{x!I1bH-oX^nA2koKXd6Z0FUX(}Ge!~T(#CzuPN(a#cKh|>;pZ7PG<|g^Z3kvxO=@QS& zz>+y@zxhZH!{wOnx!Az1?cG% zauFlE4nQn-+GCWHv^2iTcFtMA7t1{~?1^i5(_?D>$8`ryrzr%NgIC>WmV?R1e!j^m zl!b$lqo*G&@_J$BFPg^PSCFUtjY~j;!v^nWH}AO8$&%Ih2?I61fQTrzZ1@%uz-c=m zxtHrAB08DESZExpM#w67B`Tk{{$q5TSvpY&ekujTu~tjy*UmlzD)@IVy z2*_cX4xpZ7<-hO8Rfxc=q~R)NOoD6Y4H(gSOm&q``OepkLav=5WAn?aWGADW3y{$> zgEZ*+dim>`y+9@B$mjt3NR)$jhFjO}=`b*MJr@>mDRcj+H`}v%z6W|!7h)Bp$jRLK zK*vXKRU-R#g{-H`_5%1=o9p`(h}=tY9z$?b!4M=!UdtI$QXRlurhPTp*O$c zb&0af(64{{TqyeK5%;sv*TSRIrvr%VFtmSruM=nX$Ct9CA8K7gnO#GvJMe zD(4w5#~aFDhBl|#JczI{p^nJ|AGk|*t#-rWxV~$AXDoOcKm9$zH6Y5#pLF(&xgP(u z$8zEZ%L6~69;1+o@h=7LENp55sU(xvEkK7M|w;2X;BtLYIhxqI)s|+%{E$&~~)X8T& zTGo>7t@c$Yg-3s}N48l?_wdx2%^Q_Yc*k;_gsgr7GS-<%y$1H@SGM=P=~ ziaBwDf1hx5Z1lr>o>9`H=FHgxF&{tnmZy&rDp3$Xn zHDkQA4kDF`PCOG)Sz13Jm9mz<5;s~}Ck;>KXLe)Yj&U~*Pwi4z5jT3YZuSq2BRn8EF50SQK#@c?_{Y;P{YTv(0u7l9sN_SlgT47<~Eka<6tJHd+HXP zC>v_}X8>7d!bCOv5SmEh!|sCj_o)+jUduA;^07aZk!3!Px$#(Ne!qRAii?Q8_U%wb zA6>8ie~i5aP@GNEHu?~PyK8WQy9E#K5L^}sx>%6K9YS#3#exS2?he7-A-GG(E)I*k z{JhV5{;E@_zOU-+cJ(!VPtVlU)YiQ-J=5K~z!41St=UCa)oVaesG=v0LLH(oRwyEh8iyRq2wndvnf@q-A|WfA(&(PQ2^_(QO>6%c z^k0aAA`PmT(rBN*VVu!lRWjZBID(PYYmoRAmP>mAr$;SV6`@c zN_NI0E$`ou!oHHnyWIz_rDEYlcld6FWu(0DIwT}%$htzI zDt6!2!5Sc3Ru8539lecj(qk$oQ2AwKl73y|%jV8*e4g%g6_zr`YpQOSgPrRC#qt)Pk@L2T)~febWcsd^9qne$EaL%AzNmyGN0 zZ~3tg4b!~XUm9Zhm23bYhE)hlfjZ?#D^zikQCt4U2Z#?DSHYaT%CmKQtS$wI<-GjZ zEuqR_u>r4ybxW)k#ruM}@Db)lb6$(Wj#z_zhSp3(>$TC(WX&@Q=O4taE|sZAb}kcn z*h3kL36e3L6nR@Bl#p+@N4BU~$<}1DDY7$@X?=2QAvYtb?Nd^d3X=-2^BZ8KxKSJm z^&M2HD(-^%8Yx!++y5(7{}&A8C*p`VjcGbtD{psBwlm+IP4qFK@H0H>-Es)M3kR``9;d(`fUg;oow!ER8d^QWbk%En7Xr%sGO_^k8HeF|2=7_aq;^nxp# z)lZ3QKIkQ`t_qU1VgJN&3>aE|%`N6Al)G38yO5O3h6)`v8017vyN_EfjnN;?)CW0y z`&3W|nM!vVN^C8#0$q+dOjdT_Q@eva`dUBEc&hmKh9Y0z#vOKth9nevr5 zYRl>W<%p8GrI=~-*1q~R>&*NDEqpE7){5g~skVHW&c)>oP!Go_Zfz6nC^4qYB*VZ6 zAC%dl383M5)*a==>0YPM=wtN0*N%S?Pd#Mc$*oyAB9lg22z??rFGuwTHz3`GPbVGU z(rP%xRHo_@Ie98lF}14EYJX)^TyO-aA`7L;v=~{E`xjOlA%2e0jIY6vUjat&FQ>|+ z8`*74_BZW>UKlA#RDU}6L4r&<(BHM=+a-iDqzQfm*&#BfdH#UTAS-bme;z5s0voTq z!d2S8fR$ow^ea|N6Obb#Mfu{(B+5(o?*yFDW2n1Xo4=WkJMg4C|6NO zYLOU+cG4&TpFoa*BeikKl&jn$Rai;J85$rvypcl2+#0uF=oB49QuO1=1xqTsk?eoq z!9SX@fEXORf&kHUpeJj@A1RT8I^|l7l&2_~a+sZ5v!oswQM?XvY+YgiV#x+R()Sw) ze8;d{-2-_dr~5Ck{|m}#NBV9ffiUIka-V`)o>It@J?C<@*ht`2%8`D!RoA(dqbk!# z2uvB9T^ID(gb^i`R+w7_^f?^b%{~$m#_+FAHI>pp5%gJ{0fjj6-;yu{v7P~C0RZ}( z3hmDLkI|LVApYM59?6v7IsWYcVI*W3g6Q!6RhXn-XCO#r1135_aK=(D6oDhrh7h89 z1~wZdz46qF?;N|yoFMgmy4~axkl;S2*GHnU4vhf_VvHg-`28!?d)68NRqNEQvFWnEiYnp%lzdv`)mZ8jatgLi&`T2CL`KDKNWps3}65Y10rmm(Wk)|e*Zgojn zWMo-MbYw~7Yb8Jvk7)TR`z|MQW6VJ6`7%I~>%yn=!TY3jH^=W;Y}Y5pZ%VupPoGWN zxblr_<3eP4qr7pYz_z_yWV!BVab4WQ(ys;@y3toUg^|rjxXy0$8^j;mIfA`2an717 z`d1$#n+@@t*`(SzzIg-Qo;9Ivf1&MPr5gpvw|WCe&ziXDz7Y2>u}4-J;_CC!RxM!H z@)K+W-}g_cMy99Z67kVe=|u>|^F~IKoegRtJ5yTY(mI5qrsIKYJR`rQ<03jlkbXy- z=Az#=mG7@&=r6~N)FHzy_(jE2R!u8EkIz$<8mZYR7hA?*p>vE^U>`<0j}@sYeCh-t zs8@85EgO&2@i_~J#0n)F(b!wd&MAMKE5p@fqtDlqm#q|wG$O-m+=kPbMtJKYZR<+( zmpIABmZ9^Mu~r~pY)=%D_m@ZGR!7sCTKD>=_WKhLiPX~MITnov@HJ%G(Pm;91*Cdh z!d}J#RBDzjkCVHA8Kzcx+jcvZ{M=@HSUanoV-?#f{+gFx{U!R1eyq7|ZH$YyRM|;f z_}}WQ;_#f{+)8XdsJ$>0tr1Da$pnzgAa-dR61jq}@JTu>8d!p>=hoMtUs%7~o6hd7 zkl6BpTGdx052+V0f4dMUiYRm3+Ro)I0AR*Xs<0eP}4vo~>6i$#lBA zWTV<$|EtGnYV~PbWy&GG^Pd;MRao*3egiy=Tk>0w1J@1F#AcmnAhD_K2}bHmShcb- z2xfAjk+sYNLz5^EFq^F?GF3D8Co2q?#mPVx&^@0Q6~>_q%B9QjFjQ+6sN6Q=>UnYc zQs(fB48~IaW;66h2xS8AsS`zyIKlwl(nXW`Wx>{?ze z#tVrNGS<8gx++_{(cwQ2XoXk!?<}XCAtN3h`bmnWK(6u2oj7-uKRz>Nl^fhFKOT%; z6wKznL(%mUq+lUW=(6)V$&^mhO)Za)GC7T#KR(LvVKeK@3VOLeA93>MfX!C-buJsP zB?o0+n!U8y>TIfyiV1McTq?k#;TO!(v$>fa+dlWaFKtCW`}5PTd+nb7<@@h8 z;?sPockAKI`Y0rw9p1HEcnnp9nC9*ngmU! zj#^N@>t1u$j}(zo3#ki8m}lAe^8!XVhf?9g!L-c--N3Hpr= zpF-!FLVuYYJu&C0t$8pQ0Q;01U7iXx@~E`AQqAHP}2}4IYx^);r2ARpFPXN68M^@34dm zQ|MNUA?!>Ax_Pn$Z8&^08RgL8W7m2nT*L(Egg3JEtu%D6H1z&o-m}v1N_{Kt-LC{` z=$@(Xt*ZYaUs<7U7QUMswo4tnYlb$}g(UW(<^613a)a;vZ0`Lm(I7>d6C^D5^2Ynw z$@|&V``OO>S}V%7^?EIEyjI)?VEwBk{;!ge z_c~`RdYK`3yLX9sp+a%G@6fa7u7{(o8piQ@x5)EgG$8 z`li#15ZwOu@mR}y@vDtVG{uGoxg~Ebk0A}3P4&D@<@}ew7OY8+Ib*MDY}8Z?>Wc=# zrcZipxdv^$EE+`r0Fbu;dcDn#2%B|C{$pCVsfE8$8BaL^PC3T@0EoMr-TRuydz%}2 z%h|u`v-Fg^_mt1|loM|0{`!{|dduCV79&qtwY^E`-gaoCz;YM$`CN!5P=1~C%4#k`Ge~~CATffMe8d*B;4Jn% zPsXS%GW`zU@C7M{Rl~PwkbF65?HypF+m^53OROiag;-7C z@A)h?a;)Fe?-UyB@EP^nvJ?=->hT#3+0qwq#5VD*3`81Ury|CF7qBtE&Vez|+sFaP z-Lx6$>n|h4w5aG4(wIiHVPxlyJ~{25OzF7N^lOPXXq;1c&&af`Bj<@c# z23wa}hgmmTXImFo$5^*nr&(9Sf?+kV7T8Z%Y~eJk;e=kqyyX=@W}!sDe8LC-SOth0 zwi)>u_yHaaQH&xC6buvqLxxO7#RkOypy93&i2(^9%~0QH(O?lEWY}!vW#9$4F~l)S zFrug^t^j`NFKRY)RL@)_t_l0X0~pnFcCbABeCT*+b7*&HdFV`GMPW~2M`20foN1M5 zpJ|@?B@+m+1y}%_0M-D9)z7Prt2V24tCp+IqE@0dqUNGsM1jSg1?x6ms{z+P#4Qq5 z`L0v1o37)pIj>KyO|Ltz5w3f#&961DYp>C+N3QLz)31fE@2=&p3$KZ;=dV4ky|9CtdSh%SS-DMJcfp`rxR-`SIWA4{eWa;d{`%gS|g{$9ub^d!*Z> ze@Kr>cfap_-~N8`9rpduV9VghV8>wJ;I9FE3A%K!^k?aKY4^k4hXY%eEKn8)4buG^ zm5};w04_5sNk6(4(iPGdbP+;#&ON=~^*=PEUcO2p$zaG6$Fh)`ahHC!?}`1ojC6rc zOw7(=U|Li5`Abju*9oLmbWh?VmL)Tnk}ZRtsIRj~yIFH~?kibN#ZzSN@>#CH!R49d zh2`nxf#vn(vE@bKZs8^2ap6(n1>qjyW#I|oS>Yk!&DP=8xz^s+mDb7D>DGbP_13Z0 zMW1e;C7(5)8K1%BJ&3VQS|7~y&V*KfF2%*#q|)TrB-_};MBKQ;+11O%%hSv4#{I_i#tR38=>2331F zyEuC~yTRSzu5d4E5Vc#bORi@w+t08;X+U1vZ+%ksSi(UJzAz4qRbo%}Bdw*58h!K4 zUWBkvj0mE5R!YE!JQvWPhTilrH}qW+PF7>1mV6hFKfik8!T{*aBqywE0Pi2CE`QE? zlfr=L6ylJfBUf)RsxBsIlrMfxMR8+sM{!bdd2vK>b8#;42QU)&4cGw80_Fpwfxm#M zz$#$KYmCoyU?DIL*a1uemIEVz&A{B{tx^! zoEy#zH-Nu|TfzC^s&GoUKb#J(1xJV5!$sioaALS8oD*&eM}V8Z&aD!h%-OP5$C1;M z&@cLFAaC2&HU9(P)wLzSwRpQ~Ks?%yi|JaF`))mj;>g#38*z$JDmleS2px*HO%!R;RBSg&B$& z&`iio!;IQ2Xp?61)28Ak>8ph zK>2-|DqFfCZ?RS2NIs;Hkxf}It%7aYpsvu$Z=?#+!HA-aokqzeYzQj)In8x95g4)g z_vS(7xkU2M)IH!~^+EKm?cVR!@8RJNf)p_?74Gw%;_9UFfHLlSaiV zuIHP7>Av6k4;Cq6Q?Te3##==2N3le-2FwO5cT9IQcbrS~ODs%OOl(YySoBydRa8}M zRg7`WakOz9c64^E3e*bh3Jga~M>I#ABlIIIN>oa0N}MdrEHwU9CF>nth4kWaGh)`5 zRL0Rd>&mf}G!NE8qlJPBFT<|75NnxH`Q$iG3Vp#^N9EG2&znPJmuhouk_F zeVv*$V9Yc5m~&O%v*yUwP-eNbu3id%4uwMs_?rUrZC{T8H&F#n6PhQgC$=ZXHRkJk z83!938!H|&9xWb69bFx35_J-L5`z#f zhpiYk2m-XWt?5&-CnOJz@xeI8R#Uy$;aVFV?fO2O=LoRSv51reR%(Dmoq+FIMH*#_8Z+d9}P z*m~KT?S0;}EunR1b#MBrv&Y6xG>Psk_k+$DuUt`gPQRga@6&W^K0t0NT7u|_4Othn zlGKo=$ijc%XLKnMAFGZ2c)5W=?N1AzfwJgEA_`VPeaG@8!`fntpn<$-OCly#b^R=i z*%}^4jJCc`7j8P}HhSTxWtkcKS z{L`7!=+lGKU#Ekosi)VcRi_)LA*X*%&rU~9(_JhJb?mC#b$nT$Qu0P^t@C*S%fIRZ ztcyphQp8#P^smb)4TOJ!WMO-wt|c1-@6zRE$vERcuzAQp{C+8U8W+`*mUU zeb}3hKR)rE&;OIxW&UI2)WmD5=0`d^Dxi1n>&?xa+`hEniH-fVVE7)qwdApVWw;t; z-9DV+XJeWx(F*2<>uVT0JSlHhFB2r7@!QQO5($Wx4x0~a!lK1<>u?h1=ow{U*H<`L zh6fu{>KtS1qC3LHiT?HhyyNik4WVnpTZ35scOi!~rEi;pWk32F>+>IirXDduTJjCz z&ey&rH*Zxa2*CEyj?nKs8^;@{PlJ(jWh8iSS-Qd9c^`zL#a5*uZxT8cBL3`Yox(#T zBMVyST^UaW1W@9k+^4csR8kpwTM6a+cFw0`!8dQZupaY@!qc{lVD=Q#FFFpHsUckm z-*pb-2ImTTtBfmWOuJnZ{RwXE)#>~rlXL&!=$86$j|V!;RH0v{O<-P}fL-w3X8tzK zcDc+d%0ijzlp>LFnsP|fv`r&sJ(pmSz}|@AH&b|Sr+%h_EQTOp<&$V`d<6>JLRRQ1 zbXs`}oMVW#UXa%k9M+>Qvt1jABR5o<5m5didBfOf;+0lvt6kJ!w5C7B>GaR;UVV37|O_J8u$qIDMimi4;*O&b=V-vg(?!N_M zi1CM8g<44@I-p$=pAj{Bv2@%7uhjVyej5K|tP;~9;Drtqk@DA*3nZ!vnjG_~*@?g1 z>;8aGZ!c^|ePwjH*qzCL>p^3~DL00v7SxHwT&l2tymcqGgfRS|g#n{V@E0joG?r1< znVpsCR!W?s!E#P>JuqSWbpo^p{Pz8UXZM@!rwH_O_+yuD=NVZFNd~Ay#>xMEN?nHD z2dpdXp?B#QYf{-`9GyQoAf?L1tlH^bX?QavhJ~`_6RApEFqrxe3u4@q$ojg_f z?gF=->c)&vf*Oe^Y$*(1ZgRI;KO}~~WlP$zYNu6q*|F_o7mJ?4DLVMU*qZ!V*^RlY ztX@Jge|$|wr=}Ts)xmpQZ7oK}zng8~Bj3^$L_yed_SJD6G`3sY&cDvDuz5Fn_Ay76 zPus=$ex}4gkCJ+EE7B%$@$^)sXnOl}to!jY;M`?z0JfI!sfJc#1``C3{x}|DBd}}g ziJg`}XTh?@Ig`H)?!Z#29A#^H*#^QMMDcS)Dalo#N}MQoD7c>qK-Fd=Op?tjF}pN0 zWqk!aZxVD!xuT+C=$om8tG!!-P;#kjM}~roJx6Umxs)yHGVF4Ot(C*h=osx8%$SAY z%-fQ^54JtNM49DS@oP+4j-TT>E*K_g+er~_q=ygzCg#|82Dw9vX6D!{wcMAGVR|$Q z0e`pGm}+Mv_FeeU4eJnO6CZpkXW>#hA_0T%Os$xNg0Mg8l&~D^W?YE<)E}O=R9(L; zpnq#0Uf2muTgk<^d{3R_211`9XYC(!FWF?PUb+ktb}ncV(&={wEzOkQR;)8lZG+jU zFn(2&`IFmuzYX_;IcUC!<^0vtT>88j(w$bxE&T4b zdqDGd=&mOcoe3cio1CQ#1?qR854%x!J)$pPq9nZm7WB#z>BW+!nWGg&Tv=}5B@FrR z^H&S~&qZ5!d{pLJ3)l?F$@}G(Ur?u;XE#5J-Dh5PDAhiHe-6+plq`LToZFisV}J6#?xZSkXrv!W|R?;zg_ zms}TWpHJRO-chjx*cb}KGMC7{l6MFJ!SRgcXN6q?mnfGgP&tt>3H5~;rac0yciHO2 zNt-jp`?FT!PdwQwfeO2`cTmQAm3x&saMjN)Ib~bW z`MTUD&FX&UB}ZK-)lZa>!%OCXw4;3Z^v$r-%14Uf%u7Vy=%c*ieY?7ZoIEw?7jSg) zquN}Q2*`jxS|0RGpf-+@XgxoTlH|!E*qATIi7X7 zVH?rJRY~j+Ia?MYMfJQC9cCi*MHM-SzAb%cp)?cS-$2CiTl?Kum$Hy33J}Ta4 zHFka~fle-BvP@Nofj#K^SBo$fEA%Ks?Il7y0Mt{O2#~Q|)UY(F1GHyp;%gN2!0mE6 zu)Y7aG;xVFJ7M89%TeUCeO$Dv)-fQe8lYN{qUx1?f)D4t62iiNNJq{bjK10FcQa2jUUT|thF@fLx?jda6w1WYgv`Lr zMBl{U{`#G>oioU^SdW-CZ~E(YT`BOw@j|+Eu6_6sLO6CTMDHQ!%;TKmB-mxM!3pc+ zY*snQdC1S2oAn=m1iMGve|_DV=OM zsVFKkF!<@u7bQKmX-Jrsl2^E@ukHx&J3d}@aNacad$?X%ZC>2y?6|%@ZftgzoLX%L zD}hVFWZ-464>%0W2!?@m!Hr-n@C5h^I2$YuegeyYEx`ofS+JXK!>ECEIY|Gm?5i%g z%v-mp%vyJ~EMC{7?3eyk*#SV{hrP>uO_`>yW%+v@wWN^@Pdj$vDnP&e!-zRk2l3RS8bfPH`uZC-EmSRIyZXg0dQN zQ+i4E0gZ(#hR2oIIuYfT^Q8y(2ZHnO%0%_O%1;c}i+=@O{W!>*r!ODUNvO`z5pVRB zzdAbbna3zk)8VQ%)$M5VmATqE_%bhAexn1gme2{PxR<@!KXBtA=Nok7@fs(=7^JK9 zW+!kUb9hbDc!+;Ubx3qbL4iv_NkL3OL_v{>n@O2ToJp2RkVy?71ds#p0Pg@KtE8*= zt5mB*s}!QRqLiXkqGX~34i#Ygae;VpjkvD&Is}zUb5;&Uulc3-b!Hoj6x84ufdYsQ z;d8MiWF~x7HWm}f8T+rZy0gGuVrX1nVPid!k#QxEY2UPPRI+SRU%m5rVmc!{Lt6m& zm!T>Fuszu#L=_qFx7M50l-ij9j{9orA%>H|3E$Wvte?0!P^0$%6VQNnB{m*a0e-yp(pJkcx)EMxWWe;T^WQ%1NWfNrKvR(b%{fYgN z{d@f_{r&yP{g?d}{cHVS`?ve+`bYaS`tSRT`WO1+`%n5i`+NGQWo5Q?wjCi1S4t`~ z>6h;jM_hPQRT&SHzChkVvXj;!;z=~2US68dqry0aqnHl<-g4w?_1hd*Rv$ORx zZnGFOF|%VcY_kqChqIY8fLYO*w%Lanlv#yYtbOhMdNRl~kev)Tn2Bc9n{MzvrF5!c z#C_O((tYf5{Bq=S3Ud^5B6d7>Bz8)5RCQu}czkkvjD4Jagng=Fv|_?>*m2Tv>}dRG z%nojvfxp1sI}NprEjwN3&A7wFnm6) zi~=B(=LA}B_?7PAcCfR^Q3fz-&Uf-y|Me@*18~r^cwDv$@cMD$vVQg}$pd&mUaz%~ z&80=f)kJ+ zLm}?!;vYk!GV5j~DAInm}Q3Oeq^Li<1&DM9};gpWT`u#h=)<|JnB zmzJ*_PyEI|s&5=yqp|BYB^M=D?f-oa~RXctJ)e8f<^5A8y_ zs`yA@<2W&)Q`ghq(hZ_o@&X)@wK6_0QZchpA7cdqO~9K-4MI;CE@Cr; zArTUIT}Xk#P(U!;g(I3xdCTWs@WYDKY?35GU`10)_u(~m<0O*Mc~1vwf*n86qNKR) z1pP-uj2EnDeZ|?gBkT>s(!*Y-nnnA3y2Ea5Wo_PAsLYZ+8pkTqn2cm!4+BXcn~0U& zKJ8G&ivVa19>|vCPlEqXhkGD3<$x};d&{YI@&)c9a-!q(TzJJo%Bcv0l3F_a(-3wS zm)wh3b-V<6fC>t&ICTmfPWdN!ee~OkQlYscQsbbQ_wHaI$m*hj>xP^r?r5ts^ z?Dn2Ya=1LyhT?%>^hjK#_&7`p!J@@mqqnBJ14qxWca)8DEDJhh&ihq~uTC zxA=jmj-@>jA#PwM-$o0|)5C)hrg{E1_u(@DCu9p^0&fQkdEAx>v`XeviNuAhu(tQb z!N6c6mA+s%#0=L(rFZYv1aWyk{>1yNkLngIJ6o{xBjWSIkMQ{_?t_FkhTZwydO%ngbJy%_2@jEU3|8 zT+-K~op~V|2JR-bnxK3ug1v_H`Iv~<%=Xq;-}{|H5XPgx45q$=E;(8t#`)cQZ_}wY z`Ryj23i5j)C^woxd6Vb>B`b(xhm+Y95V;ZAkp3zdZ1 znJ~5&!$O&2y`tntz8G=T{-a%4v#XR+*lErPo_I#6KI-sqM6I=A@9AOu7 zP8u%(md>hXuLt8hXHhjQ7w6=|178oF=o-K+d-oNQ+>~Ymn|x~j1HN-L3GE+7Sqc1R zgHO&Pu_OZ!=-qheTVjc@#gStrYa4}hIfI|QBFR~c49(8wL>Q~wLTAEHe#Rtua6|H~vmsJrOWH>g>u?J@(zdg!tas%2q#ec713evl(Y& zt7)r+Yjx)(!l*%mnocA=7u&9wPSz|<3;vDYdXXu^VC=ovI!C(W?Q73@*r%t9s9aMH z#?6TDJ{l0d>Eha0ogi7jyg~hz_aWmSN#z0xAMz7%aX;ObPkmflVpUgUyQU%&FzBf@ zP1gz0_7r~sK0cmDKFtv`)nBbd1&WqJ5i(&HXaN^a3Z9S|EQOhDXF@}BRzFY3y=I8v zl9~}RcoxnkOBLj&+?Sh%tlwU-cCJNNq=4na(wbGAVCMNOw4>BwT_;2h26j>w0Mbdw z1s;ctpl;R@LCZ_ub5~RH1a~e5%-w{8eDrnvKIEP?Dgyrowt8k%%2mzZJz}FR`q5%l z%k3$h(VAXt;UVa`gb-&ss0~jEEE3#mj(eSo$}WAgz0^l^q5K zvX42;Zm^#3RrNZ|#?H|lxLCP?ut1v!Vz0m990p0O#lA>E=4rq98Z@8&+jf3R*W^yb zJEFhy*)jFl(CqT`Jciq=3HnJGUX(wjs}f~Z3Qev`aXY{Ltfl*J2_NrVy{~NNA4r>{ zg*%J?aK$Mrt6>|1jQbpNdiir#855`!gz0m$5fgCOG%cR{BmA;i;&gq~E!obQq{!Pe z!H*e$?^`z)Zd~IEwW+O6-{M%$Y*S=HrE?gl0no8l&WW*Ix{?FaKZ?(WW$Mq#U8hFM z{Kyg+=WC%P7C^O_f`9V{0y0XhcmBDkYoFb3Zs zP!;QbN|^=B6+DtrO5qS%rA#S=3|Zk$!)gsrU;)vI8l%; z9aE;v)FoE<^*z?_#X6ryL7#H$?1#A0ymd`Uqm$94Eryd^RH21I2rasOUBUb@7Ytm+ z%zvhelNJAVZ0RGkRtrU5bekbicN?x@>?~>b3B~vT1LT!IPqo+EK$RHc%LEBpg(jv; z{}AcSGHd9nmnjwuE6n{+g8Aqiw-@L~juHSlo=JA^G`Ge+Qso|DnG&$+c{@qHX0eZa zgH}i``@-NYp^_8wwu$o(&#}ixswmi$Z8w{ycE9upMTWy!@jo?;$)t{GliOfjF=5@D zsEggoM>OxZ!+#y8%X?WT3wEk;S%Orc81gw6yK+>GZCXEtN;wAZUeJc=Ez#+u%Vncg z%{WsquDIt`(%0Zy-8kp9BSj;u4DY3(8jBxhb?Cl1JW0J298 zY^tu_S?YoFZ%u#TmbROtpYqcv_^r2=Bs6-TcqdlLNBLx*s|KV_y?qtAH(8vU{8eCg zS&F!RBrPxTXMQ~W)010VUrUt4MB7NW_YhypzsDcrl2tkvrOtFTeZ0O(nhm=7JU{Ae z!E2syhjS@X%RKVM>;~GtjJg4GrkIIRiY0#^uRRo{B)UA1T}Sng*^KAmBYq?4rVpVD z^4!Tcn+;Oi)C(%;Ea*&nejfmQ61p_G^g58_-ovaj=4wuJP81!UMP+Qp16!feE`qDU zgbQ(|5gr8`BNIQ_?BsmwHm?lCSHjl@0>6x`ThZ7lAcG%97Do(tbNrLU#sdRJ3ams# zpD`Z-BG`dlJyx&b8c}>wju>QyInRm7)Sgv0X#WnI4dZzZwn4>t!}x192@Hfp)R=L# ztjP4DoL;ShaLA%9JfhqKuU>8#jcbiK-HdWT`G67GWqA!uAcIYwMbXh z*JtS)taYKiY7eeGz3KT@0f_q-r#ObExRWpIc=w{~ZNHFz>E7g>u&?Ji%&hJ?b*R9L zBCcoyzERB!?NRJKw0eLWdOlhD=RU75S zRaeph9n2k0Wqj)l9oF~Z`(&j(4I7uyC-Sr9J3{V4nVbCZ*&7~ezMy<~E}*fPIt5T& z{1WKYkrU|d?<5RXH&56M`5I(SA(_hk_%(xtfuh$(mm^Q#BprkI6hN=2A3q8_Sns{lfgN!wwfexnr5)(cg+REdkw z_`-yH{msEOItH{A#0zK?VH~}l=4mzhA807wOaJBfZ}ZWj3QUZ+11Vg^MZCjW##XCnV3R=ArYWqXfy9~z?S(|2xVRQnkx?>F$|>bk{)e^sC-p{3`8_T z@cc*cjkD%#(v=Sowwstx4TY^yweFK@S@g38e7(98teEnmz(h_@CT~aPLNm7x4126= zk79sLoR>39OtM>usK58r3eFz$iku<^wTY?mstU66u?sy;*UY-~yUZEbvh%8QPjaW# z#G7q?g$|-0cHH1vm<-#Z6~JQkc#Otu5ep__n|M}6Y;g*nVzGHd2KU|;%*IaQSy;YX zvazzVgxWwY39Sgt34#5W)s>6|O|c@p2fZbt1*Wn0yyV@s+y&;b@;u~Ywr>hXVvBe( zMr^SQ?qZ2~j7Dvd3g%-McvgmOF$#`jJ$Y8f_Wmj8i;d?K8QH_6FCsWnWm-yCui?x7 z3>4{^bpM*Y|5kJs&GUb*a3J{K>;Bh9|67G$=!W~3W%v@*Q-&nY{nFz#~ZAj=xzO!{5w5Hd1iA26gkVx^mEVY@jg(+$@l`I*PJ!`;| zuQ=_0FhtNL22zviYkt6xaHi(S_$u~|AL#xteCKB`9xkSd=!?*96U0&0*J_yMx8Knu zA&UW`I^(k5{1H>-qpI>Kvx~3fR8^k9Ey*<}@($ao; z2$qL-ceMv%LLS9`8?lO?_5{V5y{SMrU)cTIjIMu&QnjI?ji}!eli`BC8whJFK`RLf zf^*s@HyiP_l}z&{f2vO-htrP6+jk*MU156a7Zh&YAo^53zrF3l0DSr$sW*ExIM|4_ znG{Et!+9x_f#x6ku}<%JUU~DRI=?Pr^&*kbp8o<*Ac!31i@%R!=YHhACoh%ZBN1)v z%wMLDm%%R(jMsnosZAjZR4kBTdhfQCWL#|5&_M*+6K5?GxuX*ud#9^;6veiI0CiJ9 z!CEM_G=vuHCzq{CuGbJFFnfnL`r!$@V?;W( zhX09Sea=)t6GV&neDj|zhkh~D4-C7Fw?Q~HIL>MfNE%UwO1JN*r7|9UCfA6S=_d5l zaCYk@o8x%uQIlx9W;)&m*t4-cpnJ-awZzTIhx#|ys&D1-d;@k%Rw|dE4Of1Gx_!}* zmcX#RVIXWNG}nG;%4Zz65Bkv;{97_Q0HoEoSW*B%&v(@ z?OzwCa1*hK`C}uNEEy;LW-ms6vSaL23vmXdiTT$66)M5VL|o3*Dpcmb6^-l|GInM4 z>riY=bIc~xzc;nlI%+??AMg`#)>n<&tW0sqN=|#GdjQg51<4nsK;b1L^xpnv6Mj8z z&S{bq|~`=ettQt|pZ%hzie-zuqY*-b&=J z>@J!;<>Vu}uG@GL7kUF_md$kP&6tCb`*SJK552$PT07aGXu^Dc7kc5w*|N(|NaWKw zwzsd#B7qV*mCY)vrxy>B?i)JQH>HEJJ5!#014IM-o+j?A?g5wUm(2%lht9J%zc;Jk zrClZaYd|uT!W>c7XlN zf*eALK^<#aou*D~K_(}38p+ft#lzaLU6}Q`uTSXfY9Rg7%x<(^7&gO~TB-(uh0yCk z-`{P+1yGimgvX302?s1&r>k88gQq(&y`X2Q5A2lmtG3dHPw9-+v%bFXe3CXk=Dv5H zrk+NU{wkr8OJFop=w9j~ZX%C^@nuhwhi;8)gJy%dg1C#*6VH^;naG(akZI%nHNIeE z$3SPVO>ORy#%<`5*%6l`K^Ge~fhmDPB>gwZDEa|#ulm`;_D$I00M9n5dD;g(N~U&N z3HmDhYp5Q$E?u-aumNKs;d=0X+FUDi?qh^XoEH5BtDA!oyw7L`{ENcl-M+!P?>e%G z`c2&l(LLh&>aQ+tjPsfk)QjU+E$Shonc|w%OS=lX0OCW1w4Lku*TwNGYjb-+b|t(?UJNYu^a!88!DL+&rVx%=OB==$cb?Zls)w71mqVShY+F+U1@@ zO-GMUN`#(+&hP|VytCFb(7bi$8;4#F*8(ObcAW+p-l8g@4y%4g0V~OVw0e(8_lEZy zF85p2e-OZA{oK){Ryjb_3$YcWBfkW_pH0;7e!@EvfB<_ABw5+y=E+||gxvnJd4<=a zW`QrS9*4mH1Cc;(zwfozT4(RI?+pk*kVd(qp<1+R*A+1X#$=?S-JpztFJXOJzY*y; z1I5?i=1oMg7!*Y$N+JOjP!)C22+h$3?a%`+AO(Ywj?oy0AgD`H^90nE`-;Lw0lqsH zm63>gcpA^5Gm_97{gH~7F%}cT*ExJ=G~!SR)lnZ$p(Q$^3woh1h9VOq@!Bn0io$}2 z5-5dosEGz>f);3x?sy&pkcQzHg^4HvE2(4q1T^iM)HZ?7hQ<(p=1(FJgEA44B=?u_{@?0Go7izEa5z1 zws5I%wQytR$l;kzj&P6gknn`?r0|sR%n0_Xb5?jxcwTrxcu{y&c!M8ni=WBZ@1ex6 z^2>yKFe;xc$j`XV^OWW%-Q(HH@XS__pZOv@BmFQxwRmnTorhAG(fMX%zF92ajJpSm z=bL3@Ot}hCx+f#@&9eEV#cM&i@1^B=js5OQyiVnp`5$e`e6vKpSee()UcB0-@%lLx zv#Qhr{M_s8GB~u!Wpm8*nX3+v# zN^9ZQGDJPXIwY*=A+=ib69CxO$w05bCDlf)miJ^=3hRilo(ic`Gps8^s$;{tHl%KY zu$~R6H#O8xuyN>pa92o;8#-_LhV@KH3$zI9zK|B|8P-!FEi^o=|10fSMN*3#3!N!i zR?eu1zLD#rK86~shV6+B+Z{V2tn__f1-d{AM&DuZjbx!8hj*p8hX$$dD0LmbZ&_>r2f zURN{J8)}N0s-~%#Dof2%Z>ss~Eww5%2spKT>E11T<{a_w?1ZLGiOZ>c3?O5Vm}VzFplG0YEDm63u;Mis4eG9 z2kJxIL^eX4lYc!rF&_tRiiv_pNVuB)%? zLUv)hh;7@NcF3$clpd#s)JiNGM5#1{UgBI%r;OXjOK(#)?V#PXhxV&T6{VupNHt1j zbNw26Dg*o!b;Ue+N7RZL8*cgj?cUYu1K#WR9^fN_Yv?R~@7sh&Y)`ILz8$;|;1w$A zA$cm)uEnjk<9A69VXU{?OS0$a#DAgrAn<@~2RP4msO$%7B{$=U|)O5MD{g z|HFIE+XjDa?7_SFG}(7&{S&Ro+n#u?b^X1(|82x%t}e14iA8zamcUiGpOM2cmMfn* zcn7N=v2}UdS(f(-p==(9={%<|=K3t>U&hkBZ7#>Vo7^X12Ig~3xt=S7L;r$S-)+Bz zW{9(ksrS`S)JgTBI-`E7POJY=|Ec~1PQ^cyz z)Tin%w3gPXzp5|PMfEpzNnKWdriJtlEuzJ=g!c%`X(g?q)wD)kQJ<@;w2W3fU{?4& zOGSA9dhqUQ@FDd4{j=pkdQL+f8m!i-^=bnRQ)}<2q{rS>MNj1ldXGA)j;j-DuiCHn zsRQb;I-(A$L+Y5?s5Yt1Txn0^3j9^IMQv5vRF2xtz3o)H)Nbx8$hM_&QVyXse=oP{uf5ORxxn$_`*JqqjxBnf<{-$|MIu6C z63Mo2XD{vK=sw2R{S^JoJ7y7GF^kO-`rIrv%gl1K!mKo_%xbg7E@{@%RkM!1Fzd|* zx@I=gmvo)J;`QiFp5NcX0=&(u`$Aqt7x4#Q7FcBVM&zYiX;JLcz!L13Y?dfQ3X}m^VLujweUC^p$U59MXsPyc*RY_Pz>XB zcLYXqJ>{>yGw=piRWmV5p4WWtT)&lBc|X}BWM9cyb!!#q6kY`?`KyYqr`zgwy1nkG zJL%3kNq5oH^b);PFV`#dO1;XBb`#xdZVk7lTg$EOPIBLHv)q~PEO)j)PwNkEwVHZc ztCjE9s@|se>V0~@KBy1r!}^FmdS^eum|$EmK3F5Myx*HUku&Nv2I{)^ zJi6a?O#RleHP7SNUB?IaI^1I4I_kL-?>^YdJdR+6JCDFJ9#16usve-*=x*%K=X4(w zWM54~F}+x?LNt478{+jIeH5kjaeb0~ds?4HE&W^l32L*~qS4f?>ej}SZbP>rp5X{h zLTh)1I~UKg7h}*l7|Y&E3RVnOM=z6Oa=32(`;IU4tx%~)WQWBw>HF*%1eOKXAZQ=6 zkD;jjrF|U{9Lsu$Vr%+v-vjkPRMju*myyU3oQ7&*Qw@&WHayNYox~Fyn-9@Wtm&vf z)1To5eM8?sFV}W$^yVlU z%~cd)cqC_UW#zxaxE|H~)R2Aooof*+k?(E3^XjigNaap&{R)e#jCLH)CVb!1{Jy`$ zu?Z-U<5z^1|6dIg`QCYK&r0rf2M*u_*ITDK^8bxL;v%m3OC}Ye5|luds3tX_X4IN1 zj2_gNQnZE4%oovyIRI^$$>_#Rv5zwc;W=ii{d49^ zc!4?2{*d{awUT$)m+?F-9^FM)JhsnZ@yPzlj6n-#tot`+99lBt(TZ6b&oC3vnpp_1$|6i*Z;fMr<%ss@R(&0SX`;#2 z7GLSIcgR;e&fD*+7vpUgjrDej#(6tM)Uhx6ak#7W%{Ar#Il8M<4tGzww`U z)hDpbpDWFNv%~B(yUcF0$LuxxJnea&>p5OQuaH-mTl9a&?Ts_|HGYpjSkrk9p5#vE zdGJ2gco73HS z>Pi@BG2J;C$*_)1EG<3+v*#gf6LLbSWLH<8(alTqb%YIlpTJZyL+k#x+4x&_tLh z6KzVFil&;WY3i5;rjcoCTADVdgXwI#nVzP%>1zg<6f@YQnPDcwj5K4+I5WXaHq%U& zIbnWmPX0eh19R^H1O!t7kN^b$00npj6aWAL7zKC*6aWANx&T=MCIA2e4+R1O0t5pB z1K|Jy|4;zz{{R302><{90Cag!OaQ}nE(I) zAOH(^oYk0TbXB*q$0d!lXEXxabOW}}v9V3>z4zXG3t&p1}DpH9wBCSX#!bL`rSwxATh!!y-R>X^JBD=^T za*ABCfvheY%9gUWSR`_bd?LRnDoTpdqLpYP+KG;$v+gIli}yrN(MR+X{lx$=OpFub z#YbX-_*hJojbv5XSiU0!=EVYna5w>_qSiE*KA}(PGnz+Vhyrw&4$%=hW+QEcjj};o z(>At^Y!lneHnp4WCi|=1BAd#NvYYHKo69<~g%~2+%eJzESS(h_wZe!9xm9kIzsOCp z2alB7&H;%wuI0}d1Zrp?Wa2JJ8s7X&L zsU^KbEkp;gM63{N#5%D>Y!KVTX0cr?^Jh?}8RD0F#VCIsYWUU&=n4H{1WbU5@Fg77 z<4l^6vXLnw_eRZ&`aJ4oAYC9bP&rUL&@|9I&@#{}Fg&m_usv`ra4zsL@Fegi7#55P z#s~8S3k6FA%LFS0+XQOuCp%F@c!uF*#$Z#k7riH;c*=mL)p2Z|sve5vSr(#D&GBjSG+aGVaH?{c(rl zZp4fDQt@4~j?C3P*T6g(7G_!){o?H_{U*zsw{PDj|2uHndnc67t&52C03ttFMOC1Xs~-&zu4IwWfe#wNtxiGBNDS{B9a{fCwT zxe{{q^R;AH81%J>H^F2r|5&AZ!v9#$1J~aqy>Djy=YqVQ*S~Z9Z%g%Zx_?{U|5JOl z-KB1qmI!gF@}&y5o?e=MxzxW~RwiyqTqDGl(aFDgoj5nKcd`|CIo$7`+$S+dVsv6u zV&=r~#Iwo%QomRD#d8g>>;bk=0305ib+0yHv6M*FV^@}+o%WYA!4!5troJb z*rtby$+EH@ribehdZbUNTt0E~B=ghw1RaLMeg2HXU4PL>uus&KNd%%WN+nl`2x^hc zq1H591jG=ZvvYmY&huIOh0nnPK4}jpvo^w~t^ptQDS62Gam9ZhBJ2UNzsPgU&4 zRMk!tS;Ro9W+zc2`w7((!$q7JL9NU^YGb!jg55@K?RIKscZjUwL+WSG(Fl8kM$$C< zJI%09X}WzPhN@nwJTFzfRRz^YRaBK!UmU6`t17CW>aVJ*YO1=bp$4d$s+Jn4YMUrk zM-8^6)DTry)#HY$zPurCsRnAOYN&>(MyjzI&f#j78ljq~k*cY@DQ~N0s<~>RMyZx+ zw0cLiQtzt|)NIvSjZt&dAU?8rxX$hXR@f5Hf>0P^r zI@-O|$?l`hc0YBo2h>=sL`$(UEyMP-UbRu<@OumR&=xWm%w-DNPHvLfZnohd983rC z2dhQ#LoAwz(+U4yG78h|1XsRNj6> zUF`|#W{*>KJDKX+Ic~E05SQ98)lQ99?bS!BgPMTV=x3ZkS160^OtIceinCoP-gc#N z_P+X9O;nRaCpB43!RpwHcHmQLtfs1IZl;=!oz%OW0cX-xyl3;Oj%tSLWXGt^YNlGO zeo{-+QngI|td^@4YNcAGR;x9|6&OoUo*o!X!_s$bM5wORdYBKbX=!;4c})K;}k zZC5+gPPI$zR(sT5wNLHmS?Yi~s1B*a>WDh3j;Z77ggU8Cx#{Y(I-}02bLzahpf0LJ zbxB=TSJYK?OUZ@-Jyp-tbM->K zRDXCO>Xmw}{$vd!*yEHi5=OyjPR;4u4{i~k;xqnUIu6FdhcKRR@oo4BCirp1GWb}m z@g8_-%yo0cTs7DH{dSW1)4cI_-6=2?ru`jtZ1*FO%`n{*g&9m7!fD)3FcW6MY?uR| zz+Cv$OKZO2v*ug#omptUH$Qj}&1>&BbIZIki_DK^vH8g?F-y%dFRPc`%jxCy3i4a8 zuvgN{kJc;d758#G<%}c8E+vM#)GobP?p5?Exp0@!Wj3wck1omuT+l_k7?%Ydl8f~o zd8NHFF3!cfY+e$kU z^~!q9T~@y4&_%j}m;u9GVOK;&xMHrPE93IIa<06q;3{KESJhQ>HC!!M$JKWYU1O8U zHFGUoE0^HfyN<4l>+X8GKCZtT?1s6K;(>T*s=I0Cxp~1S#XWH!3-fgxi$CFE8qJxw zI~Kxs#V)ZM$Iwh%EcW0bd?5DXYcgUVr4#$9usA>sXp}fegTx_m7?05VoR_O}1MbFS z#1U~+92Y0VNpVV?7H7mcTU?wM7sN%8Xx|Z+#T9W)Tou>F4RKT47I(y5bCEx=t@wSO z1K+?xnD3UjrLY)&fR*qCEb(Kj!P|0d=HCgr_IOf;9K~PO2G>3?MIr+;77B`yflB{hd5rQ;APTM4Lpj+@UD0%{*Wno zEwAGBQeqMD8+H_r#P2vxJP}XDGhQj4ix>DOE};zKH5I|0)KL5>-qK(xq>>=DG}4nO zNwReGr3{s+WNMj~PRVpKz0AOSWVp;IGs_6uS_bS;+Af3kmW;8NWEL4G<7HNvO=g!l zWKNk|=AqMcM&{*hGMAlV!)>h1BQwcJo1PEyUVB@{>TXBcpi>AJ*qr_vG2G+uLSO+&?J=`=;&3)Jaw_qdOhF{S6&}HMcnmw>ci0I}U>7`v-S7oks}as=g7ezK156v7}Cq=qz*7Scg_$N=Gx5i&t$h=53lf&c^| z8e$*|#JV{U2l0>1 z3+3!<`^LV7@=yUPvVuyCY@sqURDr5cjZ<(ahe36y!Kt7o)PmYj2kJsS4?TbT^4N1; z3aAeayp+(;+%|VS;Yn!ZDGxjijXmRe&;*)7Gk3rQxQ879&7lQtru}r^rm)3K&{nk# z>_|J_&T=#CX?xYaq!n(8i8e7N3-59pY-aNoTH0gq4z#j=LThLP2`r&41GIzo&;j0s zj?f7@Ll@`@-JmU?2>F!JOVdGYy4dFxDB55~JKeH^EKBwzL*I(?;wdj6;Vim_v*|j{ zp&R%K-NdewMHno2SNaMxWw79~H#WOY&p0(NVH(MAV*&_JZ7R6__ zG(NXw@P#dlFKsz|V=LiXTbYEdLTKv{*}7zHJz`s*vf6Hx&332k_C3mBdr(n3jEdRe zRKbp=igp}TvL8}qFALSQQ>m7nMz!s9s$*wRT|1MS*tyiyeoD>kJZf$~Q(f#q>TVCw zd-gE(ut%t;JxaaoN$PD+Q6GDT`r5P9-=3!d_5uyG7ioySOhfGz`p`b0S@s#tw$Evf zePPpi@ix&ubd~IEEJ|NtG5Q*d(>GXxzQvOC9hRbnSem}aGV}wMrA1hde#G*$7%R|E z_z|7O33LuWrt>(FF5o1(h?6N1r_d#wN|*7tjl&Z*BZb>Gl+h+oCfk-W+jbOT+f$_N zKvDKxzQa%WEH9;!0eLt8qQ9!gaU?H*inx%e}cj_u_ushX>#}OvDR#8PDS-yogt9 zPus`#w*71`+m~`u9?DJmC>Q1BvHTH#$RG1Kp1|XIB7MxC@Mruff6jAxKF{MXID&&5 z#W5Vo(H!6`T%3z>eXhr?_#Ga~L+k+CpQrIu{*o7P8Lq(PxDuD;id>#6V^eI2&9N0W z^G~NOur()e2X4n5xh=oT?YR?f#%;I-ci^wM9k=36{)WHj?|2b^%Rlf!{*kkCPR`D` zIUDEV9Gr(saY?SqrMU{1;A+?y8(~9ifK5ylQ{5CZrA%e+!fm)Sx8|<+B`&~Ua3gLq zWlU*PmPhb#9>fEA7!Sr9cpb0dRa3!~Gv#?E&)~^CiAV8hp3YNf3QeX-G?7Y}N~WSI z$v^SeyqLe@B~*a&a~#KVyeVOdo0_JUscmYQI;O6vXX={UpzqC$fn7-Ly09^%*w$tUjmD z>kIm#PSnTs34K!E)_25wIY)jX=gLpzJo%ZNFF%)G$OZCC`IY=yej~rt59})z>^LpV z(_uQ5POa1Ew6>Z~r_<{UI$URzcVuUsNoUp(I#NgJfDYTVEa&yX@F(=GfbJCnP=gfI?RK4e>$~|(Q+$;CXBl4&`C=bX(^03?`SIW9_huo@T zfRo&G*^_l9aK389upUrZ!!mKo_%xY0CDPJdQi56y*8ExJ-9|-X;Li#t( z0001ZoMT`h8f*u`Zia5wnG6ifUl|zwtz_T!FN}5N|Bo!J|35)^$ZA+;GJp90`QIv- zD%Rydb)TW?nt(8gA&IR4sA@9PE07qFy^y(^=`MU_y{AyWlR))=E%X zDR$C*ftDG5gMZDHX=ms+ep=6cvP~dKJHwP=e9yZ&dUwAH8A_0`7xAI!9l3AWHW?uqo~-u`)9@nKAybiv4jsxU(G~Q(O}UkO z{Z(_)^E>|b{lJ#C)e8i*+ks7+p(Uuws2YYMNl9^+R-qc41g-J&HD*3<2Lev?VnLJb zAc98lvq?tljMgJ73d7JMvmAz!jCODkh7M(wz&*KQ42SYwJD|LDX-v9sKO{49D5oU+ z65S-f?+SjB8s}fiM}CL0B^!EA^h6JLCu{j4!rBU=wiR!Ofei6WJ2~Zbp5=^v!8g!m6fz~MYbOh;KR#u6 zzFV?K$(~RzCx0@%#Vo@G4-rSg@5z`8p)+MzoJ|rIoE&;d*`kc=sfnpmUZ-WeWmqpl zJNnWYr330uO=kVTwxk`FY=@>*lF9hgjq480C=i99Gu~Z(9YDGvP4j6Rr)iuVn#DD9 zIwb-b=)f+`c#-Huf@Y93hvrmkH%M~bdbmu}2l9zSZ>ZK*(Ar6rmJR*9)}K|0G3)IG z$?U90X6({znVS@?>n3OTXBt0bE};_HVmnAUd5G5Sp}cIiWJ|m@#8UqSD)CPXAn z_}_%~s_vC%h8Q`c%<8HthccLSQ0uJCCJO*tviZ?1@7{;#uyQ6ckzLnRF!I#kx+kwfn)gQm-`;p2Po@m<_4;3G>LKC-+3A6ZKH$Z{Dz zvMj@ONSt~zu@RnFBMTK_L9ny>@Q1a`X0|8Bb zWsn0|LuzhlH5D*CLNsKPjd8VVI%OQdAfv`^P!TnJ8`l#dm0x^wjFn-=P% z4jxoSavR?qc;F376Y=Ny)ewiJ+)z?fIBN|o=2}=uD&_(P@YYD(KC0e)nSCPXwxVkJ z#7kX8*UCK@=4OGn$2llVg({$WqYfKpmzztX)hig1^tw8h26p&sv|{uB>OOX#_e)J; zg&e839S(f-IT^$F8yvqa2MHL&F$%efkQdY8#Md2jIA5X5n8lAz(ci(&H5caT3h-S; zS0P%QH6M8u4SdRmdHO_gJ5meqQ`N_w0r(8SWbnD_n_ANb(3&mg_yF6?VX(s-2D{8* zu*aO+0ADbN!I#Wo5HN>9$Q%#g9&;GnXAXm}n8V-!a~c3&Gl#)9%wZ5Qhe6C77hs<` z3_8qV&}9yT14Y+IX+GowZ2*0%(Ji3wbU)#+iNp7bZj9JJ@IkYG)QH(XX~fi@71c)6 zU-+P@ziPzP-!x+CLq#`7)JJ^K)ZaB?>K__0^|5+7k;@GKcyh~BIH2ru`^oT|;`{@X zg-ve&0RRF2{{RnooV2|OT$5MUIGp<|Nl3`Pk%S~9AqfNmfslkH?2GI>vM7jvg1acL zC~j!oZPnUpt<`E5wY4p@(|u7p(`9D5OgqzQXS%#?zqZqPr|Z~pDtY+seVzmYg0=te z|NVX_}W~H$*Su9x=?n>5U3b~LF0kh4TMYvO} zW|I&zn{2WaPvCFxl@%BzMlbyNS)Eo;m5|+C603K3oMu9@KAg}vyw0eSwAj>`NWMC} zGs~%r(Mcq_7^O3dI)%S6lAMfpj@(VGQd)HqbIz<(Z*@kT)uLLk%H)cRNl1@z`J_sz za^zZKjzk};QpM;c*~FQjyFFw)3uCcaEV2O7%wZ{5EPy8f8=HdzNRbUU;zAGyfD3>0 ze|SosLis=V`6HSr?hgOP9c+{O2$uOWCdX!I3T-tW|1KwU` zhMO1ySBN0HQ#{^K_`od06>_C3ISX?oD^>U-L3CI2t*)kdRlZ3`Go$5plQPM!(#r)T zCkzXrV&rv|t|~8WzIB|KpS$@6TcXAq#|h(dNfxAS^k)`}{Vzxx$%;U<2>~YzaEw8E zj0&R+{owb{5kv~9%cKU3j3oKreVk|29K!yMQ+{~{mf-(?d=T%y?L|@k^f`J!D}hmhU8q}I5q;tW z^*UhHuB)=%d2;Z@{&ZvByn++=gKOlbP)*e zy%z{CE$XOm<_T<0TgAaY4et2UZRMh&VJlt h;~B0xF~$CSJciZ`64hOEgkHUS6Cm`o_8oRkEN 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 z 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 literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/css/fonts/lato-normal.woff2 b/src/scitex/_sphinx_html/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3bf9843328a6359b6bd06e50010319c63da0d717 GIT binary patch literal 182708 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

=9Iu46dgboET+e9!2YZS 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 h$Tyq4K{V~K{nkhW_dE!^7kjm6Lx{iM^ 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%0D>Q!cM>J`je@F5*Tj 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

J8q>nG(9z!c`cmMW%RHFO2e_$&BD<%@mg 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.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%;float:none;margin-left:0}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_static/doctools.js b/src/scitex/_sphinx_html/_static/doctools.js new file mode 100644 index 000000000..807cdb176 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/doctools.js @@ -0,0 +1,150 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})`, + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)), + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS + && !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) + return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/src/scitex/_sphinx_html/_static/documentation_options.js b/src/scitex/_sphinx_html/_static/documentation_options.js new file mode 100644 index 000000000..976fa38d6 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.0.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/src/scitex/_sphinx_html/_static/english-stemmer.js b/src/scitex/_sphinx_html/_static/english-stemmer.js new file mode 100644 index 000000000..056760ee8 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/english-stemmer.js @@ -0,0 +1,1066 @@ +// Generated from english.sbl by Snowball 3.0.1 - https://snowballstem.org/ + +/**@constructor*/ +var EnglishStemmer = function() { + var base = new BaseStemmer(); + + /** @const */ var a_0 = [ + ["arsen", -1, -1], + ["commun", -1, -1], + ["emerg", -1, -1], + ["gener", -1, -1], + ["later", -1, -1], + ["organ", -1, -1], + ["past", -1, -1], + ["univers", -1, -1] + ]; + + /** @const */ var a_1 = [ + ["'", -1, 1], + ["'s'", 0, 1], + ["'s", -1, 1] + ]; + + /** @const */ var a_2 = [ + ["ied", -1, 2], + ["s", -1, 3], + ["ies", 1, 2], + ["sses", 1, 1], + ["ss", 1, -1], + ["us", 1, -1] + ]; + + /** @const */ var a_3 = [ + ["succ", -1, 1], + ["proc", -1, 1], + ["exc", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["even", -1, 2], + ["cann", -1, 2], + ["inn", -1, 2], + ["earr", -1, 2], + ["herr", -1, 2], + ["out", -1, 2], + ["y", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["", -1, -1], + ["ed", 0, 2], + ["eed", 1, 1], + ["ing", 0, 3], + ["edly", 0, 2], + ["eedly", 4, 1], + ["ingly", 0, 2] + ]; + + /** @const */ var a_6 = [ + ["", -1, 3], + ["bb", 0, 2], + ["dd", 0, 2], + ["ff", 0, 2], + ["gg", 0, 2], + ["bl", 0, 1], + ["mm", 0, 2], + ["nn", 0, 2], + ["pp", 0, 2], + ["rr", 0, 2], + ["at", 0, 1], + ["tt", 0, 2], + ["iz", 0, 1] + ]; + + /** @const */ var a_7 = [ + ["anci", -1, 3], + ["enci", -1, 2], + ["ogi", -1, 14], + ["li", -1, 16], + ["bli", 3, 12], + ["abli", 4, 4], + ["alli", 3, 8], + ["fulli", 3, 9], + ["lessli", 3, 15], + ["ousli", 3, 10], + ["entli", 3, 5], + ["aliti", -1, 8], + ["biliti", -1, 12], + ["iviti", -1, 11], + ["tional", -1, 1], + ["ational", 14, 7], + ["alism", -1, 8], + ["ation", -1, 7], + ["ization", 17, 6], + ["izer", -1, 6], + ["ator", -1, 7], + ["iveness", -1, 11], + ["fulness", -1, 9], + ["ousness", -1, 10], + ["ogist", -1, 13] + ]; + + /** @const */ var a_8 = [ + ["icate", -1, 4], + ["ative", -1, 6], + ["alize", -1, 3], + ["iciti", -1, 4], + ["ical", -1, 4], + ["tional", -1, 1], + ["ational", 5, 2], + ["ful", -1, 5], + ["ness", -1, 5] + ]; + + /** @const */ var a_9 = [ + ["ic", -1, 1], + ["ance", -1, 1], + ["ence", -1, 1], + ["able", -1, 1], + ["ible", -1, 1], + ["ate", -1, 1], + ["ive", -1, 1], + ["ize", -1, 1], + ["iti", -1, 1], + ["al", -1, 1], + ["ism", -1, 1], + ["ion", -1, 2], + ["er", -1, 1], + ["ous", -1, 1], + ["ant", -1, 1], + ["ent", -1, 1], + ["ment", 15, 1], + ["ement", 16, 1] + ]; + + /** @const */ var a_10 = [ + ["e", -1, 1], + ["l", -1, 2] + ]; + + /** @const */ var a_11 = [ + ["andes", -1, -1], + ["atlas", -1, -1], + ["bias", -1, -1], + ["cosmos", -1, -1], + ["early", -1, 5], + ["gently", -1, 3], + ["howe", -1, -1], + ["idly", -1, 2], + ["news", -1, -1], + ["only", -1, 6], + ["singly", -1, 7], + ["skies", -1, 1], + ["sky", -1, -1], + ["ugly", -1, 4] + ]; + + /** @const */ var /** Array */ g_aeo = [17, 64]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1]; + + /** @const */ var /** Array */ g_v_WXY = [1, 17, 65, 208, 1]; + + /** @const */ var /** Array */ g_valid_LI = [55, 141, 2]; + + var /** boolean */ B_Y_found = false; + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_prelude() { + B_Y_found = false; + /** @const */ var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + if (!(base.eq_s("'"))) + { + break lab0; + } + base.ket = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + base.cursor = v_1; + /** @const */ var /** number */ v_2 = base.cursor; + lab1: { + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab1; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + B_Y_found = true; + } + base.cursor = v_2; + /** @const */ var /** number */ v_3 = base.cursor; + lab2: { + while(true) + { + /** @const */ var /** number */ v_4 = base.cursor; + lab3: { + golab4: while(true) + { + /** @const */ var /** number */ v_5 = base.cursor; + lab5: { + if (!(base.in_grouping(g_v, 97, 121))) + { + break lab5; + } + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab5; + } + base.ket = base.cursor; + base.cursor = v_5; + break golab4; + } + base.cursor = v_5; + if (base.cursor >= base.limit) + { + break lab3; + } + base.cursor++; + } + if (!base.slice_from("Y")) + { + return false; + } + B_Y_found = true; + continue; + } + base.cursor = v_4; + break; + } + } + base.cursor = v_3; + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + I_p2 = base.limit; + /** @const */ var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + /** @const */ var /** number */ v_2 = base.cursor; + lab2: { + if (base.find_among(a_0) == 0) + { + break lab2; + } + break lab1; + } + base.cursor = v_2; + if (!base.go_out_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + if (!base.go_in_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + } + I_p1 = base.cursor; + if (!base.go_out_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + if (!base.go_in_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + I_p2 = base.cursor; + } + base.cursor = v_1; + return true; + }; + + /** @return {boolean} */ + function r_shortv() { + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.out_grouping_b(g_v_WXY, 89, 121))) + { + break lab1; + } + if (!(base.in_grouping_b(g_v, 97, 121))) + { + break lab1; + } + if (!(base.out_grouping_b(g_v, 97, 121))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + lab2: { + if (!(base.out_grouping_b(g_v, 97, 121))) + { + break lab2; + } + if (!(base.in_grouping_b(g_v, 97, 121))) + { + break lab2; + } + if (base.cursor > base.limit_backward) + { + break lab2; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("past"))) + { + return false; + } + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + return I_p1 <= base.cursor; + }; + + /** @return {boolean} */ + function r_R2() { + return I_p2 <= base.cursor; + }; + + /** @return {boolean} */ + function r_Step_1a() { + var /** number */ among_var; + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("ss")) + { + return false; + } + break; + case 2: + lab1: { + /** @const */ var /** number */ v_2 = base.limit - base.cursor; + lab2: { + { + /** @const */ var /** number */ c1 = base.cursor - 2; + if (c1 < base.limit_backward) + { + break lab2; + } + base.cursor = c1; + } + if (!base.slice_from("i")) + { + return false; + } + break lab1; + } + base.cursor = base.limit - v_2; + if (!base.slice_from("ie")) + { + return false; + } + } + break; + case 3: + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + if (!base.go_out_grouping_b(g_v, 97, 121)) + { + return false; + } + base.cursor--; + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1b() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_5); + base.bra = base.cursor; + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + switch (among_var) { + case 1: + /** @const */ var /** number */ v_2 = base.limit - base.cursor; + lab2: { + lab3: { + /** @const */ var /** number */ v_3 = base.limit - base.cursor; + lab4: { + if (base.find_among_b(a_3) == 0) + { + break lab4; + } + if (base.cursor > base.limit_backward) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_3; + if (!r_R1()) + { + break lab2; + } + if (!base.slice_from("ee")) + { + return false; + } + } + } + base.cursor = base.limit - v_2; + break; + case 2: + break lab1; + case 3: + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + break lab1; + } + switch (among_var) { + case 1: + /** @const */ var /** number */ v_4 = base.limit - base.cursor; + if (!(base.out_grouping_b(g_v, 97, 121))) + { + break lab1; + } + if (base.cursor > base.limit_backward) + { + break lab1; + } + base.cursor = base.limit - v_4; + base.bra = base.cursor; + if (!base.slice_from("ie")) + { + return false; + } + break; + case 2: + if (base.cursor > base.limit_backward) + { + break lab1; + } + break; + } + break; + } + break lab0; + } + base.cursor = base.limit - v_1; + /** @const */ var /** number */ v_5 = base.limit - base.cursor; + if (!base.go_out_grouping_b(g_v, 97, 121)) + { + return false; + } + base.cursor--; + base.cursor = base.limit - v_5; + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + base.bra = base.cursor; + /** @const */ var /** number */ v_6 = base.limit - base.cursor; + among_var = base.find_among_b(a_6); + switch (among_var) { + case 1: + if (!base.slice_from("e")) + { + return false; + } + return false; + case 2: + { + /** @const */ var /** number */ v_7 = base.limit - base.cursor; + lab5: { + if (!(base.in_grouping_b(g_aeo, 97, 111))) + { + break lab5; + } + if (base.cursor > base.limit_backward) + { + break lab5; + } + return false; + } + base.cursor = base.limit - v_7; + } + break; + case 3: + if (base.cursor != I_p1) + { + return false; + } + /** @const */ var /** number */ v_8 = base.limit - base.cursor; + if (!r_shortv()) + { + return false; + } + base.cursor = base.limit - v_8; + if (!base.slice_from("e")) + { + return false; + } + return false; + } + base.cursor = base.limit - v_6; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1c() { + base.ket = base.cursor; + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("y"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("Y"))) + { + return false; + } + } + base.bra = base.cursor; + if (!(base.out_grouping_b(g_v, 97, 121))) + { + return false; + } + lab2: { + if (base.cursor > base.limit_backward) + { + break lab2; + } + return false; + } + if (!base.slice_from("i")) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_2() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("tion")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ence")) + { + return false; + } + break; + case 3: + if (!base.slice_from("ance")) + { + return false; + } + break; + case 4: + if (!base.slice_from("able")) + { + return false; + } + break; + case 5: + if (!base.slice_from("ent")) + { + return false; + } + break; + case 6: + if (!base.slice_from("ize")) + { + return false; + } + break; + case 7: + if (!base.slice_from("ate")) + { + return false; + } + break; + case 8: + if (!base.slice_from("al")) + { + return false; + } + break; + case 9: + if (!base.slice_from("ful")) + { + return false; + } + break; + case 10: + if (!base.slice_from("ous")) + { + return false; + } + break; + case 11: + if (!base.slice_from("ive")) + { + return false; + } + break; + case 12: + if (!base.slice_from("ble")) + { + return false; + } + break; + case 13: + if (!base.slice_from("og")) + { + return false; + } + break; + case 14: + if (!(base.eq_s_b("l"))) + { + return false; + } + if (!base.slice_from("og")) + { + return false; + } + break; + case 15: + if (!base.slice_from("less")) + { + return false; + } + break; + case 16: + if (!(base.in_grouping_b(g_valid_LI, 99, 116))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_3() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_8); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("tion")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ate")) + { + return false; + } + break; + case 3: + if (!base.slice_from("al")) + { + return false; + } + break; + case 4: + if (!base.slice_from("ic")) + { + return false; + } + break; + case 5: + if (!base.slice_del()) + { + return false; + } + break; + case 6: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_4() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_9); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("s"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("t"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_5() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_10); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + lab1: { + if (!r_R2()) + { + break lab1; + } + break lab0; + } + if (!r_R1()) + { + return false; + } + { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab2: { + if (!r_shortv()) + { + break lab2; + } + return false; + } + base.cursor = base.limit - v_1; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!(base.eq_s_b("l"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_exception1() { + var /** number */ among_var; + base.bra = base.cursor; + among_var = base.find_among(a_11); + if (among_var == 0) + { + return false; + } + base.ket = base.cursor; + if (base.cursor < base.limit) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("sky")) + { + return false; + } + break; + case 2: + if (!base.slice_from("idl")) + { + return false; + } + break; + case 3: + if (!base.slice_from("gentl")) + { + return false; + } + break; + case 4: + if (!base.slice_from("ugli")) + { + return false; + } + break; + case 5: + if (!base.slice_from("earli")) + { + return false; + } + break; + case 6: + if (!base.slice_from("onli")) + { + return false; + } + break; + case 7: + if (!base.slice_from("singl")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + if (!B_Y_found) + { + return false; + } + while(true) + { + /** @const */ var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + /** @const */ var /** number */ v_2 = base.cursor; + lab2: { + base.bra = base.cursor; + if (!(base.eq_s("Y"))) + { + break lab2; + } + base.ket = base.cursor; + base.cursor = v_2; + break golab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + if (!base.slice_from("y")) + { + return false; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + lab0: { + /** @const */ var /** number */ v_1 = base.cursor; + lab1: { + if (!r_exception1()) + { + break lab1; + } + break lab0; + } + base.cursor = v_1; + lab2: { + { + /** @const */ var /** number */ v_2 = base.cursor; + lab3: { + { + /** @const */ var /** number */ c1 = base.cursor + 3; + if (c1 > base.limit) + { + break lab3; + } + base.cursor = c1; + } + break lab2; + } + base.cursor = v_2; + } + break lab0; + } + base.cursor = v_1; + r_prelude(); + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + /** @const */ var /** number */ v_3 = base.limit - base.cursor; + r_Step_1a(); + base.cursor = base.limit - v_3; + /** @const */ var /** number */ v_4 = base.limit - base.cursor; + r_Step_1b(); + base.cursor = base.limit - v_4; + /** @const */ var /** number */ v_5 = base.limit - base.cursor; + r_Step_1c(); + base.cursor = base.limit - v_5; + /** @const */ var /** number */ v_6 = base.limit - base.cursor; + r_Step_2(); + base.cursor = base.limit - v_6; + /** @const */ var /** number */ v_7 = base.limit - base.cursor; + r_Step_3(); + base.cursor = base.limit - v_7; + /** @const */ var /** number */ v_8 = base.limit - base.cursor; + r_Step_4(); + base.cursor = base.limit - v_8; + /** @const */ var /** number */ v_9 = base.limit - base.cursor; + r_Step_5(); + base.cursor = base.limit - v_9; + base.cursor = base.limit_backward; + /** @const */ var /** number */ v_10 = base.cursor; + r_postlude(); + base.cursor = v_10; + } + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.eot b/src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..3f826421a1d97b09797fad3d781a666a39eb45c9 GIT binary patch literal 268604 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 IP*6}%P;pKc_y7O^ literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.ttf b/src/scitex/_sphinx_html/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b4bfc9b24aa993977662352c881c6e42f99f77e0 GIT binary patch literal 639388 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 z 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•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

9P)i^ z`t8(m@_j7i`&h{Lv5@a$A>YSBzK>0R&QD*YKgWEmgq*&BoW6jZzJQ#*NPo^xUqDV@ zWOVb0g3Lt7OoYrt$V`Mp6l5l5_$j#KAu|y&6CpDZG7}*)5i%1YGZ8WqAu}ivC#w}apmaTEi*0^PB+_E)p*&4TOja# z00sv*I0YpVdv9?!aqq>J+lao6=-Y_Cjp*BmzK!VHh`x>J+lao6=-Y_Cjp*BmzK!VHh`x>J+lao6 z=-Y_Cjp*BmzK!VHh`x>J+lao6=-Y_Cjp*BmzK!VHh`x>J+lao6=-Y_Cjp*BmzK!VH zh`x>J+lao6=-Y_Cjp*B`zK!bJsJ@Nr+o-;c>f5Nkjq2N|zK!bJsJ@Nr+o-;c>f5Nk zjq2N|zK!bJsJ@Nr+o-;c>f5Nkjq2N|zK!bJsJ@Nr+o-;c>f5Nkjq2N|zK!bJsJ@Nr z+o-;c>f5Nkjq2N|zK!bJsJ@Nr+o-;c>f5Nkjq2N|zK!bJsJ@Nr+h%>+tZ$q3ZL_{@ z*0;_2wprgc>)U31+pKS!^=-4hZPvHV`nFl$HtXAFecP;WoAqt8zHQdG&HA=k-!|*p zW_{bNZ=3aPv%YQCx6S&tS>HD6+h%>+tZ$q3ZL_{@*0;_2wprgc>)U31+pKS!^=-4h zZPvHV`nFl$HtXAFecP;WoAqt8zK!YIn7)na+nBzM>D!pTjp^H%zK!YIn7)na+nBzM z>D!pTjp^H%zK!YIn7)na+nBzM>D!pTjp^H%zK!YIn7)na+nBzM>D!pTjp^H%zK!YI zn7)na+nBzM>D!pTjp^H%zK!YIn7)na+nBzM>D!pTjp^H%zK!YIn7)na+nBzM>)W`# zjqBUEzK!eKxW0|++qk}s>)W`#jqBUEzK!eKxW0|++qk}s>)W`#jqBUEzK!eKxW0|+ z+qk}s>)W`#jqBUEzK!eKxW0|++qk}s>)W`#jqBUEzK!eKxW0|++qk}s>)W`#jqBUE zzK!eKxW0|++qk}s>)W`#jqBUEzI`Blk~8#ywXq8{Glrtfc;X=wWXc9{-chJKl^ zUgmpV=Bt0CyL%*1+ z(z%pFd(yd-p>Zx{Xq-zqv?q2L#&?JvhDm>m#<`Sn9p_Sp#<`TCaV}+OoJ$!R=Te5o zxs;)CE@fz(OBovHQigtt#<`Sn9p_Sp#<`TCaV}+OoJ$!R=Te5oxs;)CE@fz(OBovH zQijI4l%a7hWoVpB85-wOhQ_&+p^wrymol#7#JSKomohZYr3`(F#<`Sn9p_Sp{x_-v zvClBQ5@*we#<`TCaY9{aoJ$!R=Te5oxs;)CE@kK`8s}2Rb(~8X8s}1m#xC5@*H(Wd zGZx{Xq-zK8s}1m#<`TCaV}+OoJ$!R=Te5oxs;)CE@fz(OBovHQijI4l%a7h zWoVpB85-wOhQ_&+p>Zx{Xq-zK8s}1m#<`TCaV}+OoJ$${MH=T)#x>8Tb1CCGJ_!uv ztaL7AT*tYTp|PVoG|r_AjdLkO<6O$nuh2M`a%fLFmohZYr3`&5jsFG_*Ksao=*#Je z(z%qOaV}+OoJ$!R=Te5oxs;)CE@fz(OBovHQijI4l%a7h<Ng~$-_(@X7VtThnYOg)}%blz=Ode+PFq4OwJj~=_CJ!@tn90LT9%k||lZTl+ z%;aGv4>Ng~$-_(@X7VtThnYOgV#oEj3}x~#lZTl+%;aGv4>Ng~$-_(@X7VtThgs~n zPTwKrVI~hVd6>z=Ode+PFq4OwJj~=_CJ!@tn90LT9%k||lZRRCxc-j#&M6Nwd6>z= zOde)KDGxJwn90LzDCJ=$4>Ng~$-_(@X7VtThnYOgz=Ode+P zFq4OwJj~=_CJ!@tn90K|_F%_%kcV09!A{pH4>Ng~$-_(@X7VtThgtlF!bS0(l!uu- z%;aGv4>Ng~$-_(@X7VtThnYOgz=Ode+P zFq4OwJj~=_CJ!@tn90K|c6z60OnI2e!%QA#@-UN!nLNzoVI~hVd6>z=Ode+PFq4Ow zJj~=_CJ!@tn90LT9%k||lZTl+%;aGv4>Ng~$-_(@X7VtThnYOgz=Ode+PFq4OwJj~=_CJ!@tn90LzIOSm`4>Ng~$-}IX@-UN!nLNzoVI~hV zd6>z=Ode+PFq4OwJj~=_CJ!@txHtAde%H|6*aP_!p?@1cOM7DvU)Rw#_q>><*d2*iQOA}AfxK6WqQo(zeyiX z8oM8pzP$PaLwjQnWL&2`kfHy<^#|#Hq`ydiiT*PE75c06*XXY&jXjX@6tM>~=?CZ~ z^ip~my_{Y_ucSXqe~$h<{a5r~(|<$%E&T=h@94j$SJCZs2fdnJLnr7?x+`@x_CO|` zq*^db5%eT4oe`r$Ok*o&C-qx56+7;SK$`1_fOS@A-V|Pku>`n=d-6^55J0&!Br-a5n!_e5B5*oWx zLSuJIXzWf2jom4su{$L+cBh2K?v&8joe~|P=zmLJjsH#>cNqVjG+oDz!O+;95*oWxLSuJI zXzaKMjom4sv12eacBh2K?v&8joe~b$*qsuu#O{=#eQ9?}XzWfI+86(= z?TVp&X?IF!>`n=d-6^55J0&!Br-a7tl+b^mu{&jGU)r4#8oN_MV|Pku>`n=d-F>04 zJ7s8J{8!7%LSuJIXzWf2jom4su{$L+cBh2K?v&8jof4{7X?M!dzO*}KD7T8st>SX4 zxZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH z;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`& zip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9 zDlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&a ztGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!y zt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl( zw~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F z+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cy za;v!9DlWH*%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH* z%dO&atGL`MF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`M zF1L!yt>SX4xZEl(w~EWH;&Q9F+$t`&ip#Cya;v!9DlWH*%dO&atGL`MF1L!yt>SX4 zxZEl(w~EWH;&Q9F+$ye+hlM;WR`Rfthm}06bMd05HAN*-47u#$(BJgnqlB@ZikSjodm9#-R`Rfthm}06bMd05HAN*-47u#$(B zJgnqlB@ZikSjodm9#-R`Rfthm}06bMd05HAN*-47u#$(BJgnqlB@ZikSjodm9#-R`Rfthm}06bMd05HAN*-47u#$(BJgnql zB@ZikSjodm9#-R`Rfthm}06bMd05HAN*-47u#$(BJgnqlB@ZikSjodm9#- zR`Rfthm}06bMd05HAN*-47u#$(BJgnqlB@Zik zSjodm9#-R`Rfthm}06b9f>^r*3dX1 zGc-=f41G`RfI1R+m^4nv42=^qL*s!;pKcR6#X1o%o|Aod0nW1q;Txgt-85$>K zhQBpZ z3Z?5fAu}{i$PA4WGDG8p%+NR?Gc@hZI}$0BH0{khB884b3Z?5f4={8!X{1onI3Y7M zPRI<66EZ{Ngv`)5Av5%y^j-9P`fh5PkrL@WaYANjoRAqBCuD}k37MgXU0+M%JivG* z&I1g+k;Vy`aUCaQhQKhQaZH zXp_bXnQKhQaay(2?*_)P|3KJ~YnB42^R#L*tyx zp(Ejx?;C1zN|RHXoYLf!CZ{wxrO7ExPHA#VlT(_pa`?gc4#_D^PHA#VlT(_U(&UsT zr!+aG$tg`vX>v-FQ<|L8v-FQ<|L8v-FQ<|L8jDJtldy-R{oYLf!X8e1aUP(@Aa!Qj^nw-+)lqRP%Ii<-dO-^ZYN|RHX zoYLf!X8fD@zsGk=PHA#VlT(_U(&UsTr!+aG$tg`vX>v-FQ<|L8NPHAyUi&I*h(&CgBr?fbw z#VIXLX>m%6Q(BzT;*=Jrv^b^3DJ@QEaY~C*TAb42loqG7IHkoYElz21N{drkoYLZy z7N@j0rNt>NPHAyUi&I*h(&CgBr?fbw#VIXLX>m%6Q(BzT;*=Jrv^b^3DJ@QEaY~C* zTAb42loqG7IHkoYElz21N{drkoYLZy7N@j0rNt>NPHAyUi&I*h(&CgBr?fbw#VIXL zX>m%6Q(BzT;*=Jrv^b^3DJ@QEaY~C*TAb42loqG7IHkoYElz21N{drkoYLZy7N@j0 zrNt>NPHAyUi&I*h(&CgBr?fbw#VIXLX>m%6Q(BzT;*=Jrv^b^3BP||j@konD+C0+c zkv5OCd8ExFZ60a!NSjC6JksWoHjlJ% zN7_8n=8-m!w0We>BW)gO^GKUV+C0+ckv5OCd8ExFZ60a!NSjC6JksWoHjlJ%N7_8n=8-m!w0We>BW)gO^GKUV+C0+ckv5OC zd8ExFZ60a!NSjC6JksWoHjlJ%N7_8n z=8-m!w0We>BW)gO^GKUV+C0+ckv5OCd8ExFZ60a!NSjC6JksWoHjlJ%N7_8n=8-m!w0We>BW)gO^GKUV+C0+ck+y$L+MLqn zls2cdIpt{VQ~kc7qp?Hv%Fw4=e?I;NJQ}-FlcxVoadb`ky@R8%6E&{SO27MXH1?n- zJ?53)qz@^n{RLHZx*FVbJ4zf6CH{wn=7`s+y>|1y35*ms)r1N0Jl zDZPwdPOqR>(x0V2M}MCFEBdeF-`}H+f8+Y!(qEwej{bXk72QsE(D=I;QFRTSpgZZV z)Q#A8nl$}J{L$E7nsh(ydQXpj*ef5QAEh6oAE%$7pQOJ{e~11q{XP2o^i%W?=pWKQ zqJK>Pg#Ic0Gy3QBFX&&=Plu*+S-&qd%{raGny%BV)A_4O)2ye=I-R*1*Jhp0T#a{{ z_0(Bu)>CJtSx=dDI&C$s&3ekLr-sw4r-sw4r-sw4r-sw4r-sw4r-sw4r-sw4r-sw4 z(>bg0{mpvHtfv}j)>Dl%>#0VX^;9Fxda99TJ=I9Fo@%67Pc_o4ry6P2Q;jt1sYaUh zlvz(T(yXT%Y1UJXH0!BGn)Os8&3dYlW>2gY!Q@Whe<&-X`bUCHVDP2zKa!Qv|x}4JGlrE=qIi<@fT~6t8N|#f* zoYLi#E~j)krOPQ@PU&(=ms7f&(&dycr*t``%PCz>>2gY!Q@Whe<&-X`bUCHVDP2zK za!Qv|x}4JGlrE=qIi<@fT~6t8N|#f*oYLi#E~j)krOPQ@PU&(=ms7f&(&dycr*t`` z%PCz>>2gY!Q@Whe<&-X`bUCHVDP2zKa!Qv|x}4JGlrE=qIi<@fT~6t8N|#f*oYLi# zE~j)krOPQ@PU&(=ms7f&(&dycr*t``%PCz>>2gY!Q@Whe<&-X`bUCHVDP2zKa!Qv| zx}4JGlrE=qIi<@fT~6t8N|#f*JksTnE{}A1q{kyY9_jH&k4Jhu(&LdHkMww?$0I!+ z>G4R9M|wQcG4R9M|wQcG4R9 zM|wQcG4R9M|wQcGMdRNBTU{ z=aD{-^m(MuBYhs}^GKgZ`aII-kv@;~d8E%HeIDuaNS{agJksZpK9BTyq|YOL9_jN) zpGW#U(&v#rkMwz@&m(;v>GMdRNBTU{=aD{-^m(MuBYhs}^GKgZ`aII-kv@;~d8E%H zeIDuaNS{agJksZpK9BTyq|YOL9_jN)pGW#U(&v#rkMwz@&m(;v>GMdRNBTU{=aD{- z^m(MuBYhs}^GKgZ`aII-kv@;~d8E%HeIDuaNS{agJksZpK9BTyq|YOL9_jN)pGW#U z(&v#rkMwz@&m(;v>GMdRNBTU{=aD{-^m(MuBYhs}^GKgZ`aII-kv@;~d8E%HeIDua zNS{agJksZpK9BTyq|YOL9_jN)pGW#U(&v#rkMwz@Z^hN;ls>2QIi=4j15O!m%79Y_ zoHF2)0jCT&Wxy!|P8o2@fKvvXGT@W}rwlk{z$pVx8F0#gQwE$e;FJNU3^--LDFaR! zaLRyF2AneBlmVvo15O!m%79Y_oHF2)0jCT&Wxy!|P8o2@fKvvXGT@W}rwlk{ zz$pVx8F0#gQwE$e;FJNU3^--LDFaR!aLRyF2AneBlmVvo15O!m%79Y_oHF2) z0jCT&Wxy!|P8o2@fKvvXGT@W}rwlk{z$pVx8F0#gQwE$e;FJNU3^--LDFaR!aLRyF z2AneBlmVvo15O!m%79Y_oHF2)0jCT&Wxy!|P8o2@fKvvXGT@W}rwlk{z$pVx z8F0#gQwE$e;FJNU3^--LDFaR!aLRyF2AneBlmVvo15O!m%79Y_oHF2)0jCT& zWyU8q@i&0u)0-Ke*v$CEX2vHrGd{7I@rlihPi$s6Pp>I*v$CEX2vHrGd{7I@rlihPi$sR^{iRXn)R$%&zkkDSR^{iRXn)R$%&zkkDSR^{iRX zn)R$%&zkkDSR^{iRXn)R$%&zkkDSR^{iRXn)R$%&zkkDSR^{iRXn)R$%&zkkDSR^{iRXn)R$%&zkkDSR^{iRXn)R$% z&zkkDSR^{iRXn)R$%&zkkDSR^{iRXn)RGn&zbd{S(kA#^w>v^-DH|u$` zo;T}xvz|BWd9$83>v^-DH|u$`o;T}xvz|BWd9$83>v^-DH|u$`o;T}xvz|BWd9$83 z>v^-DH|u$`o;T}xvz|BWd9$83>v^-DH|u$`o;T}xvz|BWd9$83>v^-DH|u$`o;T}x zvz|BWd9$83>v^-DH|u$`o;T}xvz|BWd9$83>v^-DH|u$`o;T}xvz|BWd9$83>v^-D zH|u$`o;T}xvz|BWd9$83>v^-DH|u$`o;T}xvz|BWd9z+H>jkr3FzW@gUNGwgvtBUk z1+!i->jkr3FzW@gUNGwgvtBUk1+!i->jkr3FzW@gUNGwgvtBUk1+!i->jkr3FzW@g zUNGwgvtBUk1+!i->jkr3FzW@gUNGwgvtBUk1+!i->jkr3FzW@gUNGwgvtBUk1+!i- z>jkr3FzW@gUNGwgvtBUk1+!i->jkr3FzW@gUNGwgvtBUk1+!i->jkr3FzW@gUNGwg zvtBUk1+!i->jkr3FzW@gUNGwgvtBUk1+!i->jkr3H0wpPUNq}PvtBgoMYCQs>qWC( zH0wpPUNq}PvtBgoMYCQs>qWC(H0wpPUNq}PvtBgoMYCQs>qWC(H0wpPUNq}PvtBgo zMYCQs>qWC(H0wpPUNq}PvtBgoMYCQs>qWC(H0wpPUNq}PvtBgoMYCQs>qWC(H0wpP zUNq}PvtBgoMYCQs>qWC(H0wpPUNq}PvtBgoMYCQs>qWC(H0wpPUNq}PvtBgoMYCQs z>qWC(H0wpPUNq}PvtBgoMYCQs>qWC(H0wpPUNY+?vtBamC9_^K>m{>ZGV3L?UNY+? zvtBamC9_^K>m{>ZGV3L?UNY+?vtBamC9_^K>m{>ZGV3L?UNY+?vtBamC9_^K>m{>Z zGV3L?UNY+?vtBamC9_^K>m{>ZGV3L?UNY+?vtBamC9_^K>m{>ZGV3L?UNY+?vtBam zC9_^K>m{>ZGV3L?UNY+?vtBamC9_^K>m{>ZGV3L?UNY+?vtBamC9_^K>m{>ZGV3L? zUNY+?vtBamC9_^K>m{>ZGV3L?UNY+?vtBmqWwTy3>t(ZEHtS`xUN-AxvtBmqWwTy3 z>t(ZEHtS`xUN-AxvtBmqWwTy3>t(ZEHtS`xUN-AxvtBmqWwTy3>t(ZEHtS`xUN-Ax zvtBmqWwTy3>t(ZEHtS`xUN-AxvtBmqWwTy3>t(ZEHtS`xUN-AxvtBmqWwTy3>t(ZE zHtS`xUN-AxvtBmqWwTy3>t(ZEHtS`xUN-AxvtBmqWwTy3>t(ZEHtS`xUN-AxvtBmq zWwTy3>t(ZEHtS`xUN-AxvtBmqWwSoEb~MiTI<|Im?4Lgtr<`3L`VFUF3;jm=j@a#g zZ0&j8^G$I=@3FNPxZWD4{vL}{$f7Dv6^ri>e>Ewp;@q%!f1DfklS9Yi#ISfhP7I6p z#93kKdN{pj{Uxq1rI#m-bHIWd=YYkv6TprQr4zu84W$#njyVDBSeyWszWQbQ4@u+f zucRNMzmYV~_zG6~3volo&OVXu;p`{l^}kv3t#Quq->iwhL?3!VoYMI>>wcc@Od6+- z$Ln$Gc+&Vw^r7*W=tJW#(TB!gq7RL~L?3#@`#QwXWCq3f*P1>Su+M!+AqkTFEeGL6E^vB}a z;}!JB&>us84E-_m$Ku()bLg>n_N0ma82V%AkHxdccZg?Cn&^+kvnNgT$Ku(OCi-LX z>_0yAIQrx0kE1`1{y6&M=#Qg6j{Z3MAVj|V-yze&^ScE^LBG@WsGJm^V# zv`+`2C(uuzpFlr>eggdj`U&(C=qJ!mpr1fLfqnx01p0}1_V~`|C(uuzpFlqm&z`=T z=ue_QiT)(|lju*PKZ*V%`jhBSqCbiLB>I!+Poh7G{v`U7=ue_QiT)(|lju*Pr@z?s zy+i3Qb|p=nPk&u2Y3h9X`&sci`hP`Fe?Kd|lKh_jepb@t_y3BX{(e@fO3$ADepb@d z`Ska*lBUk5zn_&fJ^NGWPoY1B{uKIC=ue?Ph5i)!Q|M2jKZX7j`cvpnp+ANG6#7%> zPoY1B{uKIC=zkydpBno6poa!4Y5XOo(D+MCq4AfPLgOzng~nfE3XQ+SH1xE4e%d`h z9ryg6p{L`XlctP%+C4w*o}YHlPrK)*-SgA#`Dyq3blh`#f6Az*2FSbZ)lp=Gw9EtKZE`ZdipC=@m2KnSE$l;npgTOR7umko`m^ZIqCboNEc&zP&!Rtz{w(^l=+B}*i~cP7 zv*^#FKZpJt`g7>dp+ATI9Qt$U&!Inu{v7&q=+B`)hyEP;bLh{ZKZpJt`g7>dp+ATI zJo@wK&!az&{yh5g=+C1+kN!OR^XSi`Kac)A`t#_|qd$-SJo@wK&!az&{yh2%=r5qZ zfc^sd3+OMPzkvP%`U~hUpud3r0{RQ+FQC7G{sQ_7=r5qZfc^sd3+SiNPobYeKZSk@ z{S^8s^i$}k&`+VCLO+Fm3jGxNDfCn5r_fKKpF%%{ehU3X^cT@zM1K+eMf4ZZUqpWq z{YCT_(O*P=5&cE<7tvote-Zsf^cT@zM1K+eMf8`@UqXKg{U!95&|gA-3H>GXm(X8A ze+m61^q0_ILVpSUCG?ljUqXKg{U!95&|gM>8U1DSm(gEFe;NH{^q0|JMt>RoW%QTP zUq*i!{blr*(O*V?8U1DSm(gEFe+B&&^jFYdL4O7P74%ooUqOEb{T1|A&|g7+1^pHD zSI}QUe+B&&^jFYdL4O7PRrFWUUqycv{Z;f=(O*S>75!E8SJ7WZe--^z^jFbeMSm6j zRrFWUUqycv{Z;hW&|gD;4gEFr*U(=>e+~UL^w-c|Lw^nZHT2ieUqgQl{WbL0&|gD; z4gEFr*U(=_e;xgG^w-f}M}Hmtb@bQKUq^o({dM%$(O*Y@9sPCm*U?``e;xgG^w-f} zM}GtT4fHqA-#~u@{SEXt(BD9R1N{y3H_+cee*^su^f%DoKz{@M4fHqA-#~u@{Y~^Y z(ceUW6a7u}H__ije-r&p^f%GpM1K?gP4qX>-$Z{C{Y~^Y(ceUW6a7u})99zsPotkk zKaGAG{WSV%^wa34(NCkFMn8>y8vQi-Y4p?Rr_oQNpGH58zKXtzzKXtzzKXtzzKXtz zzKXtzzKXtzzKXtzzKXtzzKXtzzKXtzzMAO6YZ5&));6KBvKn5K=%KN)8eWs=p|Q3J zjsNW#8f%--Slfig+9ovCHleYy3XPRjXsoP4V`UW@E3430S%t>RDl}GBp^3g0eJ%Q0 z^tI?~(buA{MPG})7JV)HTJ*K(Yth%DuSH*rz7~Bg`dak0=xfo}p|3+(SSvuSZ{xz8-x&`g-*B z=v#J^Fg|_2}!-*Q2jT-+;aWeFORi^bP16&^MrOK;MAA0eu7d2J{W+ z8_+kPZ$RIGz5#s$`Udn3=x-VRsWpE${EcxBKNI?GNrRX)qd6^TNh?~1zC+bJRJ}vh zJ5;?R?lZm`_n9b|VdZ(&)s(PoYcdB})s&}b+m#TNEdY7tq zsd|^Hcd2@ps&}b6Pt|#<&Qo=ss`FHxr|LXa=czhR)%mKU>q_t2$rR z`KsQn>fNf|t?J#X-mU80s@|>Y-KyTL>bs-rn})wTs*+x?`UAt?9n(*`GiiLEcs;&P z(wr8wq!q2{5$|u(7H!iG?b06Y(?RG3=og@0fPMk`1?U%`Ux0oA`UUY6-!yzdJVnw( zzaX9>X`){cKYK|N{et+}OPc5x#Lr&RM86<@_L3(0h3FTeUx5d`d0L<=v&dZqHjgtioO+n8~Qf%ZRp$3x1q=1>58syL*ItJ4SgH>HuP=i+t9b6 zZ$saPz72gF`Zn}!=-bdQLca+8BJ_*UFG7#MY!>wR>pe96)Ln#r5&A{w7olH-ei8ab z=og`1gnkkFMd%lyUxa=!`o-uMqhE}EF?#%UvLIfJez9l282w`Oi_tGezZm^u^o!9i zM!y*SV)TpAFGjx@{ry4zx#9N*Jv3NJGn&(amb9XE=m%7NK-C9SeL&R*;tu1hafeA$ z)d%7ZlcuUmR9&L#5>=O|x(4@s!LT}s_HUT zm#Ml;)n%$KQ+1iD%T!&a>M~VVMb$SAUlmnJQ~q3K7FU_YRq=h|_4qzX(@(-x@qLn} z1h^``PtueCSDD3CW^t8STxAwlnZ;FRag|wIWfoVN#dh@V=-bh^qi;vwj=mjzJNkC? z?daRlx1(=I-;TZ=eLMPg^zG=|(YK>-N8f?I1APbj4)h)9JJ5Ha??B&yz5{&+`VRCR z=sVDNpzlE6fxZKM2l@{59q1G26X+A@6X+A@6X+A@6X+A@6X+A@6X+A@6X+A@6X+A@ z6X+A@6X+A@JJENd??m5;z7u^X`cCwn=sVGOqVGiCiM|tkC;CqGo#;E!ccSk^--*5x zeHZ#J^j+w?(08HlLf?hH3w;;*F7#dKyU=%`??T^&z6*U9`Y!Zc=)2H&q3=fDjlLUw zH~Mb$-RQf~ccbq{-;KT-eK-1U^xf#Y(RZWoM&FIT8+|wWZuCj?N%TqdN%TqdN%Tqd zN%TqdN%TqdN%TqdN%TqdN%TqdN%TqdN%TqdJ?MMT_n_}V--EsfeGmE`^gZZ%(D$J4 zLEnSE2YnCv9`rrvd(iiw??K;#o}p*x8G44Ep=anBdWN2%XXqJvhMu8k=oxy3o}p*x z8G44Eq3=cCi@q0qFZy2ez36+<_oDAb-;2H%eJ}c6^u6eN(f6Y7Mc<3Q7kw}KUi5wF z`_T8H??c~*z7KsL`abl1==;$3q3=WAhrSPeANoG@edznp_o44Y--liV{o99&peMax z^`hY-=t*}b4SKvD^rSg0Xh|zt(<9#Bq%GQ}9onTm+NXoi61_w((M$9ay+kk3OY}0H z{o9Ajc=n`;UdFR0P4qIJJ!zts@$5+xy^Lp1n&@Rbd(uR&&@1!`y+W_hEA$GzLa)#( z^a{N~uh1*>3cW(F&@1!`y+W_hYxEkuMz7Ip^cuZJuhDDt8ofrZ(QEV?y+*ImYxEku zMz7Ip^aJPz&<~&=KtF(f0Q~^^0rUgt2hb0oA3#5VegORd`T_I<=m*dbpdUa#fPN7D zAo@Y{gXjm*527DLKZt%1{UG{5^n>UJ(GQ{@L_dgr5d9$fLG**@2hk6qA3{HbehB># z`XTf~=!eh`p&vp&gnkJ95c(nXL+FRl51}7IKZJe={Sf+L^uy?f(GQ~^Mn8;x82vE% zVf4f3htUtCA4Wfnei;2Q`eF3L=!ek{qaQ}U7X4cEYtgSozZU&k^lQCL%$CFI`r$%uS35M{W|pP(62+k4*fdx z>(H-5zYhI6^y|>CL%$CFI`r$&uSdTg{d)B4(XU6p9{qas>(Q@AzaIU1^y|^DN53BZ zdi3kjuSdTg{d)B4(QiP%0sRK_8_;h+zXAOQ^c&D`K)(U~2J{=yZ$Q5R{RZ?K&~HG$ z0sRK_8_;h+zY+aL^c&G{M86UJM)VueZ$!Tl{YLZ~(Qib*5&cH=8_{n>zY+aL^c&G{ zM86UJCiI)oZ$iHb{U-FA&~HM&3H>JYo6v7UzX|;&^qbIcLca<9CiI)oZ$iHb{U-FA z(Qih-8U1GTo6&DZzZv~z^qbLdM!y;TX7roUZ$`fv{bux=(Qih-8U1GTo6&DUzXkmk z^jpwxLB9q47W7-tZ$ZBW{TB3F&~HJ%1^pKEThMPozXkmk^jpwxLBAFKR`grZZ$-Zq z{Z{l_(Qie+75!H9ThVVtzZLyf^jpzyMZXpOR`grZZ$-Zq{WkR5&~HP(4gEIs+t6=A zzYYC1^xM#HL%$9EHuT%jZ$rNg{WkR5&~HP(4gEIs+tF`Fza9N{^xM&IN538YcJ$lP zZ%4l!{dV-*(Qik;9sPFn+tF`Fza9N{^xM(zK)(b14)i??t~C{a*BY(eFjS7yVxJd(rPjzZd;J z^!w27L%$FGKJ@$0??b;2{XX>j(CKE9Bj`uakDwnxKZ4#wZ=yHRo9IpSCVCUS ziQYtSqBqf-=uPw{dK0~g-b8PrH_@BuP4srqzjL@9^rW#*a=0Dzq_InLxE=I(J?Kee zmu6_}lMIc0lA*CrGBkE+hQ=<<(AXy#8v7(eW1nPb?2`F2u zN70X>A4NZkeiZ#E`cd?w=tt3yq8~*+ihdORDEd+Kqv%J`kD?z%KZ?E-^zR>D3VPBD zRxcS|3VPC=NrN7*2R&&{3tG~O*7S(?H))HuX@_=ckH+7&j_)=IT}EFUq)X> zUq)X>Uyf)0{^8|#_N0lv9M7IK(U;@dlP3CdJbThaUyf%_n&`{%>`4>-82T~vW9Y}w zkD(t!KZbq`{TTW&^keA9(2t=XLqCRo4E-4TG4x~T$Iy?V-;aJj`u*tlqu-ByKl=UX z_oLsBen0yC==Y=FkA6S;{pk0j-;aJj`u*tlqu-DI0Qv*y51>DQ{s8&|=ntSjfc^mb z1LzN+KY;!K`UB_>pg(~A0Qv*y51>DQ{s8)e=ntYli2fk@gXj;UKZyPy`h(~XqCbfK zAo_#o528Pa{vi5;=ntYli2fk@gXj;TKZO1e`a|dsp+AKF5c)&t51~JV{t)^@=ntVk zg#HlvL+B5oKZO1e`a|dsp+AiNF#5yj52HVf{xJH(=ntbmjQ%kC!{`sAKaBn``oriC zqd$!PF#5yj52HVf{s{Ub=#QX3g8m5lBj}HyKZ5=U`XlI%pg)5C2>K)FkDxz-{s{Ub z=#QX3g8m5lZw395;ok~+Xt0uIG^YhEX+`VM53BmHst>FBu&NKo9mZGV4wI&;562xQ zO;sOJ^$}GcQS}j3A5rxYRUc9H5mg^i^-)zHRrOI-A64~HRUcLLQB@yR^-)zHQ}r=b zA5--)RUcFJF;yQ^^)Xc+Q}uCGA6NBpRUcRNaaA8z^>I}nSM_mKpHTG)Ri9Ax300p^ z^$AslMq^TY1RDDs^7gc>x)fZKLQPme!eNojHRee#_msEX8)t6L#N!6EBeM!}q zRDDU+msEXO)t6O$S=E!fcs!IFelcuV)AO5|=&!~Dv)ibJ|QT2?fw2wXBqbluV zPuHpHq^gsuPO3Vo>ZGcZs!pmpsp_Pvw3Gb3!)YgZsH(JYJYAsp>O8cVYJ*v{a=yaW` zzM|?Ys=lJ?E2_St>MN?gqUtNEzM|@@s=lh~tE#@L>Z_{0s_Lt%zN+f0s?u)ipBPTN zsY9bGX-0Ee(2`cP4o$nDlcuV)=Q(MrN_(D@rmD2(Iccg&d!Bz{IPD*Pf9SU*jjE&> z&1pePTG2W*?fXrds?sjsq^T1CW z-ML9qRob2V{^7LGHfgF#yK0lBsReUlsybKIxvI`pb*`#&Rh_HqTvZ!YZB(^U z)kaktRc%zYQPoCO8&z$Ns-J3Xj;he8N*cf66&kVW2(kfjj0+_HLhx0)wrs0RpYA0RgJ3}S2eEct*YLt>aD8Ys_Lz(-m2=Y zs@|&Vt*YLp>TRmtrs{2~-lpnps@|sRZK~d;>g}rDuIlZo-mdEHs@|^Z?W*3c>g}pl z){dV3KN>6XThCiV$4-AL^sTGsg}!ZdEcETG|2*`6Tm2`Y-*Ebt&~K#gSX~p>@AUe+ z=y|@+`L5qhx2*olc+WST{;#3m?E8ER{Z?Q7HrL-yzhm{M<2~Q$`n%|Nuf9EAxxn|l z(EGQZekxx1zSVyb`j1zCB=iU9KV7{nu78;R$m&0f>mN&c)?=$b82UJUDt*thK2N`p zp7gB$mcHj%UrbMW)|Xs=nf^U}diBb9{TbIM>9h2?bU$Z3@A`$+E8_YT{fE^bkL$0v z{;IFONMBn0v3ULE)o%}dg}&y1`e6(|23nNZ(=okF35g^rs_XR@VOu@Bf+8H^ue)eDz;?<^8TN zQF|%9Y;{|_=kjzNzkwce-|%d@e#<4PlW+MT{Sduj^}8A?LmLu(=#!`abLh(HKM(!u zH07bc^~z^b?a-I$KhUqPp5IuB-%=k5{ZM*k_%~L+CA5|9WVl0rb9F;ppHAPo@s`!g zLx<=lI!b>l-9!9tdvv4m`82!67wDJMb2a{+K0{AZQ)`?`*YR8M@jc_W;DdYi-$#EQ zkKgydG;}O}avqPL?Y|HGMtYvtFQ8jv3XjK6-6f&_*egFk|7m=;$K$6iG=A$pzEAwt ze|(4dP5-!#-|AorvIglC*1!N?*9q*|AhO0BF-pCUrqP_#M*TKPq_al-2W5dn)G_Q|0mr4 z6Yl>B_y2_Zf5QDg;r^dkpYHz&_y5HDbpKDRPxt?X`+vgyKjHqLaQ{!lc?IupJQ3#= zBu)4KM4VR;?|1)Cxc?{I|8e(!-2ESS|Hs|`arb}R{U3M#$KC&N_kY~|A9w%9-T!g- zf86~acmK!T|8e(!-2ESS|Hs|`arb}R{U3M#$KC&N_kY~|A9w%9-T!g-f86~acmK!T z{|Wbh!u_9c|0mr43HN`({hx6EC*1!D_kY6upK$*t-2Vypf5QEraQ`RV{|Wbh!u_9c z|0mr43HN`({hx6EC*1!D_kY6upK$*t-2Vypf5QEraQ`RV|7YX=FK>J{lK-;Mx5bP; z8&C06=r_`L`09D|0=hM(`Pn$>BHkbO9JO)J@%}jJBCg}klder)jr&j6!|AJW=jr-V zdU?`Fm|(^I$93HEkB6?%zovgnKjW)krvH#M(j)1I=x-#A90*pNaS`7we0_Q2<@guy zn?hr+Z)oiGZKU64Od7vy(0DoiO^ny$-^8S`*Eclw`i90{-_Y3W8yb6kLu0ppXzcb6 zjotpCvD-g1cKe6MZvW8O?H?Mu{X=87f8&jz*|m+(xiw#FywUiPHTQ@9OwzOCZ^xW{ zZk%xY^P$`5Mf4X|-xseOqKA{lX|zdyiT-MOPnM^5@q`Yw7NJ)gdt zF41LrjNVTlpbyfA=)?4p(2Y8_F;4eQ*QrYz*Q73O)TNEOv~gYP(nej{s7o8;B;NE& z>cGZ0WjE>X($t5Iak6gGKcat3QwKK2$+}7ZjHW(pjFWYfrao+p({z)j4s49mbd#nI zY}A2`IZQClco-AjPqcVrVeb3Q(=>)4s485VUwl~Y>ZQ3 zlco-A^6Z=99OIvl>(qfwISrZ|N-Y5ED-6sHg;O+O)< z;uPYfsXv?aXOsSH8cO}y6lW19O+P1_;w<8%sT-SgW0P)digSk3E9s|Vlg@0?nN2#g zNoO|c%qE@Lq%)gzW|Pir(wR*C7gb*`za@bY_#zY|@!cI?59i#Iuih_7TrM;@L+$`-o>B@$93X zbkviMdeTu(I_gPBJ?W@t9QBN&o^jMOj(WyX&p7HCM?K@H367fJs0ogGicwE7>M2G& z#i*wk^%SF?V$@TNdWum`G3qHsJ;kV}81)pRo?_HfTpj-={*$w>j(-!sC-evCKVAK2 zas9*eM^=9_u78aF)apNv>sZa6ef9dASARD2)})O$;+4Nz^IujshyKm#4~PEk>Xy*s z;gr8x^CbOTyz{T(t|NK`|Q7pQ@r9maf(;GKTh#V zddw@oNgqzS!FP_cyy7~}@(LZkBC+B`uXO!E`XA{p(qE##On-&`D*ZM3>q+B8uXu_$ z(JSc(=q2=0dKtZ(UO}&2J~p=!5hj`Y?Tj{wMn3^pg|k zm?ixv{TTf?{RI6a{cZX?^mpm+(ch<^qJKdDkp2<bcG{U zIAVn(RybmXBUaWVN33wf3P-GP#LAlFh!u`lS(6;G66e~*cjJf^j#%M{6^>YmbL}?8 zSCb=FIAVn(RybmXBUU(Kg(FttjJtSeoN<>lIbtQwxJ#NGu@Yz8B~6Z4i8Jm(Ibww) zRyblM&bZqguO~;W#2I%!C$BROIv&bUjO9I+B- z+$BwpScx<4k|sy2#2I%D~;rcl}2*JN+UU9 zrI8%5(nyY2X(UIiG?F7$8p#nWjpT@xMsmbToU?asXmZ2~N33wfN+UU9rI8%5(nyY2 zX(UIiG?F7$8p#nWjpT@xMsmbTBROKFksPtoNRC)(BuA_?k|S0c$q_4!Pm_ zIbtPF_KTk!j#%M{l{nciy^w5m_5`n0M~tNL`RT9f|Y`D^nv zYhA5b^M~>OfBkyxn)UI2ef@gfnzyX^(=*p+t@-XXe|6@1{hD*uymIDx!vPw9 z<6C~_%=N}KfB2Sb&RlO=^NykKSaa5zwd>;p`n7iq{pgwNwQGil|MblDx;5tx|Mi*c zv({WOeB#XY`ZaHFTy*Ao!%=Niz-aG!-nd^;f?|5tD%=M-<-}AO#{_*|A2dl|lyAN#n z&a1y`%X=?=&wI9peD9VWAKY@_gO}{zyFI^V%li&y+v^W)`DY)RoVeyglUHx~&fNzN z6hC;;MTZX`-ge-Fg*R=xdjGzQzH7_j$pgE$TsBcpREH+6+42+n^8;JnzkT1tmT!LF z_5=IBdE1uvOyz&@vVRQ!1le9SHE{#-1-m2eZTLA(u-Ta z{^}2<2l}BaF8iLX-?Q!FZSURoz2E!&?@3?Y^7SwOchJ|1QwzR#>&5?g>&4&qLtFl* z=iD0wJL7R`5BfiSci(BU-m-nmfol6T6Z^JT*_Qn~|9_ho4f|hr_5a;uo&3>jw(r|= z#o_JMHT$pLy(P`!$MzqX+`r}hliB{g2d>^dap?cX*W079)nq~!6FawGJ+Woy_I;Ck zKe*+ZiF$HZ9zCDTzuxeJ`}Rfe<3TU>EhqlNfr*&L|KjWaDE%1x-1e&8et7GS?P+Xh zzE}1C{h9dsgtzRQh}+om&6i_*b3(@BPS(3)PCtDhS~NLPZ;94ly}g>)d2nys-Hz?? zGZr^n?~fmoVt?GqfywRZ3s>*Ycg9Q)Oy;|`6xHPZYVtr7|KOI%16%6d`w#BDW=lOW zv2ROxaPmO>d`0u~x`^+ZANb}ihj+)1)4_DV!QZj}n)q3chupH`;DIfNRbDe$7kjsV z@axd{&bub_?R(PzClA#B&+5I~t6kBodh$aP^|mcn#Lw&1d$-s1{m^7Rxnu9dfA9FgqL`?zjs{-1W!L1P2~*fRap1s2wR3;9um1X= zCbw5xc5kot?ax2>^|9=o*p)i7ZOe~F;{seKBORFB7vCk_X1#Y}B8wN#OnvYE{n?g% z+q3BJ#G%P+q7RDV2O(W-Kfoqi4sWmj`waibyweXtJix@EXxf43?5^FZ$JgwS@09O9 zu;u?^?>(TbD7v=M>YM-(bH)rJcusep1c=Ve=_ZJvA_^v)fngXKW^e+@ESPi78FK;y zDrU?%VL-xQP9P?Ng7$r?YB%Bi-tT+w|NnQbyVhNIW<6b9)fIQ`+O=y}_35!q4Gm3` zQ6+RqTQesx2nB|b)M%-lP~Wq;i4SMa9j(>%4K0HIQDND{7TIROsMTG^*48%g9>ov= zTTf^mw=d{j4^oL1wl+86Sxakk+vwJ|X7EFE6K@L|+ge>y-%#HwNyGWPsja24wgr7M zu#vNJz{OU$FSS|lJ#TAWb8U4iI%GYMcN61^7dEc8VIr@_e;#Aq1;;i`0v`mKOr}TI zx`wF}$Dx@#q_MuSw(I0tE<(XNT>RAwS;TAB3Ia~<+Jf!}o3wPz^0c5seItz~aDH7| zbzLo}pTnanNa6;t{J%c!iiS+CZD`L1Q7Mx?&`B zt)7J5sOEe)7O8k!M}xuYYX6h)Mf9c#|Gn_rNGfh3{Wl74*hE_Xe_)QGw*8w4h*hyB zHjzzb&8(i)v2m=Gb!FYyXx1IB&oV5F|DJT0Ls$*sc15hI>=2}EVAZUVjX}s@*2c!e z*TSa3SH`uT)#3?vMP_zG>3ih>P~sz!g+qF<|VKOSK`&;NDKlN|QH!mIy@lQ-~W1!~ASuPbOiS=4h3YB^f) zYdS6}5z>m5H6hjzxZ`oxfDj(57QFoLTHk`aB*$|8Nn6c%b1a^WhTB!#O~BIzF&;Uk zIDge4o#gX+!N(goybbl_V}$d)9M>7#rM0YOQ&1<)`#dK;PX2TH0I{SrI8wBo*LpJe zqXup|+BU5hFZ(}Hx7#LTxT~nMqy`_|!!Ul+cI>vkma=y__l%?Q#K(r@A})nES8<-~ z3fggQ;&f~S= zi}T<#+;e%yM}?HHqeY1=2<38((^1lj&pfcHuAA0M-=aC&a2~uI{|ST z1-&+m7M@2Po=TqKZLL6#8_M8gLGlo92fyQWNvYW)>R&6Q+J7DE4JfZkJma!&Jks*o zaamE19^_+m%zoEwRe#|Dk!TX6*y(ePwk~T;nUS~eTaT&+kkjnr6 z+Kc?@hJN1AdOnkkMJ~0-AswSK7b&eLApdcqXE=ZJayI6Z7Chy3l4D!?+R&<2(Jmg7 zkN2ka{laU(V^xDcd0xD?IUQ22;VqT&fsbDEByfYBKR4NCcgzSw_)GX!N4cy7| zO#8JCIo6_tR+PuX|EnDDhPb>Yy#La?I0YL}`;?~tPt0RnTT5jur-_sY0dxlb-vdwU zL>(uhCbBovIE|d z@G>@?o4DlSecJ|?%P-0MIjU_H=*fGF^EH=5|0yl+XIW=XTQ1?GzrW}qIo4B77zkai z0x>u(IDc_I=VfdvH8=3_23?Bh%6pup6`R_Epf1iSn58h|8C%9ZlHN}4)|9>i>3izMzy*D;&++yA{45G>>> zW67V4{nLw$B)j=0j`tp{(kkq}dng*al+bSQlIT~Wng`zj^|X)i3S zzEof%XIaIDAia#uVgXx@#ZZpr*;?4h9adCaR>Cs059`bJXJy4>x3Y*YCzTFLN2Qap z8SAffRyJopvH?mLHc;6@*;3g`*;?6#y`XHXY^Q9m?4azZ?4<0h?4op4c2#y$c31XL z_Eh##_Ex$n-IaZm9?HJ#MWv_GOWBVNQZnoyC9C*suoAFOm5?2*${tT6AI2M@el#%H_%x%9YAh%GJs>%C*XM%Js?(%8klR%FW6x%B{+6%I(S> z%1q@>_sc}#g+nWH?RJgGdT%vGLNo>87v zo>QJzUQk|C<|!{JFDtJouPU!8uPbjTZz^voZ!7O8?<(&p?<*fDA1WUy^OcX4Pn1uU z&y)qq=gLB5k+K*&G`lHF*k){JwmG|>&0$Zl$JpcSW%detjy=!rW%sczY!v&R9l$!X zN7$pRlAWWpW6!1o>&Fgc$FbvCM|LKg$IfQwLcmuuml@1qyR!?FrR;omq4EWr&Yo4i zRK8*so59XfzGhb|-zeWI-!W79Uim@!QTa((rYu)}R#qs#D8DMdDZeX!C@Ym!%4%he z@~85bvQ}BA{H^?>Bq~!CRaG^%1>2Hs#kOYKux;7)Y)4gB4b@aF)m9zVRXw$X+EMMK zZl-otH&?r;Tc}&ATd7;C+o;>B+o{{DJE%LdXVjh4omnTgg8jmtgm}M%-OYAkyRs|T zmFy}uQ{6@F$}VTuvK!f*?0R+`drI9^-A&zH-9z0|-AmnD?WT5D_fdPO`>H+FUg~~o zM$M|e8mOU~Q}b#;EvhB8x7tVTtM0G%Qx8xNR4dd}Dt=2+ty9OT z_38=gc(p;Dpf;*a>O}QKwOMUZTh%sok~&$PqE1z(sVAu?tEZ@^s;8-^t7oWZs?*gO z>RIa9>N)DU>Urw<>ILeB>P70s>Lu!>>SgNX>J{ph>Q(C1>NV=M>UHY%>J93R>P_m+ z>MiQ6>TT-n>K*D#^-lFJ^=|bZ^VpoZ>evq@36bnch&dQ_tg*7 z57m#<`Rd2&C+er_XX*m=b9JG*NL{QhQQOs}>KE#l>R0O5>No1Q>UZk*>JRFV>QCx2 zb-DVpx9jpz}hH8gshiZpu!?eS-;o1?}k=h7tq;`~cw04Yk ztah9>N;_Vw)@roT+8C`?8>`i6wcn>Ik8cWL;Vr-rZnY4>XnXb)-+ zX%B0&wAtDt+N0WI+T+?B?FsEk?I~@p_O$kl_N?}t_Pq9j_M$dVdr5m)dqsOydrf;? zdqaCudrNy;dq;a$drx~``#}3p`$(IweXM<=eX4z?EzmyK7HW&M#o7|BU0bSsp?#@+ zrG2e^qkXG=r+u&ep#7-*q%G5yYd>o%v|qGewcoVgwLi3#+A3|ewnqC?`%7D^t<(P2 z{?QVh>58uEny%}HZt9k9>yGZ~p58(4sCUvg(>v>%>s|CM^ey$R^sV)6^lkO+^zHQ> z^d0q`^quux^sf4@`fmE}`X2h8`d<3pdN;khzK`BR-&gOc_tN*%GkR9{^*|5xoSxSU zdQmUwz4bnNUwwbQpMHRTpkAR@>Q#DKkMvmYuMf}%>Vx!y^uhYU`Vf7neu#dkewaQ? zKU^QKAE6(qkI+ZzN9jlF$LPoE$LXW=ofGT^t1JI^mFy| z^z-!#^b7Ti^o#XN^h@>2^vm@t^egqN^sDu2^lSC&^y~E-^c(e?^qcit^jr1Y^xO42 z^qKmd`d#|n`aSx+`hEKS`UCod`a}A|`Ye66{)qml{+Rx_K1Y8-e^P%+pQ}HuKchdZ zKc_#hzo5UU&(mMhU)EpIU)5jJU)SG&L3lg11GCv3>^Js1`<1O^f3Q{TcJ`|Nrv8@x zw*HR(uKu3>zW#y!q5hFRU;kMDME_L(OkbdXt}oOV>5KIxdb_?<|3d##|4RQ_|3?2- z|4#p2|3Uvz|4Cn_FV}z8SLna!zv{o~zw3YKEA>_SYJH9Vr~a3|R$r(8t^cDZ1~U{x zH8evv48t@m!!{hlH9Vt((b4E+Y-V&eHaEH$TNqm!TNzs$+Zfv#+Zo#%I~Y3}I~hA0 zyBJ-KU5(w0-HknrJ&nDLy^U^0cVi!;hq15G)97XFXJm}5;TwSw8aX3x6pW%#GI|?* zjK0SHMnB^K<3OXrs5GjKvJn}v(cc(g3^WEA2N{EngN-4^P~#BeP~$LTm~pr<+&IEG z(imZkG>$TkHjXilHI6ez8OIydMvXDr7-Q5LV~sjvoKbI_V2n2!j0r}g(PT_CPBfa0 z7NgZ@GbS06jVZ=dW14Z2ak6oWajJ2eak_Daai%fdm|>h{oNb(AoNJtCoNruUTxeWm zTx?uoTxwiqTy9)pTxncoTy0!qTx(osTyNZ9+-Tfn+-%%p+-lrr+-}@q%rx#a?lSH+ z?lJB)?lbN;9xxs>9x@&_W*M`MM~p{}$Bf5~ImQ#llg3lVT;plu8RJ>wIpcZb1>;3y zp7E0Lvhj-Xs_~lfy77kbrty~Xw(*YfuJNAnzVU(aq4AM1-}u=0#Q4+o_{#X&_{R9w_|Ev=_`&$m_{msiEH{2ORv5n+zZ$<8zZ-uTD~(mg zYGaM@r}3Au)>vo!ZTw>-CNmXNH8oQ=4bwC&(>5K`H9fO~+0pD|Zf15iH#fVOTbNs# zTbWy%+nC#$+nL*&JD59~JDEG1yO>?gUCrIh-OWABJ6?KWnmIFX7R;hqGJBhS%)aLSW_9X%*o~ybE-MbJjp!SJjFcKJk31aJi|QG zoNmrA&oa+8&oR$6&oj?AFEB4OFJc$72iY4qyYmpMF)ubRVWZ7U&CATo%`40+&8y6- z&1=kS&FjqT%^S=c&6~`d&0EY{&D+e|%{$DQ=AGtU=H2E!=Dp^9=Kbaa=7Z)#=ELSJ zbGG@2`KbAr`M5d9e8POve9D|_K5af@K5IT_K5xEYzG%)fUou}dUol@bUt@opud~E_ z!+g_x%Y55>$9&g(&wStf!2Hns$eeF}Y<|Mtf`Q<5^HcVw`I))E{M=k}~drwG(^S+S%I0>T2z3?Pl$6?P2X{?Pcw4b+fu#`&d1!eXX8W zFKa(5V`VMh3arq|S$V5q6|Iuh+v;QWwf49ASqE4LS`}8MRb`c}$cnB0)&OguHOM;1 z8f+bG4Y7t=hggSNhgrj{!`WDCxOIeeq&31CX&q%9Z5?AB%RXZ7vk%zAtj;>l8f6`C zRa-UIXlsmBYmK$)tZ`Pob%HhCYOp3)jaHL2(K^v;wpy%KtIe8ZO}3_3Q>|&%N!H2M zDb}ghY1Zl18P=KBbZdrnmUXsuj&-heo^`%;fpwvEk#(_kiFK)UnRU5!1^e2%(z?pJ z+PcQN*1FER-nzlM(YndH*}BEL)w<2P-MRzsj(o!AvyZJi**NPi>u&2F>t1~6^?vIC z>p|-w>tSn_HQRc`denN%dfb|0Jz+g*J!Q?cp0=K`p0%E{p0{4GUbN;}FR`Djm)Xlf=+>o@Cn z>kn(CwaQv;t+D>J{<79u>#V=oKh{4Avl5%ximlq3t=ooe+LmqGj_qRG1LjlPV=Z~OwX#VzHudb`_7V1x_6U2VeUyE) zeT;pqeVjeYKHjdjYwXeX7`xUUYuDN1?0WkId%WFXPp}*9CVQfNqTOt_*sXS(J;|PI zPqC-k)9jP%lkHRNQ|;5(6#I1h4Es!bx;?`_%Rbva2b(5S*-7jacCvl0eV%>3eSv+U zeUW{!eTjXkeVKi^eT99ceU*K+eT{vseVu*1eS>|YeUp8&eT#joeVcu|eTO~MzSF+T zzT3XXzSq9bzTbYpe$al%e%PL6&$b`2AGIH|AGhb&PuNe|PuX+rr|oChH}~?#p{e}Id{gwT-{f+&t{hj^2{e%6Z{gb^6zou~-JC&Wz&ai*BSJ=PU zzuLdqzuSMqJ499dV$95dYbv&no)6wbV zZ02-k%kZ}MT&Ih(g|nrzm9w?8jkB$@owL2OgR`Tv6Z_8D+1bVE>g?+5=Irk5;q2+` zErZu_ILU@2RH{h6;7p7 z#cpxRPUOT+e`kO*&>7?$fj8p53b?TgPPQ7!2Gu~-%COC~wlQYpd(P?&CoK~mJndD4%rZ`ib zY0gQ`$<8Uxsm^K6>CPF>na*@)hI5v4wsVeiu5+GqzH@vUQv2%%YsdJfgxpRec zrE`^YwR4Sgt#h4oy>o+eqjQsUvvZ4ct8<%kyK{##)49{Ri(TW~?cC$s>)hwu?>yi< z=se^+?96gzJC8VzI*&PzJ9C^ToF|>9oVm`^&NI%l&U4Q5&I`_q&OGNO=Vj*==T+x5 z=XK`|=S}A==WXX5yl4BK^S<+e^P%&RGvE2x`Na9u`OI11eC{lC7CDQZC3q)qsq=;N zrSp~ZweyYht@EApz4L?fqw|xq%vtXI?5uEpaej4vbAEUJa8^32oYl@6=TGM^yf3%T z`P=!&NnGYCuIg&8?i#M?TCVLnuIqYk2e+f!$=%HD>~8LMakp@{bhmQ1cDHf2b+>c3 zcXx1iba!%hc6V{Ry1Tl&xx2f2xO=*LxqG|a-0to^ZVz`~x2N07-OtUqS=V<1H*|Au z-YvLAx8(MA`?!7G{oQ`<0q%irgE7ku?cU?w>)z+y?>^u@=sx5=?9Os$yN|e!x{tY!yK~$p+$Y_q+_~=4?lbPQ z?sM+*?hEdV?mYJ;_ht7L_f_{b_jUIT_f7XL_igtb_g(ir_kH&R_e1w1cfR|v`-%Ih z`}~FK@wV``^tST0_O|i1^|tf2_jd4h^mg)g_IB~Qdb@hNdAoaiczb$#d3$@^yzbsU zUJq|yucz0`+t15*SDx;Mi+%RAdU$2-?M&pY3{z`M}9$h+9P#JkkH%)8vX!n@MD%DdXT#=F+L z&b!{b!MoAB$-CLR#kD}es?cL+u>)q$w?>*o>=sn~;?9K9KdyjaJ zdXIUJdvm-eyeGY$4boBu>)y>vG=`jc6)NE6u z7B$xChx72^6uFurkILk-IxarH1pE@3V?-J_%}v#fnRu%0#8!pNs2s4ktZqgBt@R2$n!7q{EIwA zu_$tAz-@`gF7eo<&>J_pzIk-pgs}~^Q}l7Xh4pEDvze@*kslN~jK`tQ+D3jdy?(UW zAZbzynvBZ&C_n3GjRu?|#ri}%(p!-c4@SXRA63ozsA@LgQ3Dj74N!PC2&}gCWre7B zHblL%A?lqCQSWTXlZQNc$dl)Ia!&0mr*@W8JDcMvay&&Y&nxR^3NiQaL^+-)&lBZ& zB2N8mo+rxlM4bFtPX2737sLA?%ljb9$)Dwv&lY%;LO~EA$Z`)ScD9%`Csdxa?t<`N-o6Jv}IF82(vf5}= z24M!yiPs_brpBh0j$`U;n{m3mMfhaag^=8waKo%*oG^5H%!Y-^CO~!lwXd@k3 zg8Fa;_2CNY!xhwrE2s}wP#D*Y`r;R5v#_O>U?i+vr z$LHG|pKo(~zRmIZHpl1N9G`D;7b9}zd@%c8F<0*1H1)pqleAMRn zWSirYZH`a2IX;MUe6r2){?GCL&+-1x@&3>8{?8S}@X3~|czn(RInDw(66ly}dCz6C zaumT83s+Fk6zcE?bha zE?c5}Dx_@7R#3VMsz(LYqk_^^Q2CWqUL~cgq;e~zOwLwPx=JdylF~<%e@ywuGM?|t z3Doyxem+ffKFM~UWVTPT+7CrNvXPuH{i?i_LREPwWvcR0x|qeElHx%lv(sbNxV;NhbL;R(u*OKFKJbWRy=b$|o7+muQTWtnx`#`6Vh}PP!RiPQq}h-%3<2 zjX9rWm|voHk}UHpsNZNz`XtkQ8k;`JHlJjhPh-`uAi5Io`!sg_3Zf^;KEFcHGh4>W z8nPR%;77QkU2sJ|!WH}oSF{VR;1jr_AK{92!4>7g743s7`V+3`Pq z41}NBE!Q9LQ@iE51AZz$pz@`x%$B9BgiGa1nF&9&H>7gq`UBzAJ}Fb-r}ojDRhIHA zTb6PQF6ATT7W`CCDWBk{^in>-PxX`QoNQUjDY#TWDVyP^eB@l1EvKr8lrQiTeG0^f zQm!DJ@|SWWTbAPwF11UJKlq7Wa{R$h{Z&ErkmD~~mg5gD(MgU!_^Et3{@|zj%JBz3 z^^ep&;HUEBIE0_dt0exAI!U%HbrQJ5A9BuxpURhWFZ@)#)KTE4^5t9%Kha&z$?y|h zDn+>&pL8If=5(KQAHNb4S&=K-#Z-dPtnRN*DRRpARifr_1;yYBPJk7dZv#m`My0|noVTs zL0QlR>s^^Tpwfa^rVgmopiF+MeGtpq265gLW*o{c&X~gbl6q6ON{5vuEmCwnij)-% z%CZZBSX49n5GF^_0d{}hLcyhk?GZmSRqnltI#g99{ zDB3)gKSijoH`F&*lP7OZ#P6oSk}98xo27V5rrM6>p z?WBgLI{up%_(2GlN3LtGZfKpj{i#ILZu^Q#EY`rmnK)1o>b#3^O5&Vcq12+-kVc2DTh%gl*D7VA< zARcMdCcd54`$Y5&4~4hOrlw(JmUnCLQ#G}`sKSQZVyEhs(e?OInuam8cp_?_7xd5P zI*MPSk=4s)Itd?DEt}n}rn!3b_}W%_>~|)A8X@S&18V7U*h%=(hq810Y|gAkeX@Dp z)6f!I>Zib0aBBJQkl;@6N}=G6!H>68HzS~Ab6a;WjK2;o80-8uSl|&1B-yLz+gunS zQ1DYxw4^9FsVGV*7I<0My5m>T+LGYHlE|baQk4W3VoM2eN+NAZq{WsK4-sigJT1h4 zxbn1qhNp#9UR-%vKf}}d8J-rqXyVG#Le1eNb8HVzDVnfa($837v=gQZ6MMHqTE2FmFpT*k)*R+-@{+Ua}Gof za!rFU$^Y0x6?~6vRC47w!(J-+CKs7p??L#|Lz z8qE`hi06_M>2o5zT(iJ>AM+=9kwaeOkQX@!9)`t4JQbzqMe4jrEk-HqBK&DVq%DZF z1(CKOsE7?>{#2wbh_nTfR<@`p(h8>Yiy|%T=7=vi4wemZFVYH*gH1z(h*k@ZgLQ(3 z2#)gw$H6WkLPT1@aj;0}4P%;GMX(T9aWRgymNvO-kQeM1(DWV%B4CS%cL0n~QXKm< z4Pd{NhhwoN1YNc)jW1Y42{8{>2r{_58G&Fz?9hsP-i$ynVIY_=5KI^dCJY1<27(C# z!GwWe!ay#{F+!w3%}C_}{z`XjeI0%li3`GxC${0YvM@38d3%iH9J%`UBihRJrRtrH zrPh>}`RE6cpuf=>go z1P18{ktF9@fUL8$$iOdW0|;{pr_qsa*-6a{@o02NOAP!Kyez@Ff#BRgaBh&!0-X!;w+X+%CuccMk~oqUB)B3wxFS2aB0I1S zCjmCs#g&g@Y_N+fABmx0e{8LbdoBU6tuC&76l2R!Tt!;J{@67XAtJ4i!Pq$5ta@}? zYwaiu;_A_S?h-LXEbgMP;PH zDC3i==u4`i;{{dW3NpYIWPmGGPd^sD3cpkpeOgHPv~crjLE+N^&X-(LQIJCvu3%@l zA|JRSpNfJcKiurrT=rlHj}mTN9wi&JX>b&85*$bWHg+1kKK52MT!6^98%p?hp;5eX zXqpkVE{OSnhhoUDVrsxPs<@Zb$`Tc`Byb|ROvhq`2D4o5!OsUX)L?!U(}YxgvAZfl zME8nmA{5g^C=`=W8o!|u#Wr7F@y%r+LvR*{+>(O_LNyvkA%zaD<8X>dhP61*`PfJl>3RM`4gmlkF zWGaqm$>_@^DNKU$c{yL!2V)GFZ9>uHW#J5qV254|WNAdHTEu)(- zS=2O$3TCA36>3)G)J_?V(>U}5*@=c@6)%}Mp!G~Z>yLn#H=tFqPbM3mtVDj921Qv6 z3QUAFVaoLqnj+_ovef)Bk&5_mDZbQ%;1{A3@#(o-nZPgR1h}F<;imD@a%k{XRC$~{ zeq{t2gmfR{UQX;mkYB%`pi?faMR2gZ4 zfS)QOO%d>OF2+8yxN;GQoo1P1z(pr^o5hun6Kpn%E9Y-)H;b#N2@xbBb9|JG9W1;j z)#A5SYj~_;))7K-y3BRFV%T**U$SXSm}!v|+&c)nx?!g(3t zBl3xMPk;T0r4ae7R!>Kc$nFJNTt?3N2UEJ0wePD90w6hqI-TAiQ{h_=U~Ox~;7a75FsT0b|-GSeMzIxQB+$q{82&9XR)$)mw5n-UQTBO+Zy zrDtib&Bi{GiDRpLRAbF)MlzR(cq)=S6>X?SB(2{a$laK)Boo8xBayLC2(eRJR^5{#_U|B6>5*E*LkYn8@8%sNV5$*6rw6hn{j$TANc`=2@ z>;2T7+2HFTB`o7tJeOF|%v6QUP_PhZb zQfX0ZwGC`cKEci~7zphY+(W~XHWDM+K#XX^FeZr=(}rQZK3t}c<*7$>F%1*iV2o)a zF_v-}%_B0<;;k1%9l34;!0(M3iI>*@#ucoH|4%gs|foWFy+ujnc6uPmdy8&^?n~-!GNcQ0n!eqSreP z9oL3wsJU%ILv>p#9@g_C)E&s(nC*$(Q)P`-$dQz;*(jB+a+eQ&8uio@*pMfp3S|x) zk-8#ZNDEn0pAP%_l0%@t2`Pn^kdm05p^~fVY$VUqVE9T(#1t>4{p?ttpT%<;2DHB& zlSGb5gA1d)H?#%6XFX2PTRUuAlk6HgKM>J=cSHx;t4Je@$r2yZ`H>(ln1{(OJ8Yva zOHcLCt`iQ{%6^lld(a9RAGB*8FFfl@@rWTP#CSHMjr53A#fVhIh*ZNU zUo;QjP!m5}p&ic8lyl`-iZ1BPG})!>C(lPAYoa-6uTddm4ws^1I5E+1!9>PzuFG^B zz6mP{zLfhI*@*Tra9lxh0qp@p(Ivkaw;60#3qLkx$R#eK-Tx?618Mg^k|qS4sH2(| zBJ)V07n(;(@*TN>e9n;@%P@>?%DY(9s>aEa{Wz)1%f&P5k7AWMQsn22+>nt)JIfu& z6{BP`@@!g0I;*7Ply)`!RFtGT44s~c>9j;FPj_WwIxP{)B^2ybvR<*=*MVOOuCO99 zj}i@bkJ=!`k0Na*8_B~=aEa}(d0b6BSS^Kr^?Geo5FRE4NeDU?5z(=Th>k-(Xobzjx$8*QA=72W@&F6v$pJbsW)Q{DLbURUYV26Lt-SX z;bi<&iGf>PD<~ntA-shfN``~RCH!!yqtjze#f&$4Ll3*7*Hcj@PmLlZ!vksjKsIu| ziAcANNY{->$BoicPIP(=hn8iv;=rtxgA$)f;1buYmHklrF9p-l$dHVOAsxesNLh|Z ziH_*FM??nBhzyXC+>VE`M(w4^$ESBKu=m6(1hUg}I(8M2vK5h%712@7Fg>h6+rKab zQhHk0a{B}V^Y+;KQ9@J*FN{nG#4-@dAr^bMVzGy-h|DdPxDP$?D%FNme8GrtET?c4 zIdHQI-#rjlkwd}v>Ne`Ox=pEveFw8{gY3g_l9lD=W?212KHU0_dr=c^eaAh?p7dlA zg^GG`3p`>-Y30)yGqMCi6-@IdqLOMCkxCcQ8No1Dsn(w$7$KAs1NuiQGEsV*tduw9 zewu|B0tAE93kKN?Eo{J#{nwL~i*lg?>5v6Z-*s9aPYP_&$v&3b*enuq4<|igVuDXf z5LlcOr;YoZ7)Q$ zy%0$y3Ca_-CzV=q)FE7U4o({q$!RS@Z%X-+d!S6or7zwUqZUc!Cz1!Hvr#HV=rCVQ z`esaOWK4$zW1?eB6p4wRF&(;#)9wHCXcis%@H1tvX@fE)>KdjxEgcw)q*VzTfUH}2 z{kBAGV$T=awTbV9Kr+gfrpKX4jf-f)jA){a(qo3}ho+z)R%uzYMdapThdO*9E(i6S3WrCL&d47mTLs{k@GF-tIQK5DoTYKrU0k_z@pP7{vTi?n=4 z6!#)6-x0;VNXt!oxEE>pZYb_WS|Oitew>F0`Roh%j1%M{M5N_AN_Z;La=H-vw+Z$) z+JqX|w(%ga+cpwZ&;v^2^l#Y=@GjWFL*lJ{r*}(1;i@N;f3Q z9E{y=kq<24l%57adO8$(-DIgJPL|v;c>{MilQ-4jhNa7*25vO8;>`f8bpUTCu zIaTV6Q#WKPsuRlblL_fCY?Mw&spLstEJ;PD)OsLUiB)MYCM3I12sL7wsJ}aHlbH`G zXyi-#CH#^QWl}iHvL=xBQqL=stSgf>p-juEvXp&@C-We ztTG*!^JOPxvgz@=LdG4+-)3k$D~5X6|pPcF5ak$(o_disx(sJ?3kctEX^rm+&sqqk5Os28MK z2R~Ju##&5cFQ!ePm<*;d8BpV@g2Ok@L`yd3cd6Xj&^AAvbZCJa)4D9C*9T%+NXBGz zifP7=N$HA7lEkD}#iUupWUh%xvxrHc#6>}KRi zTd?K7_}8}xIym(b8C2rbfJ2&aOu9)-({h~ZC?pADIpVSOCF;wmBpcHd5R*wDmL>

jMR!b#?U<|yF|9shnl7^G$qrf!hjcPOq%-d!?d*i9 z#v@m$nK0e?pwp%y+2jIQ4opnaHb)06GIX#4t{^>JIeUleZD>-N#|y$@y7SX%i{5n$ zCF5s8I(6!&?}(&l*~thH(tCels?@EohZOQ5opKG+^wb_dJ^N0(v7ww+(M~b@XYkIl zs8^QGs0Zo0W|fs*WA(%)d~B@==PhO3>0G-{Cv3B1NzO{zVxyUBLU`R)T)7s77j8w$ zKn}@FAcr0{n+r}g4h!QHV|_J`C-f=2fGf)(n)vBLoh;c=s`=1~qe!wZG$_gTQEHqf zi%=x(ka#YIVI&V4V97w*sH8dkq>a+Bh-f%P>FSLvO%a`BiqeA$G1n$@wDiFNG2!Fd zW{%#J3o$+ zi!$@H^APYeHi$tv3f(wQ)>U!v3@WVTQXDsv{lX8NA(ZNp<*VO3>4`X@MR6pj1afl+ z^^glG98;6eXi8(Y9~g&oNK0PsiZ$EGxtY|1I% zRLs+wI-rpg1e}g}u_nlqEh-2_3rM95=yxE3P{x!a5NFOrI98AL7uME4zWte zOOc!j*1J?E!R7hXR!wi31Y+%wrv*8FA3{(+gw~5AvKs1%93k*EA1KCmfvO zSK6;ASMi=N@H1t&%K4{U#amb4r^;{@eS!s+s3C1qmSd4SDH&xt}C^=v_`XA5FITM#^25Ik8B>)8Tvq)%_q`1Hn7AX|a)Cpp%q*)JfIa!?LC z52shhy43@?J>0 zBXkfl!+&K1*`>2TKMn?;yiy9m_XU1>7*8a(ilbtFfuwdwb6`mCTL-c~1kV>zo=;^H zSq^cGSB|$-O3|KOK<1}__U?jI^6`_2eo@HpqTv1_Kgo^|8b89mQ55q)QAqwGf0F~R zeDn4d`7vT#IfoPl-xv8YV%(>x#S?y#5{IZoNrLN({3InpL~6nFMShwcAtE(D&5nCM zW{Uj$B(5SYKR=0kk(QsI#J$L0*lCKwPE!XWLy=atL-2J`(6K1^x+wU% zDEPW4__`?gx+wU%DEPW4__`?g8fQ{@&VsLtg0G8$uZx1Oi^5J*6w@-Co1&czj zDDsoPeo@$IibAFpg%m3a3wlvl(2GLm7Wu(Mye===%g?OiUZmw`)^RUrC8TYUAMZto zXs@uE7lqZlC?suBaA8sKT~Y8`ksn6HVRb=gA!UpFEeX7eFK8uXY*FY5MSf5m;i6pr zmIUraS|MMH{4EKD@U$f%T}v5W=Mq2Eg)2{6;>Wab`XHL-B}vi~ev)Z8Bl5TR#1#$3Js1L4Fe0vCL|nm$xPpmsMaSR@ zX2MmZ<%}5M!}8)P(sD*bh)ByB5%(f3iP$W?-kGJ>X|w4W%K{Vy9B%X(Q<#z@_|A-i z&m6hiknkh>dR~F>@oIiu(=EG<<1h zgAYHu%C&5g_#*P^)g6W22T#ycA%u1AP#jkq=0EQ-<ZgwfE9) z`EFO@e@XXD_p$iDw)?9+&h7E$-b?ph+H(e;<$HDMwxrvVUbps|+v~Ia9@_7h%s!bh z@ZmpmSLWsH_5PN@&cO&7((6{_k_oO3uI70KuLr;JwB443-SAR)xA6F|8-E^73m=o= z`LpvVhnEukR_I-rSeVGu74GXjxck`N&vhT$b4H)e$dkMK^tv_ptxvhnseK;n^JU-8 zedE3j2TrP5T7GvxX286GI}YwOgdH+(Shr#QhFy4gJbcO#`6FhG+-+oeV--h3ht!9U#F`LhYzp7;=ddgA=%B@MT?EN#8M?f6N1O&T+KugUAC>@(%` zDfa=309>c$r(TNx52r4gmKPzX!{yKLWZLOd5jJhkltm{Ue&)Ox*Iu~uMH4UXcgdxf z9(UOum;HEoSB}eXzv;MAz`4llykt4M0PbtaYwQh_ z@ow^?dO-53S_K>mj7T0;$0oWt)V^{ix(dUI0fT{qfg!+9;85T&U>I;XFdR4nI1(5Ej0BDXjs}hajs=bb zMghkI)j$m}2B=Mzm}8l0*5Q5}P!InJ%r?j4z5$p3Gy+Y)MBqfA8F5;WrWN;Xz$Ex5 zBh3`tp9GwoykMRJ+>%T&A7^KobJ%U>6Ui^;lk8gaDcsLZelnjuK)B0X$M!b=Mp^%`oh&_h-!g$HdDDv7NUJ})!5WZ!V+~}@ z)*yD9bx`u7H8}awIw5(*8V@u8jle|UM4%aH0nSh6S{DEpBJD-M#lR)NrNCvt)ybpQ zHNdsNb-?w&4QyBIMz}WtHv_i-w*t2Tx3e9sI}``s5%?S55IEMli*0Y+&GxYF!LxgT zkCLU<{A8&;fbDD_le}X;mi%fz4$J|b0Guo3cLoq4!i-p3A_co4ZH)q3%m!s4}1W82z&(02R;Tq0X_vj0~P?E0}FvalK1VE z!0KeVy$1Lb_zPGItONc|mOE4i4o^-|MkOCA)yW4+P1352PA*fHC*LZ+B!8-LvRECR zys6eEYt$KRcZ~iA)JKz_)W?&b_0y9X`c=saW5;BT;V1P*0L)7sFcv3k%rk&1fvb`= z)@H!4WR0^fx!rvrS>-;Mtirbu|EF4y#Wx23UCsNkEtLa+v;{-iX3C*#3uPGV{D0Jn z%h=}n6|B?$c5Ai(z29bIk}p8>)u7q$pxIxb)yL{Xkdluk3qY@S(B@-nP4W%C5V4hA zVx8^Y%(DBi&Fl)cyFHkB_NmE7pwS9^5$!e6p0_Cp&Cw+{Zen%bFDEZ_yWoYs_>hdA#@;U0lIb$_A zV>NRAaeZAbNj^h;KGd&B7J@TYgEKw_XM75-SPiaN4X#)Xu2>DOSPiaN4UYH%9PtId zCb$s|p{MQje@w@n!DF8x*Be+hXgMai3+?!mO-o)uTMkhQ$s(nk+^77UELBzjza-zF zMBZx)(4Onjp36b0YeA_6W{+eMdafNkw~bv)J^|&rfO0M<*TvpH`5QgBC#csEJ@^iK za5=ul*gN@+^8&c|chLVgQ0*6R=pUfipD5vbl<*x&_#Gwuh7!KF`y~HBU+j%JycVHn z0S_h15aV0K_y#e4w=0rFHSt-K)yxJu0XqPoFxv^}3UmXyqxX9xD_PIvbJh#k56C3T zST{ZqAP3}uLb8|@ffB$=?}M%xM!VZL60aW6?3T_#|2xKwP9~b}( z1O@>I0fT{qfg!+9;1J+Y;4okqa5yj=I085l7=e68!aWM^(QuD}du+0R9fvxNg8z7+ z8mIwfM+0L3P>GF&TL+B8vwGkJU_8(OOaK~zCbVTDa3atQe+$qGnzX^ijL#+mQ-GTca_8P>!7Pt=KH^aRJxD~h!xE;6ymH^E(D$fo(En4UIgX=F99!O)b9;|SFP^AK0ps(U!W(@3-Eye2!R}s2MRzD zC;`2JK0se!f1n?50B|5s0f6pS6;K9-0Otc202g8&x(K)!xCFQqxD2>DSqW`tCA6KD z&~{cr!&wOpXQg!ua4T>d@JRBx^(gQd@Hj9BcmjA5cnX*cJOexnJO?}vya2oi%mZEm zUItzPUIktQUI*R)-UQwP-Ui+WJ^(%hJ_6d?fPI0UKrdiF0J6^ZF%yPB4k!Rcpak>=`T%`_{ec4k zNL9NEZhv3^FbEh73_(6a0mv>JvdcaUfXuQXv+N^*5ddVCeG~wh1+8|OeH;K;WkXik zH9##e7N`Rtqio118#2mu^X<^)+o8?3Lz{1hHs20yz8%_pJGA+Bdr|U( zy%<;mv;#|lFMuzBuYhlWZvn_``+MLA0J6>g30MX!2Yv=t0KWjg0lx!(FvVWU@a-r- z17M+Y3;=c?#{pcx13Ca5fz6X|oi4x@z?Q&Pz}CR3WSNV3-Nn4_Ish~<*8?_B7P(!3 zEr2b7tpKe4-EDwvf$f0plOMddF;BXfy%%9t`~$kpLd+U}LCSvx{o#A)4@)7<|H26P z6MBk*NI2J_-O&`o|-MkSvr)j$oip#gmh9c3kS{XLP(waDQOB_32e(?1Pm@Z>&7H2K_l|@e*p`q85G7mOoLG_jp^d>gcPVn^Z$r z{}H<70njb?NA3Ec^axfRG6|=EPX^WdwmVY;{GA5GygYh z0s71aeP)9`vq7KPpwDd3XEx|F8}ykC`pm}4L)LT)aLv0Lt+}4Y%1OltSp^x9{$(+bpR4QliU`0#tsWC5+9ROtR)klU|l_pj`4SnL+UVz&_1x>;`0+eK10LBsZ~rlljoq*Fjfb2VH#~boI5+dDlYcT??IeEvo@W17m=(Kpij+ zs0U5}#sdw&1fUUU23mkt3PV${9{4tfoG=33~FYhg892&>^jSPd7# zYPb+q!-cRKE`-%^A*_ZA&4YnMfy01dz~R7f;0WMIU<5D{I0`r#I0iTtI1U&E91m0j zHNZ*9LRise!HPD^0*x)u*aD3$(AYw6TcEK88e5>T1sY?F&cYa-g)uq{V|3R4#onEO zS5=;UqhBGAWP@`n(ArvUYinyAT8BDooe*(Gt)kM_R;qPYRP10&>wsg?TG3jkI7bA> z24@M#Adp}t2vZW0;LhGVVP_{KA$yl~ek(+!ecShK-*evY`_8$}#r40|PRL&C8SeXk z|DXFA79V|)kG{x9U*w||e6)g(CirNAk0$tNf{!NnXrl1G@b$t!!u{dHZ1G{X_%K_1 zm@RtyCOis{!Q=3JSY0?BUVxeKBD@4IhdH`4M|bAv&K%vDqdRkSXO8a7(VaQEGe>vk z=*}G7nWH;%bZ3t4%oWaox$r*BgZZ!k7QzRx2o}Rq_z)_g3aX)2{g=V=FiUS`>8&ii zm8G|`^j4PM%F>8&iim8G|`^j4PM%FNDtpAK} zoAK>O{}$hVUJ0TcU@xZc#j|f>uQg))hoWf)udc`JQ4Vic5w!`EwPCWFesvJ#@5;ip z82umS?et}j`2Hb=>%nk6<`1{SEW_bod6iGI9P2Sh+LNLjN~0%~dqUO|q6|kP#V}Y) zC4=L!?GoR-NPb~j@I5#>yi4xjUO9n3$OlZ53%C;lZ-evBGA6$iZ(S!_^Cv8PZ{GQ$ z)%frgvA8YoM{q%~jSS9{GB}UO;N0cO-}mHwJ^5fy-kVBDdiv}ki^DsIED7(F$$5Z} zTxksTZDXjTjgt;DM%v#P=_q5Q?->gnOy|rr7CO>c=wM@^gN<|UGS0cnIOi^7mOG7E z4m3^~OAGDE)@O?Xd&mauqK03WN86_8uwW!zbeyQL8!dk@-M$x%^k=$#FS>m%x_vLY zeIK?rovmF?UyrA+Z(v{7YM~bfnf421dSz}0Ltz+~@rld$#DksS3-CqQ1@;WbiX3A_ zj z*Qhs+p%9OS<6smV52N7(e>2AQM1OY@oD8SHsc;&c4rAdAIMd&r<@$Zsvt7>#ACciH zk>M$k;VF^fxi}af{_2ySzBrsDl1&oHCW&N|f-98qO1KKH_VYw_yw>%)@RHzqm;^Tf z3z4-ck+mrfeg!weui-Z^8GZ}DgPY)HxFwt{YctvW*A(+#Q$@%df;)V^Gn_DBX|wW< z4DZhSUifIoZ=~XY$`z<5BeYXgCGV z2X&G087FE^8uW8eX4#%%k#mA<&&B=LdyD^{;^(`=OGMJK=Gvx+q7!6!X3Fx+l;xQz z%QI7!=QUZL5?P)SS)LMEo)TG}5?P*NS)Ss*@q+Whaf2s^j}87E+!Veu_~vl-;9Fd8 zb&Wja?Qo{dPf5S0Eb@7A_y})#WJtN+Rlv$HKBPVzFY7Z-)@QP)J&7lkiriC0?x`a8 zRFQkC$URl$o+@%r6}hL1+*3vFsUr7Ok$bAhJyqnMDsoR1xu=TUQ$_BnBKK60d#cDi zRpg#3a!(bxr;6NDMeeC0_f(O4s!UT{rYSDd6qjj=%QVFc-hp@FJ(vx$sReUjZWxzo zipw;`Wt!qLO>vo~xJ*-ArYSDd6qjj=%QVGhn&L7|ahayLOjBH@DK66#muZU2G{t3_ z;xbKfnWnf*Q(UGgF4Gj3X^P7<#buh}GEH&OdaP(YRq#3kL_oo_grT~8O(vX@IK6g`LF;M!UwPj7Q<5b5GtVxs$oSq{u5SP?Q)(iml+x_Gc;ai zXuQnOc$uM+zhTT_;cGHOugMI(CNuP!%+PBxLnSgpB{D-LGD9UYLnSgpB{D-LGD9U; z_K|*;{d{<_%+SR$Ll^fm?#`}Xf?dLKGDG8JhQ`SZjguJ~Co?ooW@y~M#L7PmCs7TP zsD?>Y!z8L<64fw?YM4YdOrjblQ4N!*hDlVzB&uPOEX{aXn(?wU<7H{a_cQyouGhi! z@C*1Q{4=)yo&UQDZiZXnR+s{}!R>Gd{1NVlY4D(D{s|s|C{jG;`ZyHB6A(p?r(K_c zXTwWAjv}%&m&npwB1?0LEX^gdG?&QITp~+TEK5@?OH(XMQ!GnUEK5@?OH(XMQ!GnU zEK5@?OH(XMQ!GnUEK5@?OH(XMQ!GnUEK5@?OH(XMQ!GnUEK5@?OH(XMQ!GnUEK5@? zOH(XMQ!GnUEK5@?OH(XMQ!GnUEK5@?OH(XMQ!GnUEK5@?OH(XMQ(UwvoGeQ-S(aw9 zEX`zDn#r;>lVxcp%hF7irI{>CGg+2qvMkMHS(?eRG?Qg%Cd<-HmZkBwZ&(j$$UrA_ zg;UJsPBE7|)m-jWbGcK^qbmB5PaT%Ss zjLvu&o$)d{<7ITl%jk@k(U~lxGg(GwvW(7T8J)>8I^+6P*2lAeD`=r;KDR@JS|l2! zuzNj?6U`2-q`5okkacugFWq4@YJ|TJ4KZ81zfFAotZzT;o0n2iExvtE-YBm;Kh4XI z#|8!BS(SJeWq-aTb}gl(mQYg5sK$hNw9=EJxv)DuDVptVA7b?q?q80(-lCwU;*;B{ zr{DKyhrSp-%Kt_wO%qkLBULnQ%f&l>$U{1w}-W6N() zK(A}_HQITlww)h*RSg!Y!6Rz0ts4AA4W_C=hZ@XO>ZB5Ht;BI9{z!?_N*v9tMWggL zmG~JYenx2vls2ujvz0K!B2Oyep-LDZ7`<;lpxcHk;g^-LND0R%;r2?{rgY1d?meY@ zE7(zK-i>;JE~%A4YNA3{(f}(xIZ5|MS+lPx!NZ9}mTBUkQyPT_J$12%bda_FCx<&e@Mf#_;(d*jik0Q{4BG5r1 z&_N>5L3;QaJ$$JizM4KhQ*Pb_F-$)Bby{xy5*+Ldy)% zGR^uSt5v$xFsto*)NrvH=G3rJ4V%<%nUeM>+1HhOv$!Vssogw#ZwaO zXg_(6{n^y0u-qtSsS(;T`HyJEeU-NC)Rvu|v|jF_e>QvQkHc9;C=-Iu|F^ywSyEPZ zG%Xjo+8wGqdzojyV}uyZuz%qB6`sGy^OwjqHYr1!GPEf}G`i|jjyL5{-c-xJ*i~Vl z^4u%4dzTs9yN!_c3+K7x2P~yM?^qZW&T{7k?mWkx7rOIocb@0YE8V%(o#XD@?#?-F zm~!{$-TirY&$)Zr-LDIFQ09cYce;DDjwH&FMk@l+?z-4rKXlg`cdc~SE_dDFt{dDn z=WcV|ZEkcocX|{b-DPdT-DTmHV2fExhv5Gu(yX$(e0>(G1e6z|oUdEX1;YR0+Lv$5NEdG$eN{=dhwj}E?M zh0|rYqp0W^neZ#I@aW(N@I&|!To9ZX{1|=$6N0h9PhBta`=7xja1Bh6%fF5H-(gkg zUBR)z-NC_m`vwQ)?H8Pow|{VM-oe3+(_9}2Mi0I^7(HYM_)hTSA^UGG>2M~T1>c9W;T#wT=fZg~9<;a_nW1K6h89^PQPc|? zp%1clbLv?X}`( zw`@TzRH%gt|4SRV+&H_}IJ?(4yVp3o*EqX3I0}x2W8hdg4o1Q8Fd9yPF%YfgISEdN zQ{YrM4NeCus*JOHjk9}=vwMxRdyTVuMUP(N>|W#SUgPXu(WBS+xYu~M+gP{WShw3) zw~Oy}$O5Njfzz_UX<6VjUr6)lI-V4*@rnFlEq`b{sGwL1pa^0hgJmYU z*Lb1Vc%j#Lq1Sk!*Lb1Vc%j#Lq1Sk!*Lb1Vc%j#Lq1Sk!S2XIS^SbH0Zd$IMmaC`b zx?}k;7=}O*#9$~4gRNj|*gotMZMtOkx@fsBTCR(h>k7U?f21%(Io+`YlP=|HF`l*! zPaDe9w&Q8Tw9uvj9TM?#3NOfS2SeG$P_}VSVXrx|Ay#EY@p1F2p*?uQp*&$Xp72ec zupLhri#xtwG>SqxKB(mdTNT|Xj^1y^?wQ~$e6{QUSZThjH2V+ev#(&YVJX?Efh zpYq^(cgR!zuPOU6LE+#0&q4hw+&=x^{W0Q5j5rb_j>L$+#(pEQUmo@wiTy@y`E4vU z5=)K5QX?_cNDMU+Lyg2xBQerQj5HD>jl@VJG15qkG!i3?#7HAC(nyRn5(7nR?HoRJu3B*qzuaYkaCkr-zr#uQllS7hxK}VoF{+Dlh5|#37&kJCtt9|lRsbdsI{Nn!9kS7 zkAegL?%Pqh5A^MGeEa*pJdHO(&FZazWeKWGK{vJ}} z6Z$PGD)qifUG#U~KFhbi=-bD5?&-dLwr`)d#kWT&breJQ{||i~^Nqjl>k;~TguWi( zSvTnG5d(caLSK*A^11qYguWi3uSe+X5&C+Bz8;~kN9gMj`g(-E9-*&C=<5;sdW60n zp|3~i>k<0e$~g6^z~=d`9SLSL(Ot07#I9B$lJ0uLuShYe+Tx1 z{o%X%{XlJVP_VnwovU;gDcu!H_Y*$14F=ezzm(V|@*=Tt8~yZUE&au!lAyqokMeJy zV7T@iu04k<#raCHt5WPbP>S87QfTAh18qE98xP;IRN8pBHXg2xhil{E+IYA&9!*KmD zTt5ug55xQWAo7+2wyc>_?4fN(DZ$T_;6f#spai40==tyY=5EH3KMMBwyKj#5&CmPh z5x#l6Z=UX(CvNf09reOCzP)d-Ro+SAds}=vQh+;p_SWtYDZt^rwX<4Ys)msQH1{rk z)QhU-DXangRLS(Oe5gl77%Xj)mAngOHx>Ef8Q2dQXAe{qx^b=n3t$N?8_pRCg zfrp2ETyFcYCWug5^3fq8%Ev7I_xv6G&n`-SIGY}1ABa)szg^df>~jqJ9K$}xXy-BP z^Gx=6Ci^^7Y0hJxXR^;R>~jphAHzP!P`ksZ-59kyjM_bp-a3TZJ%rjlk=i|<+C7Te zJ%idkirPIx48B?nzP-P6rv%rF!&m2x4KAh8#!f zA4BmDWB+5={}}c^hW(Ebvo8~~FN=DV;yr{fjNuDo_`;aNRlN3_?0FCP7VHUo!QPvHblt3a&ty|)vZ*uK)S3L@%ulRjl+Tf+oZz}y^^V~WWB9`u{xF6= zjNuPs_`?|fFor*j;SXc@!x;WBhChtq4`YgqKqE`T5+_o>!>He3)NhRXjZwcb>NiIH z#;D&I^&6vphf%-7sNZ4K?=b3j81*|WHWY@zRUY}#H&l&x78n3mo+nYYQbIpHo z=lB2ZJ8#W?SMa*URNM1ZTQu%nHK1qflrI|VwklsA58TMBhbvDrO}Af|;C<2fe~E8I zt74*&Xtmm{QHJQ7sR4Z#jlIj&sN6T73ZA9!lk|O(zE9HkN%}q+90fox%57GDL zK4CPR0At`pI0;UMQ{Ysv)}Ovl()UUFK1tsv>H8#opQP`T^nH@PPtx~E`aWqMt%t@> z()dYpV5#6&a3lO0egl)?x9~f-32ufd@&vbq?ZyMW#sdw;02%r})6Z0=;T@|i)I6=` zN&ULsJXOj(RmvPyk1;?4{hy@&lk|U*{!h~XN%}uY|0n7HB>kVH|C8pTQs$zfd_sp7 z>o5*T8V4ke1Cqu8N#lT|aX`{IAZZ+sG!94_2PBOHlEwi^3Xo{|Gk$$_Wjz*BPIDLL?z9C%6&JS7L7k^@i4fv4oaQ*z)bIq;MmcuEdDB?q38 z15e3;r{us>a^NXB@RS^QN)9|F2cD7xPsxF&3Xo{|Gk$$_Wj zz*ELB4aP7Ha@Fl})$MZC?Q+%aa@Fl})$MZC?Z!8~#y7pjHx03T7z{(82x2f4hQU^_ zwSN8r9^MHL?=+wjcKHWtWhWfA6As%6hwX&J9vq122Z)O&3-vRwN^}+6EWwHN_ zR#`--igpEU-ih;Rt92<+w5Mcq ziDJI7j!#E_x!iN2Y-W0kHs0XgOY;T=^TW}>0y|0RjMy1SO zRd_&9ZN|K2QyA1L$1>|OmWRI&>a3$&5gr+=w0mb&cv!GHJSkX%jq1b4f`;(hLF1-{ z!P-rWf+lG8cP-%&!8)Hm+O#r=hd&5f{VuU7r%uPqYu}Q0V0f6dX@}(v9ej)Ht>L3XR)v2WvSHJrA>HBjLwdsZ<-hMJI5|AA;1u`? zTnH1w=js+?I=C5;Aeim#Pw3R3@(Q&;7Yg(u7+#;%|zF0;X1h9&y!s5uWjpB1*dbvmb|@U?^WkuW&qu=d;3z*I4adN-aGc+bg5zPdpHFZd11G{s zo94z&hEp~zjh(t_dF(WwPlvI7K4a6G*qJ_`1>c9WH+>X4XVbFSxJ`|*bNzfCobT_( z``!*hO%0I3o75aM#!+K3^J+j9nIfEq1xjSHP9w zS+T3(8kh*z!gX*xOoAKW=kN>oCHx9*gkQsNU^4s`eg`+f&2S6c3RB>=@cXgb%>vvN z{w{X6wOqdsJ{Ozn^F86z*uBBX*dKy##qRU@k7lOs4~~vaGduM_cyjE)aBl2R;fJw@ z!nb074!#k4WYfafqwrXGMC|eK%vf=FUhD~ zC>Ujh*YVi$1UQXui zF8s4=vFlUtG&}>(`rUKTAWlz$8{kg33+{&B!&JBjXr-b*h{NWecxVsL?BSU`ys?Kj z_VC6Y-q^zfdtxVrt+A8g6gU-5gVSLwoB?OTS@3;08_t1oa4wt&=fimT0sIht1Q)=M z;U{n*On{$;?XipCV)z+c0++&Na5-E7SB7hO-CAC^me;N2b!&OuT3)x7*RADsYkA#T zUbmLlt>txVdEHuGx0ctf<#lU$-CAC^me;N2b!&OuT3)x7*RADsDPEW2btzt#iv1p@ z!aZ;=`~mKRKf?Vm4IThHS9o2D*QH{AhR1m2<4_Dwz?1M4JPpr)-7CCp4R2e++t%>5 zHN0&NZ(GCL*6_A9ylo9{TN5*982by9!Yp_l-hemZEqEK=fp_6Om=-%j^ZuhO2qo!@(h9?i%s7A^5;L@x?xW$g?W#POUO8SZ&U?7MA;YW%xYr z+Q7RqyelKFuIEjCylDe(>J>ZxW)(m0*eD*hT5tWys(o>-L0oGP*BZpN263%NTx$^5 z8pO2*aji#OYY^8O#I*)-twCIC5Z4;SwFYsmL0sz**BZpN263%HTLV8c%>1qG^+J{ zyz(+$X;br3HD9adO?agduQcM7hw(~1UTM@4k&=jbr5vv`YdRrsW83qGmZf={aONtG750iRqqz$e%J13tM9pInDe8u3XZK54`!jrgPy zpETl=MtstUPa5$_BR*-wCmZm|27IyspKQP<8}P{ne6j(bY``ZQ@JRxnB=AWBpCs@} z0-q%CNdliF@JRxnB=AWBpCs@}0-q%CNdliF@JRxnB=AWBpCs@}0-q%CNdliF@JRxn zB>qJ{X~ZXu_@oh^G~$y+eA0+d8u3XZK54`!jrgPypETl=MtstUPa5$_BR*-wCyn@| z5uY^TlSX{fh)){vNh3aK!zXR{qz#|6;gdFe(uPmk@JSm!X~QRN_@oV=wBeIBeA0$b z+VDvmK54@zZTO@fpVZ@%dVErkPwMeWJwB<&C-wNG9-q|XlX`qok5B6HNj*NP$0zmp zq#mEtW_;3& zPnz*bGd^j?C(Zbz8J{%clV*HUg-;srNwKvuAK;25Jmtf19nYH0v)<)dOYz7G9<_i+ zy~&#@cvBm1s>dUpJZT;en#Y6I@u2xUVK(mQ^DX?HJHd(2zHCUw9Qz9mrGf>}3Ow#B{t1wBc zr+wgQPhyffM+P+46+h~ zti&KIF~~{`vQm2|DUu{bvJ!(NDUu{bvJ!)=#0-m#2b!?MV(hROJ1oWyi?PFE?64R+ zEXEFtvBP5Qu$br9^88w!U(54rd44U=ujTo*JinIb*Yf;Yo?pxJYk7Vx&#&eAwLHI; z=hyQ5TAp9a^J{s2Ezhsz`L#U1mgm><{92yhNJ%tO5{;BZBPG#DNi&^mFKte{8pad%JW-! zek;#!<@v2Vzm@0Lv5;MOejWQv)9-_LejU%Rqu+uo0F+e#6 zD8~Th7@!;jlw*K$3{Z{%$}vDW1}Mh>D>1;zU?MfKnwqG`0?Vn1WxOKG6S6En$JbtF z{e3KcL(u5jVmH_U^0x=d-5vyoSO;(z94?=G1Z>WiMmfMWwD$%U-p0E7Sa%;)k+O?x zxxFdvtT|`&oTD!4sf&8*qMo{_r!Kmwi+bv!p1P=~F1o3Udg`K{x~Qiv>Zyx*>Y|>y zsHZOKsf%vvqMo{_r!MNLi*D+oUhI60x|kz=KHIM_{_OhqD&twddk&&q$!Ay%W%m!O z%(BWXtIV>>EUV12$}FqQvdS#0$%z*^R+D2jIjojrH91z3!)`h8BFAcS;zf?t3>GhP ztR}~5a^gjf)#SvB9INSLHGQlm$7*t{CdX=WtR}~5a;zrDYI3Y5$7*t{CdX=WtR}~5 za;zrDYI3Y5$7*t{CTAp;3trTt&*{+_IIdi8CUIOF7F{;LZxOe3^^d%q1)z67!f7cz z+^dJ@;IvwtR;#Dm@mVcCTY<~cxU62!e_zj^sOL}A==}!0KSS@&(EBs=euLhh zq4#I#{TX_HhTfl{_h;z+8G3()-fz(RGxYupy+1?mH|YHtc&}EEeuVdG@m?+7tHpb@ zc&`@k)#ANcyjP3&YVlqz-Yds@<#?|g@0H`da=cfL_sa2JIo>PBd*yhq9PgFmy>h%) zj`zy(UOCe(9c&Q#Q)#Iglyi|{u>hV%NPFfy3$a33QZWqg4 z&vN4|w^L+JvfQ+&+{bz|xGBwgyF}(bkvYYR6D&B*f|D#b$$~praFPWlS@3!moMxfx zS!j}lMoJ~J(ljegv(h9hO|sG?>&&puB>t$t9q;0fw!%NVvTh@kHY1caBa}8{`FC;0 zyDTlq(z;k$lBFeCT9TzDSz3~%C0SaMr6pNflBFeCS{qAiV`*(Ht&OF%v9vap*2dD> zSXvuPYh!6`EUk^DwXw7|me$77+E`i}OKW3kZ7i*grM0oNHkQ`L(%M*B8%t|rX`Q&N z6PI=3vQAvqiOV{1Stl;*#AThhEQ8B3EG>h}GPo?m(lWR#gUd3wEW^?=xGclczJ$v% zEG>h}GPo?m(lWR#!_v|$EzQz8SXu{5>tJaeEUkm3b+EJ!me#@2I#^lB|X_l5|X=#?0W@%}bmS$;bmX>B| zX_l5|X=#?0W@%}bmS$;bmX>B|X_l6@61ZM88)XIQX|Q?4TBlVpRanow3j12ewwedj zZhbUX6z{skyDr~q6YHWpQ#99JBi6MH*i=efYu8ra#l`KxUhX!Vp6qkSPIp}Ej*)&& z(Tq#oak0BZD_5fodukwJcCgG&cS+Dcee_Qs{nJPP^wB?k^iLoC(?|dG(La6kPapl$ zNB{KEKYjF1AN|uu|Mby6ee_Qs{nJPP^wB?k^iLoC(?|dG(LUSak^=gsNQqCtBSn!G zSMr3lrAzruwdhd8*J}M{W%$g10`A~v8Ge@HXDL3G;$v;1!%L#Wi=xAeqQeWK!waIr z`vdJ%rG_i{UW(6U_*{n1rTAQm&qdK7#g9^aD8+|Td?>|-QhX@Ihf;hf#fMUSD8+|l znfcMla0;9X<~{jPk`E>MP?8TN`B0J%CHYX24<-3fk`E>MP?8TN`B0J%CHYX24<-3f zk`E>MP?8TN`B0J%W%y8r4`ujJh7V=_)vxqMYf+|`R?4HSkVeC6Rm&#NXsPj{abnGhK+gW$sjz5r7#T}Xk`N#HjrTh z88(n%0~t1uVFMX9kYNKEHjrTh88(n%0~t1uVFMX9kYNKEHjrTh88(n%0~t1uVFMX9 z5P9{1`n#3gSJHS@EH&cWsK1x@TWznJY*dqt`aT-{MSL1pljOj9lW4_zxf)cd!D{@v zLCJfAXIM{*J1%j@x7=|JD_XB@Ho9xM_K7mTJ?^@|9iws7LYA~pJH3ImSF@;vo-!M2 zFTvVX#!!!%%V{x=demHwT`1<1UMu3jHfPPSqnWm%IYp;RSQ|wLQLMnvKF$e zg)D0!%UZ~?7P72`ENdalTF9~%vaE$HYaz>8$g)~kRtw8&VOcFKtA%B?u&frA)xxq` zSXK+mYGGL|EUSfOwXm!fmesW%UaK}*0ZejENeZ>TCeXn>idoQexttMsP8xG`;Gd3qrTs$?>FlEjrxA0zTc?t zH|qP1`hKIn->C05>idoQexttMsP8xG`;Gd3qrTsW{d;i0kFkGG?CxMcI%6#M@4@~( z#y?|m!%wk)4}Lg{oxFq}et`XZuzwGpI6n4JFq+QzA=Y1w^;cv4)mVQu)?bbFS7ZIv zSbsIvUyb!wWBt`wzX|I%Vg1!ue>K)$jrCV!{nc21HP)}f`c+uJ3hP&4{VJ?qh4rhj zeihcQ!unNMzY6PDVf`wsUxoFnuznTRufqCOSicJES7H4stY3xotFV5Q^|;&m_$pQw z>8ZL z;u9=An&;@|KdtWYG@t2a;a&JL^@%RotVyDo-Uaw_0lr*-5jrtKC*GXvNpn4EJ_}E? z@MukSw5y|kO;^8mu`U9Crv65=M0zFCA^*At`Cpaa>t^NMth}3*ceCq27lHsDR*7uuD7~tOFt9U>i=c^cYoL2-*ERQ-F=0=TA`mlo`ZS{8^y6v zGzV23*@-7sV5Eenma~is{dSLjy9Yxp!cL1=$Bp{!J^l8c(nRCnXdT|&nEhVNey>t3 z(udLf(;NEllldns)u8|W^*N!FwAaaS3Y-eo0$`~WmP%o%6qZV1sT7tc&#tSgIRKbz`Y+EY*#ry0KI@mg>eXaqJSuE^+J< z$1ZW~62~ra>=MT=aqJSuE^+J<$1ZW~62~ra>=MT=aqJSuE^+LVz%B{wlE5wr?2^DP z3G9-SA4;m|z17ON)1DmX&5%X-qH+6Kp2Bb`TXa22R6SNyJx4@6Thy2)qMjLh z(CGe8{_mmSyQ1ll!KGRwgR!~?cre9|dbCO>F5G~vB1M+#k6vqB>oMBL_SD>;vx#hK zJ*L`-sXDPwGuG+uw;#&v|EBF^v{*)qWwcmEi)FM}MvG;%SVoIwv{*)qWwcmEi)FM} zMvG;%SVoIwv{*)qWwcmEi)FM}MvG;%SVoIwv{;7i^st>Cw$sCQde}}6+v#CDJ#43k z?L@le9Id*$Ry|a!99*-^uGcd3`6Z@8tEJ zyuOpyck=p9Uf;>pOXUC$I11^_{%FGdM$!MPsD~ zy%g6wJp^aV!^aV!g4f{h429^g2j+!{oAnp`C2lX>51lBqVe)_5qPP{8|_YADAN9imBhwP z>3-$*VbE;--~raJ+1XBCt)r`Iuxbrft*57=m37g0bcNBwu;607SE=_F@Uv*{yw-Ee z2YRp#Uq`D_YV=}_UaZlJwR$m9Z*A`0?(XgG-sbLYdUlzfUDmG?k5|qUU~_I^wcf44 z-;MaYQ7_l%U?m@{ zW2`ty8C*wlPB6`fqVnoV`EsSd3l<@&PvJ8LgsH1eqv)mMt@tFc}K zJ8m|XjGH~)5Bu%U&PO@1;S{5uPw!UYE?veHxnOGWSKMTmYTnka+t{tJEpPEgfV}O& z`LTJQas8}_v!gN$$5|s_Byaj0I1e^&CqI7yzUc3EcKs6UqRhKeUSIb4EAUm=4Za3n zSEt=wzX9L0f@Tlj`nQl z!!TSiI4}d52ZO@4!TI5;!Gq044)Jr5|BLzEk$xT>t{dzO=fPuKo#QF3zJgQ3rh*&b=Wt_KS2%$xaz*G;SS`slnpH#O?vOIiI1R$$-C z(y!EmXX>Fd^vqFO{Wz_9;@~lxexoIi)rz-ky}kNZOWzoNLrWc9=w#Bu@=Xg1D>kjx zDm!bHZMDW5MMv0~bYJ)tH6NmuSE%7JYIM2MU#{eLD*1dRe^ANCD*0FV<0hUlmTXZD%fs$6&0Uh}In7;4m3xD7Z|yE!?(mv2u5*_UoaK<= z6NBX{>`-^NkK8T87gxGtr#nWzvdmqhabT1WZo?5B%G#Ij4Ktp!-jmjQQp%IM*lnWU zR*wlcvePwMHlbx#DM9omkM(SDwU%A06irHzv^Qci3#|3T22Wh)iLIWv&J$Da-tO-0 z?%wI{X?JXP#|`e7bjOd}X}vo&yHng59-F-JVjEWRX=^;z-x^U_Tf;vOv`D)<-RIl0 zv`AKqY&*~*f6*dwEwUi^qSm-xPu=EjeabUKd9v>G9FD8TakV(^MJ*A{ibN;Lo`ppo z@r3(5;eKV!c|yIG=++WF%G{&ONo8)-0xO4nCmf|W_tO$>dUKt!N2hFFW1UlmQW$KN z!cgt(gaA+PRhNht%d||NQq<{#zg-jQeJ7s&R{n?KTK&>6&Q7LMbBBAclnYEv+p;V&&Q;(Hso)&#Yd#qQgUb{jw%C*T8hbq<9O0|u%mbMK~ zQ=-%P+C55jj`o?QWXI+0WzY29{&w^GN9OalN%q7P84nLts`=Vxfs*}N+q|n}*C<&h z-^(f0V@kD9sm{?pZPs6`=Yw;V<^-iVnGaU;y-WDsPm2z>yZs0!3EUT6p_J!ingy6< z0UxYX;wgOaX+HQYAN(+uv4SfXe#8gw;Dc9KtC?|b_9k93R4KO!?^A>82Ws$pH8|N* zE(&J&t7n7G@P(j@>h6(y>jh_CiCmR>=asxdv27>~GmH&v1zYo$ZP>@Bk*rPoL|ha_ zvUZW|Bay66BQSWh4uS3-95b>6aczpxWu1&P-6YZ9>*5p96dwg&VQyl3X zJ4cCp$At4ly{xF$$AX^~^*Y$gGEuLC&9rS1^|DdaW7XAc=tDMC$EvIOS+z*`Q4|S> zbcU6p;Udv+k!ZMxeZ9oK9${aZ!pod^{0BdmgvBCby09E7pa%YVWbD8o9U^0g$k-t= zc5D$DJ4D6~HrgpN_KA$k*=Jv@!pTod;Y0Si+?il?umV=X8a7++_f&`|*)B@9v*(XQ z$v#oCPn7HvCHq9l4iU1Cji=dm-#}!{{LzHeSufKj!FiHrUG_ z2l2;U?BCCYujS>j>cQb%JmXfLajS1c9?-x8A`REY^1EoWh*4i=&CTu*<;SCuQY-7d zkM&Mvz4x)+sTg*Cf2`S@oxYzIy`RP2%3^P2ski38&ywarIkd=BcZBtHS0CNg$Ktx^ ztH`n<7OtnEx>!X6i+G4dJj5c}SVEd5q*+3m74)%yTlG>s{qhD@c>}AwfmPn1U*6DD zuj#4R^wev5>b2M^y(tT?hZ^)yq*EU+t(h@z2tB9um|)@_JDp#tvc1HOO3kJs7Y-Wsm(?;X;PCWHCbe* z{yui<@1qv&Mf*Bk;_%=swYaiqv|aj}w0{BZRtVd`wpMs<=ekywuL;)Siw>i{s216N zYa6M3KL?xJy({uqZ62L*R>9{gS=bU5R>Q)Uu(0T)vS>$nH7omg9JolIEY~NIk7e~q zMh#ljphXQj^hw6}rq}qUS8ZCbIPr6uJ|9NiurCGnk)ucmBTGXUP zOg6XJP;0o!+F~gAOgusREnO{WhMI8 z59-aB2v@7Fx9PbSQLJ|G5GV?76Nze#ziLIHTG6If6nRS&c}o;|OB8ua6sawgn=9;q zPHXz|;j3`C(>;y|juJU)shV23q~#dBHrQXu>-FLWwwPA>`AR=u>3j8NmObV++anK) z@=V@{HxT=q2V(!0Gs4TXTa$u+R(VOe^=0?4_QEzV4n;Z4!M!mU#U2b5PX?B_8 zVOeKNZHohT)r+HCH@}^uPKh>%LD4yO4es7BaObwbm`+{4jyd*(z14klj-lGO-%_V& zWz>QJTUf#tdf7s+az~o`W9y4fG?MUGe!SjJA2sbhXkp`Rla%M(xn$ucI+YuRYm2=$Wr8-JbkxZ|ZP!4(~nR zzF&ze++m*QEm7yol{gwP+>6hemAZGJ)Y0f>jk`OgF8r~(H@SPF|IP__Uf196d-v4eQ*w&YdHV>~QB6ec0&EQMvoitZ?VG?woOw%GW7Iqb+6qc&<8nSH|C*Sg5QC zcTBkBC#Mv;!+Ll4C>W%D>XggbI_e*Hzg|B@{NCoCi&$v6`bYPSPS%*K{)^OqfqSOh zv&}toO4+595sycuY*otF)&F(Rh&ZFGf1DWC7a7lrS~$wyM0+hGZix1QzvzzT?%3## z4er>ek2>9@|8z!oX>^yl`l!`uG?6aZR-Jd{U6Ez|Cucr>d3+pA899j zq@DDUcG5@MNgrt^eWZiYVD(2Z22O;N;AF67%t;?EKK_3%(C$ z!#OYx&V}=U4hwz(zvOqnf*ax2@Ee#6zlGm{{U*WYQ$D5#x5>NT;k`Qx)NP4TT6uVC zP-*>QwDYdEe?8ZFbCSztEX!ppXUIsemyupCWBIB~^jcZVXdbd5=<{>*ey2@(E6-b+ z28TE0X-n$uI_m8@_EJx+J+H^#!L`dcACHIrVs5{(F9&?OGQ8jEcODiaeN#JXlWjVmZ-^smX)$mxdMj zmHw`k)vgaqM2iw$_FR5v_&jC#JPq&?4e%0$`8>~S9(-*0>fqzxczD3cDBlUc!J>B= zVnytbcc9Gdp;fLcl8$QFL-nHt_3&y z-7Rn{Oo7|r4!9GX*5WPJ5A?sq`r|iPzvK7sg8CKAhBBA~b78)}uke=YkKbzj=^L&0 zELh?9AHU7|(>Gb~S&;CZ&2O@vR`AK2tb<`&yvh1NZ?XP%;n%}g3wMWaz&BwJ_!jI5 zd%@nY4}2TG1N*{$us<9C--QF=AUGHffkWXiI2?|EBjJ0%hMdsX2SHe|rHCzJ|!*>d=h3nvYm;^V# z&*2yFOZXMs2)~Bkz-0I>{0_W@q3~w#7KXxGVG7&^w}%%N-T`-pcNX3Scf;>tD%=D2 zhZlI4&;{Nlbb)sXU0`+l1%(d<+Z6uU^+Q~aztPuIy6nMeHJe7eqbr|V2F>IvsLU1wg=M(6``lTO!}=X9NUPStrS zmJfqr2oyje6hRDR)Sa&LlGAlwa=Ok-BF;-9&PyWBOaJ1VzOVY^P2X3_Ax3Zez8bE9 ziEu4k2iLcK{%&kq$3hvM*|F&GNNV5{(*p%@v{Mbc>^>0d<9auGBsf=(AfmWdqCh#J#GjcKC9<~5U6 zCW#R3SbaJ+pN@&6OvW^>xhRX(rrx!&&^e0C}>w)#UsZ?HF}y1gLlZ*svN znCh$8;)jK!g1a%rg_z<#%rFfzOv4P*FvB#=Fby+I!wl0f!!*n=jR%+W;Bp?Ezm=fTr?@N^!$L*WxaN8yt} zbKz6L(S=V3+wtJ-dGK@|Je>zmXL;kjWBvi}mmlx_@{f4G{LbDl{}b<*f57|Yi@aa{ zC#>!f@0Z`1H7sKd%UHuQ*04D~K>Rs zXIwVYP^C0fDGgOhL&a&R=&eMhG*l@KRZ2sZ>iLO!ej*K3MnjdcfC((%E*22Ib?E;T z4b?_Nwb4**!LQ*rFd2Rezk{3LW|+ciH*2U88mg3rdYy(kmWFDeq5eoiby$TOX{b6H zs$xJxbhFV2KHPKMBc);5<)JrtfK0M*KG}J8KFp)P*q@fyUs26CcC{z8n z8tVA)L2FSS+(JvGXsIV@sim~kTv}=oE%k8T6iRoqo?1yymD5wD^i)}1oA=Nk5&oQ} zDy6A@-mj@f`+N$V=I67$ndp3>!tKm$-kke+UTh^UVQO@ zo+_oMq7}0hym}%%HH&9YQZ`Yp8-8Ji=KLeo_da+dM-ah zJDGK$r(U3^UZ$sBrl($@r(U6_X3`QARi$)QDP1*-t}3OgO6jWjKhRaB1@HR5_h2@Z!5o+i^Zot5udCw!qOK~X zt4isrQo5>?t}3OgO6jUnx~i0}Dy6GR>8e?DRViInN>`QARi$)QDP2`cSC!ILrF2y( zT~$g~mC{wEbX6%`RZ3Tt(p9B&RViInN>`QARi#_#st>T`C~SEhT~$g~t)Q!B(N(3` zb0YSfh&?A_&xzP`BKDk!Jttz%iP&=@T~$U`mC;pYbX6H$RYq5p(N$%1RT*7XMpu>5 zRb_Nl8C_LISC!FKWpq^;T~$U`mC;pYbX6H$RYq5pVdV)}c>-3x3oGA+mG8pJcVXqb zu<~74c|2AgkCn$`8iG(*Q_1*3zWhvcpct=H{mUK8{UC;;XRlQWiSWk!uv1}=EDM52p_;ASPV;` z94f%h&7u#%o@1vLwmG%1&8dZLPAzP6YGIpG3)`Gp*yhy2wxX5LMN|FPx~hb(Dxs@N z=&BOBs)Vj8p{q*hsuH@Ygsv)~t4ipq61u8{t}3CcO8yVkRiz^7+al@PBI(;A>DzSG zK6KR!@{ns6Wc^JRv_bONMv9yiebB5}hRY0oIPzB+WHX+2v&1eG5(wuP!(RegYT5 zgzz1^y{|5~2rh=7`S}vpOW`uO9Ik*X;VQTquJJb$U9W}f!05?t@2kx<9)(Ra1@nU= z3z~xM3Yvq@6(oZ1nR&XY(5cgfAD`JZdf>dShk{qVv1VbRcV0SSzs{+=!<=0CZ71(W z@7dW-#<;*qmHRmlGCGs_NheeeExOT3{P%~;oS3`6dB=sZ1D)J&o6-A4ey=9GsY$Dv%u|yutI52gH>kW0^EB2{{r~pi^pp(t{_omH?f+-( zqqW~YzWqt|bBUdutS;?Fg=hBT+1t7re1I28I9EH zyVT@|{TaGQJ>Dz>?u-t+Q9XXM2hC zShV7FDGpog?!UzPNjIz963rb~>XoW!PQg=e_SBnkQ_7QH_vFi+x>7yR19Lom zj;GJ@^f^vhNh-mygWeDFo$@*uhKMVlaVFdD_GIn>d)i~Z7wiq+4qpkr1N*{$us<9C z-?et=KsX2vwoAZ#KyWCWZ-g}7?=Du8OW`uO9Io(xSHe|rwVx-t_qDFq*{gLuOoAKW z7PEr4!tGXx->C)WE7wA0Tx!leI)`HO{-hN_josYK%ox@A+ZEPaud*h+!OF=-_g@Q5 z(9*wK;1%)nCGoS`n(WzH^BL=%rd#hMmthC?m{s&S~c~GxsYme zA@i+gsI{)C(wxXdb0QPXPrhMYQ)S*4;EVolXV)*mu6*jt{`M=d8+;9-S*P7yzX9KL zzdii@xBTs%(Z2jmSIek>U=&!Hca2`22-jLsLOB}|t~UyN*E?xn$upxm=jYlm^`$zBlL|Z_azr=U2==Z9Z$`mHa2eW&F7| z|5+<9pMw&Z4lhDkke9zmj%Hc-c0NU9J=An-D{8H+sLi({JinQxwOF07&h;a3219-V zl8}Nn_h@(Ru=jj}^Z2^WocBPl-)%HH>~qb+UyTHe_FMMIhSG@^(xA6TTU$?V-cV~otBdi?q&2Yhx zJ)Fw*EvEv{4h|o(%6h2!@RcDg{yt%*I_XXIDL-$3ZfA*p(;BH`!^aAagHdoijD{0n z44eqo>(NS&(MpdMoElCmIL-BR7z<~>nQ#_-AI^qzU>uwa=fU|f9)18ngdf2L@RP8l z;KJZQBh;VLT_tqaV+9unhscLrNOwI(cRfaTy-#;NMt40%cRfaTl@wgTZP%ta+^n%y(&MSB$ zIJ)4?;A%SU*n)C@Q;~OO!P2~o9cV)p}J$F-3 zRya6(7)$-3u)uYnV3)#UgVPI-%lm5KsJ!uo#|P&XTGd>5Lf(0WV}h>~o+xK`dr(w( z2iy-%$0&RN9)v%^L&3~Kr|c9y43EI0@EAM}#X*hC`GAB#t)wnYKoZz^ zAzv(PhxL$#4(Nm~VE={P&;z|;ci~3YKFC52Hi1lxcLKlSoxrbnC-5s)aJ=HZz^_ob z%bm+V%enlsoXbDUx%{)7%Rj4VXZRBA629PlzAqGg8NLEv^_{P~?hfC8?*@BO#=|M& z=-rLOttqUej6Y8qA3+&^n<{?GUY9EC3oDE4i1KdVO7HfqEV2{In3+PB&wyF7}VBvvGr6vd$xaAQ#ttmN_T-CFP7t@ZBR+M+aMAX>q*DO~M+ z1*^TUV72$GwR+E5tM{z6de2&`_pG&g&swW7*q37mJ6ZdXydkke^G3%GvlI02U|j5o zyrS5Vd86dA$Hk8FH%A9o#g6rN$K?%;jq-QLJGo-C|2rXX>)057ccRZHg){A}n`vj= zOgrml+F3W#&bpa)*3GoDZl;}eGwrOKX=mL`JL_iJSvNB_4$g)1;CvVlKY$;?kKh9M zG5iEBgbDD|@LhYD-i=)hKZ8r)Qn(B*hb!PpqcJnyW_J>1cM@iI5@vT2W_J>1cM@iI z5@vT2W_J>1cM@iI5@vT2W_J>1cM@iI5@vT2W_J>1cM@iI5@vT2W_J>1cM@iI5>Ef9 zHh$gJ=^xe3e)_AOwA(xVquS{o)ppcICj))O=^xd0)qdWt+Mn808=Zbw?evdEXFr8@ z*KTKb?QV7fzG4^PEB5Kv*r#7(pMH&f`Zf0H*Vw0DW1oJFefl-_>DSn&Ut^zsjeYtx zF*_h*FTf0#33fxqUV@k5wQ#l_g|qD_oNY(pY&!~P+fg_>_9naqZ^JwAF1!b`p$z80 zTzDVm!F*T%3*iG;1dCz0w=&hi3Rnq^#`E^kS@ThC&BuJ}FKey8thN5K*80m@Yl17S zzpOP%ZZZn$9=d(_%FrF)Gw@m15ooocBVZ(a4n7YrhD&8=N@Qo|4_%s9V{T;C(8}Q1 zp;dX?$jYp>zIcJvXs--gOt;<;eAO9!yTR`Em3_l?52|rO@a5pAAfNs(&N-|Kyq(4D zSVi7paIQ5+=NVyHMLpGNH1H~b!^!aZ=m_b5+;2jD?? z7#@K~;W2nToZbIku;b+_Hoq6-%idYEt#=mfWq$ZS$zytt*#G`K<|=v2Rpy8P>DyO~ zedb!dS}4C(1lzz)@CEoH>;hl4T4*pVVn}3 zk(V&bRA-i{!5F>5EYlNtgRRt5*1Tcioo1QtG+v3DWhyteh<43RV`0%+=?7TY1I7|> znn_CJiCbomI?Nu`<+T_K9ARGesIZRpO=o@kScy|-=BSPZPG^DF4m#gw@9JfR*P1zM zWr@vZj+(uJcPsgT)%^!QQYBd>iZ@D%=;WqBGl4XSSuzY)hTlmb$`& z;9xie4u!+ua5w^vgztg2H``KYwx!N&OPzd4hkQv#p*qT$bjX=>m~E*u+frw?rLOQ~ z_?gurm%ycP8C(um!c}lJTmw$zEp#HU*_KwbEv;r-TFth!nr&${+tO;brPXXptJ#)T zvn{P=TUyPww3=;cHQUl^wx!ivZ^v|vj!z1u0JO+=0cRt8Md>{+)fh@!a=Dx2r z%W|z*mTR#}v)Pemvm?!BN1Dx!G@Bi1HapT>^rnoev$oBSG@Bi1HapU6cBI+tNVD0I zX0s#BW=ERMjx?JcX*N63Y<8sC>`1fOk!G_a&1OfM&5ksi9ceZ@(rk95+3ZNO*^y?m zBh6+SU2sCyT5)S!C78 zBCAdoS#?qt%ZI@*1PY)KiXa9lPGt($D()5!`2=C)x-ZU?(PM?vAWLxf0~(TXGU4Mc*P4|SG+572SHgCL=Xf;5Kus5y(_q~ zuIui)$~cNBx(mwcatC+T3*&8<6>&6#VcJaF%%p9aq@lJzVbZ({mqsCa%JYqnJ*ss#Xq@f->aT}<=0) zxa5Y<-0o@(>v*^F6bo1JqpXtAs z-hAZE=iU72o3Fb0wwv#~`JS7rH~;*Wy>B`6mJ@C{(!RP7Z&qihx2QAKS?aCoY;}%$ zo6hvof0(;pS4RxeR6V_yfUm#c%7vkjR$44FF&n>!4fI}DpU>@as2iXE-q=Kb>= z9qMYTOl^Pjhr0Pg-Ta|${!ll67&3ntGJhB{f2f;3jF>;v%^&LK4|Vg0y7@z0z7OR4 zK)w&;`#`=ApyPLY%I$K?E+oFA^_{DN7Y+^Y61t0%XcZ5fT@vnBbafyIS1o3a!z5mVbsO!wu;+y^Z zce>l--*x}*b*IcPCgML(&PE!)-DCgI=l#gX@9a*-f8w$4@*I=uZjZe+_OkdrZU;S| zA@@zW-QoS6?myv5!P(fK#3y5)j~9FmQ?|ICS={+`;`S-T?`Pxl_O34YI)SfO>E08s z#;%Chx~cf0=Tdju@VuJcVth9jYI)wB*vavSlrvt$yWA#b*0R=&WSwKn9%aA9qwO5n ztGjcR<5^Zc#*u}4dw(Bizj&l1dUDvCgXphGJ-hQ(CJk6O^o@M6h_^VZ? zIquK#f2-c&-_CTOJoNK9e(-88Vj{ zT79}Y$LwW)3GJ!Qq;-JfJD+YI^9*}^6R{(8EcRY@wW4!E{LIYee)o08ZF8BNnat3# z!#O)}&*Ro~yXpQ|>=pfe-HHBq_s9LKc-m^o%<)J6ZynE!<5gx8$Nhe;7u)OqlIulW zFIsWEi0efIzwUZpi~YS>#E4nMh*`vlS;UB0#E4nMh*`vlS;UB0#E4nMh*`vlS;UB0 z#E4nMh*`vlS;UB0#E4nM$iUrdtGY*RQ-f+qrPOvc%q>S;2XEBdX|+S`RL&G_9x-Ab zF=8GuVjeMM9x*gfRQIZBx;;=mPaP85&+Or)W)J(D zJv_?nVL!Wa9%J_KG_!}J%pP8D_HdhHkN4N@+Rx6M{dKz@wf5X@U=C3?hp3xF)Yra4 zy;EJJ{#d^yXVhnvZl8I??>wWndBl);#E^N! zedZBEW)XF>h`KpM-5jEB4pBFUsGCF7%^~XM5Os5ix;ey4%^~XM5Os5ix;aGed=GVV zh`KpM-5jEB4pBFUsIUFr@)0Bfmk+pnz~uujA8`4=?xxjT{?%MQ;PL^N54e25tE#cFY@{qdHsvL z{zYE@BCmgu*T2Z?U*z>K^7mPR+2U=Nt>0V%}UZ{C26ygv{^~otR!t#k~S+zo0X)^O44Q}X|s~F zSxMTgByCobHY-V+m88u|(q<*;J^dT!sLiW_no={}l$lAp%D|z@g_IUQ`4w;_}nV$@qpA4Cw44I$g%ujOWCpq(zocT#^{cYWm_1}%X zVEy-EuV4Rz*zp=2AA6QM&_2xSgL6^>THvIz%0+4pWD#Bh-=3>UEUcqt)Bgd9f3u z|7S@5&-e|ykCM`VQu>^@4a>^>Ti{zs($5$S(K`p-!J8RZ6U@&6Kp8DXE{9W(Xq;A;}PW*JVgCgl!CA z+)k#w8NyD6FwPKmGK9MsLXshj_U)_o^Y&vU{l}RoJl^|zb~6py%{17zzxRK+n<@E- z-AqX~G0G-J*~BQD7-bW^slzav7-bWqY$9z(Q*vcT(~gzhOn33d1>P94i@WV+s`dHn zXBkzKi5!QF`aWZiEo)*M<90YD*~VyJ;q@Rq20|&-q974fW0L*7&!i{BL_cw=tE?%;GzyA>Z|R-}9K? zS3gky#5!Cnj;SQ$|KfT7(0yDfhp~(^meIK5g5z6Q&QCn1Ys4{^QRcFfxg5(}GI7^R zU@uAbayNTP#-pGt6p6MMnRvqB+p6+v=;q7O-l>%3>UlujG>NJmex_XO$JJaXi=yU9}U{OgH zHO!)tcEKfAeMkM&zx8&)4SMV$wS%2yd~DJ#xSX2xc=xGYYR`_iiB%(Y(w!^VUR!&Gl9rVAnJGidozKk-<7ia->u%G-m6?G+e{!b6Nt+}{$4wr`O&-Th9>+}{$NR5$ zhQBRtf1>U9lHBO5z3m_dEW-vHiPa zPqkZaVPK!wIu<)VaG-jgvYXVza@@pn+{AKx;Kk}C>ZP&Au-NedXNDVaW;heeaTCjN z6U%WE%W)ISaTCjN6U%WE%W)ISaTCjN6U%WE%khC%s#hs%u!-fkiRHM7<@msBopb7V z<#%l0b#6~oulM#z>SXl>b)IvjoUblW?@$-2cdCojA1l||8E~x~JNnk!(YM}?zV&wW zt+%6Zy&Zk)?dV%??(q#f`qtagx89Dv^>*~Fx1(>p9ewNV+*@zw-g-Ot*0bd#TTZg& zBwJ3hk}W6Ma&jP}#?-i)P>#)J%SpDJWXnmmoMg*Mwwz?kNw%D1 z%SpDJWXlP*oMg*Mwwz?kNw%D1%SpDJWXnmmoMg*Mwwz?kNw%D1%SpDJWXnmmd=Ohs zvgIUOPO{}BTTZg&BwJ3hTZ5`U+J*8 z^VExCf5@Dl&YTZt&QD{`do$-J+O_upbAASMeid^*c&#gEv*+)!=V!3z{n_&~*7kPs zo#k`h>T}L^?2DZR|87^`JGwi6ubq8%j<4+QOS0)Cn@+OnB%4mM=_H#@vgxGVeM!6f zl6Lnc*>sXkC)spz?O*yH{>tqq)L*Mls!yrQ)CMIBu<0b5PO|AFn@+Onq}_ck)Q6!mdZy^$5EjVb>$k)Q6y1W~4w~mhMFSF|rcD;jL?_k$E*!2!} zy@OrvVAnhBTCCc&ShZ`hx~@;fongq?huC(7ZTHSLRAJi{wq0S{6}DYr+ZDE5VcQk9 zU18f5wq3F7F>lvn-mb^IU5|OY9`klR=GQ$z9UgmvtGL(KxdQLHqm`@ht~*BA=e6#Y z>Q(AEWzUx@yVqUWy}r)Qk9Br_tUE#3`LXUql`*Ew? zk6Z12+-mpZR=Xd!+WolI?#HcmKW?@AajV^rTkU?_YWL$-yC1jO{kYZc$E|ihZngVy ztKE-V?S9;9_v2Q(AGg~5xYh2*K~_J=>IYfe`axEoX7y=SpJw%G zR-b0|X;zxqSp5jAA7S+)tbT;mkFfd?RzJe(M_By`s~=(YBdmUe)sL|H5mrCK>PJ}p2&=z~ z)o)|<+gSZJR=X7x!{KWZoB#5&izSm$rXZpbvtA7%NY zEPs^ckFxyH68(E-?@1CZAN*t5URnP+qW7IgrAb)VfcnensKfw2J{fPNi-lny{j2Oy;b zkcu6oUak&Shp0o+9i6q`QPUl{}nnK+uX8@n>>_5LU7Yvzyp82Pke~S6{W`n&epQM=oJu9=p(UsZYUd%tcG8@b? z|Lx2_#r((n_LzT)`RAB_hWSr0|6Jb_S^pmMA7lQxzNe_C`kbe^JwQFf+s}00XQ^j< zoaeaxLnVDO{|V+l!Tcwfe~S6%9Ltnp{yWVRw=@5M`PZ2L5bLk8{zcZm*yoHkeV=vq z(>a|0-$!5B=l}9(+j|**p6&N`#-7IZ^KAcdZ2#nyd1LMu^Ts{LK&9fBu+B?$3S3Q+ z>F1b!p6TbAevRp8nErlDKgIHEEPp44u(I*@W&Yb4u;>GMWz^jjo}Zi%p=EHeJ*~N*`ahFzuVheV@JoGxi`Me z;}5$3kV>iTo{L1u>NBiL*xzCBEP}1nyH|_Ej^_Q0F1?_%-v>MbDw`;|0`UiQd_DM zJC4;K$Le>iSbcA0e)fKDHv-+K^eu&kNv-&|+KeRIU9Aouk ztbRMIA7%A+CSbd7sr&xW8)#q2NK3b(C$LM?W(R&&Fy{l$*7p$_Y>^EPf z@4rglf0e%fD*e<|`l+iNBf;o%tMpS>RaNNm^!*uqmeFS!eQ1uFW%T3bsN;@(%bTTU z8GV+~=T^179{T>P^!?3N#~J+?qaS1RdolXd>OQs}cU22>fYs&ztJnD09;46w+Prmw z(dSmbVR`PFV)Q9SpJMc><+oyOg_crQ%pX^oyOn!*TroyOg_crQ%rt=$)}inipi&#e2U4Zn0$@N*O+{Y$)}inipf8V$v=(BAMyy3 ze;kwVGWlmR`D2*;Axu8cH_r+ z^-gt>`eXGjC3~5R=gh@(=HfYX@tnDMj>+fD#Zyc^#pF{=KE>oyOg_crQ%pX^oyOg_crpULD?Og_crQ%pX^oyOg_crQ%pX^oyOg_crQ%pX^t6S8qUhA*B zb(B1d-^t>4viO}WekY6H$>Mji_?;|%CyU?7;&-z6oh&}j;`1y%&*JkeKF{LwEdBu& z{|XkLXYqL!pJ(xT7N2MFc^02%@p%@XXYqL!pJ(xT7N2MFc^02%@p%@XXYqL!pJ(xT z7N2MFc^02%@p%@XXYqL!pJ(xT7N2MFc^02%@p%?M!Qv-a`~-`iVDS?yeuBkMu=oiU zKf&TBSo{QwpJ4G5EPjH;Pq6q27C*t_Cs_Ohi=SZe6D)q5#ZR#K2{ZBxi_ft5aTY(x z;wM@BB#WP9@slimlEqK5_>jeiEIwrMA&ZY#e8l1-79X+rh{Z=NK4S3^i;q}*#Ns0s zAF=p|#YZeYV(~Q=Ut{q#7GGoWH5OlE@ezxE7V{ov-owm$n0XH~?_uUW%)E!0_b~Gw zX5Pchdzg6-Gw)&MJRv!<~_{3hne><^B!j2!_0dJ^WMR{ zcQEfA%zFp(-od~N(-dX0IW!_olon_ux=AC8US>~N(-dX0IW#0dF#~nIv0rMVZ-lNQWlzERb?@{JG z%DhLJ_bBroW!|IAdz5*PGVf95J<7aCnfEC39%bI6%zKo1k23F3<~_>1N16BN$~=89 z=Dip5-ivwfwK7j1XWlvHonzh^=AB{Q6U=*pc~3C!3FbY)ymRY9)-6{v?{Vfm!Msb% zyUo1w%==f5r`V^PV%{m{onqc8=AB~R6U=*pc~3C!3FbY)ytgy&BboPGnfH@fcb;+g z=It5AJ;u0Gj621+qrP2?dqZrsTGKt*oZYp6Ts5qBR;d^Du27*~qF!cJe2{v%I#{{Z zB9l%q>D!s~?M(W1CVdx^mKl}bWHxy3fYRb>ag04~W`PBUkzg2;t2TAFuKGvy4ex(TeMkK$_UKjHyBo|6cQcGn zF^o^Gn)3cGmN4fE1ou0>rR27(=2f67s;WYtAGvjwE(TF#5Jd*jVi1=zh!%rrv4=_a z(7T3Sf;seTA;A_dU%k$C1x`|LP^bEsYi6>81UtCh9Iqw$CnW#dCH{)UpOE$w5`9ae z-_ZYBb-X%3y-uB|UawA4C#yH8Q`D*5k4y9$%;z?k&uuWD+h9Jo!F+Cm`P>HcxeexX z8_ef6n9pr6pW9$Qx50dFgZbPB^SKS?a~sU(Hki+CFrV9CKDW($ZiD&UhW>Y}_jv!k zZr`WguRfqYs6M1FR+p#`yU(Av{fN3${i*jq>h{k(zmKUu_x8uTCrk7vOY|q3!96UQ zpD2mHeqgn8;;iX@a-iSsOC_$a#l|Gh&64M4$#b*hxmohuEO~C0JU2_8n&fBHV+a=C~ z#Cf~KnUFXW5@$l;#F>yd6B1`a;!H@K35he|><;#F=pRhhb-b7Y4mn!G$DoFE`{DMh2FmQWwFOPKiayL^P~NtdD32XVfIU)&zC-5wQ^px*Grtc z&5BwQW=q0sNti9^vL#)%q|26c*^(|>(q&7!Y)O|b>9QqRwj|4hWSNjG6Ov^@vP?*p z3CS`cStcaQgk+hJEEAGtLb6OqmI*s96Ov^@vP?*p3CS`cStcaQgk+hJEEAGtLb6Oq zmI=u+Az3CQ%YYK_w6sdAdsvMIl$E3{HNNHJTam@QJw7AaG6`cLKc==$%0C#QI!!HzF4hIf2Nx z+kLh-vOQiMiJ;riYpA;s{bo_`XUKLpqJ0v{wjtQ<%RSZ?Ihy8BS5{ToXYE&{xkB_QRioRIxn;$Z?qzBw2E%Dif*)u4qHVxT17WnMK@YShpnO; zt)d&Pq8qKE8?B-nt)d&Pq8qKE8?BUmKF0*E9PNV z%MDh_r&=k$XT@k*1txgpQ~f1B%U|-oe6n|)!l!b`7cD#F@v+Bo$UoaEI*yZ;<@u6mn#yE;#uuP#u3u0F0a^cS(`4Xn0@qhGzp5!CNhA5b4s7pqIu zht=h-()T%ag&p;uS6@(9sxPW9sjFfy8Ms<~x%<_Duc&L(->GZWb?SO`gSt_DGq&Hr zx74@QX7wHQUAx?$#x9k?#0e%-u&i*c=ghcmT3 z#ZUE4Kh-;92Rhfm3!E$MDE)tD4fj*J!%yZ8KZ(FkBJe8Q=~cMXt8k}R;ZCo@onD1I zy$W}F73RGP^S;YFe3y6lF7NPN-r>8v!*_Xy@A3}c5W=!_^V$NRyzWeC%j-uAKTdAN!!UKcp^Jf8wvR z)SZF)doRka4RP$#TDj_4x$0WE>RP$#TDj_4 zx$0V3>e~L()amL?>dop5^%ixeI!nD(ovqGM=c>1_7nU!H?WtdsnWma~X zlwBremr2=WQf`@)TV~~!S-E9aZkd%^X62Syxn)*vnUz;&<&{}^WmaC9wffA;E3@*- zth_QSuguCTv+~NUyfQ1V%*rdXvdXMgYF1WRlvNgGl|@-)QC3-$RTgEHMOkH1R+*Gl zCS{dLIb~8#nUqr|t#0eAZjZIHt+%S}Z&iDa742PCv_Ft9X61`n`C?YSn3XSP<%?PQ zVphJGl__RridmUrc6s&tE4QCef2}^LKBX>G8`P)OM)eu>S#`PkoVr?lS$#$QL+nYo zGmAU3xHF48v$!*hHIuP5I8n!m#lDYpKZO&$-L!YR3hnXE9C(T&|K4cAcDmcMO$N_V z7nbc#?}hGHbHAGVRhR!|yMKxNOZ^f5QgOAq<6Yb51bcf= zR42QN;GXMe^&YX}p4&afc8@V)5?EP&R`$-B0M^$%Ny|k zJOGEQBh;&{?I-)HZ*;HIJ)e&_4z>53C%qTN*17LC_Z@WKLHAwse8xS8QTN#H9vNS| z?)toknn^k@hkNDy>$HFEU6-oZ_c{L>_xPb#YtL)3e3fU9d%UlAim%uEx@S8_!8z(e z$GrBYmY-8s_{`o{|A5E+pvV27ul@z!&rf_mKkN#)qoVR+;$6o3?f0>=? z)@&qx`?LHj4+!-`J z=j|)}<{j#<<#0clBh)c|%EziV`dx8#vAzqO!P-?k&CP4^GtGA|QjRr?JJt-90#pig zF6wc|GROVJ#XsI{#yubN@G4qOqg7xQUe(PgqgLk!S1EB?E$ zwAC~-Z=znX+H14=OWk|d?CaRiADcmL>76Cp+rR0mS3kr2`&D39?DNfy-eVW&d({V& ztLR{V4f|`@Z+EEUBPBiws6Fs`^#ygM`l9-hy2>@tuU22SBt9u4Qwa2^fk(QqCO=h1K;4d>Bt9u4Qwa2^fk(QqCO=h1K; z4d>Bt9u4Qwa2^fk(QqCO=h1K;4d>Bt9u4Qwa2^fk2V7ZXU{d9jh43IHE#sC=uWDJloK*j(WgMlUWfO=51RYyIf9#%hBUB|k` zRG*5g)oP9Uuezeale*IgJB_f@2s@3i(+E3_u+s<|AZ&oJ0m23d8z5|eu)$hC`?W7n zFH|p5FIF#6)|s^jse{!a>M(VaXrz&SxTYH*%vpPe)MV+b6Qg2mft8>)bl(pg)$9n!g$9ej@lL!Kd zAdm&0*N4y2m*;9kO%^aAdmTorAK@L0Q+JtZPu#H7M&Elywct=1@&@ zsHQno(;TX44%IY=YMMhe*ZxS|seY`sC_AUkp_=AUO>?NGIaJdes%Z|@G>2-MLp9Bz zn&wbVbEu{{RMQ-)X%5vihiaNbHO--#=1@&@sHQno(;TX44%IY=YMMhe&7qp+P)&2F zra4s89I9pxRWpaGnM2jgp=#z(HFKz%IaJLIs%8dNGlQy`LDkHlYGzP1GpL#wRLu;k zW(HL=gQ}T9)y$u2=1(QY=F#RXDa zAjJhzT%h+~)BCUK{nzyVYkL1R$u8(CqH=)B0VR@$Lk^>F6$fADe6@9Ms=DxUA;-YS)HNYqRv!jskf@L6-w}_G9oV^avPD`h}=fxHX^qX zxsAweL~bK;8ob(Sndt|D?3k*kOt zAaW4fcU-8Sl$QFj4#+o;<{ z-8Sm(xqjteq3UJ+-TAFhw~o41)GeWI4Rzb7+eY0w>ISGApl;y$mO=a`b+fuf-KxH> z{z0u=-x75fP`8b^z3bENX3@KmH$dJ1dE3Yvtnpj4#u3tM93j2N5z@T0jJylT+d$qn z@&?EoAa8)Y0rCdO8z66hyk+DqBkvOOE+Ov{@-89o67nt~ZVGWzh?_#(6yl~3H-)$< z#7!Y?3UNz_TSD9t;+7D%gt#TdEg^0RaZ89>LfjJKmJqjuxFy6bA#MqAONd)S+!ErJ z5VwT5CB!WuZV7Qqh+9J365^H+w}iMQ#4RCi8*$r++eX|n;+7G&jJRdQEhFv%;w~WW z0^%+p?gHYL5x0!EWyCEbZW(dQh+9V7GUApIw~V-D#4RIk8F9;qTSnY6;+7G&jJRdQ zEhBCjam$EXM%*&u2CmH*xHeHe_M~gt;gTi<8SNnw-L9DxMjpGBW@XS%ZOV>+%n>p5x0!EWyCEbZW(dQ zh+9V7GUApIw~V-D#4RIk8F9;qTSnY6;+7G&jJRdQEhBCjaohU!ZN2)oUVU4yzO7f^ z)~j#p)wlKP+j{kFz4|udRuQ*~xK+fhB5oCNtB6}g+$!Q$5x0uCRm80#ZWVE>h+9S6 zD&kfV_kZ^Kn#FDdaT|!+K->o6HW0UgxDCW@AZ`P38;ILL+y>${5VwK24a99AZUb=} zh}%Hi2I4jlw}H4d#H}IjgNXYe;y#GD4BW@jW>&p}PeY$1DEhBCjam$EXM%)JCHW0UgxDCW@ zAnrnZo$ldo-NW5Fhb8o_qpv;b%TC7OC>){i9172&@Ei)yp>P9* z8z|i3#Vuak;>9gq>?#53lj>9IGPOZDS0xHpQTQPQo<`t@R-8E7cesAe5$YHntz(zF zTYH??lm?lr$UGT8%M_m@BlKkaJ-vy({n3u@MCl4j_uM!_=?JAGly1d6rxiCYKEjRX zP`Y=n+lNp(Lg{G5jThlffz%D8ZXk67sT)XLS#jhlQb#(;yLFOx>m={iN#3oKyu1HI z^?G%Za>aO^SyLFOx>m={iN#3oKyjv%Ew@&hIo#fp*$-8xuck3kY)=A#2le}9e zdACmTZk^=aI?20rl6UJMmvoRz5<*=4_@=M@9s79@xT z31UHlSdbtVB!~qGVnKpfkRTQ$h)9BnB#20Ys7MeM38ErFR3wPXZ*lgD1W}P7DiTCR zf~ZIk6$zpuK~yA&iUd)SASx0>MS`eE5ETicB0*Fnh>8SJksvA(L`8zANDvhXq9Q?5 zB#4Ft(U2e-5=29SXh;wZ38EoEG$e?I1ksQn8WKc9f@nw(4GE$lK{OX_DF(=B#20Yh$M(ef`}xDNP>tYh)9BnB#20Yh$M(ef`}xD zNP>tYh)9BnB#20Yh$M(ef`}xDNP>tYh)9BnB#20Yh$M(ef`}xDNP>tYh)9BnB#20Y zh$M(ef`}xDNP>tYh)9BnB#20Yh$M(ef`}xDNP>tYh)9BnB#20Ys7MeM38ErFR3wOs z1W}P7DiTCRf~ZIk6$zpuK~yA&iUd)SASx0>MS`eE5ETicB0*Fnh>8SJksvA(L`8zA zNDvhXq9Q?5B#20Yh$M(ef`}xDNP>tYh)9BnB#20Yh$M(ef|!#a<|K$Y31Uuyn3Evp zB#1c)VorjXlOS3WL`#BbNf0dwq9sAJB#4#-(UKrqoV~@_Tb#Yc*;|~w#o1e&y~WvE zoV~@_Tb#Yc*;|~w#o1e&y~WvEoV~@_Tb#Yc*;|~w#o1e&y~WvEoV~@_Tb#Yc*;|~w z#o1e&y~Ww95=2#ks7er338E@NR3(V21W}bBsuDz1f~ZOmRSBXhK~yD(ssvG$AgU5X zRf4EW5LF4HDnV2wh=(MIhoppQDPdYlct}ckNJ@A}N_a?0ct}ckNJ@A}N_a?0ct}ck z=s)oCh?iHSgo>0b0 zN$O{NC4X0B5$9S2twXoWU%5h@G?0}B zveH1WW1f`;veH0S8puimy(4x)X&~h7(Q?Q9d#>&FeZ?VAv5JaSRIH+66&0(fSVhGu zDppakii%ZKtfFES6|1ONMa3#AR#CBvid9ssqGA;ltEgB-#VRURQL&1ORaC5^Vigr1 z*~t!3F+{}>6+=`EQ8DDzA+HX3b;zqjULB%hh>9U9hNu{#Vu*?%Du$>SqGE`OAu5Kb z7@}f`iXke7s2HMRh>9U9hNu{#Vu*?%Du$?-Ma3*CW>GPVidj_5qGA>mv#6Lw#Vjgj zQ89~(SyarTVipy%sF+2?EGo{T;w&o8qT(zn&Z6QhD$b%}$g4wM9rEgsSBJbh6+=`EQ87ft z5EVmI3{f#e#Sj%kR1E)#RXJcK*a@AoI=GZRGdP^DO8+7 z#VJ&rLd7XmoI=GZRGdP^DO8+7#VJ&rLd7XmoI=GZRGdP^DO8+7#VJ&rLd7XmoI=GZ zRGdP^DO8+7#VJ&rLd7XmoI=GZRGdP^DO8+7#VJ&rLd7Xmj8HK`#RwH6RE$tDLd6Ib zBUFq~F+#-%6(dxPP%%Qq2o)n#j8HK`#RwH6RE$tDLd6kO?41kYUS54KufCU8-^;7- z<<fY6xb|B^s#N3XU+Yxg+Vs1yw?TEP@F}EY;cEsF{nA;Jv$g7LIy2z`Gyt>G% ziz}V%5HUl<3=uO#%n&gn#EcL#Ld*y;Bg72*dR^->VwMrJjF?Tt{B2$9dBmJY%z4E8 zx2|;_G4qI-N6b88<`FZGn0ds^BW4~k^N5*8%sgV|5i^gNdBn^kW*#x~h?z&sJYwb% zGmn^g#LOdR9x?NXnMce#V&)MukC=JH%p>MJV$LIGlP@>=8-awlzF7gBV`^bb4Zy(%6X)0 zB4tyD`{UNLfb8GE$b2vW%2vq%0$487a$1Sw_k-QkIdjjFe@hEF)zZDa%M%M#?f$ zmXWfIlx3tWBW066Hu+=ow{)QAk#Zg>=aF(ADd+ziI?#Ef%p+wUDf38~N6I`>=8-aw zlzF7gBV`^b^GKOT$~;o$kur~zd8EuEAY}z9D@a*E$_i3ekg|f56{O4|WezEGNSQ;*98%_xGKZ8oq|6~@ z4k>d;nM2APQs$5{hm<*_%pqkCDRW4fL&_Xd=8!UnlsTl#A!QCJb4Zy(${bSWkTQpq zIi$=XWezEGNSQ;*98%_xGKZ8oq+CSGMWkFr%0;AHM9M{^Ttv!6q+CSGMWkFr%0;AH zM9M{^Ttv!6q+CSGMWkFr%0;AHM9M{^+=i6fka7wsr;u_ADW{Nf3Mr?MatbLUq>PaA z9;CbnDepnbdyw)Tq`U_y??K9Ykn$d+yay>uNLfP45>l3svV@eqW5Al+@;7y$7m;!i zDHoA)5h)jua=vdnQiezwB4vn_HKhD)ZW$qEgp|?$BDb7D$_OcINLfS58dBDfvWAp3 zq^u!j4Jm6#xrmfCq^u$3B2q3QHXjwqZ-k#wZ zw2aVl5-sP^vbQfijg~dEtfA%Pf5IyZXjwqZ2rX-9SwqY3pyhWS;gz-jz$+uP?44PE z5iLWs4AC+~%MdL?v<%TQM9UB@L$nOhGDOP|Ekm>n(K1BK5G_Nr4AC+~%MdL?v<%TQ zM9UB@L$nOhGDOP|Ekm>n(K1BK8d}!SvWAww$txqYjLstHXc?hpgqAh5tf6HMEo*35L(3Xk*3hzsmNm4jp=Av% zYiLHMFduWeqKBXjwzc8d}!SvWAv5w5*|J4J~VESwqVjTGr6AhL$z7 ztf6HMEo*35L(3XkE~4ckS}vmHB3dq@qvbqW&ZFf#TF#^8JX#jevVfKa zv@D=y0WAw?SwPDIS{BfrqMEu zmT9z1qh%T`(`cDS%QRZ1(Q*@u7}NK+LicvD*R0CT_&d4}E+6r8o1=HXZ^vB_MDaMIr@~+rbl|P?@(s6XU!k?h`n|GXUmWH&h7)w3|0BXBVOt1l)Ym={?_i- zr*t2%_U5g<`8D@;AL##Ub(Olh`@q0s)al&^)_<#e-}-NN?{j?9fv&Fh0(GPr>G`fx zbfLNOmE7yd*faW$iXGW^wA)v>eNF6Ru2Ooko!@`jce-oWoEcl|OxJ6DZ)MM9(KA`{ zy*;q{%Gi5Xe<}8ttN%9k@ihm<-n!=Hs^>7j?V9Po;X3J#czA;2xt{H)hvzvm^RbS0 z*yk6o(Vla+I|JAwUZZVZqrythwf7p`>os~HzUMUx9`PFGyha(X(bURoH0d>({10BE zS+CJ--?ycqKpG09p+FkyNJBHRgVf8_!Rioos5(p<_+{TKhdG4T|~(MSX)^D}95GG}MuXI?_-_8tV92cch_?G}MuXI?_-@8tO@csSea8vLmg=-kcKMK(63&v>SMm6Uy{j7F}s$X{|mb3UouzUle9xk?R+^ev#`JxqgxBFQ0d9#q~SVOGj!ca{MC4??^30j$h>XMUG!wlU6_L z&a628oYYd0S^}vhkXiz%C6HPIsU?tF0;wgCS^}vhkXiz%C6HPIsU?tF0;wgCS^}vh zkXiz%C6HPIsU?tF0;wgCS^}vhkXiz%C6HPIsU?tF0;#1VwREJG&VXxa>W0q@6xF?I zR^7+x|GneS=!VbehR^7R&*+BF=!VbehR^7R&*+BF=!VbehR^7R&*+BF=!VbehR^7R z&*+BF=!VbehR^7R&*+BF=!VbehR^7R&*+91IewAj7dd{B;}eLRev#uBIewAj z7dd{B;}eLRev#uBIewAj?~+<}NiDmimR(ZIE~#ag)UxY$IDSWJ=}0Xdsih;e zbflJ!)Y6e!I#NqVYUxNV9jT>bE$&Dy9jT=wwREJGj?~hTS~^loM{4OvEgh+)W6kbJ zEgh+)Beis-mX6fYky<)ZOGj$yNG%iHtD-fvT$Xvh)=$Pov~5pS0x4w55Ik|WMyvAg4ETI=n; zj$h<zKwXE^}e?|w(op( zLF_SJk&@@-%qy|ycwX0dPD7s4xUcUVY4+qF7CX!<^5C9VBK8!o#B00?y<;PKuS9Y= zRn2%6nm)VfyQ+GGl1I4TBlNn5T}PF>g2E&62{G?9wQ~IuCQ}fvm z`t034dtQpkuVkdSSAJh_qx^bjfZx>?7gpg@2kDX=zX5E0>ryd zdc;?Jzr^r$Uv;go`mSaAf6VVp@0B>Td%oY3A9@CV>6pJhuiI*`TVLO~-5>Y8&DGrB zu2Xcrx*)c%-=pjN9{s)Fqg%Xc_xXNr^^DK{-Q7D z2siV9Z~KY;$Y0l)elPa6*YEM_NL`upog3gnzt4Ui%ei>bUc6qq+#t{2)_vG_IO{vy z<-42oOds&fp6i)C;F&$zGkdycw$3wqv}bjwXK}x;5-cBEx#Qpcg}l*Gb-lla-e1D6 z{S|oh`QC4H-^XIB{LZdc`*kmiJ=@>cbJT&J-}4>c{sQLkLc0}SvWKMxjI-Kq7GGuIU4p$Ld`^{%*4! zyZ7bAKwd1#izRunBrg{HJr(4|g1lIg7Xx{5P+ly_i@S8scIlq&(mmUy8&;A3D&|Ec z9kAYS-6ei!Kk9e(qkYFXuJzdEV_SdRcZyeM&vCb*d{~eVD{(tZ;%7Kz49kQc{Rj)K@FGY;x_1@dChI|4!m9Mi!HR$u9= zCSP(s)W4PW_I1>Py?ioXLFOCNsjA3)CHo=2-~U>5ygEU>PMxS;uTD}Yt2e6C)amL? z>dop5^%ixeI!nD(ovqGM=PG|)_CtQ(e#r0J5BYujA-``wtxnCnYB)4?R&h}zQ=p* zd%V}a$9wI2yw|?Rdu7@|nRZa79h7MYW!gcRc2K4rlxYWL+CiCiP^KM}X$Sp956ZNI zGVP#DJLs=_&|mkUzwSYQ-GegipiDa`(+{(fzyBobof#i5s(W6lB_hOk1#m6s#ZxnYLgRDaf=1 znYJL)76z8o1L{H5Rvq<_dRRH5l}uZZX$vxKL8dLpv;~>AAd42PLIqj0Ad42PMg>{4 zAd41c(J>vgF&(rq9kem4)R+$1m=4;Q4q70K2C`@%iw3f2Ad3dFXdsI&$f66f=z=V| zVC`6tMHghz1%L4ivgiWJF36$_h_N7xF36$_vgm>=x*&@#$fAKP8pxu7EE>q7fh-!x zqJbq7fh^j)o@7ZDEy*bEm_S=vS>*b zEy<$0bkKHL-FNAr?b1QprGvIh2W^)Q+AbZmT~_^ytXGlsDzaWh)~m>R6s4gE zimX>bhKj6Lk@YIFUPacc$a)o7uOjPJWW9>4SCRE9vR=ikrlk8+(pCCxM*)=Nw*tZx zHc@>@lItH^H^`K=Knn#jD3C#c3<{L+reIYsS=CEc^^#S+WK}O&)pwy=?@08LmAzzT zFIm~At?VT$d&$Z^ZDpUfvQJyhr>*8Ct9iz1KF#uf-=oZnR{5e;K5v!JS>?A{-G5?r z|A~At*EiQ~ThWX0#6mdC_WK zw3-*K=0&S{(Q00_nis9+MXPzyYF@OO7p>++t9j9CUbLDQt>#6mdC_WKw3-*K=0&S{ z(Q00_nis9+MXPzyYF@OO7yCDK+x?$b8`Wpj6>5w6iTbH>{9ONCDyi;v{FrOzSpAa& z&-M0!${7+|bE)l`OYH&2Qn}_*d%&?&1CF6`ou#(xEVW%{sqH#T?E%M94LFu+z_C=W zv($E-rS^bhsa$8NJ#dUVR=rX=rfR^?z;%||uCvs34W;(Ld8l%}xH!+r>(@(R^n+Z@wAnA+R8X>Wt_G$PFoqLt&G!F z#%U|#w3Tt%$~bLhoVGGfn;ZOZKeD=LRW4eUi&o{LRk>(YE?Sj~R^_5qxoA}`T9u1d z<)T%&XjLv+m5Wy8qE)$QRW4eUi&o{LRk>(YE?SlIR^_}^IVa=i^!jsp{W-nI^>w}V)pbeQ>({GCDIF-Qa?z?>v?>>^%0<2L^*nKJ^>}q;_eWOEX*qW%<7r6k zwYZKwSA2%_zRQXeT5)>Uil5PKeo%tHZ_T~k2mAk8U8Sz>KByc2plEhAMK0+gmvoU! zy2vG6dc;dUew=TQl``o@?eL!8JKB6w|o-g5_FX5jr;h(SP@HHLb5?0h>f1zAa zIwpymkJrt|>*nKi^YOa*c-?%w&ImSP#U>r$O6;@d?w8w5_BjS|g)?jYW-smgH7{-O z(grVGjVYV{ots|DO+ThQAMB`O#~rNTEz8dO8E=1~d%iAm&j#+$K`!YamvoRzI>;p* zzLv-TU5_|x4T{OUtQ#qE^-NbHet`L|7joY zw`QzW>(qMnDD`Nym-++s7`3;uBSd$#q`O+uT`lRZmULH3x~rvSr+!lREz4g0WVcUI zJ->dM+XK|^*l0&bJDswY2BQ(zTA7b zx4X%Dx5;|9$$GcRdbi1Xx5;|9$$GcRdbg?9pRnF-vfgd7-fgnpZL;2Nvfgd7-fgnp zZL;2Nvfgd7-fhxxtmrsabR26sjx`;}nvP>l$FZj4SkrN=SrezMiBmd{fjMblP8uxt zKpYcpP8yh#2Ii!JIcZ={8dy8;SniMP=k~Gcaq97Ese7w##!6-v8hf!W>N&copVO1OLO=6TeYw-De{bx2 zQ|z66XU9I$caFLs_UXQN#NOoDwmjRGXZx^oN}m+}p!!qw6?IMQq}7+ij$5;@Iw*Ff z&gzwG60z4=s~%qC*xvz1`V35}TXqtM>W|d%>I8M7I!V339k=!j^%ixeI!nD(ovqGM zZ;Ku0mA*dqDBoqz|><(D&iq>_Q>N-rl z^SUh`xvO(}ik`1??E86VV*i4-OL)74w@Y}tgttq0yM(t(c)NtROL)74w@Y}tgttq0 zyM(t(c)NtROL)74w@Y}tgttq0yM(t(c)NtROL)74w@Y}tgttqkwo7=sgttq0+riBx z++4!V4sLdEvxA!*-0a|H2RA#o*}=^YZg%i8#L6M8>|OV}>^FPXZ}xV-*=c`uqrT^z zzUQ5GU+=W9EN@@g&c0W;J;rbNvC4H-{pR=1*O&B4B)k&6UD@frv-Qo-Q5Ue%cSt&( z4{mmFvy7V^-qqV>UBSyTUM}I~5?(Ihl;pGxuF5%@8UM}I~5?*%jvg0o&VFsTt zZC%329wU1_;w3%eC5&9c$R(4+C9GS*x+Sbz!n!4_Tf({}tXsmmC9GS*x+Sbz!n!4_ zTf({}tXsmmC9GT0z3E_GNB5?KbsenhU|k36I(X5+iw<6N@S=kk9lYq^MF%fBc+tU& z4qkNdqJtM5yy)OX2QNB!(ZP!jUUcxHgBKmV=-@>MFFJV9!HW)Fbnv2s7ahFl;6(>7 zI(X5+iw<6N@S=kk9lYq^MF%fB*7eZ39$LGHtldM_?q9urJ^g zI}&enW$hlaZigQIdwzR+XOZl!+bPfK4qxRizqL7EsqA@`SJv&`G^XtN{iEmik5;^< zb$h`xxJ+;UNM~5MDE4IM`Tc*`yZ7+8sl`Uf)hKnZw#^eee7J-uGI2t=)ZMw@>Kt?!0&By}MuU40`7} z?_6g;+THC(ySsP39CWC-6jfY`DlSDe_fX9}RC5p2+(R|@F!%%BV4R=}(bXU9{ zD4xUfc$CLadHl4VIj+*@Z&aOZ+{b`@AM{qU`h2MV9;(0htF`y5$`pBsKHeeX9U|T# z;vFL1A>th(-XY>0BHkh59U?XOem&fxhg*1th-Zk`U_?Aa#4|)ZL&P&g!>q?1woVT9 zM-_-a!P8(3lIlWHb)l%bP*hzgsxA~&7mBJ2Mb(9(>OxU87uwr#3SSOygPF!s|RGaQs zo9Uoyc-UHgWzCzFW`sTZ>aVgs{Mv)zoFW1sP-GG{f274q1tb#_8Y4G zhHAf|+Ha`#8>;<=YQLe{Z>aVgs{Mv)zoFW1sP-GG{f274q1tb#_8ZEF<2CYqyj~w~ z*H>##6iT&^Qth*%uaCFubHyTWcTva+VVKlUHNDZI&P zyvgWzHdAIfg7@eWAG7Ry0nZVyt#0Qz-o)fM-YsYM8`=Fvb|1&8H!$)Iw*CmeWRC&w z?5_F*pLKL_bk#9%lDmG#1t0eziAbp zpAvsx(T3PR#`g}d@UE?%w2xPgXTxJ<>5LVxTJBXtT4kiqsN)Uuyx|J1TBKD=wd8rP ziuKI`pS4&^GFp=13EQ^uW!)5P?4@7Oq8E6<5-*tZ9Y3keQ2s#6{_8Pfxb}qJ`S1Dq zKl1f|NZ8)rl{K#b(^AYQ`BvWx=qoNmr}9^ zXvL=~*^g4P7j10~)taJOQ&ek;YE4nCDXKL^wWg@n6xEudT2oYOifT)VR%w-Rqa~><$%C%Flhs&wHU?2JkcH!N&hlcd-*S+h@ z-gTOGUZ9-^ZS&5r_^y4eRJ}O3$0wZocke!&TE51+zu?`cdiT-Zz3(>f{<5puAyxsE z{!i=wv`HqYW{!i=wziF5LPwW4*{!i=wwEj=)|Fr&3>;JU=PwW4*{!i=wwEj=) z|Fr&3>;JU=PwW3LZqxsVXxYVYx9l{39|z;%bT|XfgtOpmI0w#!&%=3eK3oV7$_aiG z)ViXh+29v~GykSPJ{erGr7up@7iaxlUtH>4BP%^=MaqA>C-EHa4y$;*V)yZHulX$#{FZ9?f4z@loTF^r+b}0b$;nZ2a+I7LB_~J8 z$x(80l$;zTCr63*Q&_F07s^wbsftzdl$>jfclUnPRn3!I>`L z)I%5b@bBzRn3G$?yBiJdLzwYsgM=$jK>ka*CXsA}6QF$tiMj zikzGxC#T5CDROd(oSY&jr^v}Ea&n5CoFXTu$jK>ka*CXsA}6QF$tiMjikzGxC#T5C zDROd(oSY&jr^v}Ea&n5CoFXTu$jK>ka*CXsA}6QF$tiMjikzGxzE^v-=(<|1C{!y7 z)rvy3qEM|UR4WSAibDBDvwWjj1YT8ZK2ii;B?7M!fmeyZt3=>cBJe5^c$EmeO1_bk zZ{*|~Ir&CTzLAq}ZRe=%f3@>jp4!e++j(kxXy-Hcjs#X!QoBPthh6LacT&K2 zsl1;qqtHSMHcP?AJ9XtL*gORr^RP&n=BdtjSFAkMnWH*$RA-Lr%u$^=sxwD*=BUmb z)tRF@b5v)J>daA{IjS>9b>^tf9MzelI&)NKj_S-&ojIyAM|I|?&K%X5qdId`XO8O3 zQJp!eGe>p)vz?&wRA-**%u}6tsxwb@{-50mYCrYF{o&nk02~Ad!+YWX_RdCq6zZmO zKdu&WwTP=lTrJ{i5m$@2TEx{Nt`>2%NGblO-FD2p=PR6xt0fC?E>?xFyv@1TA2<1} z9!K7&@b-ATJq~Y=uJAVA**{igjb=Y_uWyvjRctBTJWSXB9YdW-%%!QYRo zM3P2-Yp%TV?Yy}1e4K-~R-TWotx1|Co+EtDVU?QM@3iT++Voqmj;jW% zE6+Z$&9jyB87kLV=h;`hHrBIo`{V0eRr&N-jW$%iH9mvjuTgH5-(t&aivL!rX@1E! zUs8ExT$hXAx3u!v^*(!!&z|G6X1~QfvAFVEJWlbuD&D3NMdP^ndZiWd zSrnPdPw{s)RDOz2bm**n!>@hA(CH8Ex$r6RYnE1ecUNsYRn*KOx@J9yppmA|z5 z%W8jF?K&5E&(IiGdENe%_Qp9v)3Nf7U%B}0o>*CF`A2;6kdLn3(t_8miEFkduFK!I)Nwo$+srsw$LV~u@3VHU z$+Pud_qu)?>cK|OEc8rc<+X8by}~)Ko#!vJ{iVM0mnHsEu`hpF>M!&BWkID~8+>-Q z@|vxg!cwn^?|X_rcWI?XE4?OO=NeYNH|E!3zjgb2eAdNKZ7BZUdEPnSUxvOn?t?kL z_Z5Gsuk>B~TcrY8`7P#I+@?(Bx7c2WG+6wJan4xjNuRjNC%*2x7FW*ZxZ4Q+$O!(( zt6uY}SjA<$>Mve3$Ez}x7By`7>;?W3w{^b1yis}opS=G`?|*Vj>*BtRUp3pSUiGT^ zm9t7-^{TC2CbsD{TiVg&6v>+>oD$?R8OQtmAK7RQZe(%byh~YV$q%% z;%3abir@3hGOt-x`J`8T(k!1e%O}NG9*F>xA>&D-?y!GH0aGC-@H|` z$F>}gN<5OEki{SF?(I*)kZO?-76}65XXf0%I&`v z%r%EJuY5zWz^r$J8Sq6;R#{x07BrTRafaK&PA^>-G?#x7EH8i2>7`vkOL;=D+M0wl z<+Fk}%byQA$~y-etmy76pQ3G7S;_sN3d8qOrrIIr!7)Yst~UURL-Z^Cu(Ex%u1z9D^Lxix(f zj0W|<+QZE<9sx(1MLY^V<>#Z}7(d(jz1Gg}wa5AWGjKed04I9R&hND+!)U*c@puZH z>KdQXD=+AkS;2g@;@4rJdl=mfrDuwIrPaBvoqDES&-6RjwOh~pFj(boh*m44-Pxgc zdV{s%VVfFwJFLTayUggVEvB<%*{eAN!;t9B%x zR6TaD>#$Ab4m~z)V7|I+ODm+nmqX=6uGsS}VqD zzYJf2%i#*R60U-);j3V8u3CF@)&3Bsz*P7V@ZZj7>~=n5ckMm!6R>Yrt$n*{?}MMg z&tW>;4^Bw0eGnd!d;9|QSM4w1SD@c&^;@let9=aQiM79h-@@I|EI8ms4H^*XH1VD)6Ip3MFq$LtxHJsGoa;0NBq?jK_J zG=88PySuTwTiyO1b^CjgzbH3g`D855V0i}1Cu8|!ET3F`b9s98cgxeUeI~X~9#$+j zr0iCa{xEz5PJk2L-+L0A?B~%Q$G|CmJ{5kh#&$nE29Lv<@?;FnVCZBFos6NAF?2G9 zPR7v57&;k4Cu8Vj44sUj(=l{9hEB)O=@>d4L#JctbPS!2q0=#RI)+Zi(CHXD9Yd#M z=yVL7j-k^rbUKDk$I$5*Ivqo&W9W1YosOZ?F?2eHK8B%>Vd!HR`WS{jhM|vP=wlfA z7=}JpdyVtbzYfl;ti2Y#3D<%1Dr>KY8(<=Q8*YS~U=mD*@4(G)3w#%x=Ijjg*K2Qw zJK#?EUU?=9n8^ZWvVfT^U?vNg$pU7wfSD{{CJUI!0%o#+nJi!?3z*3QX0m{pEMO)J zn8^Y%EFi-IX0U)6EMNu;n85;Ouz(pXUXaU#sa3XfN3mX8Vi`l0;aKmX)ItG3z)_Nrm=u&EMOW7 zn8pI8v4CkTU>XaU#sa3XfN3mXTJ17-Gdy`R#j7nrwBBK%+mB^?>MkO*Tkx_|^N@P?bqY@dF$f!g{B{C|JQHhL7 zWK<%f5*d}qs6<93GAd@w*kq4ZmDpmAE%t0VIlLgM^sv8>-R0R`p1tMSTaKOevZp*d z%Cn<9JIb@2JnrZ5K9Bc#ywBr(9`EybpU3+=-skZ?kN0`J@4@>XyzjyL9=z|t`yRaS z!TTP(@4@>XyzjyL9=z|t`yRaS!TTP(@4@>XyzjyL9=z|t`yRaS!TTP(@4@>XyzjyL z9=z|t`yRaS!TTP(@4@>Xyzepgy~e)R*!LRyUSr>D?0b!Uud(kn_Pxfw*Vy+O`(9(; zYwUZCeXp_aHTJ#6zSr3I8v9;j-)ro9jeW1N?={=dXxBJ*co^&UEo0qmtQVTkh*##! zGoSIFW_FYI&hXA9e4ANw?|w<-Zs6M*__l`1TxC2@c{Iix1IK%Ah&dHSs*=6X`qjbdmNL!%fP#n32*Mlm#sp-~KtVrUdYqZk^+&?tsR zF*J&yQ4Eb@XcR-E7#hXUD26PjG5Br}Q9+x_Z&j&yRG9;;8ez6)M{u8Ym3v34+&fye ztDko>%QX^qx0cD?!d34uL$oKj&${ZJe%~AR@w$CIz6_s&$GQhu}gRL_sCoL0ZF zdR#eMZI6X&tNg3aD0fuLq=#kQ+h>LGus%Cze9wHZ6Clzb^*9z@aIcV^Qqm2u6s%r$ z68fri0eY=IRxzy^1xMR2`XaD5f>XFx)!gUj8Sp#zs5<$j#=LHAs{Cec8b-j5uoE~V zu6AvCO>LWVpW0zPbWlngpbN5~ziORQS{wSgP+m8Dxysfm8P7gd)#Yzh?NI(67DPts z_eN#Fs65W5mawTNHudBdKU&~N&q~&nA21U4>hXK^^q?MHtq0$#{B@HRXgg@=3L;W#`TUG7ZhokXu93GCt z!*O^x+SPp?4@cwSXgoXs54Xp|(XM!BS9~SEFoy2A$C`!9s*WvBv~Jg&#orA6X7D$IzvHS;+58>+9c^Szs6Nf(xbpY$cYFNZ9)CZC zzuVJqH`8x7SKnHmR()If(dyeh-cf!OulK_1?eRKe_3^!_@#RxeH^4-gRDLh6XK?*9 zxSqlFO!|xEf%FTTd(&@ho|kUe+>&1E=hpJ}_`W^9Z;$Vv$M+raeS3Ug;~eh2aDFt- zZ;$gA;rwWvAC2?FaQ-5kAA|Fk;`|hxzaHlw#Q94x>3Dn}h3}*A{c3!_2H(%d_p|YR z9KMgn_p9-J9KQdcwx>Lo_q!hZeun!QC!l{8{|^YhhlNpK%_}Bus;Z(Hs?F?J3ehlo#z)lS8$H0CJ zd>RA$F|Z#4BMcnCz>-xn9U{?Mt7bZ^npw-v8m*^WZ#~`m}CrV%CT;$)B7huZ(whUm)0JaQZ%K)|vU`q*8 zN|-W$DFc{N!jux0^kc|V81fW`JcS`oVaQXp&D7CySOF_xl{@a*Xtj3e@E)seu%#bc z`mv>iEuGlXk1Y|FEXI-uO9ruIz|KcK)(!NU(d~0yZP5&OKWyeLhX?P(kl$m-GuSc9 z$j>p#5Ar9EB%cdLCjS!blgtErCzpC`f|Y*mEYC<5f<5&5PxW?|P5-ny8SGJA4QG^} z9o8ERPmK@uOx*wzgFVwfc9wld`9(djiM{N=Hu`Ed2YaxAnY9hU$l8UlC>W08>$QA- zrL}3T-A+q)*3zA|^fy|%ihPPEiK(aOP|rw?X+||t=yoM z_4;IKN(*-?&!k1x>C>4NiyO&Gc2{fNgN5wHa-1f{>N;56 zOjg&y>N+Y{^lq;?07jMXV|BAx-E8CW5UZQb>SnXLZdNyw)phXmuk-P*^X>I~dp#?g zlU!JFPqD>TE}@@y70n}1)&syen0Y4VM()DQU^=w zU`aDs(oB{#v-;-pOZ@dq{PoLx^~?NpiB-*HRdZO?99A`lRn4J2GU+#<0hU5*c_uE+ zWL+~^*G$$mlXcBBYCSch&5T{7;xp0j@<$fd!NNLN*lZT|5DR;Vg+0W=9%5k+(H!gE zwkV#4Rn2Bqvsu+_RyCVdb+D@YSk-J+)y@Cb8~M4zo6V>#FVDe%`4}+M9vd+~w{mmH zg8s_On14f-GQ>Tcdz)h{p~9^#oMNAwc~19XZ_yI3;L<$2ScU_C#PmP%tP7Ge%Wq+I z?Dd{9Hu>sL2Q`?yVAvt$25O}NYx}8{g+94Xdzad2Uw)H>{4}G)osDZsynK_XN~AxRX+&! zta`JmgU7J$HF#Izn8Y!53^_JoB-LqP06#9pAVKNrzfWeEy)?l89{6E7s*G0)yc<_zX{$<{x12uKs7Y^WUwLm zbn>O3GpM?DR8SoRK||GJi3^k0ROg1>m!4F!n}3(rJY74{zaLe8j(^{6yUVv5-0t$K z$9Cx1>HMAEs=0iZD=Yu*-DS~inOKkk0b?zufa@{Y^j z@uPRVvCF-?+`DJ6=lk}&-@muwpNFv5{d>K&*Ztmm#5?QX8SVX}%D?CLUb1(zceKxL z{=Mg22XA-z-p}t>_wFa({mi>J`WL-BI-vT1gZG zn7%Qa$6fr{y3al7-~2P*an3UrUU|`R2k&*!hKu*Q_?nBmzHpR(&tJ0JB~vbW@sjyh z+<3(wudKQ9v@2h~YL}}%a@FOZt-I>EtL9v_zXR@--v9jYT$~9J}u^Nq)Xskl1Ppa~+SV>k?WUL;yD#zaPz7?f-bou#;O1!6h zK&%RRpRcma<14B!R(M<0U99Z3s=DJTx>xvuB1QKie{dr;cPTY@DKC=~M`Cq0C{7HD z6W!v(pg1w;DjpXn2E~a%+0Vwxy3HfXCsSspQ)VYqW~a-B9^*sKqs}g&&Mu+OE~U&a zrOGa)%3h?(UZl!;sInfa>_zcoQ2ZFw3wMhL-QqzvbycLUisC@GUU{AGALQo;`Sb#x zUf_r9UsOJnBD$3C9prl-=X)RLdmnf8kMq5cQ#Y?rH?L4PuTVFyP&Y5~zk~emApbka z{|@rK-F)vLA9jbec#)dLpz85vcO_M+nN*j5DB^bOnQQgTwR&c$aos@Yc8IzidMS>s zaa7Igtq#4_p|=+3tq#4_p|}2`w>tDzhltvtC$1GiyY`!07U-EyJ=3XY7Kn}oy%R^s4n5Q%I>wQ)TV(7O8N2mZ z91%N2#5e=*5dAttzi!d5TlDJ|{krwwwIX0a1T2Vv1re|y0(PWDZxOIV1nj`E4iPYp zdL5!(9PK*v__KQaSv~%&9)DJkKdZ+Z^mv0FZ_windVHZC@6h8Ndb~rA$I)(q9`6w0 z3L;!LJ{Cl{4*O?{V0!*#R`j~qv_fxB(c6cqwH&Iquhh%$)1zOKiyq2~u9J&iCl~!W zE4rH%P0&l1vZAqinLv$Aa^>S(_0_KW&#H5mtIl1nD)%K-xi3*__shtCN3Gp2BmbRV`KkNb5|rEB zl-u2AM=N_yB{P)uvhuGew_hb!`gv{n7CgI!db^H#nj-H33=i%si zI647GC*bG=qxmbNIRQr})ErG;UsRris}qds1PW~ug*FLie@u;Cg^v&8<9+ye3qIaL zflb24TPUx)jq(dd`3j>vAvjPzvo%B5O@^?Wk^bYB4B<~kI?iJj8KwJi@v&_(gWa~t z40h9l4{yl~ex}!YaPw!|WCpYUL1yqD__&MQCC&(*-6kW*YTdm5L+UNgdOBTGTcxhK zzpVNozuVQpwGGu2P5clMZRh|i;rt>k5a26cV^-^T7c*?WP#ce3|R_MT<$o$S5Sr^fN3jlH+&mw9Zyjm@{| zpNH9e8=G&Fg>|v}EW3|KA`&-x#f4t>+Qwen*lS$F=#*`Bv)N8I+sS4-*=r|z?PRZ= z>@~|?J5|sk{WDMh%wxBmY_^ll#xZ0byDhNWxZ;~-xBcw4P1P)_t_CMmvfWNGrB_Vp z6;pcIaT`1CWXGNCILnT+>^RGgSF_{QvaC&PI4jQdiZi|9Os_c8`wwDFHf?7h_M2tD zS@xS{zgZr+ll^wG-z@vhvfobj+sS_0RJtN#`H!-!epyzxx0&Pf)!Xhcy=8Z4acK@a z`V%|Kv-|$wCM}9^t)xYLTC+iG-omv_xR%GYO}I82*B0Sg7T3DOn2Z>c!MS+mp$q4_ zaBdUMb>Uo>t9T3NvN)H;xmeLhj~2g!o%5k*oB8(c-V!9U3l1qhh2EM2@kvQuuhbI5*N3syb>)_!pSbN zB!ib-c-d7^eeq0$dLxgs2sbz3W*#@QxLK!%>u__E*pk7|E}YEbWEW0$;p8Tq+=P>x zaB&eXZW2pYizTbYlGW)SyMye7@?iQ6Xn>{AYG0iWC_t|YQW8eN(bl%xy$=^R;o>G- z?83z^T+HHP9WK7aue`*syu`1(#IL+0#^iBvHZIP_#YMQ7#lbQaG_%6k91I2M2rSW|V;5P6Tqm=w<1l5c zy8l8<8H*`nG38_)>^)c#*ZfCd$)Q*>9!pNal2fo`gu4GiEE!v=`;YOrp<4ggN``fs z=Z9+jBd}&foNZyw2;OWGZ#Jp=*76Ujk{@Eyo|rU(GWiKMorO(jVbfWEla;-&x&Q6V zY^k4H%OkLA1Xhi}s&la_uIZ1!s-bM{qVibG8i82{VAfd78XISC*fk!zPQk8AuW!8;@b*F>E}Bjm5CIu0Q_m%x|E49j5&?`+Lt8b+e=T z=RVZUK3mky?tIOVy4lsN)88tb9o0VfQ2X46!r4RZa}Tx8eT-hLaCSCQ+bW!$)joID zo3X;#P3?0xwa?wuKKF3-TNTdEt|nGEJF0o^NM#QxoC~z9N~@~0s!GId)3T)^Zkv|P zX9Kg?z!DyC3C_3R_7bg(=Tuv8x&^0a<8%v7#~Jr5oNmGC7JOb3>oj~_kE`o(v;#-i zi>hs|s7hpQb2U}C+JdVsm8DIatof!#*^82G8<23Z zQU_lx3bye)OVs45%XjIqU(jbQvieSX?9WtBd?)gy!wxB5NKajeL0_&^$m3|#qu=9t zKs-O)?p^UIuJN6UPkP52`fshiTcfYm>WBEew^x0_tLZ8;7-P$?YG0>%-!7F;c#)Us z^(jyKlvzII6`yji6$bHo-gtfI0-t!bPmJeN@Aiprvh03QwXj8nw)*r-efp(7z1^pG z1v_fjpihiz6mh$ned5+TLgSUO4L)(9PmF60@g3-|c=s#b{ib(kozgHudq$~(9HhEF zbYJTR^G{9mYP{D&6TQ0JC(gp6O<1(ar!A#dH_)pa=+V{m=xU$bk?f_K`{1o|lQ`Fe zJ#l@u$2V5)e>HNejofM@x7x_9HgcbvGrsqA zjW(~*<_+519UQF9p?9oe9V=PKN|v$G2(@GWN}sU7C&cUWTX@%%+S8yt4dQDrCa=We zl~}tHYghX8cC3x(r9 zTG^s?Eo`WT4VhDgR$v2K*P?YTTGyg=En3&2b+O$H==}k`KcM#q^!|XJZ{8A(TU4lr z`gAA@*rpHTKHB=tTl*%y*5JcNV3F%v==v5?WD_Z}iDL0u*SgTPHoDe@*dE`d9It7g zCYDYUOMfJm{zxAz)(4Bl&|hQLB7Lxk6~y-^$LqYC^ut0bX`*W7*7VWECls2>*UhlToKp?+AX9~SC|g|2y#5n5J~?N{FKL&Z^-z=^{OTzaGC|kKeDy@7Lq^<9m}9ylFS_5iDsGm3mP5IiL23PkYO! zz2(z}RN|nY%c@GL^2~T68*45KP<)Icpb=GBiAEx#JN?EXb~B`9;4S| z^kTp8kbZi|DE1h|zt^ZeMzO~z_87$;qu653;@s#z>(LI+Z-6eyLcY9I z6o~YB7SrRo+a7EB?Q*7<*5hV7ZpL@e&&Iv@UWC~1tW1V>9og}J`>K2}JbqtvDup#Yn`JgXeMWd0cxQ*Ph3<=k?&A*k!*QSF_30#5{US z&qX56CM}4o;-PPhv&DE1g7v<2gKu5p+xqY$&S~N)k>j+&(4O;(bHMID?PZXoVORVpNDxp>JsS4e`3G z5To8o+X*ObCm?>|Eq)=ys1TzeEks`l(Mp z_35WR92wd}Bkrqz#{3<&sRVAz{2hV=^}&#>?1VwP!alG+&-Q+gpVl|W!PfELYD-R% zc5OKv$l*W^2Xe7Z;X%&$=eF7w9)zwhbbX=g3te9h4{~^r!-E_iGy@7?dW80nBcBge9Js9B*XVr^MuBBhwOPI2pAK1*6 zhgMWBG0JQFC9XEU;jjH_w+YqH{o?mqj~Z9jtF3K|b-(jxz3P|dLpQTva}J(a>zN0v zjfg8Hy()9g1MvE{e0smiW1q_7P~{|!20Q!yI3nyuZ;a%Bc30ULTCX`*jGik-x5<~c zuGj3T`s;elUXi0)S=a&-IVoXF8Fa&*g=W0ln-Uyj#nE=^k3t7_S&YT2i9 zl2x_rQ#Hw|nq)7DU$9O(opLrT=8*#Ecsc0jo&C6-?a@u_Q zDr)b?s&dvO<4G@`^x{dpM(rO*pueuk9EwC+*JQqFS!iYX$M4w1~r<_ZsL+0H)avd_6&>~k*roXb9&*yj}X zS!d*)7|QwOrOEj$^7)!W$WZEW>6wmK!<0R`wSPvO(2 z@aa?359(Aj>-hF5eESr2r#f|~I_hyQTP+yjhz-tVgDcqJ3O4u}8=T7q=d!`MY;Z0c ztYd@iY;Z0cY}!&om}1orE#SWEA^nm!Hk&*Xi5Sa8jCfDEc;AWmF826-(M2N0QW2w4 z7qC`nL}e9Hyb}I5W-a422>biA9WkIA17eRGN00$MU)0;Nmn-seMZFn&nIbQf~=%Of%Q1B9tZwqT(89R?jYfAUHuw-2tEuS zg+t(Da438nJ^_cp;qXZ~5{`mTQNl;VG4N?P7LJ3@!0~VboCqhu$uJtM;s{QGQ(-Ke z2IF8noDOHeXW?^jCY%Ll!#Qv+d>+n&^Wj2m_$pijUxRC5qUXO2ck()SRoJ%@`&uaH zP)5*0J%=)a9=jYCFfxOY8!p9L0a`yIGUbSAnxXrFm37?(#I@}J^;BLF?JzyW$ z2jL<31w0JDgkQlU@N0O~ik0&#^N}m*qLss5l3BbA8F(EQfO&{v<{|8bGGH&10ehhg z*b8MK{WQ#kXW&_Q4*m?!!;A0|ybQD86_^cm@E3R$UV}L>7wTai%!drT4hvxsEQUr{ z0xMu8tb!I;3vJL2Z$jL@4bTZ)kOk|M)7DDcfo~vf{?rb91L;241aCnR`k@3748S04 zhO%|A)=1ldZ@>_y+C3 zH)sdGK|Amb+JSG-4t#@l;2X39-=H1%2JOH%Xa~Lld#ViBQ)R%ODg!kK!NKrez?mB3 zT4P*mz5%#X^G&!8z6IZg8{sCH1e4)Aa5LNj--TP@Hoyxz@D133Z@>ZJyjxmszmlwiR`Ho*;6I5r^rodGA5ln-7z5l0hAN&kvzyt6gJOsb6r}hiM9?O_KP;rSgs?&MyWojvXXySlS~H;*G>ch6HV!8>42*bCn2J$u7G zu&>|W1^fAVe~<50F*pE5l`qyK6NC3y@pTX!T)t1wJQdLMdS_zr0e8E9(7Njn!H3}^ z-t$qtcL;n8)Eaoldfu^~cdX|f>v_le;0UM69O>~WxDed06kH5nfJ@*~_##|p-RuNs zqJ0Uz?Dwz0aw=(AKGuuUEn7kl|%{#f>zS$}!HxySH{% zg?4f}ru=F`y)y9`k0+Mjz^0ERM*IC#J3O6c)$TYy+l>snCMM2x7U2bczsTP%@$;qS zxrxil%dl=@;!EX*#Fst)6>x`t!Zjzp3a*#etxsI%=WoG8aD55amzZ4cOxzZ1&m-3- z?)38%pKUJ?p1F|tsn^Lt5{K-7b`SwxKf5Ucxy`5G(I~X>sF4%t9U*yMD z+7D~-oS4ZI*AIKs<2sM-ryJH)UY2?Lwgg=3-CgsGLloMxCPMk?OaVF)&nUoV}Qcj#nz2@)p zK!%gb!0WI8)$k=g(`$U_J+yi^bLLLYsTglgxmr6BF+S{M%eN1Fdg z^B-wi()l3E(mQ$NKhpe1dRO2-(tJjm&q(tb>3723K!2tAjP!oMU!>m+2f!#e5Dsz@ z&cX0rcptnUJ^)UMN;@SgeF%IE4uy}yC*UwR96kw0z>#nidAv#}uyaiMY>(%_x$t>756*`R;6h+uX}%`S*QEKHG+&dx3?{&rfS*b8Gd%sp zJpIKy{lz@}#XSARJpIKy{l)2P?KSXCxDLJr*TW4k5xxyK!c8ysa`~rS!-s^Yp1pEP>gs0$-*3tY4o`#w53_J_Z!JpxIcoANLmthvTr-gc& zLp{x*p5{=1@;_sHZv9)0}jZeq9F5utKC<39Fz5 z)RZmIP zQ&RPmR6QkCPf68NQuUNnJtb97N!3$Q^%PJ&1yoM~)l)$A6i__{R8Ilb*YIaG?+10O znh(NBk96Pz~Id>W30&%jA= zGK}$_Q-fhnaN6hur;Sc<+E}ATS#t)Q31`9Ca1NXcpNI3{e7F$s*GVWForJQ{Nhlkg zgtE~IP8*$sve8K>8=Zu*(Mc#9orJQnMvSZxE2z18YObD|tEcAbskwS;uAZ8!r{?OZ zxq51@o|>zt=IW`rdTOqonyaVg>Z!SUYObD|tEcAbskwS;uAZ8!r{?OZxq51@o|>zt z=IU#H<~x5555R-)5c~ojhF`+3;MeddJXT)pl$FI!Sy}8Xy~R#hS?rXR#ZFmS?39(o zPFY!O*ZjO4F7tM{%-i8IZ->jg9WL{BxXe>cAG5<{-VT>}J6z`NaGAHmWxi%M)WKii zRd@~Nz+9+@c`zR`@H#AjH=qF)!Xj7_%Ld^!~1aZ?TE6bd+vdk$f%bc>Z%qc6&oU*da zDJ#pIva*aSZl;Qx|2L~z|B{*++?9GJxF_|T$3J^)2&SbL20u$J z3ieAidTvSZ^VCv5ukidz&#&@xtDjeUevO~s3cjBz20u=j^ete7pUYUQSPU-|EBG)%`LE)4vMdOg|DFZ@;C!^rOM{ z_E}m~dt`87?NPyfwa0k;bnrm!vBAEzCk9`vJ;`$?+u3=HpHK1pslmQ_`b0gwLQk(4 zzQEaH4ME57g~6ubi-J>zFE*dq=rv95Mfsi?wvImM+%P#ag;p zOBZYDVl7>)rHi$6v6e2D(#2A`SV|X5>C)O)wDNmec`NqL*3#ixx}ho;uA_r+Ml$Po3te(>!&Wr%vS_AG*6x8 zsna}lnx{_l)M=hN%~Pj&O0tELY@sAuD9IK|vW1dtp(I-mY7ZjzUNR4+HVdo(34eV^WLN{p9#Uf|IQUdce+zsBr*t$Uhx zv@_jKuGy>ndh(s+MacuKmOtC?&UrS6&}2n)vlY?J$;EzNW^TC| z-ZHmWRGmJ-dhZkAo)MW))Z}VOP4_Jl+m>z@6|t&{IaYDfM8vV1%2D zaFY>kGQv$pxXB1N8Q~_@bVRB>cvtF8UU^-xGs`+Mm32RScd%WmC)g#`7wm!sO<2%` z1x;Acgau7l(1Zm|SkRRIFnlCPq(AEM5cn8aD~AzH7}10gO&HOH5ltA;gb_^`(S#9A z7}10gO&HOH5ltA;gb_^`(Uf-G=@aQ+S}^U})1y6(fm8f^Dp&`PHBId5A#)S$<|f+B zO|;h@?q2<6<`RrG7Bpc&6BaaKK|H@;OaqZW5cyS%Hojdg8lmE`lizoTZ7V);rRUx1 z>j%L5y~nw87_yjGDPYM`ELmKcN2UVeY6p8PU`kxcD5zwF38(R3&1bM?F~%HSsbq|I z(z&}p*k}QB7AL;oaRLlt(tkLe(p`#}G&@;^4GBm>H5S<)J?W}2Y#xTqP7b&3ZpZR` zESrO6^~qiQZKPdzRIxBEgK2Lh_qK9jAMC^I0~cf9V%{*`-(m$8 zu5jOAh>43aaVaLoYmc@vaWN(?#>B;#xBwFuW8z{=T#Sh?sAv>aGzuyj1r?2gibg?2 zqoATuP|+x;XcTzZ0uNg-r`VyoQAnKu?$c4-D5!1}R5uE$8wJ&kg6c*=b)%rVQBd6| zsBRQgHwvm7h1A8M-%^*r7vVC{hdg$H$1d>L1$#Uec-(uFcnDq@+6zqScLJ+DDgenAK+WuFn1feQHs7es35`?M* zA-`SVw+sAsf!{8qe-6`wyVLi3oBASr91;B4t6OETkWU$Kf}y%_>aR z{tni@xYi2mf2hWvVfD@K%~{S)A7}C1EWTL`XchySS$tgcjcdHkVnDMP&@2WtzisjS zGAm!n%9~kvlUUHq%A2=Xd2_|ePb#lr;m5M@<}GpINLJn~E;LuH`~r`5b79#VSoR{8 zUC**tvFueWdlk!G!m>MA_9~XWkY(4i>_(Qoh-GJ3_8TmF70X`EvKO=L#VmU%t8Ql1 zt5|g>t6s&b7qaSQta>r4Zf4bSJZWadEv&d@8!K*R#m%g^nH4v(;$~Ld%!->?@n2YG zC-!$@e<$X5V}3X0cVm9DIMXc7G>bFM;!HEbRQ;!U%7(=6UJi#N^UO|y8@ zjPWUqZx(Nw#hYgFrdhmc7H^uxn`ZH*S-fc$Z<@uMX7Q$3ylED1n#G%D@upe4X%=sq z#hYgFrdhmc#`rwO=P|w+T@>AX1JtQRBJiw)~(qmVWVX`_%f3TdN|HVSE@ z*tXWQt@UhcJ=rm#j@L=%?FN<*x12F53pr=-$TQt2tF^psS3N-8}im7bDHPf4Yxq|#GT z=_#r7lvH|3Dm^8Yo{~yWNu{Tx(o=Fy$qLn$75}V?QsHELmu_ee7puB>N00zdmtmd3oYC=bGK==ewPl{?oT-z}B;cR<_W}7FyXtD_dw~3$1LSl`XWgg;uuE z$`(Sl5XPtQnk`%JjI?#tu65Wh@KU*zU9=9HZEcy|NZCg#`)Fk!t?Z+feYA>5MKfic zm07ae?C^Ly+yQsO55Q@GB27`GDT*{jk)|lp6h)e%=us3silRqR^eBoRMbV=udK5*E zqKHuxF^VEaQN$>U7)24IC}I>vjG~B96fue-Mp48liWo%^qbOn&MU0||Q4}$XB1Ta( zD9THV^3tN2h<-B>{bnNi(^KI`Fb(ciA^9oX2S0-u@Blmr55X^>NmjEARQvgcR=%N? zZ)oKkTKR@nzM++GXyqGP`G!`$p_OlFR=%OtxvI;ZtGe8| zs>_|Ly1Zr|*caXf|GHY=tyq8Ttyq8Tty;Eg&^QWywcU~WV8SI*E3)C%onW+v>#CA|K}?IKT`Ss(aQfXRsR32m|`{gun+RQiK^qRIFP?o zy(37Lr^@)J(*Nhs{C(DZe1qv0;dW=TvF&cxz)C~`Z zPr?yu@ke^@D7Ziry3li~=7FktplWU{#q2;98OS07S!8en^wjk?H6!Z)#3K9`6L`&K7y(_ zqUzJ-7pji6e&RTftkBgyTy?Uwtz+N@JhQxg1s2o(}U^Q+~jj!N%&- zAwI9;d}p8B4Bxc|)B2%dtK}8z{G4@v;YPCtCzPkE3`|uSn5r@`Rb^nR%D_~WfvGA3 zQ&k40$~*2*5tynXFjYlhs*1o=6@jTL0#j84rm6@`RS}q~A~01&V5*A1R26}#Dgskg z1g5G8OjQw>sv6<&imFc<1!9?XXfybfkIt{WEZ~lPuYZxz$Eds!OI&%OFL9_H-- zK@YR~f6&9s;9+L`3lDQB5A$9g=DmOCVK#2@FdP3353~Be;bCU{6Av@vUwD{Z|C=7> z_WwZ-b2|@n`xXy#HV<<)4|Dea?_qe8|GI}+&BLtbVOH}nt9h8!Jj`kyX7#_}VNyKI zNFHY7|6>oc`+w8J?C|e+nBd4@uIz9g%`sm+QpOZ4Qn!?e2Uc7MORP|j&s&gz2P@0J z4O(Q%L+4=hIJqG{{~~g7!=|9q{cP5l(q!=oY4QEIE0QW2$zR!LXq&x+RO#2K(yvij zU!$_VMrFOIvc5)TeT~Zc8kO~;%K93W^))K%YgE?PsI0G1Szn{FzD8wzjmmmaWqpmx z`Wlt>H7e^xmGw30E6dNB51pT$ZvTdd;Su;XJPN;euhzZp?EB|uP48Ou@nGMoBkk?_ zDLBDy1t$d`q7vhC5kEpDzQ5``yX>D2mpJ=7=N^bWSYtZukl?^!AG1H-k->Ib&ngZ& zD8M2GSfl`p6ktdJh7@2(0frP{NCAcvU_S-ePXYE*ez>JO3nL!|x?sXs*O50Uyqr2Y`8KSb&ek@`cV{t&4@ zMCuQb`h&Ah;9U4ToCoK_h1&8}?NAG(JVVN}sD==!Aw+5ded+;yRY$lt;Yg21d5llp zkhAgS@!d0TP>QXTV!S6ukNQ_Lr5I9*A*I;Qhxb#6Mfrc9oIjHDM{@p1&L7G7BRPL0 z=a1z4k(@u0^G6h5|FA>sqVO?z$sI;7Lk3=l1@Hzmz-o6Auag)5QO^7)cpB_}MST^i zuOjtTq`r#OSCR56QeH*Mt4MhjDX${sRiwO%lvk1RDpFoW%Bx6u6)CSGZi2&DXo4gtDnjWsjQI73aPA+ z$_lBhkje_FtdP12sjHB>3aP7*x(fNekh%(~tB|@1sjHB>3aP7*x(cbQkg^IXt5B{V z$@L?-ek9kA!-l_DXx&>3MsCT;tDCQkm3p{u8`sisjZOO3aPD-+6t+yklG5Vt&rLZ zsjZOO3aPD-+6t+yklG5Vt&rLZsjZOG3Ms9S(hB98eR9n{IcA?6vrmrMC&%oQWA@20 z`{bB?a?CzCW}h5$=+5Sy&Cl!tyTWcTvK&%X{Z&`V+p_YutO}r60}Ow^$B*!5pR!K> zXgCHw4adT9@EJHBoXNoYGORDd`ZBC9!}>C;FT?sWtS`g*GORDd`ZBC9!}>C;FT?sW ztS`g*GORDd`ZBC9!}>C;FT?sWa=&)fzkF~pd;!cts{R#J{|YL9g}^MN%3nVC3LkyB z$1C7UKVJn`!`I;(p8KZ9>#X8(vYdQzgM4uVE6%Xuj7ngGN??OZU_)SStV&>mN??OZ zV1r6vgGyk7N??OZU|uCK&+1And&SCv^s)5T@%X@=-i!x+%eu2u}_sS zpE#$yPE~N7s$f3xRk+T&`EPlg=+XBle7~yTa=Bx>ir{j&;|5-#PE|0UxDS5jIpM#aJVl15 z$nX>y6~Md-U{3Csl{;qTj#;^5R_>UUJ7(pMS-E3Y?wF!^a4SHa7(>I|#Su<8t}&amnXtIn|M46Dwt>I|#Su<8t}&amnX ztIn|M46Dwt>I|#S$h+F9qIRmNohoXlirT57cB-gd1ut*CZQgp@y!Ezu>uvMa+vcse z&0B9%(% z%Uf@ox862yy=~rl+r0I*dFyTS*4yT-x6NB`o44LJZ@q2adfUA9wt4GqbJpADthdcs zZ=18;HfOzU&U)LN^|m?dZFAP!=B&5PS#O)O-Zp3bYtH)Dob|6c>tA!$zvire%~}7N zv;H+_{cFzp*PQjQISOlo9BzXgZi5_dgZyoS{B48$ZG-%6gZyoSS&;@+z6Mpk235WW zRlWvQz6Mpk235WWRlWvQz6Mpk235WWRlWvQz6Mpk235WWRlWvQz6Mpk235WWRlWvQ zz6Mpk235WWRlWvQz6Mpk235WWRlWvQz6Mpk235WWRlWvQz6Mpk235WWRlWvQz6Mpk z235WWRld9`UtX0jugaHK<;$z`zPu`5UX?Ge%9mH=%d7I`Rr&I&e0f#A zyeeN_l`pT#msjP>tMcV}-dB0vSFL|-s_BOkSi@8^0CvxDa(t5t;2ageIlOZn?_9?_ z*YVDEymKAzT*o`t@y>O;a~C_ru6wPjs{X;fbLmx9Zgd78NN{)Yduv5*0!I#uD_N`eJ>|L|k z{=UP4cWdSMol<>-ea5Ug+M@28dHO7U*Q(F6l(3T!%t5Mh(rJyuFD?JkZ1aEN9ol}D zc8}EVcWL)0wflYA{R!=h+f=I!AE zcLj+`<@e9pzd%Gi+Whm;qUsUe+3KAes!phA>hD&K-5l>-a(LB6DzINDKjPYsG_QO_ zRkv$9(K@h8%YRAS8VonTcBE@9xz+~Px~BR&<)f3T=-d9&$$P%7&bKui=?){^VWe}FnY`cIsr`_0WoI0p+H384r!l%U z*g8geW0W^WOSc)L`0o0cL-Bd$D|~W`wimaIQP(zO6rcCJST%p;mN8mpjF$b2F^oY_CVQ*F#4}GQO;gFDv8A z%J{M}zO0NdE8{E3_zE(V|8HlUt$d?7Bbqa!IU|}gqB$d)Gom>onlqv~ zBbqa!IU|}gqB$d)Gom@8;H$3T8u%J~-S1ZS2iNL{Z+iUe?DGnma|O-0g63R7bFQE{ zSJ0d*XwDTh=L(v012rAcFw1Dd)%Z^NZW-v!wC9~N(3@qT zce1f3Wu9#^&o-7arRu!$kFCJ?F^lP9F#Xuv&tusIIB^_|25Ylv z)~_Tk@OUX!PVn=WJi0#mHIl(*Wv~T0Hlkyrgp8PuT|vjLkk!WX9zFEy6ZC6Dzs7go z|GP8VD`?jhvfKjw`oGw_5BMs}^MCwL=E(^O!Nf#CP>5*2EpFVCYOT_0r`Edas(aP8 zskYMLsI#rLt#ymm)xx)KMH$r~frQ9P!U_ZlCkbRH98%B!{hS00s9pc|_xq3E>%2ak zB%E_U_q?v_bKTc{-Ek}SG5Z}2_B$HVe&t$2_(5$n|t$@qfwwrgkLl*pLJKV91 z6~42E?JK)6J2#&BQ}6oKPIt^scg#+AEOQ#X4e!8om;p0kRw5QDfiW-^Wcaqz9kbIN zv(p`m>;rE9veO;2(;c(Z9kbINv(p`m914fQcsLx~0dA)|7C8!z26uql>5kdyj@jvs z+3Aki>5fG%OMD~p9k>#%hHKzjxDKutp?w3~2;YU9;CmoHqH})Boby{2arQKFGu#3{ zf*-@JFbRGFKZT#c&*3(>9qw>i{7(2q;>E~aa5vlo_riVfK;lxi`K4_0OWEd^vdu4L zn_n7v1RjOQV5(e0{{w%4m*8c11zv^M;B|Nt-hyfHHoODVVFt{ES@2hQ7v2MRj_@?J z@iesYG_>(FwDB~w@iesYG_>(FwDB~w;RSKLAdVNrBQ>~1EyxlcSq8FRM^=euwCBd_ z(8}x3%Ina|>(I#S(8%l1$m`I^>(I#S(8%l1$m`G;=>Yeb@j5i}IyCY+H1aw$@;Wr~ zIyCY+H1aw$@;Wr~IyCY+H1aw$@;Wr~IyC;rA`C|238SDGc7+lc17pE_#!uq-NgO|k z<0oc;iQ^}6{3MQ_#PO3jeiFw|;`m7%KZ)Zfar`8XpTzN# zIDQhxPvZDV96yQUCvp5Fj-SNwlQ@17$4}z;NgO|k<0oc; ziQ^}6{3MQ_#PO3jeiFw|;`m9N2c?k*rI81vkq4!b2c?k*rI81vkq4!b2c?k*rI81v zkq4!b2c?k*rI81vkq4!b2c?k*rI81vkq4!b2c?k*rI81vkq4!b2c?k*rI81vkq4y_ zABy8caeOF_55@7JI6f4|hvN8993P6~Lveg4j_cImIyJaX4X#sz>(t;nHMmX(t;nHMmX(t;nHMmX%?%K7_Jk;bz-&|ofxhY!*yb~P7K$H;W{tiIxpZl({P<> zxXv_OXBw_E4cD25>rBIOUWleaI%Gf=L?IgnK@Q|Xmn<2Z_?>$bFNw>HiE4<6YKVzy zh>2>5InTGudA?=N^DT3pZ<+Ia%j^d>@>n(UST*ukHS$e4q%%gZS(xxD}%> zrXq}F4D%1qP2<;3Ym>=1J$Wl^n9aC5-TI)9-lC7*in#Mm{AzQsT}qf4HIHTvGXRDq z|DB9VX$d)J#OEtzbH?SEQtH@bZNBMQDPexRzWXiO)Hlo$+^){eN?xqaEhz^>|4kfe zFUe}UNPGc4tF9Z;I^~^9$f1}n)4sF6>7q{4Mdzt|Ox?q~ep^|W8|n~wO?l*k)o%DMWuj}VG zSn<=75t$$OtCNrZf1#hMgDkvYCGOMS&nC9S^o499i~$Ss*yJ@nRj%ykQrv^Y$M}}r z;#WPVPC4PN@YQDeI=o~ZUJ}Q8HsXp!W_o>a6pQ@<7W+%QyyYzQMwa?>^6D)z!=6eR z#3Iar!_BNCL6!m*<9b%$bF9DT(%zKIdpgYU^Q^=J=4z!GU&&f|fVJ{~-KGa3SHP8U zHCzMN!gX**qMUV6&bnx1T{N;T8YB0>y>K5qka&)D@f_>oIo8EA1ZgW||T-v0m( z!z1u0JO+=u6XGeD3{S%|{`NnpexiSshD@```hP&5F4L#$t^FUSe9Oq5hr^!lR_Dn$KfyJ()j-U%{{KfXLN~ zUH6cU;Tgp)>d1>^^Yo)&ez`%g>Cj3l_r?>!_Nap(e?| zUorDnnfa@ORsL@^)Vud;jr-m|^t1fmRzj7PFfWK%+kLXB!Px)6*#98e^3Tchc?t~d zfwT0&*@+)I_3#1KUhaPQy0oVfQ`4UH{yh9yhO-~L`(qODnzPm`GL|OqjjziP6_Y7q zB(g8;2PeWwEVl{ZzIiLL%}Q)@3g82$06s9EzGoiX82P<<^N@GXGv?*Syxf?V8}l2D z`Hhj4i8}Yu*SU|r&VBTC?xU}BAAOzs=G5#>0_t6dVV~ z!wGOAoD8I*JL_ZatdB(}!WZF7a0Z+SUxu&1SK({$b@&FH1!n`s6g>wpt?0RM9-I#s zz=hznt2^ssQQq1pZ*7#fHp*KY<*kkK)<$`2qjoN$JhsuR)%jYu4z7nA;70f^XmeDX zqu+-gKq>qXZiZXnNAP2~6(+$?;HU62_&MAL?v#t(0e8XOa1Y!I_rd+}OZXN18Xkb( zz=QBx_#ONn9)d^Z&U*~3%jgsEBv_wO>oaP7MxTK{!n5!kJP$9xi|{A-GfaW0@RD1p zUWQlTRd@|vhd1C&cnhY%+wcxdhZ!&vX2DtPEG08#LP7 zd;AfPM>@`&izg4}{|WEZa@L2on@rn1Wp&iB2O6x3Fdy~OetA$z&u%0Q?{Ky`ym$2v zG~z?F;WIR0cuRb!%`YY)FOFQ8=!&|Bg*L44)CZk)FHW15wj>DBYSWemJEhg7X9OeC zv(lr%ap^~;pAnppes=oV!8g*c<)1w({l@eggR|3rnEu1yo9RDJ|8a0m`lR%q2j5D+ zEB)@^!t{I7?+q?Wzd!x{;NtXOr~f**B>lnk2ZKv9^7(Zy%h)MnMDU%AT{1=mS7waP z*e$pwqa@V{LGE z#=4BA;GT^3jGo|^8Gp-6mp@=^=AOZ0nI~qRA3T|PVdmArj3DLE`@=g=Qw~YJY3o-; zO-4=T#7L&snUTkHwjVsT|J5-#`O4cT@A|4t(Wj=8wt$S^i4zn_oZk`#*m9bip14mlr%xuq63S-`GAg zf93YqZ!Ty1n*7Yd;h$O3%KVju=M>&nxM=82JFnX1n4MSky>=Zu@Kt!uuD?*ffwc>3 zIcD=SJi#Y+oxJsH^vKa8cN@I*-#+WN@UsJ7yA9s$(cMoe*{|gO@Rj^&Wyv&wd*5rnz5a#QW&2&W|6T)L(+(^@DBtUnzSqHbgs;uN9dt?G z?;rnr=z(U+5&uU&{vZ8Fhy5S@`2RKi`2S98y&&Xe_6X{5if|XI9Vdw60t@Xxwc-QS z_`nLb|3ZGmHTGc&?ZXVQzZbE;muD|>SNkx7__aP@BWwr?SS8_Y?_DgC=`51DERuyR zlJ{67RjiE_$1V(GEr!t}_HkLT z)cZ1=e!2f!X^*eYe&8xxdv%g;cVHVm*v3X|qX*k)3HJc8jg7c!=&NX8M>S#+otQ)y zCK1L)wqX-%)1I*(_(yow-*^$Qij7!B@(yVndIQ^P2@c(aS@dLd+GUkB0lVnTJk8nZ z)4|C=v6RhXDL09wY!*w|ES9oaEafJ#l+9u(o5fN#i=}K9OW7=zvRN!;vslVzv6P#{ zQZ|dFY!*w|ES7SUSjy(iTg1oQ=^0`tGXDa&UFOU13cL!h!Rzn_=d8ab%nPyf)4b;L?SO&{s1+0X1&706YJ{4x;nA0POPgla=Oo+375;MbH96Hf0uX}16z!N zy^Mh^#=sV1V2d%Z#TeMj7}(2VNn5b6jag@kg1gE4_uvtY7RTD+SX&%xi(_qZtSyeU#j&%rQ3u(lqoswaAfELct{VpTm@RS#CxgH`olRXx#P1}Ruo zPxRM8su}n%+wGq48h+S>Ot~O#<8?md6*wsetY9n^lnf+%n7vY@nd01A-_}+59ba%F+1|T4TbR3)~DV0 zF_Ld`lt{aeZ~X}GO5J?x$C{Kee(t;VV@b-#w|-QSrQt1YjU>^AG-nj~xN7*gYOuPw zX?FkkxoXlDdSArP`SC3v?P-0tfGkY=kY{x*G{8ENE9Sis+<1}JOq#9tZZ|2-Zc6>p53BA2%DDOV;!;P{V_1z@0 z%1N$O&RMMD!>#27Ue1?S6Zxgx$Y&FCozCir%!3M82%mMU$N|ozhBu42e>Ur6aBka4 zqpfckdES}XzFS7ZeEYGeodEgvWAg3CMbwtvU_K7v2aE?rAXbmQ4sU!) z&H}!@P;d9p+s*WL`IZQbu(xJt(P3epOf!41Z`O;s8b;%H@Emsd##-NK@r^E;zT2nQ z((pUb@S|z?u_Ac3r{TBz4|&!9v)=FjeGw`<8i`FtVw3)?(4QIlv)+ho3i~ugUV5X^ zt#8ZqZLhwq)3>Yj?P69`H!G^du4cDB&e6vs^>I{`R1RzEV3yPxwol9%hw-Gwgya~9 z{_zdQxP^~=bCgym4{>EMnnkpcCA5n5^C9bJI_u|c)=wqNr-tQI#`1ZCwNt^`Y35g5 z!Qu&{o8D#Jyvw@zkahDOOJ+JNrkxe@#undZzh9F^7)Be!XoJ7e0ts56fCea_0lq{7 zY)A5ElKibCe|Vqy22n$)a+Hiu{5~0ja$#b!UJ0{#{FU#2V#*=>P$wjw)sB@Z8=ysO z@kvR0vszF6PEXyhrykT()$YGts<&3?EfIWT6AyD&{rDhTkLBC{{hQv}&CJZzW8uxl z%|WiGwuM$K&v?6WXtO$6c)&Z1#YSV%;0bFzq1_YOJfXpE@<;!~?!^xJwq4(@)3+b$ z+ok$;g}z;*Z&$D=YxHkS|9;rtzYY2~rhixH+Xj8RPT#KAw=48zw*E`ge`)&fc)mz` z9RID-leed?OL_(K^>p9eSK0G1tA07@=0TMjMG|0o_UOC9=Yu|)%pOn zKF%|b@XTF3bJwj(Yj8tXw;Q^;-O$y|np+Zt_qBDgQ}L$%z~mVce*;8P)I}!Pb=Rw7I~$ zlPavi4XnX-)?f!~@D|k;Bus9pjK1y`4Hd|Sn z9jwjvbSH~gn;opp*7U5zE3D0q^rOW*$k5{UvhH+zG98~x$0b>w?X1oY7H0=*vo-yT zNlP<~Eoj2mH?TIt90jcz>XFfbOApL{_9IcoxBJ_p-o*oFI+2#?lv!pIi0Tzr(H$|5 ztj-#@o^?m|$5lz$$V5MX87{PsFOG=C+QedwvskyiFR?YUR?Jr`xR=kl`_`<{aFkP2 zCtE+?^8S6l{|X-T^B>@OlDnSV{mAL5Ox!O5gCP&tkI{Jp?!@CWiHe7g8oQ{mi!Ovk z;G8H6b|VXRBMWw8)Ga-3TI*)X_ON0*Sg|dv*cMjo23Bl4E4G~#+a7HM;~3rGb1i;$ zgRJa&J=xXxRjvKurRM23g3YJ4tfn9f215b+X(#W)VFWm{7C5gKIIkA$VU^0!lav!j z@>CrKN5e62EF1^N!wGOAoCFi#b8s@80-uLdA&gHs4MZL|*;VIcSDlkxbxwBG1!uyS z;VbY}_!@j2z5!>!*)}FsxI|u;Jr%az1m7j zzm=%Vmdv) z@4$4J0W)EiNQHFwif2NJpU1#h*aP;2y=w1yEo!k_)MB@&#colH-J%w|MJ;xVTI?3J*ezJbHF02z>SSPx$&S|RgqNXk+L9cc)fZn=;`BI&Ji6OoQP}1#GrEYGD*yL2XAcf5;tyo-0di+8*$Q(Jk*yLiXDc*nbV$GdpPyLiXDc*nbV$Gb9}CgL6M%CzIa zJKn`R-o-oK#XH``JKn`R-o-oK#XH``JKn`R-o-oK#XH``JKn`R-o-oKl^KUk;1+t` z@h;x+F5dAj-tjKp@h;x+F5dAj-tozi{oq76$;~Y80p}f`%sXDjJ6^^+KACrXGVgd7 z?|2t)_lvyU8+p55BYR$i+QIP^G+}3onFj4y_k1;G4J$Z-s#0+it6o| z){7~s7gJO(rl?*_QN5U=dND=yVv6d;6xE9ph>>dp@uCd|vPQyx#M9z320K&*$}?&+9#( z*Lyy%_k3RO`MloqdA;ZJde7(ep3mz&pVxanulIaj?pg|ndkU}j6khKsyxvoIy{GVcPvP~R!s|VS*Lw=D z_Y_|5$zqBgx0)yaZ$8DgZ9b1M1II|GypGy(3hjUWNx}brWmFlBD_7vUGx6FMJGf!o zb`MS)=c$;1n}%`b)%fPtxnXE&eDO`OWUFw#H9Qx+c-ng0YaQ?Y^7P}Jf0C=8cj?c( zON)4yV!TV6(g);{5pR|}xygh7E}ry1A%Ed@>IwGv#2L{&-I)0I&WV04F@;9!5z!jv zGM&Pf{kPAHitU{uws(ry-YH^xr-w_Z#3w_^#h? zN<3+Qbhf?G9{Zv__CW4@VjubEL{X1udiOSIl>SZgMHSr=f8IMi8NKL#*O}t3qeqvL~?oc9Q zD=VTtwHRCSfsrU^K#cy~g?&5{GpLgMxJPW_!RrrOuJ=om- z3J<~M=Jt*DMt(;Y+@JDIBYsZef7t5HZ1rZg`e6GdPueeeIHe_Vm$~#+bLjwcX}r0# zuQ>fi^JzL}{tL|f7xqmabVl*&NNr;O$kN2|k#&h9ofSODS;6BX&52_p-HGw+`#(iC zCXR6?aC~G_VmxMf7iM`EW_cHu_zSs34wX;j3>;u@9ALWjwWqz8k>+fP-KxRK>!*|vRfgNK}L+sE0qeVlFE$Jw_1Fumt7yDR17I7d#7@5vQ$gI;ioJ4v)g+J^|g093LN=ea2@rMiXhcA+*F&yGl z9O6O}^)>riXN%-1#v@Abh!Q;F+jzu8JfeiO9g9a?LE?T1j~KV5w+~I+z;k*7&*^pM z|8@Aql_|$2zK3I6nR2}Ma5O$AE9)sTpFZaHgvW7=ClV#3^r861g=xL*~5(U#F3Z_XEOp_>>CQ&d=qF|at!8D12X%Yp~BnqZU z6ikySm?lv$O`>3$M8PzPf@#7t#^M=c@rj3&#WTj@8DsH`v3SNWATiA@r-@(jD7Kp zgYk@g@r-@(jKlGaeesNa@r+VDqZH35#WPCrj8Z(K6wfHdGfMG{Qaqy+&nU$+O7V zjFB|&fq2Gmon5G-eLwH)!g4(0i+D!4{lW$ITBqR|<3!mMi?S)kHzwj6U%@xNiEm8A zHzwj66Y-6S_{KzhV|@Qrc!#yEUq9KJCQ-x!B)jKep^;Tz-d zjdA$KIDBIqzEO#9+!;y$(Kd&%@Y=}2j}p^pzj8Kb7+G^S4R{F4;y~K(D%xxhn(Ja( z>Oi}eH*Q(ERwi5XB0HEDurj`22lJ~ejZzlI9xRNnvojxOWt^T|Wj80zq%p3b6;7fR z4xtg=5^cB}O>hbga42d2L)OQaNch`H^V>=CKZv}jO4hPAaS@4rN>ambj=ZQLwZjuw zt!guejA$Z_SCGbG9{XB8wRRHoLpDMWj|q!}HR$#$o{#Z78|TSCa-l4%2b1}S$i#Aj z^H>vtsNJq`mok&=5A!mI{+V6K{7N!^E}6fW#S$a;YdtC4Bmadbh3B)@yHh%Pbha~+vwRUXXT!!FD^{HtOfUKL8})0Nv-9OagKGpxTwC& zA}wkh?zwMJ<2Tg!X*GUYZ8O!jMQx|6VS2E)YM7;lpI5`} z)Ua9YmZ;r3YWHR^llGXM)Et#gggIAFYrI5j+(~P^O=~QtH7aS1WwgehX^r2}8Z|UV z8;$VZ#@jV5@DCU}b`c$*e@n+B+%0j81uvq|UKr1Naj zc{b@hn{;jD)j%&nBH`lg`sf=Qh%L8tFWZbe={!Pa~bDk+ zts+gUNYg6Pw2CyXB2BAE(<;)miZrbvO{+-L<)rCy(sVg#x|}p!PMR(!O_!6V%SqGa zr0Fu!bQx*7j5J+Fnl2+vmyxE+NYiDc=`zxE8ELwVG+joTE+b8sk*3Q?(`BUTGSYMz zX}XLwT}GNNBTbi)rprjvWu$2h&N6~Dtsza*Nz)xj(;CvWhBV!tG#x{l*5EQlr0JJ& znF7+ZhBRGEns!HjFQ)M!-+!1F=Mi``F^e>vMVihcO=pp&vq;lfr0FcubQWnki!_}@ zn$99kXOX6}NYh!Q=`7N87HK+*G@V77<}`lBP3B)0w2{Owx2FX*!cMok^O`Bu!_M zrZY*?nWX7V(sU+iI+HY=Nt(_iO=ps(GfC5#r0Go3bS7y!lQf-4n$9FmXOpJ0$*I}F zc20!llB82f(ElMp-zGWdlbjEcn$M7wkCT+YB`MoT%HNWV(@DX@msJ z`Wq2$VckM&_^kn~?h4lLWO5{n9JwTrQGo^g`=odJ;KX@k%4=lG%>$%jgnW6c-y&{M zn+CF`n5=o2ta*rZd{XUJsnt_t%~@)8qMCh$bo@Z=x>&`NS;dpdo!7{nUq@yp4vox8 z92WU2ybDWZdS92goYcIQb^PVXhQwF2D7+(Mvg~@_B%^*Jb46$ghmv$2DLSZMM(x-y zMGLg}YGCb=L6dSvS%&qLNs^=aN~o$*d>HtlwlUO|ixkvKlK{jg_p%N>*bBtFeRC*uiS7WHolM z8ar5x9c0##WY4)|&!yzfS>(=T&XRYa2&cR%S$Zn{cunT*L6CW8 z=A*&T%*Qida0Bw6B3}*;k9;+9Ww0u8b>#UV9;6(1N%G`kZ+dF_h2RyrG4ebNe60$9 z%gTw|7|q`5?^`|-?aAIJvdSy@m+WJ_9>{J9UxQ8?boQXhgIWen&KaNcqnw9x8v0(j zMY$&=KNo&>^XmcMO8%UCS@to5Z`$(rkN@9KgJXF&<=yY~eBS#*9_;@q`TLL=+x@EV z_x$4gGq-x(oZt8QOaJ@w{Qg(Le)-D_ZY`KqupAn;A677H`@IT>6%8qRcgO8_ylBVD zp}QB%8hZ86X*&(y$xj8#cRG8g?+^dcmeRL z*EARfjQuXljd*|$Z(%#qS-M{z!`&_v1`29}U@8&jh@UsV$d3|(X&Q`DS2cGS9NB`@c1K&CDqbp<%oxl9DL-C-nV)kS$yP8 z1OF0^>5=dMQ?K5mvX46ZUwl1$^qF42J7&lJ*ZIdhf9&u2UdQan7yI9iKc2V`e-5hx}Hv2)xWD7Mj1cBzOH3ouVG)m!@iEwPiyF>E;e=p8@qyy zT|rm9#Kx{*W4lisuW(Bdoi&|}UB$+3Wn;Ipv1{4bwQTG<`%3AF#2Pu(6lWYqf0b3O05f8@rB;UB||*V`JCRN1L-Y)UmNQXKkos zW7n~C{3tb^{x`fsI{3zgEz%6>RJZ zHg*LYyMm2f!N#s&V^^@TE7;f-^lt_ITfxSzU}IOXu`Afv6>RJZI=O<4UB$+(Vq;ga zv8&kFRc!1kHg**oyNZon#m25;V^^`UtJv68Z0ssFb`=}Dij7^x#;#&xSFy3H*w|HU z>?$^P6&t&Xja|pauBDx0$vjO>DF@-YVSfBCV&{E%n!?EZrR>pm_GmkM)J+0%T*`AP zLjTpRzP0e5{#Lf^4WIg~&1FYY%-}F%)6u*O#j@!Z%cfh*sxFp$HX@^LF{`pzM&07z zI@YoXVI?NqjZmC2p1&cyAHk`E{yP$`Vr`EUb$cQ|#FzOY&JZ=f!95APx+h^**7oRu zt&@?rSVrDr8F`Ck=V*OY>vOa|N9%L6K1a(x((+xjI!}x9#26o-#XD(n z7|p)37Vq5O;$5_O7cCyOO^b81I7f?fv^YnLbF?@|i*vMidoA8xYjdXSi?#oQp**}+C zJR#gY4o@w8=m`y;umCshz)d^x((o*BSn?}Me#QK5F~8gJ(=Jx`U3LKOwlC6`CdTmuX?wr_l?QS zSXKQi^MfE?-^4tt-LtCoOL!Z`63+;C$5wjA3eQ-WT=5s!30<$X8=xi8tL!ReSA}IO z_mNL6Da@N2mQ=2!`TZqTsqMBUCG)BM-IA*MOA51b{qrULXY#xK{oH7u)`PYEwOy^Y zb^YyL@hRE*X<@t zvL~19$t8Po$(~%YCztHWC3|woo?Nmgm+Z+UdveL1T(T#Z?8zm2a><@tvL~19$t8Po z$(~%YCztHW-Lk@me~R4b(b|P6?hVk|g(>b0(Ap8!%tuis;^XfR9_BOdU&>Hh|&is{UfD@{^w9iHCc_D^iQ__ z$5ze{t$D2h`B$++#h1@4>9+LnEOM_{UOHw2DKTkHixTCn3evt z&9%|)A=bqZ>tcv?F~qtUVqFZeE{0eaL#&G-*2NI(Vu*Dy#JU(_U4$9!M`k_i#C%t9 zOz@wcsl)Avq^NOt-mzGXoq4nxKYgaAd}5~NqGKH2jQ&(x#oI!cSV+JWEt zOzCWg>@Md>?`Da7oO%Cs`lFTJoJ*#M+4n=sWDY5^YCuh!$;t5Ug3Xr6Mp9(G8vpuJ zOAK#&4@+D$pu{DgQQ}-}pGz)%T;dS+%?7^proUH5woNR}8E&@CmU_`a8|a|5pO6?I z-#M1rucPu(AL}4C%@#A7x?74?uFZruKO08 z3+KTla2b3Dt|Ltk3Wm{EJJ3`+kgj`^uHmh^dn(}oCG1N}4W*@qlCXOWe6Cd)wJM`l zWz?#ST9r|&GHO*uN#ET`-`%awsMQ&@I-^!+)ar~{ol&bZYIR1f&ZyNHHOIHK!D@_J zjZv#HYBff!#;Da8wHl*VW7KMlT8&YwF={nNt;VR;7_}OQ21jabp4R4RZJyTVX>Fd? z=4ox7*5(Cw2M1w8*;<{23GJulS(wm%TA!u$yQG}y|IP|Zw74XxQ!e;~EXvdBJgv^t z>O8H^)9O5}&fDB->?d2x^Rzrq%k#86Ps{VPJWtE>v^-DC^Rzr~o0jKkd7hT%X?dQO z=V^JKmgi}Co|flnd7hT%X?dQO=V^JKJfY_YneHCRboWRm29z6I?ENll`fjZ{FxXLR zM`&%X))r`OuGSW4?MP$2yRqKYSeF>kGBMQ0w;|INn+}(wL4UNiyA6lIgyZ zO!t*!k}8?*E6F5TGRdpVWQ&gQek2?N$HMW!?lfyAiF1PcN-{~E%-{@Tm2IrDja9a> z%GQb^ttirpBCQyq6-CA`+xTT0zii`|tyQ^NwTD*isZ~2_)mSYWt2LvvW(Tba&yMb( zH9Km}ep)k1Yes3!0V&EJ*djAH+gN5B%WPwrZ7j2mWwx=**4q8Fc0a8xGM3rKGTT^Y z8_R5CnQbhyjb*m6%r=(U#xh&46zP>By%OG7QKVOj^h%Ll33uKHk>cULc9C8w>X*S` zuY@<>hP_gxSBlL3Y;z#n9LP2Yvdw{Pb0FIs$TkPE&4FxlAln?sHV3lJfoyXin~b~L zm>%e)?m=eoc(e8hIFZblz(O*s^h&;7$=53ddSk0wcC@xgYx`;$j+Gh(!;HZo{hg)c zh>~|u@=i(~WEO3w^g(9PcAl`aCye%lk)9Bq6CRa(!daelHiZ2?Kw5dyE}j(L4zp#& zn``?7hkL@oo>1foJ1Bhzr4Ci<_GEM~8J$pSzR?_{)Imxat(4JQEc*Rv^`nAYSoYt` zI$7-MhgL*18Cc$+@N!G zaDmeDedC~D_y8Fhmb90W#waN~|2d>~ph4j~U`Y1>LJu&dBN5z)A$sTQAK1_5gAoPMir4!MPyXb<~eI@wj-m8 z$fzPRs)&p#BBP4Ps3J0|h>R*Cql(C=tyZ``E+T7+$eJRuriiR5B5R7snj*5Mh^#3h zYl_I4BC@84tSKUEiuCMw8OOiKKXL|p@l5`Y^X=vxCTd>S7!5q5;bL*BpTmMx$zQ;ezknxy0Z;w{p8N$o`3rdR z7x3gS;K^UWlfQr`e*sVa0-pQ@JoyWF@)z*rFW|{vz>~j#Cw~D?{sNx-1w8r9Jo(K$ z`OQ4}%{=+dJo(K$`OQ4}%{=+dyxG;f+10$+)x6o&yxG;f+10$+)x6o&yxG;f+10$+ z)x6o&yxG;f+10$+)x6o&yxG;f+10$+)x6o&yxG;f+10$+)x6o&JlXS%U8>yRU-%c< zK{#heCcpJX?`M!NAItQA%q_NK#}=|<3zH?dWsP*&Q7K_u^JY8tAD1$?|M{V%5_+Wn z`EQ18p7t-dIb{3uu>HB%ewYzI%#j~vyk8owa{vA}?%evUlHc+CEq7d5aj#o(fA2Q0 zm#n^*FqV&R^ZNI1EGQC<8Q!7rA%AWo&a)in>APucf_S5C>V@-E<2=bpDzDV|1D#*_9}X|Ef~H{KQ{6u&E-p4!Iw0bFKLBYcM?w8NK%sPM*R$uGi?1? zVkggrkgNVHcbW~`=80=PZGk5(@T5VW^r7}N8|MwiIm{gtKB>-=>O5)v-+5Bs-E#x` z`?E%J+a8iQfQ^-d*0tX?{A*>HzjRnjc;30QeST=DO}ed-z(8~ zpTy>yEI#`_iSU+;Mb`B~>v|y>DfgB2Z z^Q3OB`FPJ3i*MD`n#hWUd4%^Pz4!SA3XSzJV?E4R4@=hdW8c8gty>!mHs*sr(b@(5tqpfA{&7G3 z>$g>oW0|bMBge3($FQfzu&4J8F7|#`up7JV5O$eXy7~Pe_EyL=4#zA)wsEBQzJ0-A zTDe!hhSJI;M;OOG8)r@)$UfUmOE+g>xX>?_Cu;@TYa&=QQu!*jMNvq=!=p1 zVx+zpsV_$Ai;?Wh*3Vx+zpsV_!mb?DPh=$0Q? zmYA%K;G|&ICg_E~i9kpd>6-@WkO5f`1*|wa2y!4d*gn~>5w+fIIc!jqFazJvBm)UK z@7Di&7~kkXZ~ein|A9Bx?x2UWF@XQ>?X`ylrRq6KO^(%L`|GhYH`kX1|L@&e`v}kf zv*IK3liur-f^F~Qz4^c1szc?KJS_OFmR+l5U(m8IYT1^NF!uNT+pXJtC+~5_YXr77 z0$UpqoM%mZEE&Q(diS$BQnYjg1{dx;j0mnX%LmL4>}v$}H3It@fqjj@zD8hQBe1U# zX89PbYXsIc0_z%qb&bHfMqphdu&xnU*9fd@1lBcT8>w)-l`ux@FVp%TYWOU1(+(n%RX$a-^0Pn%RYBcA=SF zXl56h*@b3yp_yH1W*3^-p}rd^_RiU(9AA0vkT4aLNmM2%q}#u3(f38GrQ2tF4Pl;IzxM2Fn(am%#JLx z<3cq!M-7fwgEQ1%#FqX)H8|Th^Z7Q*YU%%(;_k8`Huix{v^1JFfLS2tk*S)mx<8^zQ|34ij0;~(`DWOzW>~h~IWDQU@0xc@g zq5>@{(4qn@D$t?=Eh^BW0xc@gq5>@{(4qn@D$t?=Eh^BW0yAfb5%`5xovT%!)2frS zYD*uRDL*k&3bd?1%L=rtK+6iWtU${Ow5&kO3bd?1%L=rtK+6iWtiUbpA^$iqxo(DP z)ljV(s#WJ&H={|l(fv|wul{v2w7;c8wKTMBw^$6uZm5?EULzwB9&ZZw%ENL-oc`y)jg84AmP$^~O-WF;s61)f+?g#!$U6 zRBsH`8$MFHBI| zL)G@O&638L|GTjYW327`sF+19n~+=y!>xqj*1&Kp;R1bI;@^_~5e->Ws6mGJuY}=N z!a%Rz1}kB>l`z~&7;YsDw-Sb13B#>~;Z{P4l`z~&7;YsDw-Sb13B#>~;a0+MD`B{m zFx*NQZkCjoB_(D_iCJ=-@hUM7uhav-)C2eEf&28pCC017EGg+<2_^lrq{J+_K(7q9 z5{6p|!>xqjR>E*AVYrnr+)5a3B@DL`hFb~4t%TuL!f-2LxSlvVxe|`uW+e<(gYT%p zx7FZuHTZ@a?7C$PJkd9YCN;>;TYd8|`%vRW6&=n~enh{06Kc9s$4or=2Zf2?-z8U7-?rTAw z8m#5TdQB}Fcrxl!_D#lCeWHZ477=fsPdu%L&1$$l%nif>O|_4(`I$$#zw~J6>%D*c z?6aKUx>pY1N8|v0q(7U@dU<;n$+)uKNv=h*t+dLvvO%_$b-XQ?@U~o%GRzZp^80WY z;WImX-vz?kZHj$%SJ(}9hcPe~_Vl^Ed}eRi)#oH0kq`F~*;O{kuChUPmGx=$^5cF8 zYr#1Pd2rXsgS$>1+;wTqiA8C=U$UvJ%# z)wv`+D&Nv6em~XwX)w{>&4F|`wPrNRUE7pcB!kM6GN?Q$gUXY#r_7AZg9=y(%M*(t zYoQg|@;JCeV+~XeH!fhwA=S-begfn-cQ`Akv1n9Tbvx}aB?KPWw*&* zP%NnPw^cs38r*ztPpHwJP@~f#8|(|U*#FsJ|EJN3#xQSv-06@Or$buo1vT0WYP1*B z=rl;1{h&s-!c;_lmv~#&qvps%-XHh=6ikMv;TeDXBdl}}k$my?jvDP9HQGCBw0G2K z@2JtUoj+*TqHQPICws+KQ@2K70 zQM}$2y*J`n^)nZ?(#lBXHeXSPz zS}pdqTI_4J*w<>Yuhn8-t3_nS|5gJYFVS?J~k^inw8DI8P324KGMeixbS&OnWvNw zl(Ni>>@*W)G*;3w--m$l<5pRWTjdC94V--n zj)xQAL^ug1z~|s(I0Zfrr@|NDG!Vlki*c(g#;vj#x5{GNDvNPz@MZW4d=f5tf(7$IB z-ar1j{t(@)ch83YNWE0gO7*N%_cNtF>~66~z${BO%TmplV zGUT?(klQLlZmSHrtxkQnX8lD5kC)(Ocm?E5&w34Bhd1C&cnhY%+wcxd2fIJA&$i1x z+b;WTyX>>=vd^~5KHDz)Y`g5U?Xu6d%RbvK`)s@Hv+c6aw#z=-F8ge|?6d8%&$i1x z+b;WTyX>>=vd^~5KHDz)Y`g5U?OC4vjG?l{cF7joC0lHlY_VOk#dgUS+vRTi zwb3+4hYaBPcenjociXR((_^i>?bo{7el35noVVudax;G;x$O34x2si~?aQ3Fa9@sD zAKn+T+RX1Dd%KPLd~`Oz4RYz0iG8-eFWxm>VUGl-Pj>IvG{8`Dwh&(d13!$$BJz3U^>C`8~F- z#oz(8$nUR3;U{YGkJ|PRdP`fkZP!04F()Z?YURgm(Bi%udt+>w@MKE`Yw!boJV%Sd z6CSJRx;X3a;~m%8c51d~p%wc4j`sY9!Z5$fm(J=~m$t^)n%1NRF^lEUA@ABcdw}a$ z46|4T>*YOLCzE@J{AL|A`FfdeIx(AYHdH6`6^3Uyo1Ec{n*r<8FkJJMM*jn~drLj$ ztKEBQH&5*<)ULw}=oO9FmblUx`RS~yDYE)3WpiG};wwza|7bc3>yngFA1$+gd2-6$ zAJy5v46~n|BJab`wfk!Om0wP4OPuMP{BiayPm>teTtu~>FxF=p7`y2?4C6SVP48Gf$R z&R@uR@t#wCzs;^qoWWAr)vm}#i5J!MMKyhyUH7gUKB9I{sZn@G@^93rQH_412CsNR zrzhkpy+g?_DeXh0y)TPun{iA}-VPCF&{5E44+N!*f8*dapI@ zCHBiA?`#`S+Tck|o)q3-5Yzsq^b_197~YNLj&FUiR1L!02{!11W%^*1TC7%!Mr&g* zd-F4H7g72@f8$HO-gs7NQwH?LqsiU~>$=X3(S1F#UOj)MKCkMLO?o7+zeiryBMo|_ zjHlr}^Jz9|^1k!I<$iXrU=T(Dec)70cu!;B9gQ35+ULx-&VH%WX5MWeb>ik-C&|;J z$F|Nr8b$y;X*LhYC7O9!Vx@c*E9J9TDWAnk`7FBSvsfvg#Y*`sR?275EuY0o`7Bmu zUIACaRd6+21J}ZJK6AbI8{kIxuHSExE$#Bet8!<)&&H@@U(~TL>ev@`?29_NGgmqL z8g-tdP2TH|)HGWZS*|f2EZb9F;)~|Mm(2b9%!99+2d|n3C#CGetGKVv_T7y1p80d%k7XM3p&nn>8`nns~;Vm>+Gkm)4tDYfao~ zOYbe<173tn-84XMH>Cis0F-tFop9|C9BXXb{j*(V~>&qlZKvO8Hv! z;b?ivwCKF((v;>PWz?%-c8lOtc2ZNy%_&c&OigJ?X-VDLYp>K>y`E40`*LbSYCQZY zEj{g=v`f-n&v-Cv=Pj>8vo^o3&D#9BH*53j**r9|==GxV9Wr;=euq7FICO_|KKa`5 z`k*Oj8aYk*=_AWWemJse)M=w`8};IUaGm`>FY9j944z~LziS4UnZ3Uq#u8TbzHlJUdk~v%0x2i!xKGrPaN(KBN;A6Gj1JF|B;y(I`7r9F zk!H_JGU-s~h4&gR@QrHU=rq5>NWzsYzm-1S;M2{?Cx_O1nNL;N)5sSGQ9|bSoi*+0 z*HEDq`lcFe`K0pZszHw$^pLCF%?L z$3LeaSIe0AdRqwBPuLvH_ ztPCb+&JXs^{J`H91W#u!^mC2B*ZTWXKQH(53V&be=guG}vn%*bW_R#tW>0WL=Eh)9 zX5851=}L03jHy(SY>MB<-kqb?5RtA;#r^giCCrxn<~t(nJtf8nT&Sp3TLt{c4Hn7A$YF5Cp)gYPTj2T)3n{19%2Ti{3VW4IM2 zfxJBYM@xdA$Ooy24Y1DNW6%gq&he9ZV z9biWonz&WQ##^&?g5fX%c7|PGWa6T%QBVxKLJ5q4v2bo;s@trly3J~;+pMO_ zAH%IM34Q`Ug`dIC;WoG(?tnYt*YE)R21wv65;%+0l~Ho4+q0%-k-Bcrnws?lJPDKG zX?P}aTh<@pS$Ga!fEVFU@Mo9;f00S|C3qQLfmh)*cpct=H{mUq25-YVFdb&VOqd0K zg?HgSD1+JXKFon~m<#iu0xDrXRKW+Z02aa`SPV;`8fu^xmL^_v!`5qV*m}(kTd!rU zggRISt6>d%2-ba81FQq=Eknq+}QP+8@pZ`RGzpfWj#Bq zft}UBu4-Uc^{}hf(KNj@O)pK;8|=r%a+4%&(@EQO(l(v6O($*BN!y5ug2Ui&zaIfd zvcivoqv04h7LJ4C;RHAl+#f~Tl+iY2v`rapQ%2jA(KcnYO&M)dM%$FpHf6L;8EsQW z+mz8ZWwcEhZBs_ul+iY2v`rapQ%2jA(KcnY%?jG4D{!xRa4wt&=d%effD7RwxEL<+ z_e<@Wu=j%Rz~z3v0&C^Bm#8SWO_wRf6Y}%)s_E|*xte}0mXrD#2Pd)9^ zOZ&W)`Wv5h7X>Y}h!!fNh0185GFqsN7Am8K%4nf7TBwW`Dx-zUXrXdisGJt+O21Y{ zqkMQPQAX>Oxu-GQ87ZTA%4nW4nx~BBDWiEhX`U{cr;+A~v4b1f!42%-26k`*JGg-z z+`tZQUO5w}I{3!1irm`!=wB8`!=LY~Kd9Zv)%6f$iJC_HAJM zHn4pg*uD*H-v;(+0~@n}joHAq>|tB>ur1fIE!VLv*Rd_vMeHcEC)Y(Dfk)vnn40LN z8GC8QUYfC&X6&UIduhgAnz5H=?4=odX~tffv6p7-r5Sr^#$KASmuBpx8GC8QUYfC& zX6&UIduhgAnz5H=?4=odX~tffv6p7-r5Sr^#@>kAYa@$c3Dmfgu@;sB?<6hRNlSLo zl3lc97cJREOLozcowQ^pE!jy+cG8lav}7kO*-1-w(vqFDWG5}zNlSLplAW|5i(UN7fWEm~Ff|guCORk_LSJ09xXvr0{yR!C>H)&76@3Ndb%Gw9yzsMqsvc}mpI}i>6IpO6=Zk7MOHETS`4CGG9 zR(DFaX4&b?veTJmmov-GW|p1JEW4Unb~Lk2Q_kry5yYireF?q{UxBZ}*8nHX`Uac@ zXTv#gt{Vx@1NXAh-Z9!cMtjF-?-=bJqrGFacZ~Lq(cUrIJ4SnV(%zl4cPH)LNqcwF z-kr2}C+*!ydw0^_owRo+?cGUxchcUSw09@%-AQ|Q(%zl4cPH)LNqcwF-kr2}C+*!y zdw0^_owRo+?cGUx$7t^u?H!}NW3+dS_KwlsG1@yud&g++80{USz3XZ3dfL05_O7SB z>uK+L+Pj|iuBW~0Y438{yPWner@hN*?{eC^oc1oKy~}Cua@xC`_AaNr%W3a&+Pj?g zE~mZAY438{yPWner@hN*?{eC^oc1oKy~}Cua@xC`_AaNr%W3a&+Pj?gE~mZAY438{ zyPWner@hN*@BfRscY&9xD&NQVWoGuwoVnlc_XCKCh=_;?h)76?s7Odeghoh6NQ8h$ zM1)90hD1bUM&y_HnjsMp0wEF+A|fK znzh$n`?B7(*7H95U2AVe@4Xeh_g3`YThV(TMeltSz4uY{-bc}UA4Ttd6utLR^xj9& zdmlybeH6X-QS{zN(R&|7?|l@#_fhoTN6~v9MeltSz4uY{-bc}UA4Ttd6utL)^xo^y zd+$K+y#u}X4)oqT(0lJd@4W-P_YU;l8_;`iK<~X4z4u!5-fPi&uSM^@7QOdc^xkXH zd#^?By%xRqTJ+w#(0lJf@4XAX_b&9_yU=^@LhpS9J$DH`_bK$;r_ghsLeG5)J@+Z} z+(*%KA4Si76g~G*^xQ|$bDyS%R}Q0x`oh{Aig%WSVUxa!Sx)z0l-gb}V*Ai%9fUP> z2yfB;))>mgusZRcPr45IbU{AXW5%rZc(>O9cIS1pJ^9{8queIk)QyX$RPtSM@G`^c$6TqBI z0NXJEY{vw!9WR3Im;kn80@#iTU^`v}+c5!b#{{q)6To&%0NXJEY{vw!9TUKIOaR;Q zBG`@zU^^y&?U(?z<3+F?6SN-iQ2PwFTd?)QcLh3t=fbEr%q4yVbBQ0pT;h8$m-rsc zC4K~Ri66mS;zux-_#Vt9z6W!O@4;N+doY*y5zHli1apZW!Cc~dFqild%q4yVbBP~O z#F)faBn|Jvt=L@H;@A?{lGrlXT41}3SnL$ASPigP4X{{E8H*Kx#frdUMPRWauvigT ztOzW&7g%gBu-IM+UVgx1Mc}a_@K_0WtOPt(0v;;?kClMOO2A_!;IR_$SP6Kn1Uyy( z9xDNlm4L@ez+)xgu@dlD33#joJXQi8D*=y{fX7O}Vv*557IZo@VJ zIP44j_TQ-rY*qv|+Y4+~U&dzjz-G0;X0^a(b--qCfMI?g_-rrmSsn0M3HYoA`0PLh zKC1&hD*>OCfX_<6XC>gX67X3G_^bqcRsudN0iTtC&uW3sYQ=1m@Oc#9gn0{CZEpou zD*>yOfYpwP@!7y@CE&FZ@LCCYtpvPQGUFS=z-&cew!Oe?hk@DZE%-LLWjeM;u+6|W z3md+FY{B=BE%^Si1>Zlm;QPlGeE-;j?;mT;u|a3G%doY?b~(0I*sj3V8e3azS7U33 z?HX+Dv0aO;12%l$PV0#6dTgDr-GHq#wl3JZV!II=o;$vA{ejjUTOVvQv3(aCzQL`1 z58G^P-^cbCwjW?aUkJ>13YhN{FyAR)zEi+_r-1oR0rQ;#<~s$DD*^MBfcZ+md?jGM5-?v0n6CuPR|4iM z0rQoB`AWciC1Ac1FkcCnuLR5|zGG1W=6eH}?+swSH-P!x0OorGnC}f>zBhpR_5$C7%<;4V7_C(e8+(Kjsf!>1Livh z%%=nM9Rub&2F!O1nC}=c-?4uI^VI|M)dTa@1M}4b^VI|M)dTa@1M}4b^VI|M)dTa@ z1M}4b^VI|M6@mGRzQY2Ie~q%y$@=?=UdmVPL+)z#udVWy`fcffx`RaiA z>VWy`?Z5zbU;w)fn;lyfHm_a;1}p*t7J&haz<@U{T};0(iQfn?axT9?aS=XN>|xe*jGwd+h4K+DcRq)ACh`hZK--m zd@D%nDZD?d!|cm2#kCE{-*xEF1|m2MXv+W5x+IqKG5NvDgGf0t6s+pj`}hE zG`83DdVR0HN5_0c_*ZYFsg(K|q!wSS7suAa&&kMfAAV2kN5M>qczh25??B577(Pk= zP^1(Kd@P$R`gY_AmH>Ot;)>6RH2Uwc9oGLxTqkf5_yTNa^*`(H>d#}V*J~mFgzJUR z7eas3w*Y-!wCKC^9VlZg`c90dkbul2=%e^AzUv@kBk(E$5D-o z{(b!wFlLf|K;Me*r%A9ac>j<;1-pj@d6)3*Cvoj}VEd^)58Gha6x&z)o^t>=K9u8;+VJb%-%&wmY=JUvOyxpI@mQ> zkUySY<6@K$;*a1N;wdoS_kl){65EG}eP6^iU3A#IMqVgglxgE4jus29=L~at57+pf zz71FR2Ckz{-;b-t_zbiiA6xJg*T4=F$G!ruaf#1#4gdccUrCkpRXV;zt^c<2F!;-r z7g26vf&FRxzNk;sfkgG?<>&k-=y@0Y9{d}lKZ^2rUH^mLO}|g?k95Doad^&RgZ!YJ z!&&1$Viw`5A1}wkZy7NkVKeko=%UciclD*r10`S9Pxu2+N9$1n@9LXyMvNK3x?X>= zL8Hof9<979<|3ZI&{Of%z6*=~vi=v8H%2Mp`7g$k|BBe9e}pI67x#9ip>)L^=)3V0 z50vYm@IMhLMUJAT!2g>6!A^ktmEiZx4U&2*elLW0q)3g}w{Wi4@$OiJcNzLA!uYpe zJQ0Sr;o49ttf$9u=SQKPc;A6zKWNYyBV~is^ZMiXdMy@xp?(+SBiO#n|1CtFMQPou zkHB|r#Z}G1cBTGpy}jN~|B8Mm;(F;{$5+859rm@p^g^C*K*w-bh(81?s$wyo1oQe( z=pe3XE4CMr?p0{%K0NVyTKTLL{5B?HzRi!Q7@N$f=%^dMs% z#{aMD^Yy9vF#S1vMMlz}!1dmb-=)a=LOn$aAPB@B$9bQ_uV|Ohra)r60DlkT%6`ny ze8l3d7}~+fIM-kB58uWFlOZ8Tw(BAl{=KIE9^NP-w2k!$*Cgg*ZU{wszS zm&;A;7mM-K@O#ny>jhl*Ld3qI{~BBf%SWHW^zAXborD(cC#anr88ZR@JK~w#px>g; z#rMM`-1!&v!T9|KQt?Wdu7oysJwv;wnXe+n9{#TpJqDiUAEECrBP8_cEL&!yOvQip zF8DPxR*|m6XqOa@&Pc7Kn9@b*A~jcTR50I+(nIMXU9R+0Zjo9ky_MclYo(8Jn{=ge zyK=j9l`=rNTWYI(LHUBzP8q7)BVD6>Ss5W+YfhLG(hcT4<~>qp^IkL93-dwqLFq=z zWtPjNZk9=whoze=-?Ge*Znn&_%#m)j%(eVf>Sy@{zF{`l@*B%q zNqW%orsa?{$?}fnq%=)aHIwvR&7x`2_cWUpkiM@)v=qFbGFr8?NNcXOmX>I3weHd~ zt&i46dO^EgyHnbTFQVNe{aO36_El-8HcA^M?ZMa4ejpXKx!RAV^V(0fpUWogf3;u3 zOX@e;v$Dhfy8U(84V1A(_5iDV2~Woiq+!7-!vn;MI2*<@s~Dx=K)e&H8T_3K``sAJ zuYqCnBUJ#a4dV;KNE?x2h>v5;Llwp+Cvj8?s{>CwgP1HE`gS zZ-Lb-U53>Me1j43m|^2`nW-$ZDwJ7I$*kOhlC!Yn zY$&-tlBV2-@~dL`IZ%EBq=0faN-@Y%w4fA+B76_Z(u1=6GG>tN@mMC%SL?Z?oZGLjoP458#HQzMs2V{8!VDl!-CnPZJGnp zsrfO|D**klQa?24M*)6s)zA_vwWNw#QbjGPqLw(IC74}b8v6 zeOU7t$^BJa%}8k!!e5gfKn`QD=B2M=jY?y&nxt=F%}e8?3DD$;(nH99lJp(i*>vd< zX#9-wTvCq$o6p3W!JJaxMGcvSH7j?JufyzE9WkGjU%p=E%(OD*(U5PD#q6}5Ro7@fIn`E>}a!br z;F&06lrfT58K;bs^2&o4-5ymYDiaZ&q&$qe_f6%S7zaHKqoEVZbY(hH&QN9`X0|dL z^Pm1e`GI6o=3q7~i}E8eH-z$I<;U3jgz`VAT}zZ-NoLa^(;&%f8iTR&anrX<-@>w%wnqNj(w8TDh zt+`eTo8L0OC3($9%ts``{YXY2hJS5=mGhi_6RZ!6a{<0u3p?r0upA!L;gJHw`wnpT zZrE?{0l@-e<9*S`79909u+B*!vyPTrPi2M z{}oDk4;YTOb$o#ms9a!S!GZJz=du(>;T^n z5YMm<+iui`zK!Rt4B-sNkU!39#0n+_R_PgiB}-oDudt!!>TN5J`rBds$Ea_|sG}Ic zj?(!M&#VXXEuW*|Xw=VDC~aZ6iL1oy9OY~Hp^o_qs6)$e7Z_=W8rTOZs8J0^E=8IQLmR z!O!3y&Q!U;e)=8Cu82Lt#(!2^KkaW}F^VzySjdv?L%N=oM>d9$KgP3SHSS%({5Dqt zCrQ9b1AxRo4?J`k@X&o2pEnZ71~V!GuiVUDzrXST`uhRw=?Ai>|2%v8LG0-VE8j*> z|3&ukUt%9W6n*?0=^pg%KbF3Xe*IU{aOJnkZ>6#9*T2DjdK~-d@#v>tlqQ(Bp|_sM zetHu7>4(`*Pi8;;P0Qn!$E7J+Pzy@m(wb?_q^a7g=oi1ue(^i(7iXYfd`p^z9`U&J z1NMar*cbi+eW68Kf?hBz{V#gKy!0IUzc$h)Yg_bu+u8HI!k+I{_Ix$$`HJlM_Oj=z zWzV;dJ>Q$`^Xk~=z0E!kzB1_T-e+%jPV{!NQ}lMSNAz~G553+0%2CnJ$!YX+2jqh2 z;pBek;ZDgztRGnaD&H&mHuxu%ra?Rf&8}K)yEslXk}JJ+jmltC@4+*`%AK{y^ZLL#bO) z>SBf+fsQRi$1b8{8_}^wbS%D;c^^^=L~H{h9u0*109F%F@z;^FK*TO0;wm8G2VvQb zhxRz3J(D57iPbDkk-mj9PQ~h!zKzu^O#@!mh?iZ&%WllQ3j2b1*-O0aBVP7X|77Uj z1HiKab*j`tE45Ij7CNbgerVyhfqVt(v``oQ)I|sJri*wJGs$5VCVYhlsMAW+>8EyT z)J{9K(?#vnsGS z+Dz0`6E)RD)CO&ZzM7%0etZ=yU=1J~gzjoYa26ss7ZIF`2+l@5)~LrC^;n}GYt&;d)Mh)eo1NHACU&bLcB>+Ga}c{ZpwrJ`g!dXC zIE@I-MFi&}f^!kUxrLTvJ}!aayhLz5A~+uroSz8JCbS%Opd$T>c47qD29=9MVTyvjW#3Zv4!1eqva^W4of4P!77teu+fUNR9KN!v?3j}BF(fSt+XOlT9I~I zkulnjQP!daYmxX`(jc5k)DSmoNP+Tm4Pj@vAzY&FPL9ISXgZVT5U2} z6&q_^l-!DqbuVE)Y(6a6$g|jJ!9{4nMQFiA$hp{P!O67XWNy; zEH>JAGIh-O-dR$7QEEkuAFi^eYW25{M7Tm)qVPBU?uj$yP%|g1@=zS zL$KPL>9^_)SzY3nZ)jgKEIrzBqQv&XIuY*`@Gb&xG=62^Xq2Pz=A{TL>W{$kzu;Sm zlll^*5_Z`JzRO($^uG-V{7qOA$fI!)??DSZQi#IL5!}cQH*_EvUya~oz zDcYL9#_wYIrot}N=R*p6U=jRM%S*#My@vmn`n~8)9NvfEPQ*LbqYZBvapse-@D3qP z*gOYdTZ!L;SWh73LFh5JE?wPpe^p-!9&1VcUSGC*EGI!1f}_qs)isKVq)JQWsC}7Z{T*?DKh$ z;_3ZdfAT_3#@nHWzx>q~H~!VXkMuKi%sPZK{Q+;qZb#{kz~{T|=MU+9 z^x>FA5u>EQ5PTbNv3{n13%`r>AL^_1Ax3Tu?-j*AXjcW>W9(=ANbKX=Q~ch^n1%Xi zgvT0b&c6wLzF>3eUxofp!@JRY_3tn(k1$d;NWU(jzw%mV$p4R6$qye@v5iWI^M-zSbO z|GtCvS6J7`Pb|FPy z&WGCHbP;9Oz={}cKw}zle;;4a^5bqVwKUd`hWDsVQ$fRUzE4^%&bg6m{8;=6T=6j@ zj|LX&lXCp`#Wy^oi*u~(Z85XgMGJYFCUt?aXD&*}Kk!Na)CJlFHtv&_OLJ>@Ru{O& zh9fVu#ArqSu?4^AZdj2+_}d+twsj_`dMW2C;6)YnwTvM(_D1<`|*HJ&}+xrV+@cr-L!cy(_# z^gb8wH`=AjJ_C7U#_@|&HU0N-%|Z$VcHQe(C8-9hEETaT(py+n=?GSnbX@un48=#% zUt#g-vIXzgtg;o~^0CWyd>7IwJ2A(zSN7s77y&tfue_w>4BpV?#VY&gzTm%hHYNtLjdvhx)quy3|vB zQ#~NvqQ0fpNxjuW>Jh1rdO|%Z-L8J9{#EK{l1++qx2cP%i}ZO@FHjdfoP}?YLB9I|1)T@kGb)Da(Ay$|axj zdw9wxuv(<|v1-yutXAn1R-1Ght6lm4t4%tC@^GR&K0^2$)+&_DU%@l!SS_+7!zV#j zWffsOBz(8mESnKyLCHB;axRvfjV0$~$+=N-0epokCW~dO^rjS2_pAG*uzCRcRE(8Qa?iYoO%x7ze4ju)I2ve&qd9PQ1cXOo|l?urRLeF zc{XaEjhbhp=J}|3K5AZon&+eD1*myGYMuaZHEf=nH4OC7x$T6qS{(pjtyYGi9_ z%V0N=n8ZH7axk{$R4vj^TZ9%^1r_RD^Rh5lu!e+lZJo%$Dm{zcK!V8!=x z82rpnrMH(^8NN_%cT|^v@2>y9~0W+!CGzq6PBEt>jiXwzb?Ex+pvj zs>nIDBIjfx=hTXvlZl*Dkerj19tUnRPgZ&yxXC{$MtZ!U8*jHd|G`P za+$geQfPBqbq)0Ra&^7BUUI0 zJfH*(`&zL@g za8FZDgl{q3g0CQncG_<0ZR(AbeN25I`r@QOl!}L%T}53i4L% zR>=Fc`=!gZ$F;{XYt~Y2snk+?PJ2#@YumJ!Az#y8gDheGLJ#II+$X85u^#O`?LEZ2 zue}fER<){-qWAEy4u`E*Td&4@d(npktX(j3V#<08z5$&o*Xr@s36g4^Xq|}kv#gIJ zJl8rG;rZ72NdHsoPa#F0W4E5So|l^0EH?O!*<3ac%<+HKzr5BxXmZ%7XN9y>fo>_zzAd*FNjw&b)Qf(L#Qty5Q_9=195X5ggz zN&mlEz))aZHa++^feAT@_x?b3uwa4x;8i+UzY%uqPw*dK7lz&17Af9quw@YXiT(i6 ziFdsx>BqVg-m{A(JFLW$`b@mJJgHy%?|dAXSBZ;ZA2nDmA3uZeqsA4%nl~0BL=WW) zaSi(#f8l956dchw{b~Ifcwr31DnIBSZR`5^o-I=6MGLF@M0ET8J;^2z{xeEHf z8O#G_&qoQo3*A4C*}%Avy{*xwi$B<3um6alNAPbO{vCin#0+pS-$d@)5O)ft*O>>3 z^amKXM({VrQufzga)Cc3qt$psL%M(NS7?{P#E==oQ$X3gVK9&vI3@6A#)5e%u~b^B zM%_YO*+Lh7?)bMG8|K1BE%_mjbn>{D7!EX~(rF(T~NwU=B9KfOnf=j1+(`r${qJNGYYy;_n5a ze^bO>_*)TZY+EWKMbN?jo{M7}MuOl>TQA=8ssAu1Nky7mIh-l~R+WFV<=;#FST7Zc z_v&Kt3qKQF)dxc2cfawA(5JLPNP*g7EM#LbdsD-I{8pF4`SP!;{97phUg`(;qB|Nr zy)awC#}+;Fu?YNa;0^TNdP}|GEF#{hGeU>HW7Ny0$5zHPv`v+9e}9;K3wTMfG%`fw zwM%HP@Z|x-ms_cFDm-bl13ZSldgT%@_Wu2nJZSmMpMKOQ^YP-?k9#;Z6TFs%PqUR4hK&}69dEeb zh6V5w^(Vmc!bKfmuTlq%aX82I^3aWSo4qkziSK#ConE6&y<6BKD-)hKV(2XAN@b$*}8Tu-; zr?0|i>8pTm7-H>3Uxgrj69^pbH+zy^J3)Hw zB5UuDi zt>`OgMaO7G-$`w|kyiAb)VUj}b5~R6+EC|OQ|H=H=UP+eE~n02PMzyYol8*XZlcb) zsB_Kfx8IH)9SQpFx1&c#f?ga6`t7%)FGnZ(a`d7vM}l4)z39bp6a6<2wX)*;12T|^BSoyeP-dqCxZ|ngAgKv(1#2{mJC9M48pDE56mA(&CF-aXQaOLX-m?t#zAHwK<^p{ z`Go*|Y#baV;ir#Hf{a7f@?Fb!rDpWENzkJvL7$mCeP;6XjY()%YHg%u|;9h7_Ddmi{vd`pn!$pPAd}Gt-S+#Zm?NDaZcgv#SJ1aE%@IhQcL7SXTFwuI@!m!uD0l0JM%dhfWbf`!SDg$dD< z$3-qCLoOynuO1f}8Dn%tlDtfqett>%`6cP|W2MiJl|DaCdiXUbcN3?dUvv8THK#Ao zb@TeZ}@QaJ1s>LuYcpoyh@TMh^Hg zeDmUGV1)%Aq>v9vlMlLud{7_T>$cay9|`uiKvt+DS)tzKgQ~~}Rg({jkPnKJ4~mly z3X>1&K|Ux>KBy%<5tHoQFK6$bVDEktdv_Om_vYk@ZnbZ-ZuIcye7beec-+4)#IgHC zo$xdfV*|u@4za-30N5J-2JeAy!j}{wUxg)F4}Jkw>3@D{u!O)0@Om202(SG8u=!7w zW8C5wqZ4N8|9i2=Pva5)uF!>R+SQ2Nac=R(_i@9TZ{pXn0xXbjfVP&xlphk`?%iy z`%aDd7b+}GjA4Su5BSH`U~`LT6Q&ysBWBPSu|>$~Vs;4O69xY91+*Dcz!em+RWdIB zzRN>SjXap}>%;#ijO-iR4X~llAbu_P8m$|`#(yL2ze6@!@yPobdX7Ag(Pqm~N^j`X z%GU%-9&8>o5WZvIgZv@3*O5xZi0}{pm6D|281C;v8~zYx*2IFbYrjM5jv4yO_gTf* z3Gg0UZZON`_$EIM%r|^8U&1)K!zl5WFpg{&{AqrScO1_(IpC5Jf&;-doj`Bbz~|r> zF=TH(?ze;<=HMl>DMvOkDtK}=$Vc>3Z=#=AfnUr>g&7cUElrNciDL4za!K*H&SD*z|(pgqb&F1DINgdj5%|K-z~1}WWyOnT9n2~ z?0Fr$e7VQv^WJXMx<+o(I0h*%u$>LLTReg}5uBj&B7$a2o|SIc>eu1Q)*OIst>yR7}KpR*3I-fbOd z{k(M$=R8xue2F`;@?Nac7OZaRMXX+0+_JbcN#>h)MckjHiaV4{d>^myO}ts$t7H*( zD`}inz)D-&MqArPTiZ@syNb59owjzBcoveC_Og>UvWph6VGBF(Y$i({+P_ZPzb^5d zBsZSalZanrSp>Pl@*HB;Sk@qnXN9k3ZL{oyJZw1%c}l~WDBODpGOeXCDnEkJ`c^!L zL6VhkofW=yHiJ)WMLw}5`NYfMr(yx`E?C9p@QQLGEM{S8jwj*uZTppnV?*(y9}v&g9j$^9kB{dvj#dCC2`=s}}Zc+hkr z_h%ya=O*{(Aou4c_vfhKn?FO=?=$54t|i}hE&0AG@_o(8_od14T}h6wIXS*7Id-d> zOkZ=3-Kyq{HPvMOnv?arlB{1dvVJYd`ZebWu4;0BEy(?)IfAR23}7=dfN754swNNE zf^6O8Wb3++t?N# z;meaCTW2F%XC_;xk*!n7)_KX+IoWn-Wb0(Ib%rlbJ92hOwjJ%r+$Gt9Tt)uQ+r*bg zBY&r{HEGM%q%B*MYuJul!x3)Pol@; z5w<=_vUT0b*7amd)P-!_6&wXuO}4Hj+omYlx|U??qGan@lC8Up_Q%}3wgjKdBElzM_0{pbk*bpbL0eb zW@0IlTyG;)94=`E#^d|z;@w!` zGu54JokpInJ9#>-iO-am{F;-Tnulzfhdf$W@@U=2quoFr?FRB_H<3rXi9FiP;>Dg7rcri2CF4Ss}r1> zb+KK{5r#L3|F0Lrz7tmg8wzL??|RR{x)LL%j=^I^%rmkW80|xN?ED^MyOsj0oyEAd z*T7z7vSWxuz)@kGj9Cz923sIv(by`)2;#EKPWGa z^L*gmFrz50;a!fq>Luo-G-m9>b>gd0Smz=J@kng2_jrYxB z5562NI-G>s{-f-OC`o);BMYJ-+7rDy|N^x037}rI=2&CIuF_H&g(SVJ*jaJJO zuvGsjW(Cz3VB6ft`C#l+d%Zp4hQkZ*E?oCrxW_Nzf5*n$|FID6bV|i@`vvm)2{u?X zkbi0%D`?~@W?C$VaMp6#+c2K(Gh%!gp5g=NKhz85B>d4)^YoFJy=Iv3uA$e|5Aj5K zR(u!RNW-&&W%&!v_$d}x13OoFj=vrL`?dCy^Wm7l_Z!R8NC_>47g*zBFqejqdetL)_)(#mu*Ki%U%6HL%lx=8{hhb-< zZNcc8@~o{FwEg0982&^?oS1+3()_OQ#QaY!hBjX+clv+s6CQx%umodp7WZWMsD11J zV=NTDyosgK`|V@NF8uwZv*JmG%S)0utc`Q#=uws*aq7TcrI$Tde(3drJEsf&GB|o)ah!7_S6u_n!7XkR0Bj z0+Y?Me$P7F`hDwT)*o2sSRV&6n~%4p=LH4>0(09u0$l+yy$5Ww8wh3(e8v^2E3IJ% zEno*NU72>RjJp9}L0=Rn?kbD99L2~DCoN7V?r<@@pO#>Jg@ZPkF^G* ziN0k#v)h2R`f7bKDxja%58=DCyAT#53QWY*W<1M<;!E3jpKc*`)|%kuD&l1u@v@yr zxr#`+ib%PN@2MR`zD^=v2a&In$k)ZU(oSMt_eGdjycc#5rOL#cPU1?3c>b9EPn3WY zW$bMKiJ%m$59{leI{Y zwFt0Wo0G3-Prf2fz9LP&!b83yO}-*jG2$#wzM?=cB{9}4hLL4r#7}{mktSbJ;D|Ff z`HDRGigx5H^5iS>)EhtfiZr#SKwqWS~+CHCc;R^i{gL ziLX*eG6o&U7&yro7^8oj)J`WE11A}S3>kws8H4s@4C2(3bF*3ktN8JCGe0XDA1=TM3$gHpPmAJdeUSG3iRo5u_m-2OVEz>;YzXu z1^V=a$r2Rk)6Ope0!X!@tMi3Jm|AYsd`P%VX=rxSuq6fM(UEhILb_ZJ7?P*_kpncte_H_r=@b;|9an|G*En*WbViRp) z6YF!5^*KWOH$wY2!up(MeRk6RO|w>~S*z2m)oI$lY1+T7D@F?yE*dQ)yjaY%e+z5{ zoNNWsYz3Tb1=4H<3Ty=m^gGG3Eoi~EAV>Q*NBdWy{j1Uby^i+pb+mu&w14fie^uJQ zR@%Qd+P@jvzs+d>cA)*6V4KpMmT!QTuZNazsA3dho|bQ(mT!T6B<*PV=GhYYY5BU# zek5XCkxbk6TH3blY1t8>|W2Mr^k8@8U< z`e5saZ6LNG*oI*niERwF@z^F~n}%&Bw#Tr|!?qCHB5X^rJ%eq9X&NkhpFLtv*$eiT z_BQtR_D=S0_MY}W_I~z(_96CR_L256_VM<~_G$K+_Q&k=>`Uy=;QJ=4?d$EE z>|5s% zsXFg4IqVLPBjiXpa*h^`){b_Lj*hO59**9QI~)TXgB|xeMmR=0#yKWAraERgW;^CO z7C4@CJmq-WvD~rBvCgs4vBk07vCC0(>~|b;yyH0OIEyLJEl!8i=ZrX0&VsY0vyHR8 zvy-!%v!}CObG&o1bDDFe^D*Z<=R)Tq=Mv{L&K1tp&h^es&aKWJ z&fU(E^PuyH^SJZ0^PEd@SzRtyz!h_4T+LjqTy0$)T%BFrUA~%TytFWT~D|cyOz3^xmLQ?xHh;pySBM@x@uheTy?H`*9q4d*Lk)_XR2wt9AWc6&;mgPtRv zs-)P@B-z48u-wfYu-(24U-;=(ld{6t9`&RkZ`8N8t z__q6Y`HH^%zC*rud?$Tp@v6n*cldq&h(F~o_*?qh_}lwC`Mddh`uq6%`3L%k_=ovN z`p5Xk`zQOS`Dgkc^Uw1y^e^%+@jv5V;a}}v@89I#>fhnt?JxNc`j7aJ`%nAN1r$vE z=L!S@u|Ou!EYK>@Hqar^InX`OE6_L4KQJgTG%!3cDlj%MF)$@CJuoXUCon(oL|}1X zX<%7kWnfKULtt}YTVQ9PCa^D17pM=M2%HI=51NAZpeGm#CW5(Oi(uhToqgw+!)*v+#cK&EC%-n z4+Y-|o(!H1VbE#F5%Ps1p;V|4Y8h%1Y9Hzp>K5u5>J#c08WIb>D;x;N!kKWh zaI0|JaEEZ`aQASpaNltM@SyO}@bK`c@YwLg@RacM@T~Bh@ci%-;l<&l;bq~K;Wgn6 z;mzS~;ho`{@V;jwL;icF2nh|G@6jVy>f8F?!5bYyvCRb*XcV`NKYdt_In7}*~=6nQ6dGIBO5 zMJ-WB)EA9JQ_(`SWwcGSeY8`wTeN4iPqbfjV01`ySaf7`Omuv7a&%gBX7sV>yy(K{ zqUe(7Gtm{%)zS6QP0_8<9nsy@a*2Ff%HpjNbcE)OA z`(kym`q+usnb`TbDQ=H@;-PpVo{P7Lw~n`qcZ_$9_lWn7-w_`W9~{3oJ|aFkJ}y2f zJ~cigK07`)z99Z&{HgfU@#XPV@pbWy@h$P~@m=v^e1H5<{GIs8_}PS%up}G_Um}u7 zB?^g_i8hJ$iB5@biJpl*iGGQJi6Mz$iIIshiSdcaiD`+MiN_N25(^WH5=#=#BvvF= zC)Ou6CAKDZBz7lCiGztFiQ|dWiE~LMX-&G4fn+S1Nj6KiO14dQNOn$kPxeaoP4-U? zN)Am9PmW5CO-@WsNls7BO3q2nPd<@coLrh*mRy-!liZNpoZOb&nXF0fOV%aplP8jA zlIK&Vls)B1g;I%BF4ZE{I@K=KG1WEIBh@=~M`}Q7aO&RFh}7uRxYVT7)YOdB?9|-U zg4C0#r&3R+mZw&w)}=P4wxqVFcBP7`{i#E#cTy))XVaK2KJ7^R(vfs3T}Zb~w@J58 zcS?6l_e}Rm_e&2<4@nP8k4%qAk55ldPfO2CKbD@CUYK5#UXp$$y&}Cjy*|Auy*0ff zy*ph>A50%fA5Wi7pUWs2YsQrcWMY|2rdg&{rfsG}rgNryrdOtKrhjHoW@u)3W>jWu zW@2VaW_o5;W=>{)=84SW%+k!V%*xD~%!bV7%(l$VOigBArY=*TIgvS&IiEFU?O9JY zlucxF*%sN>*>>5E*{<0h+1}YZvIDY%v-f64WJhPmWhZ5)W@lt)XXj=YWS`7Fm3=z9 zJi98pF1suoFnJUMRKWJA=fh3Cf7dKDc3F6GuJ2A zFE=nZBsVNKGB+kSJ~ufxEjKgwSZ-c!VQx`wN$#24irnhl`rM}6*4&QV?p!H%Fn1(( zJa;;GF0bURc~?G=kL5G@X8Bh6w)qbE&iU^7UirTH{`o=qq50wYQTeg?iTNq{>G@gt zIr;hdC-RH)OY_U}EAwme8}gg;+wwc}HTiw{x_o{9ME*?ve8E((7d(YfAyLQ`S`=Cr z+7&t$x)ypAdKc~}3@8jP+*=q?7+n}wm{gcrm{FKrm|Iv-c(U+R;pxKi!m7f$!p6du z!uG#@(9C*e30P>nZ}SKn(Q@VjFd(`mEp>qD^phFtnggQZjrM|7gCug zr1~Yw&oSmOov-WqZnNgp|iqepN_i4&~d7`4;7ODNhKgzC_v8{5Hau zQx0Uz5Ft%>38@%IZDV|Q#ymp#V@eO@Y|6Ppsu4;TV`_yor5S#alI5r@5n=gZA=PhC zZl+|s@)Y;J%b1XmN`c{$N zt9p$wohaWFQZ??HWu!dDm@xOUbkw1Y;j>ad&v-sP}5>(SxR1~VwC3nB8|z-_*}VKykAI@p(i=!&u3z4#l7b! z$5W1=`~&4QA=O(M)+v8LX=pV|)~E%F@tk>H)zAT+Q7JL~?6S3)Ykqr8ss)X8!!;JwIvhVqBpYv>8fMd`~J zmWaB7;g*z>DXHzM!Z4qCxmFsj#GgdG+J$@1P#XF3-en$ZNVSTke3eL}Or)H_^lag! zb&TPYQFy2FF77q7q8r2a38^x^d=1}Vj3Gyfuwq>EJf^>fF}DdRz1%2`7RL09h*8@x z&7+jJGo~5CZ!m1^<((?S8GkqB=O~R@`4+=`{wiA@h4*DVF?9$vtvS=&Bcyy6? z&3q>H+&hY4wv&qS%zH4N?S{&$RgCA)r>#_T?_kOeLaI*)DbHe#My)g?Q!2mbu`Pr=e~Mwon-U@{_n|bji)WNs zzVZmhv$ZL=y2nL~!slt=gmOE;8Y&y5%%@tuciy#ZV?Mk)nKf5=jrrsm&vG&9rp(qr zVZ6etGV)QTF}ZFRZH_hQ6jWIOekUX}stt;ce`8*?AIivO|M(wDSMx8Zks393sMvnoJgArDYy<3>4 zQJPJpS>xVa6|xn>hP;7cLsrIDhSxI9*C>r}<=&>@$~>EfE7Kc$7gbzO6H^N4|f#?4&S;KP~vQm31;~AEXx^GCfbr;1{ z?lr>WMb2`LvNEP=%D*SKrbji6N%LHWY`WLD9!g~`?|M4rpNjCZig0C`e^=PZzcbJBDy7jfFKH5E z#CsWU$mc7R6J5*i@~B=s`{|EMrAuQiFO+*=v`4O6lwQvR3WuU1Gy4=dCEcft`~LuKt4E@I@h zlt#ExE@FB=rITqGBOCGNikJ+;V<{gLvTSh}+V!O-F%?=@PWgo4#{9$b z=gi?-lt%CKb%wu9Ijv&v0~ImGQMWV3=w~0QNck`1Bd-$q{G(D~tMY$AmMv%-@8Ulu zl_a0GA&q+UUy%5`| z5hE{Q{Dej+zaYXFwM%)Xe4mmnfME~Hd~Wh~roT-{HTMaUIj9Bh{RF8P*Va@Ty+9Kw zcjI|^M&%ZU`%?CyyqPj6q{^pJ#_$g_o^4K!8*9U` zcEr~`hhq$t`09Npe&fC~X9DaZJ&g56>3h;_shhM(dRgi&y@Iumv=i%X(k`rhrQOmS z((Te7tanN!sTQ+gAI92WdRKNypQGRFgY<75FAG2CiS$l=NdB7qHEELkNBNJ^!x$I) zmNXe7V!t6x!FN5!OTXvbbbnADRvwmCV?Me^r00}Jl}Dwu$}DA;v`%?kd0hGKS-ODwaW9-X64VypQV?St;$wuo3cZBReD)@O?h2< zMcJq9lXfa~%G=Uw%35ytu9nxXdr-r0sYD`T?C)AvplTN7xwIH2VKc{|9`ar!~y<0k?-lN_teW>2A-YvT_bllU2p0ne-?hJJ>^^Bf7(YL zV7kL}hx`RG&RrgC_L+V17tLXFSRP`Io73`_%z1NO9%lZW`E&AD#K=@|to-38lYOA!>${ua4_M%dP59uq)F?<{KRpmW=xp%K} z0yC!_Q_gDdYR6SgJE6U=+O$*JM{1RJUei^dRk3QS_&Q-qjp19T*Q*)p4b~gfw(udn zQN3Dx-&Adn@0<2kuf;b_?^JKVsQJO_O_&euOX{td5A7@JZPxp&Bh))EE81AKpLLw| zL3JSf`6sA@tdp!$)h}45S%0M7E52{4j>o)bKT{`K7g-mnlQ8?)QuSfXd-iK}s`WS4 zXVq_8e{21%I^DX`x>9|_y4t#0oq?IqYSl-rZ(0wi-?P?PkE)MZ-?biB=V3mylj?lT zg!Ym86YF2Ce^s9pGoh(J7c-%$zrc6_P5mF6&1P4Z*c>*ex)h@a0_xMYYiu{E%i+g5 zKz-ge&^Azg$u`I~THOXe)=BCC+hp5J^&R-JE>J(REwn8(+2GB(%w)GMw=Fj%Z7Xc+ zO)1+3TdnDG_^Tc;-2zY5L#E!gqqcg}ZSYP#VY*$+Y-YL(qc8)e{+P!sYP#2ckNqCg zaQI}7H{EA{$o`ONg#BCgZ<)Rd56x+&k@iRIkC^UjP0JtX|?O_PN;t7(cDqiOmUWCQuAZ(w zu70k8t|6{ru92=WuJNwPu4%5BuE$*STnk-`TuWTfxK_AUyVkolxwg7?xOTfru7j>4 zuH&xLu5)h1ZFRfc0e8%uaW`|fa<_GNaCdfhclUDlb@z7|W|#=3ePu8^3_bJw}+-6z~<+~++ekKN<(gggmP&eOuv z+SAU{(bLt_!_(Vyhi8Ciu;*US2+wHGIL{={RL>00Y|mWJ0?(74r#w%4mU~ut)_FF1 zws^LCc6o}P{hmXfcRVLOXT6w6!t3z*yb*88Tky8@w(++2cJg-f_Vo7g_VW((4)G52 zj`WW4j`vRXPV>(6KIWb0UFcopUE+PlyTZHLyWYFWyVbkHyW3mx9`qjZ9`~O1p7SX_ ztIy>N_+q|{ubHovudT0xud}baua~c{ufK1QZ>Vp$Zx z-%{T)-%8&a-v-}i-!|V)UyW~{ug+KRJK;OyJCBCU?)UgZ{)9j0Z{ct4Z|Cpm@9OX2 z@9n?CKfpiOf3JUpf3$y`f0BQye};dyf3AOl|4IK-{-^!R{j2=z{2TpS{M-Gz{6+tM z{~`Z7{*(T*0V!Y!I0C*vB#;Ue0xbh=0__8x0^I^V1APMh0s{j>0>c6$17iZ?1Cs;O z0y6`T1?B}71{MXD1fB`32&@jQ4{Qo-4eSW)4wM2114jbK1E&M$f=bXDbOi&!STGZ8 z7Hk!48|)D59PA$K73>@A9~=}M8XO)R6&xF!7@QKE9-I}N6PzD>BDgrXG`K9dGPowV zA-FlXEx0pS6WkZ93)Tlu1kVJ|hfE=R$P)^M5}{nEMW}VCU8rNIYp6%4cj%7LfY9L3 zy`d4I(V=mnNujBs8KK#sxuFH2Cqqw#o(?S!tqQFRZ47M*Z4d1V6+`<&heGd!PKM5g zrLZOJ2>Zg3a4K8~w+y!lw-0v;cMJCn_X+n44-5|p4-1bBj|qF)T=sVGq(X%lrW{EjszE~ud ziWOolV{KyXW1V8%Vm)JhV*O$RV?$!YVk2W?V&h|zW7A?YV~@q=#TLdE#g@dLiLHpO zj;)VvifxVUi0zJ*Vh3YKV#i~rW9Q;Z+!}Yq1Myfq6K@u86>l5w5bqrC9`6AS8=n}T5}zKQ6`vEIAAcggIKDK#EWR?nCcYuQIle8vGhP$l7q5%g$4|u1 z#Lp*8346km2qhAUT%tvyb)sFOW1?%KN1}J)j>Le(;KaR&5sA@>afwNZsfihh*@?M{ z1&JpUPbHpCEKjUTtV?W6Y)NcS>`D|9`xA!}?<7tp&L*X#CFw}|l96O8SxB}_wn?^6 zc1m_j_DuFk_Dc>-4oMD6j!ce8j!#ZbPD{>AK9-!9T$o&xT#|eyxgxnbxjwlmxiz^X zxjR`(9!wrd9#5W5o=YhyYs!@hq++Q|s#&U4s%@%6s&lG)s#mISs()%wYG`VBYE)`$ zYGP_iYIWS3i)Y8lR84AMsxDQZI*~e)I-fSB?P*Us zluo2`=@#kM>2~Rk>8|M>>E7u((gV_i)Ay!Fq(`U6r6;AQre~yQr{|^@q@PSbm3}(C zJiRKtF1<0mCA~epD_uj3eXAL^7#NA=5I`CeuFCDbp>}Gt(#2 zFEcPRBr_~CGBYMKJ~KHpEi*IoSY}>kVP;WgN#>c%ip=WF`pl-x*36E~?o26jFmohx zJaam8E~{j%SywiYjb$_0X4zKRw%HEZ&e`tSUfI6c{@FpDgJ? zIobKyC$fvPOS8+eE3<2|8?u|T+p;^eHQ9aHx@>*+MD|Sfe9n}!=RCPkE|JUSTI5>i z+T}Xty5@T1dgt!Q4ag17-J2Vc8=V`Mo0OZHn~|HHo10sZdouS_?&;j}+^XEV+{WCN z-1gkATrsylcPRHx?qu$4UdmhYj=V1)$*1y#e9L^BeEWQ-e7Ahhe4l*3{J{K>{ILAU z{Fwas{N((!{LK7g`TwuIYXP^Z+WvFSwf5TktnJ7vNs^p>_TFcoefH~|@mk2bFMk(ny8!|R$Y|Ge@u`6Rw#=eXL8HWRk zK0aGAP%cn0P$duyL<6Zn^+4S~exO;PRiJI4eV}uoTcB5T3mcR#roq^qfy@CCKgMlNNW~QB4DzkiMrOc|C;mlZOUS`eA zdYO$gn`gGpY?s*~vrA@=%-)#;GKXf4$Q+$HK66s$w9MI=b2ArYF3wz@xjOUJ%=MX@ zGPh=K&-^&^v&=6uzs)=pqz?}VO9aaVD+DVC1Hniz5v&%h9c&P68f+146TBwaG1xU& z5bP5i6dV>D85|Rw5S$X65iAVO3oZ;U39byT39b!p2yPB;3+@Q+3hoK+3mym_4ylkY zR5Da9R54T~6bwZ}sZjM$-B5n0S*TU0ZK!>ybEsRWSEyfTNN9LyRA^jiVrXh;W@t`m zerQo>S!h-0< z+&tVm+%DW9+$G#2+&erVJTyEaJUTo+JSjXaJUcu$ydb->$5jyZ_VDG z{c-kZ*!Q8~Vxk~!sa zD&|zl3Fbs|QaROg>gMFAAlPUoC%IlXfF6Y*;C+VKYQrtuc>Ht}oX9phc&1@S)dLGfYn zk?}F{3GpfM8S%pSy!gWSlK9H_n)urIhWO_Aw)l?tuK1q#zW9Oo;e<-~5+xJm5)~6w z62U|?kxEog)J^0knk8B#+9uj3Iw!g%dL{ZLh9rh3MkU52CMKpPW+vt&<|h^HnN^USWnw!e4 zo?ACJKet(KtK7D^?Q=WlcFXOR+b?%W?(p1Ex#Myt=1$F>nL8(Ue(s{&Wx1yp$1l@jN&yfdheeYh=Ed z0GU0SBYy-!UakWDh(_Zqjf&$oM_Lbo(;lH;X%x`Us3t*%^E^d|%9}Jtz6pAlM%4kB zdrZ>k4o+Ff{1dnrxDGfIl4C(H0Tu!WLGyOdZd?iuU&}pOMofp~i_io8>VTH<)CJao z{A&o^4avKKoVp9eR4plb>QIO70U9VdS3vP0Bp=kMo`(Lv0C6qy70~x0^lQ*pBgJcg zkP#!nuLlf)zYA# zp;M;`%~6j5xn>W69so&PuR^O_W3kNRw^Mc zHz4lY8o4FQyTReUk?-q5aJBB6j;pSOo*d}8 z5d0dzo5AOjS*MYPZf!s6TzH|DG+rjUyQT%|o=&78#z8(78LuQ&w z5^1U7;7kUhti;pMz+>D6;Nz-|5}G!0bf|H^rd3CTKA<^@wXFsnLTG7(&IEFqFN0>j z3%-F2>PwvinQ_2@K+Y%EbuZ1~+7S=BLebJx7jXJ(RFG5{ADuC75kmU_QJdVOa@&*F zgFg|-rTV0%9Sv`R|KhPw#dp&Na5@7k0~cy^bdCXsTgYEQj|bKULQ-A~`V!!cK(1d# z?u(F?KrM?kkg2axaC?3M9L~?RpoanjzzczBIZ}bfI4D2SwD<}f)TSH^&LQAt;JZNZ zC1k|kHAf;RlCPzb=BWE2c>tj-`8{Y4umGVufZU$zqiuYrISPHdTn|Z}m2vr8hZe#q zzK6KnlW=dA4$dCLVw&@eoJc=HIagyrqb-RCK%*TB=HCYn?rViRm#>Ad*TJ*2j6__C zYmw(87MIxb2<6(Z2%1~Fgv?$bN>au_zX=(>o6ZIYtn|R9ekdT&4GMFXyBQQ zt!Y&r`~u)qV1Mv)G#b5t4K-h(wWvJM==piQV@Sk852kSK+^_PSS^QOpN{&?-acgRw z61AhAg?^M0>rromgZfp=Aj!SWQB6B#^*wZ=u4Mzr^oHgyz~}z(Bgh*-9`D{pDB769 zIzrV$=ttn+0PG5UP@`G}I8l>YozfN>tGI_`M7=n3(NU0bb4r54{A*EqCOGI7xgEOE z+@(X!s~}U#g=wIH5_c%0a`B7M9Jl!iH0(f5Tyfnxi_qhWNrEGXAIlG?E1}cDVzHdO z`F|NpF~`m4GG7TvjID~X068hn9|%cC9yQ#Yr3f8^xJ;i2pMxZ$TgJ_2nza>2zG_By zC^!Nmse{O85so{QX_h&vb9KU48})S+nMZM4<`>ub>zu<#i?O&Q=Z8yp8YK4szc_{} zrt`!5wCYmLS62hUcS12P$XSqlT!%U|b6n``xQ^G7yvOU{0u4U5o4CKSIKm7%_q-!A9?t7e9tB0 z(p+Sx@j}P|#X1*_JIBdhXxm|}E^C07H?U*e{MmOJ0qi1$@hS8@<%)_0hS}f_- ztSRW*6)_V?y=xqN1l7ngElu7=R;n#gd}RsnQNhB92&cnZoYgS z<%89q^Mq@@)*u)sgGSv6#;ID~q22uAv|Dm~u~A(6uA(Ebk(PAU zwpeY6M-dl%2@a#+x@JD(9guA8!Zy%}-3-a0%yCOHr$9@J&5#cQ&j<3Z0(0Eh1o`Ba zfF8!VU$B~B`b5a9;1kL7Q(7m~-Cw!xP$zVc&Y?RMetIY$L(Z`Wu3pmlbns3W&HO3Q z0Gihq@Mh*HA=+dr|?Ew$N*&@gf>Eb&4#>d>~Qzw zP7l8cGDyXFFJdD&mqQQAR^F>=ej3Q{w5TXJxGq^AG>@&9p*+!Rsp5$7#gJOQI4Yjo z@Rb%rc@UZ})p4C&2sd3>hw`4uufNeDpU@f{`~aoY4V=yz1$HXLA@DQ7S%J`Tphtto zQ!~l^Hts=HP4gX`j(lRCskT8LeW`pOH2QD@e6ouB_fR!{F7&VL*nif7)%W7aX zwEtvZPhZCGWIsjrn^%ybVT$ZGFD9GK1Z*}hhRtSmaT(cc)*!3OHe{ixec;w6pE%cv zx@5oEMO;GGn*&87veq0Xt`c|Buf4dNtTnF_kI?TXv5ENnK%k>8TISODA14P=}7DOpg`i?C!h8CP+!S>>r} z;vKTqd_-(j^Nl;?MaBqYl=2(*8e>%{;{oFVRn~aecvzJqJIBY=*<|OqSXDNbnCU92 z?H1K2vRJIG?jc*nE7fFepGaSOAp1nMz*Et4p?ccW#M6Yn2Ki^tVzo?LCaRU%GEqHG zmWiLx7iK>7>{aW@Ch?%!zK>5wV=6PTML?R`WpEfnH#mup!pWr4BlYAOLl_Kn_rMM-`_nAe4nI!<7t-mUD_e* zYO~gN@cG zvWeSn-AmSRpIP^lSAwb517s8TrZtgT=|Z`c+CT}ai*u;H$J0T6@x(MbX45g3jsSQfV8)Po9@cldt7$ z@s=^&YC&FEW|AN1wbnZ8b8D|xdKLL&Ns^D1`DrzTOzq9>r`v%nPqx(}oxF6Ulb4Qk z^3st`UOLjrOGi3+=}6aMP3dSs2YKm8Codi89qAx19qHtyBb~f-q?4D9bn?=XPF_0F z$xBB%dFe;tLM-@7PbVTW(KC5JPI_lDqPe(I4TG7##j`nnPrlT7jz3Avi#}GP( z(=m#Uadb?iV=5gp>6l}sow4&gW9NCs&hw0&=NUWCGj^V5>^#rdd7iQJJY(m1#?JHq zvz_P9K6Kct&dDJA$8kx@0eWRv1P6js9E(dbrw8O2-Lc&A?oj5lq+7<#hrD=EYi5*g z%`W=L1TFL5fd8L8`=|_E3+h3QMilf2U_)SI;5ix{pA`6>9{c@KO%Pfac&Udhca8G+ zUL1b`Z!}^x)Ev)SpxJxKZphR?tX3L-!#B_ckm2vdmIGY}8p?nkqiH!!qtQ}x)MY@u z(;-zG;FTJU;h>WmIYos%7x^+cp97zR%tz44-vb;B4!*W0Q8LEsnqy%P$SHw*$W+j1 zlm%S^7}F@f1)|*8caJ!V(Av0)zai)Op!w^>6Tsnb@m&QPUk&B&h?0K|x>A*ZhK``Q z{P6`p`5E}^$;b~H{*1)enr44SPM(ol$F~t*1JH%OSl%4iRz0op9}t8@VmM~{{i}tMgu!{G6$R%K(sgJ7-4W2ac9X~ z&2jL1O&hqs9OQajk63(Pd)OL9Slaw5kbu7!W-b_hYISLc2h|6lk<<<33G$-ZklIfP>pL zZLB*cqcHj_+z}G3NUlaGk1zdoS_b=zsR4dv;JF&*eBd~6xFrWb^XPB{bV(paF7|ih zd;t~hL86_=5K_T?YA|BdkbGSz2bB*!9GU{ncVZgoq}HH7OYS9>X}){`h+N6dkTk$S z-@@K`+YY630sRiUa0nY-K2Yz#m!*`k7qB#yCu0)x*{c|alfYAW?MENL`Cw&Q1 z=UhMo>W;m4IlY95v=k6Mp3w{P_k+VN0X`iBYDDqZU*FO)jz6z?TGB`YxviqVQW%Nk z572`;mCH3PxlNV@y$GSGL5b9leg*ykjYq#n=uN;YH5#{RlnCYPRrSHy1{rQMd%)o~ zhFqzu5&9{ROS=qcl(YO1^6P;sz|RAX+$xsjwt*Zfw0U(NWTpWpAr@aX-yIi%!?jRH z(_B94CCGE@Dg?hZB>8@cgU*5s-={smX$HJOmpMPvQY9d>Qln7`$XAM9LNTKMmunH1 zuZXYoWyF0Kco#w^p~i8)JKs{qeB*@v&baQlW;-D66G-0)+nC` zJsVgLi2SP?L8CMb+^zqg{ig9<&tBEoZ<=g_@Kp4 z(^AL-dxDcQb*P*LnJ+Q0+Mx+m}V&A13Us{lJfGpHjGpW*PT{VR{C#ik4RANfJ9G}^pAfej=pMk@;MCHz zu}>rSZxVfo-069kVgcEgoH0hr^IDAkaj;*xqv!|t`|8K>D95GrF7#(0U3_EwIDX~O z&npYp#aA&4^1P;a8~l;b1OEl`dvJv2@ccxf@8Z!@LS9aW40Anz5=E5>1dY490e za?#8whq;7XhUpCOU7`OL4|hCoeDDN$aOdzKa*kD)vxi?592fqE|GS1rg|Cb070`hB zUU6SJJoi()Z}WzhEaI`QJK}bB@xRgfi^wzqhxgbWEGEOXb{@3xOyfq-jCGM`pj)%# zw1B^x?>wHVwnB=Gw<5R0ke_0u^l$O0hx+|>&wBD~oh!GDOO!4rDxy5r2UjXvj2RkhepE-`d<<9>8By(62JLC@kIY?GPtbw4103C0DpqcL=B>$}WMS7S{ zNS*JgV6o8R{Oeru9O~w<1~^~I03DBo=tT{sH;b1pTh2^*xcLj zv*tg@`{AX?RRMBa9B*FA-(fZKby$=99M-k!*%#PV?SP$W zhwO+Qwc~cu&b1rZ&FvO;OS`q*hAiZ+vahkPv%A>c?MLl7_7nD#_Impb`>*y#WS8@a zeaQa7K5YMJAF+@61=;01=AYw#+&|a5ttUIW z&%_%lN_KRc$c`=rJGzU=g6Bs>Z$K(pazpY-fDFl+2g&UhLJtqN3_2{o&wb^ z-T~ES?Hy3<)!qS(g!T?-bn%ABw_iV4>;1_WAZxw$u-3aC)_Q$mtv3MHdIMptHwe~x z!(gp9Nn7iY&E6+z=a}DU&v~98dCuGKxk!7t^L(f+_dMIR<(_Asw$1Z=tv%Iw4r{AC z&k2g9+lY!c4DM4Pn%~st#+$|5f=>Ns4Bm73Yd7B1raLd1RZ}Kr|yu&358iYBSwMFENNLENvmLY~7%Ww(O*M zrGq6;B8z-=UPShtmy+FQYqHktOjeq=QY*W|k+Udfd2zl7lh3?r&vPTm#@JPUJ5BADvAq5Ciw=;mio?A@iH z`%T6G;85TQ;OH*BZs}=^2TlS`1I`A{1ug(C?%Jo*4aRcdR^Yc9%`(6Qum!MylImoR z0Zs%?0~Qwa>fh6x2V4kT0$d4P16&K-K!SbD&A@HI9l%|{J-~gy1Gmu0Jgm{9fIeVJ zU^!q#V3k|?bm`>@0;9kbuzGJDw=OUr*bLYT*cR9x*tsv&i>Di~7jOV@7;q$T3~)l< z?!CHtrT}LE3xV^13xP|3EBp3MBt2_@Yk?bpn}OSaJAk_gQ=UD*{lG&SEd{iJWq=h4 zbFHet2rvb#32Xpt25e23XI%sA2Ak@!~Hs@QxD`37WE-M>VItN4@*!FQIdL;(xl;kF;r3Cb^+!6muCsCr2bf!%*kL` zNS+Ly4at+i^C4LrwGFwpKK^aIkYp6e@>$@_|Bi=cpz&m|DkOg!6^#V}nG=7d0BcnitPS3 zke}`CWVyeWZ2S*PQm`gCnw1nat>WHUAJuK zoO?LuUVK(f>8=&Rqt?>QaX1tr!|c;U4MssA4}mF;wp{-*|4P&o=X=VUubHoyubOX}o6NQ5 zM)P%Zo%t7Yz4@Y?BOjM@5J zol%AkUd;&F@uJxdrAc2;GG8<|(JJ@!#*bs8T3gbj^`DMDs&SpapL={o`_+|b2X~M8 zg)Eehng1}qGru&yGWVHZo1e?ca*BLNPL&VKX|zh1DQC&q@=vIZ4y?m~`$$ZS5V?Hi>nuSH?(u006j~+pD=*8yq<_qR( z^I3DLxx`#%t}s`c&zZ~3Rpwmt33DFJweO-i_+ax%bH4eMxxjpy=DUA37n#pc9osZN z?n;AtH%aR`nj;qoljh02X_9@noFpuoAHN{V>-n+Bpc!&Gk*R0NB4|EjK1#dDibnsS z`6yWnO*5yPGt5V1f%))BuQg_xv&`9)8s_Ib2Pcgd<){bcs6h6lT=bSBg%{~pLi&}> zLUSI?@li_VqvkU|rA$}#aFLSwY1QFc`N*-f>d|xaXXO&PR4$Xx$>nl|Tq&QItLS+> z@gSj15vngL z-JeQ?$`b1mD&4}LTZ698n@~!(O8Vv*mGwAblU!+026a-F^8U1_O!fN=ts<3JCpy{B z*~{gAdxgDHeq%pxud-jTSKBYzYwVZomp$j$ugGuhSLJv1YxY`szu>Tt{DqAEzuA1p+#;rvj_vxOJGm3hH1)1v8ugWWKTv-WuPn{w z&!$z{x%8BxvZz8kPgQ9rC`j!xi=GZ-)3cBqdUlbdX9~6G`NehggrGCc3%b$$)svnR z^r87&f0|F}(RZ}CmsVC|#W<`PPjc<*Zs%xOuJtrlm%61brRQIIT}iD9YYjaL(0A+z z1?7`Q6|1Fnqt(^A$?9(Pux_>rte(~^YpJ!&T5hedR$9+{6W+$&Cf-ZE&AgX+n|r5w zAM?)fKJK0CeS%_3>+_$r(%0~Q)|&NOTCLZux2#Rp+txeQ7VBMWtMy*dbkeG))k>?K zRwwO}w0ddv(;B2T)Tw!=QH$CnZlrGzp6J)xD*BsA-zqHnTT5RqEdJYO75#lq-!?q% zkG^&I%U?_S_Tevn;;rNT((;S`jOlbeWvQ%M3So7zZlUtL)fyzysRm|=v#ll8^P)VJ z)a#(=KwL+4mJl6KP9421y)8vIlva0dTW?#@!&~4j5I1`#dMAnks>vCm zC(5t4ccFKo7=%(BOr_Xd3`u)0?LBdye(Fjy`=4f2o1B)fOYwjCdj6AbQSTItph$KB_H?W*N5MxSfpTjORNC%58n3uctR*6kXqCgk9*34@KAZ z0^v>cW{DErJR1maruSr&80vY8@OCwmR@qUr^;q;|t_-!G%Jgh5LM^D8tWD2d zn$j$_4LxN+D-w56X$_@v+<{oP5}h4u}pp42>DL%wyWo7bp}F7i>0Qmw2etnPb}u!iqt!kWG{ zgtdGx5!Uv-LRiQ5Dq(%!TEYgt*9jZ?{z91VTTj@;r|Y08-Lbm$45f2p+CMHybM6$q zk7UptUXuFhTnfFO-m;?BL+?#den`%wr(Qo%Hxi}ywoTgS{E3$&4V`J-py;irb7==} zvv^;8BtA9U8`Jf?#NKMZWpA?Iwl~}F*jwy(eHZ#Nd{uo_d?8=hmqqU=Ns4tHeKTKw zJAJnrN%NiQ-WfFC`FURNo#%a$-d?NdJI`0icfPN(?*dZAO}PmRJ9 zW>5k%C_O{6&v%F`JbjYBcJsz_pk7;^gr)kWmUCuthkl5a;=N3i>(?~Evt@oiB;eF!aKv)m}=~D z`+U2KonZ&0=b`86+eYxGrzS3@IUu$=;Z?t>Zz3f}<{`L_2c6+#emp#h9 z*B)ozZ%?!*+Yj3_>{)i9{kT2f-f92c-fe&3pWvV9f7CzQKg&PU|Hv=i+7zDT_7;I>b+?Dma4W)noC;wVi z0|o{*2nKfO0p^+8%Ep?xq`Zcf6b$T05DW~a5DW~X)!-WopsEH3Hw^5zR_J(>U&Z!z zH__a|)ENf$I~fcNHZKeeej%kDJ-zum_ZKj*N19L{M`+m*!mE30D058+7dXTd2?TKNT$Nx87Dz%^e1gTLuQ6YT}zhr;d%KsRax?Eg0&<_p2aN z@CVpHMW}WPZPWfL7~gPhY#iLZVBqQSU|tqfc`^g3dhTH+_CqWtvjBzmaa)yELS%7Zq#jk>%3cKTI>R<`gpxb(`2LnUM zMPW#o>g?p^4g)_5JvQDg7#N$Az3^*9XID#S=y?`^j?0IZCMOhIA+M~_Y-BGDt(Gr3 zLYBob-1S;yYi@AZni3LL*creVcnNy4U9d7TvRRkU5b$a~zRwS$rv6A>@{#(&fYEjz zi_zibH0+e}t0}%$b&ZBkZPJ|q0h@xmLc6ydRo}C}EZSGKt?c@*c+%NoBT~ta`0T1u4ZPH0vy+jO2#N>Dl zUCz?EFE-9@N(tjpQ;kH}JJvT`9ulJm$Sb1s^6g zUtpsX_+f&)T&Q8s&tcbvuw(knO|Gf!0yxG3sS%<)JenVO@U2w(&i=5T$L?^M>*-xO zqDt7YdikSLcAeP$$I;1L!S^G_y331ZhhwgaWeA1uw^t|CAFVa|XW|>(?_29Sc7t-N zF7HdNU8+8{A^!ZZ=yWV9`)oACiPFzxaJEMXgYb${!8UV>!E$IX*nB7UhtRvO>y8*o z&Vb`kLtIkT1>T!jCUFt)$-1Bh=Bv-XTR-L5phV*ndEn9Hz&o)|qKgqvWmag}i9&T} zqb}8sJI%#OR(t_=7Zu)hb0P(S5l;e@(}6!VrvUnpT(M-p?$W5oIDu&6!A-=@3eVLf zp`(vvrsqg2|BgdA+}abzJAW?FQ>_uJSE>EAu#+<@_&Pal#Vhfot=`9aRH;+#4&Pj%8UQPxvcQa<=7JT)trXjmu$Pb%*eH`(E3m24nM0wvXDFy zywP83JJ(&3Ac7AueU27pL4xhuY10%=IrJqb@u$v^Q!EiQ zjditj`tiP3glaDFXV)%X@2hh06qnE_#zTuu2t?59)``=5+;XLC3O)M9aWpaJ0`z%jobwx_1g26wNpONN>B64N9V zd-SfwMHbnahe0Kn{=I@|@ehOtu4kAe`d zZNsjJgb;^iQ*&&x_p3{X+h-w{SS~p$lFcSKYm7($LxVi|rK)(KQ zfy!{+Y67tc4wG!~x9g%V3j>Y-{s209QvS&D7~^Qt7}A?X`oUD$elop6G=h2NiB8Sd$S4710zm|`A<`Bzh7bV>@qN31_53o}nZ99V}h?0Ly4jcC!$ zH2D7QV6Z`Tr>(#-Yb=eOB@^y=q{Ji#PjdnMiXR)c$$vi~YK5&u)rJ^f>$ z4Zc$<(gpyHT5Nhk;4vkgAeSzGvre}0nyft+m0(iQ9ZSu%BQi~LGNnQ#h;-XNKY|r| z+M?7;^%JnjHQ38Iz;=)N0?kvgW!-3>8!d?ijm9#MO4bLhV7ojV$uf1_)O(myOU&9! zh8+Oj_72gRlS5AlQ;Q$mRGYTovj=qYde&PoNH=e^nX%q>Z@IkqkR|V?5^5oPLdIy&_-F2?non}jKC#lb1jGNH^m3=-$ctvU% z%#(JtO}vwge-S)t&1SDVGF`E4J699#QDI7MuRB2U2SsEJSC9B+jboPAX z+X!5x%{DMf(bIOl>?_z#M91M1B(=kBo3zQ5rqVBorA3ye@&I#nz_()MZfd;DTg?Xl zN@E27$Y32#r(_EypwdLgXISXAgJR~?*6)gKf!a`HQ)HZRlNdC-tS;AwOk>VGLG%We zg|#wxZi3(&_QTKGH|`16vhrYb$24}A2v)4@j{x^z;XD@i+$fg%RWcN&z3<-vq5wZIP5t_6KBW({S7&E-*Ihazen^7Tnk`uAN`x$4P%Ya)} zrwjGKOEQKL5w0*n(ZPAlt{zSh$RC~pLHnih?lqCf*mzD5gDK+Z@0-`xw$X5F6AWW< z)bSenaks*aXhIW;*5@2&ZE1q-)Sum7YYQ>5kf(q!h82-4i$ZFrB=z<`RzT%5zU&1l zU73PMcGfNjMa$TAk>TbSBL%m~#L_14G0C%P$$~1ogRS{Fh&y<^5v(6ZHVK0cr)~B2 z>nqf%aBmP8)pWYQi&$eDbAWd9Q-|u*M#8A<=*Az2#MbZZ1uDbF*HLwmjJtiVQTRIN zs}o)LB}Fa!l#{}^DwN&=7SMf7I@}L|(V|_O?gGeGgF$}W-xM2l!Z!shyqDOf@UIAn zANW{9Wvk(Tb{Z`p-L1org-TmId=1i${jo-1gV`vBwD3iv)tf%zT-x%NHi*b^`&|DMYqoCY% z!fX6@-R!?UB*#(6gEI_9H*DJx= z`!X#*2zet9mM2thg6M;U1{iK4b&Bkbgpxv#jKX^s%N$qy`uFAQBw&Kdkh$8|w$B2C z57(`1P=CNIGyPcC-h&}u=j%L7QPJ#XcV=)8IbI*$)Ao^2-9u>0qg*Q+hF)@ACPXMb zFemD#>43udTArVBcl=t#Xe}(Iy_u@=m z!Q9ZFnB6t+bX1PckyDgbl&Y@7Q^Z!}z_6QYn1u``ryeO?_~>mSNt zR$rf@Bm5UYLl}R}H|#b{zks&d=~<1?9`U&vJs_W3J#ByIv-^d1vp36fE68z0k>9B( zvvKOH{{KI+7K%la`t#jR6j_rHGsa+U0ZgwiW)ZHP-|-m0o#+%LFdWx;IAx)dr38o? zcrwyxz3<`ZBO?$eut>V_&s$50c_IiVaByC{Fg%;N^g8fqMc(V&AnnAjebN3$*TTa9 zgA|Sdvd+*s;{ME#SD7cQRt<24KDP|Jdt1rbTbSKAG&5o_=*?}4P2wP+QA0XprY{*n zFV?&>?f$hGT_a2i$vuan=mYzWoZL-1_7o9S1a{meHVOG_{&Oa;nhR_lz($+RRB$C^ zZ1*ELF6R(S=NiIC^3sY2NR0lNNqm{W6rST+mPa_SLdG%XENc<2fsVV4)ka_tMb6m z<@%z^?)8baNHX#Gg!L%9zgP?8=4fKKPC9oS!(UAJcSECY?zg>rUH5nPhyD*RLT5`| z{G=%Ns+Kv`=i#2~_Qp?WI!i&^3H^kP{pZD)&x0SugCF06pJ`$4_$J2rqpY~GvbZs; z<4p@oW7_w}?b(4Lhcs)>?185cy=t-Vy15P&<9u`0q=$8}my7+kZ_WL`)QEj&AFmfI zD6iP3>r}#cHyP=&ST~#?*ZVx#iX=_#-FQ2+7gS0Y>RzWE@ zDJVdvXjN<9Q|s37@92QmzKfQRK`ez1{)qyEe`)v}3pn{%`0=@Qk71_@>DRP^8yp^E z$2}TPl3O_5c;T-!^kVfVRO|@7mL4-+8MwUopDwOn#u-FYXcu{E?Hg+O=zwyx3RGwJ z)Oc?-K#!V5;dqqA3?f@rjB})uZ%iuCADTpS%0-t?Zu~9XfWYqOaI>*UU^(n5Y1Ihdo0n}6?Y${sX1~$9FCwzB z=Wa#7!E$4V5>+~b$*=fsJQvsDD-DCvaF*FfdIQ;QW@a7aSzl0r zR3M1v92gtRlHT;5#5=4<=|KTWTc!Zt{%NSW5zG4WF8`4$*(!ci&*6s&m!Il5_a3B zFu38ft4uCGv8HSZ^*>4i|2#K$wcztD5nhm9?hz~H_bn7&q`9f3XfCvuo4J_xt!?bDG=6Vgo*q8BnR zDR8WYw71cSPFX{KknevNo@(?gbm}1g;U7I`HEFDx*Aam2FFKCmPiScpR$D?{s+p*1 zn({7B!rTTyr-yffL}(C?Ssn#MBfCUZ9H}xv+}xQxf!{oY{5v`xA4(znzJoo4QGX)yjW0kpt-I-72FJ&-jB-TD)n-xzWIWZ~TlR z?%CErco$hjw}l>-nh6#HqMAv4UJCnpYnB;U!dllj_F=yxqVst=+LF=?nP704U_4Ne z11KoZWzD<`DM2`os`gpk*^R#TDb13kdlmJDols4-SpIY3s{H5Qks?E*ygw7a{O5=& zlV^VDq{L3RGvn`Hx=M{^o?oQjR7)I3c`F^qduMJ+#rcFErLGPfCua6!xV|6QcST>U zrJozU;(lTL&HS^g;@gZYtiuE+^@iQVm*N^t8l_96n#Y>Vp3ER&&~Ucmwn~v}vHE{1 z+b!u&QC$7Ez;w#7mH3;KFc{%m&*uqPAt{DEG{d0mpc)ovNcMM;>5KM$UlSO#2ucf- zS)nkyY^es7yf?+KKWmiCF=-y+m3jO{Mi!ogrW$?+zRpB(ooWJzw$5ZK5<-8TW7oM3 zTk5cE)u02n;mwg#;A#NhBt1ot#LG{7DB3GwI5Z`B;nyg^d1{+?9xq(jU=btV6Gesz zG~GCn)deqA{yF5#aYNt<*_nWQBLzn*m1KbXZn1m|SCIuw;y%!py6G|TM&xN59x3*_q@WEwE3QpXdB99eAw@RDmGDQ`Wt)N0EW1 zQ@B>Ns!nmYyPNyBu&oIHAYe2>-ve#9#Tj=BUE@H8Yl1iDtJTK9nzAWQUiaj0gHKFZ z-iG9E30eL%M0cu2eb+;=fO=;lP8Jm6{2ZePTL5L?1$tZ$vO+|%NjTbIs73<9V#2c~ zli+D*#Pc=QE$LuC4W>{xlQ8OPNv;$L;w&T)?HXypHCZ68!5Si_W)R{1Yh*3gM0Ipt zZY^XfwonNK^Z=xnm-tw8gc{q<#9F~Q%iuOSo)dm^){Ok3vfPS6%#wx_!&Li1Jc&biQ;UQa%68`{x zb}+0(pQdVkciK%S|M~)AD~UJenBsW!^YpGsm^o{%SNh4u%_L2<7tKH&^@U~H{6Y#AdJ<=XV44J3rT>Zu}m&}s*MxtKUtslQ{f z4~X*^vv!CFl7d5Um%2!fKO%cphX^ZdWB4s~U5$PliXr7P7Y4L<#9FcI27DK=I<)+9myu@?ewbm(VPzA4v{Dr*AOi=uM+Io6o7O%WF#_BHEr3x+%DV4# zZ@4qteDL;^SRpNR5SSaN87vZe&mPfRRevbob@q4=U5q)^YKao=K6(9f2k03cu%4)+ zh${3F^{S`kuhs0e+ju3J=mj6z%{;==aYqq*|j^!Q2V_^H7Mo2Qnbg@!yTdvQT8 zt)rUVUN>!AH|=t?GF{KVuUXl`>WaIrMut0c5upS^3N_sVW4(g-5{czf2~V})<9xVf z+0b0NZa~y28FL>|S+DN#9vMa(tY^-s4|}J-2DKW0T@E_+VFq55m)o%y4#pi0h7iR( zS+F_A%qkPzEoM!-ZN*7i#fc)>8gcC%vF0fq%5~iAP3&7@hNOcZ{M@=3y4s&K10Cc7 ztuuu+drqV~=%$;bV}|;zOeRsLvOTQi-1ZeRs-VHfq72Z?3K4p*`+KmE$6rJl`N@f zECAiMatpZL5f1_d7M#P#a)P#A@I~GWhnhkBtt}{A-<)E8Wht*zXw_^j_G+Py8<#7k#&Sl)@}OvYBUEAdFZiW(N(5VEZHLOFSzQq|{S#>Xxq zBl7%LLPiS>H@>rg)37jdKtOElDmRq)l$90d%#3UCsgg75s<+LobkB5;^_bfoTN>RH z7!^*DpPN^#zy;Y@$lPq(a9LV=)$^PSRo)9uKHZ9l?U-K~&m2A3q)gY=OJ+$ea7V4K zH=(3>9YL2}S&c<7fHk~#6kFOXQ zAYUz^C{sm3FfIhNKc;4!O+n@>#j%I}ur>um->7M~lNLN+;m>mUBc|vgB0|ON6d=OH zHKA61&(sNI(V{jg4JYaU^KFk1$fTIAJc;$J=Hp+o6v}9Luk;=Sv@cM!Yx-7u+mktK zrTPQQgY}N;LjHA=dSV^_udxj$0Y#7tCk1_{OgcPA*GRPj;=W7ak@ zK;Ex#K9@_7B^2K**p=qGF)4TKf|(U67Ea82fo{%eeTd( z5bIUXwL*laQ^!(=G5xRJXtG z@wB-a{nTBa-1caQ%AXWgq-EC z-&QA_2^l9puzvSAo$*7!O>-;G+GXeMm~yG-&O~)SM9rAyq6`Z zKbcnc@DbW*C0kwQ;1PxOJ5@l7{7_T>mciyJ>(K70a)c|HoMR;&PNpoG&hdC)V>J96 zAox<*gdjOXmegvJo;&)>EvxQk=pYG0bw6_8n@#vRfnZ)0lUQ8cKhu5(-Cg)O!C(&+ zlWg4oMuqKrvK!XNzByZqQhV}+3HwF~`v(6)rJY}*1GVQIy{okYxbCc%Dp-IPD*}Ea zL4ph?QX0-h;ROcr--%KJh|N1Kk1rd3WOTi-I;91q_oICRgiu{l2l89542qqby4>ZC zDX))~3)FE~W9*Eotz&G*1N3pi`sp8VN6^u)hWrB$VD!1A3KT9?*DCATMkC1wyHlddJ8o5+aF}LeaOr%(d|)F_3~loATs(*Hlp5&!=om z{_CCyHJRza+vz}eBm01&qb0g1v#j zyh_Hrs_avb?B0qwaV92#aQ{B8aXMFM#iBkp=4bN07wN|*3rKFvWAbDmx7ImR*_Otw z;ndkrTEe8EFbh|zMO}%xmG?Q{f6q3$9XdsmG0g`fxVC!IPfBIxy$2$j!tM5U7@?1sya|cGZ{(IVl;n2VwhsL2xz?}r9k>Tgwe zA_TL{F>W&|737Of+P)ghldVWQ7It_}tqSj-WJ9i0ZhaXZ+L9kvUIw20pU8O0mgu7G z$rP(hMtSmn_(mb~>*!v%k0=+W&^b=DMWQaN=n>NUBP8I$v+Mn*2h(DbsFT8KxPnDg zWlLFzXB;s<(4~N2kmM(fEaXY$Hjv?=Bl&Ul<(<+$M=XGAt{nS`JpCz z8!fTYeD|6UG`xS4c$F&)=fQMGdNKfsCRb^sfC9OY_7dbYw)N76YM&M z+c)+%WUhTfpG>Emhqm~mkE)-}4%q`Mb#(5h73Yr5RUtaNIFI^TT31*PS4P0o1ahzE zAo?sqLgVijYk2r;ePQeY1j>Q_6`{BIVa1o7G|d}g&$@GePKaZhu2)EnogXyhS|d@9 zA9n%d&W}<~iz^^HqwhsFHyC&VQj8w7Sho2mv#bfjty6l4cZq!UE#z`WI-)KH%Cuwy zinlgml(SrNgy(a;>Cf+^SA51Rcl0vC8C^6num`qG6X_$OlFv&96SNccJQcE%SY%VP zSZXbG5@}ZPnmp8X(+6w?wX+gWqD2ICvp^3r?e$S`i~4xOcfEp3gUsTDvga74f5@xZ}BlwCCb?XpSQBiu6`Wd~w{lG0W;t z37_d-37=uxN#ntu$-}LsJ&r>anX0sTnLs)ud8Z1c=oR?Po0Z1uhGQ9MmgekNmZlx+ zBGrKOf^Q(q)!}Wh0lvPWCpF)Ts>siY5u4veJU7EfOkHT!)Y1{Bw?BcQfis3`XR@DY z$fmLvidEM%CuvSFG+i+69k+SGNocfo=uNf?iimCO`r*uhmV(eP$(cSNEr1bbL4g^P z-;6tKv#6gja3-q@cQR|qq;xpOd~zWG8W=eMrfiEmemo8>ZK?mT2Y4k~G%|zga{ui%aOCJaEQ0)C>P3ySr#0#5W#&=jM`6huIT z3ip-jFyAL)ksPLEW!0ffp3zkES8i*1UKlwM&|Ju92;n-N7qL;W&N{Cb`AQJ~ zdKD)nL8t!d@7$8En2C>kYQ{?P#Ve&EJ0D{MTgB}&?hLy(>`BU$k@~MF&#!5`$Lgh) z%-=9wyrLXg|D?J_HO=fj3@Kf*yj89Td@fZ2Koe`0#?yqZF}B%R7Pmz`qwHL0EhL%-+2{E6W?sBZ?NJ$9H%Ttp{pi@N8zH?gg?6i1YnTXvB<({ zoblo$Nys8_6EKRmO_Q06Gk9)X?zO$c1fo$bHefQkmETz>3}w`kLGzQ({34&FL>l-Y zqVjInv-ZPcY{KZfzz}9U;bs`i?0lEu8o*%$W7FmU$A$!Tvy29``;to^#Gy41ZW)lG>fSePhZN3@KPaMy?bo_`PalhoFP zzpbDmwIA#xnf9+;;`!Sw?cdI1l1)+mm@nc}1k0O}C`Sww4nQvuSk-Q{bY#^oRxc8( z5wqIL^a>XGL*P*Je@2A}^>(Qb4J@)pAio#>U{H2OoMKl5flj&n;L6uDuF=F8SUQ3{ zPU$NClwLK(eH-qyrhkp`rSqy9|4SEUwP9-dyUy`b)O!@+b^Zl}f4<7cHsj?N{3M5R zSyj7Z!2^dx0rm@7p?K9qJ-ymgWsRYFEIk719=p=ds|kj)7HPRh=NdXJgP*V#HDB>P zEbs0O#l1N&^?n#1(U=F8*vrl|P#?U(_V^s$tSw{6l3$6hHgESga^zoSs5kGQy`i$S zAq%yB02h1Ozz_jxh8c~@^VGxW;8({tQHUiqG%)2=Fu-%}!fm;q&VYud3+RskjElf(GNSfyBm4ZTG$#qT3_a z!z1gf8$`;K{CEdXU+!emX^s0-YxQc}?|Z{@?}Ks|PH{;C%z9K+))|UVlhN*JpNYF{ zGVtBgl8O)YtJa<+zrCkz$;q{tzxc&6@qMtxGf2;po1QvVcQzQ@&i)wv_Bsk(yk;Fb z4!YGpZ}RQ+OWpwW*j&v`hS|TP8=b0T*HO@2tubKS_Xg(*oZ=z{{Cnb4-rwx#AMX8s z6TxS=`~e&Ns!P{Vq`wZ@@xC`U_n(VqeX14LQTXCD8w}d_y}(@EGhCK{|50S>Q&l`m zR=+RA6aNn>^eX^DI;3AXcFNlgRh#*3iDWe7j($_JvP{yl9x5@nm~pbuKwR9S&#bss zpv!O%MH7-j%w`CQOG3Uoi&NxYZyW)}l`KNyz(9~kb!|soeo}i$(>{$Zm0X54kVUy% zhOB(AfDnlCbnFiYD7B#99^DcFFqzP6TdDUeSAf6iS#6r|?b6iM07#MQYPfNQ0Zi8P zIX3=3R=;+5MZ`Fu1 ztpgdT#opkw2a@V=^oJ>a)THRt;&ukPL!aaGx&V@&fq@yvz0#f=T`$jFlKc#4a)~K= zd8aaphFRz3ol`rzJ;Nd%wi3O zSU}=mrdDK~G0)OnU;r2<{jj3~LBvR$n=t>ncq1Uu?iJ^lpWxUHM9s>}6nLdwV(}h$ z&g=REX@*kjY?e_hboi3olceRx=FyjU4Ho|yMaq`rkfUZyIU|l)<7Xnpfk}vAEoz?6 zJtFp)4czgq_n1XW^vtg+CJlA>*(=-$wVP2{mSuyEyA?f6i(0Cu4B_|wB8P$gDnq^D z{^SjnsU@J^?;ML;1QZ^Yh>khMHm`Tt&1qJ@!{0j5#ivqfmgXzsYn7F#%YvB8G}VfL z%vw;1B-SS{j|6?z2K*u1jz_a#-I3%{N}BgKaLu4XJ4)mVjQ#}lp>|Rwa?swg$=9*J z-G2}L=h8xytr-jUvW!gQnu}Hbe(&be_4obAj{OyF{1xx*O%H@~xSSp8Zb@oCEY-R- zTLS7IUE{3Ri+Zi2(P?^7_s?Vkh!QE~dIxaN&enB?km_hina9`c9sRya%}C2UyigO5 zEY>^aLCt}Nret0pXlh$(u^!lD0#PSdr67%157hY`VS7$gxB8I**ng7#ruR4HpoaE7 z68v%`#C~AA&IyY&>bzpT&OunMTk|FG8-IVIcPfh7Zr$~V2-x(s@*9si$v6`Qv|IOI zjb7&vul`%&&ePykw=mfxUu_Tah7$VY!g{3KwR&c>Fj*W+uk`g)L*S9K3@RS|8683x zxr`~2S~^mg_v?QhjB7WPwEc#F9C~MTEbSJ3X%*K=`2V`7DnuhD+2oj_ALh#Px{`cb zJKum|_);AtT{0i<(^k?5945=>Zh2kv48d2e8W%xWts3(e;3DXJG~qz`ERi>+P@G>r z6Rp@*G83hk4F#cxlIf^Gi#2lJGYtNf8p0FjO>)Q9o>))tSzMdffKkehjI9>q*Qlwi ze+;oxON?LtAK)`ikyd`aVv2Uu6tmhJI>mAsTM#2uoXqa>t;So4(9}g7S$}qo1zi@m zA=Ek=KXuReH9qY|?E@vpMF9_o;zd3WrQ${2zXSPy4EsIy--4=0SuT>6Rs&{j$1PlY zP`=>uM}*k@V=oE^kX*B2dAm;Gik8|*S@(%Y?DLMX!VZ>%kqk@hS4}1M6mw;yMn~A> z#17&Q7LnL2#5L*ImvOUwkr^@R6gOLCk0>oH>RkRY>O+hex4Bpks*#TjGEcbqPso!` zp?iT+5OJ!1PZs%vY=jdL&p7JED3-t1CIIk^G~N1`ywoCbd^049RQDt_1$#FL5cl4p z9yi!Zk0x`AST)>ZZ&WA$qE6mkAmk_SAwZ^A{Pw|L(sf*R>}E(%TyU3q*I+Bl2;E>S zF`CRZQJUR#P!^+Ukcv=ni#oz!D*-Ap-5v^GCCc}h!Y^U|&o2~Ud*OZRa`!@W5dSra z<$PwUmy%UCG|tt&4F& zU1Fq~Rm*fnhwztE;fTx=L8Ry@1+d~Ir~esD)HMsAvCCiSLA(|jwXXCqoTovDyW(&K>tq@O(H#+WM)Ha1k-8X#5KDUQKb<=$YI6Nvya>t?=@LlCd1k z5|mfLouU<9JN#Okc=+EH;ViX2R-mM41=lja)j4F0tje!zb7QkuchOM`VCVMRp~N<WZvco;CN(ow3;gC zfs`B@s&Hc1buLDHd)lNY_pOhd_{g61VH?sVzN1BaD-x*SFqFk=O#!3QZl{d6*MZnY zKU_MyGh2l-dOq^I*v1!*TFg0du4+7M<2dL81#JfE6Y(DvPmjruM$>`&qIq|^RqLE^ z#}UxwjeFFQxzX26|2iCsyO+YS<98Opfi+>$P}bC84VZ(J5S;&Ykx=;9Y{2jc98K<7 zv&sH$sV}Z&!R3DzpLx2hv12Ut1-A$|6CxdNbQ+R@qyJUW#>*J&cK(qENwHkY_W1OU zbJy!FdWWNKYZn`I9f%2QQjw7kuDd|tlMC6y#smBKLL#s9`Gqt#Gv?HmdW@gE&#rYS2ge9*A=RXHEQ_8~T6*-R|s#;6b%GS=>!>Zk?py@2+MjSzNs&7LyN4ei;)IOXV8xXKzS z%d|^Pl7O#r^O^`MTG1L>8)8LZl@}G1LUm7h@9rzobMY_g%mTDW$ALF`T;eP{)_wn$ zNcm&tV>U^>M#ww62^I8jrINzDHpPfP_WVb@v>VvUzeQ{P=qZac(~_?#8_}J`uCP(n zhP=~;u-CRHRaDU)vJBlS{xdpN7|0I!yQc$DBYT5JrICz_Q7W%!zq3TfWDoA~_Nr)( z;bMz7bSr&6RcE-LL4GPy^~Roe@i3+=11Yq|+=0En^JlSkz=OhgV+@RqLT%216JasWd?f12=kNrqt z#6JTccpF@bRQgcpeC^Y6bJ4QjO7>V>SM7);K<~ws;fUTNrx}M_jj_d;#K}y=8Xx8= z4$%RdWVq58-$drGv^5bg_v}%~c>pMv!3aNfB7Jm_#%9M`m->$&&of*;vb>%DYuaMTi%^uYd^q`Q&lIG| zh}ai7H2WRwkMu4zE1>A_hiyOe!;BBv3l9sF;#z;YW~u$;9u8;*qr1D161{rDo8*uA zG~gg!KyF&^w72qZqU}fI(MZEn^t@GfRhKemhf=A|doph_kAstt4^7F>@`HT5;;KI1 zx2CVu!;keK)K>+{m9acd8SZ=>Bh%cM0NsuiZPf0@5PVY58eFfmQ?tMTj!Gs9GIAry z?l2bgH1Hs4?R*?2)658Ac6)7!Q8p?G5-j0{iuaW5_PRmLsIM(y%UC5q2qm>JS_B`5 z;WYJ5J0A7OmUG|avprn!+U~u4x{GXDU+p>}32-PTV#D7=rV#1ET?8CdU1ZB>$WNv` zdP<^BreMChf#{%5CM&jTP4XC=ag;TnH5{A_hrYHKwEMctoMAwhIr$Fot< zshr3hFp#-n**OtuZm#EOBlU$RjO8P-%0iYoDzl2xPC}41ofOWZJDow_h5p&)tTXy} z%dZ8PAIj_VE^bldt0G9(>pQubuJn`@* zbbYeG%7BZ&05&)OPC$+@bd53)txw3(v_dI-<2a4Zg`->P^us8ie@eq4m3`C6y#V@_ zmw^C-bU*4^h$69i{yO3wt3Ccf#8lcQmRG{Sb@(}z-{|J->1S3QU5+9QkAb0NdK#W^ z`U$*%d}jT#m!vCd%Bd-x-g-7>hOa8hqj-61KGDz3Xu=wu4v8cie|Yr)(z{#G0Vg8= z#43-po>nJAeoV;Gn3oTy387`Sv$fG~q`VYyw9(K}n28_~npuoI9X(wY_(4yY4_TCP zM#Cm~WpP_~@Jw&klxxVtsXFPZ7I;$aL*A2{8u03idC@VKSXq_2;RmjQ$^@;ZR4vGmIxs^y0YLj#B!Kn$;sRK-F|-J~`gQLJp0jU0~CHQ~>>J zj@2h|&JoJNq~yu(F0HONG=QakG#0a4;wNGvN`mN&+5_s90anN+k0eZ_%g?5!L!Y>8>r~|Hcag=34G)(0apJ^&)VQUGpbIdKt zE8fBaCZ6cxQMA7#fY`Jl^9vJUHUuugW|g|V_~UMUu9aRnEX_o}Z+=x4?i@6!+-AHq zLd0iqG+LbMOf-wK0Bv(XfkSyCNp6IWbgq5VJ!>sBh1_jIU7)F~rgq^=3)y$o)bF&n z(!t@gUcm}%R`pl~Z%xIRX&kyYT~7s2DH?gtDu~p|Y&gf7orRebnL0#plP0K&$ji5b$bhrieCKpv)Y4wxk-V zxAm}WP2D&`QrXUOi)R=no63dyszbigXl!=850duI%+!=XKO-zmPXO$B>GZhcyjA7Q zT|iT@7hfTdP=^8>8{N~>z9a$&4aT&N+VBEMhGOIr?MKpQz2%r#wz;f+3fb4CWr&W9G7pKy>iLgVOhJcPZCT0TZ>>>T0a6yx z7?9is+laST%oQnJ=&%nZjzzz+GHmh;IDatTG9dsM$zV9XK;lmdDOL`c%<^cHz-U*( z5Mxtb`s#PQ^W4)dM))Q{*o(>)>BJ4Gr)hZ840Ze)BlEUrKCrSy?if#UVyjBCk~ROL zpi99ax;Vl%2$4jJrnZRd_PQXcNiX*yQE?|P$?#)RSc!!g^CF>UEk}uk^)H^mp+4lN z$!#n!{OfH)=q=~h()O^+4&64t(Vqs_v#XV^nEo?jw@FRP6qy zF!RMHP4|ki$J`x*C;6U3pC|9ugO(`#u?7TtH*t^DRfb0Q4BEd80w!<#V(m5Xr8Q;w zwI=1YAg}TLHDxKGR2HI!?XM|gTu6Oe5^5dU5MQ=iaNsXFd!cser`Zb7Y<*q$t*P`K zRoOD}%t4H13rER2F-T&V*jWA&jixB5j8LkJwA4oo;`*U%R~m5aqoq1qPEj@{DP27A z`d2+GsM(F`Ll^ToMNhK__Yd2%C%t_W(th7xyrsQ~tjNS<>6{obYz`FdDzk;deWOseS5sUWJM)NScj}OUbd3_{>*Me2V9wQc$6c(PYVQf5Ao(1Dl~z&vHZ2=GtYTovP+6P& zXvvWHO{MS)Zs`vhyOz=*8-fvPYE79?NRDj09MfTg6vUh^t_Fv$qW7+%*GyZgiUw2> z3dFS8YLpAGuLxC)v)=;u1CMCOdC%`Ri~$|Et9w*BHPn=K)aAN~@p_3p6_Jm`C!mT! zA#DqCmfCcDy-^^mm8_y}B93-pXx8kYUMxsW4FGA#(sa1Ibm@3}OXTSv(<0VyNV!?51hxmYXipY~)ARC_=Dm!?e?3{)kK)H6v=Q*` zcur-ByjL_9T)gf@bqhIn7I%qu$MGfnz#84EaR@vT%vu5^>wTXriEVEVh1$Z-M;%g^ zS3QzanhADhnbL0`dil_;8N2X-&Y|39hnyr98E0bqn4ZEOM~@p8T%J0k%lK}deM^R1 zo@To$N4?{cM_DtEt}aLb4yzr|=u*$9D(406Xlp9*JhypqUbKx9Sfid7g2hkj1GGnP z6ZpB~wNDO~jNy`U|G4A9S6Gcx;Qc7$l5LsN(Y5Ga!0XZ@C7Y~B>TIE*!!D$KO5QU*?DJ}w-dk>T0;#TAbWlZ4Nl85-7G zUia83nfX_RMjsj#S+m+#KE>9d&559fWy_d0F&@#PjKtp4HDvh+H{$kgp>YY~YO6Ov z+>k7nB#AxOXy^leukevP{uCp87S=)$HZWvbTuDW*mG)Rh?7~FH{_ePUAUnl{!E)&( zF&ERO$}oGmQoJm#RRx#6C?)IYPqexgNM;@bO`s$@VClzokI%{g{!iJ;HN3`6O@gwT zu!aRWx-ZoP(R$H+GIcRPd*nMa-#GH_4$oU+EeN1&&sxS6KhePQBOLK<56sPvqH)Y{ zV~}$lLj~RUfL#iN2TfK+S1!Fjh@cR4og_zgn*pe$8uHR!wYFtzQ&t{ih6A z9MmJVUA>pf(KE@mpUU7s-nusmW&NnYBPuP^-aE>5>I)Q6>l>nUn#bvEFac|$@<5oPTw$%=-Zsf zCThEcN8e%D7$ZF5MYcELAU`+o1$thX$rf)o+1N^-=zeaD5W!^k%X%ysRLLDf4ORbJ zW1fYtB`q|SYXoP3w{80sN*(#S zGTmYxpBIRC@6p8^KaW2$*}7NIZ<-R6!@ydcsWSD>Ux{ID(l{Gp3rwL#1jMZP#fp41=wBdsWV02aGsHw~r~E9W>XKM69fzZlr-#;C7^ z(QRSR^QH`ms`+oTs6A|}s$DsgF#_@tqv_S8uYKTSwtP3YW=e)c0%RU>c(VuMUB-$! z)bpS2K8$RCDdC+WZTS6vYsmeO|5(E$y;YSW6Ub~WQ$NtW(mxWg#N{9O!snZQi(fphWNe4irr zZNv(t{{vad)HBwsHtmrMylJ}8c08Z0AuZNr4p&lV#oXdhpH4btogKLwy7zFTV=Y#$ z%wAqe8b@7pBF(ZgF>r?!j-Z1gpkJqvXx|cUPU;{+cG!rS z?xE0fKVl!kn$U)@L|*M~kf0-SEXM-z%0rpA>wzC@eT`C~OC^u_GmU=oRevO=k*cN{ z$I2VLdzB`x;ex~+kl(k{+lI6lKH-0L4 zR*OT$hsH=-@aw!kxoh{Y*j~{6S=jax-_s)Hdr$AY-yn9G4)-3);g%&)M-vBuZrsj2 znl_^Wv-yJSzLT&bX*vdZX8OOsh4)tQ*0Y@Tbb>Of$LKH~ZqpIIj=;+NW3md;i?1eu z@zXS3zsb!#e*X|WtGc2=QKl^Ofq&;m*ue7@4c`(b!u2#CdQfOv@{g>HKP%L5!YPk$ zLRnwc&!~puyvkEHz`!W!>zl=|dS3LLjB=#zNPsp=<5RK#Ft2_JPZl%{xg` zK71~fo-UOXU$M{%I>ZUpu{T;aHnOKF8e|+c2(kAMw6AQfjGH#dcP<=)4oX1>&q4S{)pX%wl&e%28? zMX6;(nQ@If{Mxmchm>OSrB8FuzHI3$V-7aBk$mPp*G~%7AIB`Mh59RgvHkGVo5Xub zi$6Yoh1yDciJta}X6>n;ui2fL->LKRPq>x1B24VreUoSzS9?alo!n%Jv2H+wG%eYB zhw=0H-$)w6Q>jdVs4D0gikdUPPay#t=@+J@^Gr*OOm-ceA?>4TNMRD& zuAfXpsTn%tMu`qsGcElv{4~@t*ViGJV0}F4;SsM9H5V<>;d}jeMs-_gW zytA_-FruMoxFl)_X^ZpejI*oGrfuafcS}cUp2TX!%M6;UR<_(Xi+H$WoD6Bn*pOB~6t5%L`a`-~9y2FMmc^t$r8SOIg{h}6d&q^MxFT?{h z>NLFMjU6~yG`eL}uIk#AW}~_aII>i;BU_a#2eX!dUz zf#k!A>p=O{I@MC!!R)H(Rv>YR(tLvz$XOBt+UQn}X!Ch!M;H&9>&iU(vNZSsQGVn> z3xl*2*&RC{Q^vjY5p8zj)c4wV#a}3?+TX7CPd>lrU{aF*Iyz2C!XWK9CZ^*6X_ZKs z$!S~6GV>BX-LBgy^9vF^y{>6l^U|aO5A9^*L2KR0QEkWnn9k+;C1q_sj&9eL)j-5TVz zv36PheGl!AMckv>959HbZtTkcfq2+pT-jV?V6Mwonjbf!t-J!^@ED|m*@gX%{F;~p zg9P7Wv+fH`+%~)JKTNhPZWPKsqRrjV-O5b-NVj*Usus3PF%hp&tIkh$Mv3*QZRj)-qVmE;T zVVw@n{OByWt7se<{+wFuChX)qVRFsrW+p8d=`!~pmhdKSi>wGC;05q@PSsOI-eB%7JQOen! z0q1A^5lv^AA96Ac-ND$8Ft3i>q+Xp=dohU;mon;u0xQN%iHf9$<_An{>MlKZq*`r4 zjrA4rKFP!jw$I=WyYK_qq-tYD8NRvj|X)UZ3Nh|`r|>K_*rmzs#&mz)UcJg^Bia3mAI9VL=ITz>(mlU zPV2ap=1$d<>D&4!DZ-Wa@jLV9#WVRnhqhHQDZ*(_q{h$@t3RoXsKNwS`v{Uj> z>Y^Z^HuZz@5C{4zZ)0fpZ}4xK9F7{A%<&1ho*$X16j&GW3LaMRU9I>65CS<$ET|*P z@`e(NS$$9a%9c~a8TsO#>JeYkcn|0O8v3l3+R-J=sybB-~%kvb*oMZ&%Ib zRopdcU*2KT>l^UNSGIg3UiNSvaq>JyX1boUZubt_*sN2@*%ArKmF11LHmgFn@|&4e zs8WNlEdkTjz2oa1b?g&#^;a;Bunkt`rze|IdvALQT)JeRsUVF}OX+lSmBF~Be`LVX zb~jhouN>`(2fNaM10(Q!uu|5R%Mbj`*;lW0wFQ=N)i&xriUQfEf=b)6-(o#)q!9`4 z$kipKGsiCQUrn@C_(hRPA-#Ca`PRa!Tv(Tv-G24yHP^73wrma>8u|RiSEG%c zT*nKOnS29}MJ^bYC|hL#6{ynGo4=t38y@g4HCEupmX%zuGW^hN!s=sDtmXx?0F_8% z?-K)Pux@Z&DSvX4`95g;7MvCEo=F`x_?Qh0Xf>>>_fI7jcEe0pcQ@0e3{PLzegs%y zM$LMQi*;YqP`+-96ler27wvBQo2_=D#-PQARi7|PFY^${e$Pke<7S*H6ifH9B^7WvX(IsT zAcdFDC-3y;xssv)()dx{O9-1sQro!;^a_+5fUFfa<&n>}BjA-Z4G+~pIkdOtl5=wZ zDz2Q$kG~+5Ca+#kPb{C`(t0rTA%8=%br-hID?u!uYr9*rbqnOaFX-2}1!@C3Yd~GG zlNs( zZ%s#lg@YATn+)XvO|Q&cnnGQuqg$1nFUp2nxG>9xfY4W_b;;YL2tUaNtD=Q*yt1KJ z*1c0+2u%Hy5?O=0rqU4a%nhfCyXB|7no8>*r5nG#G!xRFr7*Ch>+LRB%s)4%U00i+ zOSiRTZerZ$Ts17ww%ob3U6baSHY|Z!Hkw)_^Y=rw>`MEqL!r|LQ2Je^`CE8d>_&)O zGkoF`RqELK&ns`pDOy$R^jQ5%rZW~CSY^vHI=pKw(jPB``5Sko4Sibn^Y4xi_rKSh zHuf@1w(k?0@!(5WIC;0&lpj+n;7z;?t5n7`sCzdEOx7Dpvj$>J!`1@BQ*)dJw4n2% z4qKAr7N+V@8xj2Ifj_^UeF_b&scy>y&RPW-+krxlWm{s2k7H)iWwn1B8Y?!ST#CWr-D5cWg zJQKfhcetfhs8#S8U+yCwqeG_j*7ThCkNr`aD%ECEX)Uhjrs2?K8|e_q0Sj8|PzS%= z^`HGH>Zpnv)4W7T?-Pbdp^KYLykxLgNx+j@ipj{6S=IWour6s2w9`hD0%n`gfnsAZ z+pB9@(x)W4Ekpo&w^WaJgz)}#5kHnXD&iUV`GBx3W&HS59Mr-B?~wA`Tbyow+Rx}I z*@m$n1s&;|7Qfg6oZ1e>Q3gb&Pf^`MYjn0*;kan0o)|sj*$_4gPDj(>I1bP2q8SIO z7K&3$<}K=2#U5RCYP`nV+66sbJtK-ggNT}>LdZxnA}sb_DYHcpFDbilt~ClxMEREV z9*hLFZ72;KF2$ieCpM(u3<_QsnxY z>Ax0fT*6}#f^=4^(Cu&NJ)3+ftjkIA7M3y==+!^n8}?ACdFCM|f+c%f)nWhXmY>=* z+oB&^bk}3a_Pyw6*}iQ`0jcX%3jIo{7(G=sx;PR4i)?M2&eF1Bs?+_Xw_+lCrce2? za?X&6pXapThriHV=ST?`K=a_ZRhoty*&mv=E#l6=!@iyRMX)R>QLZ;B=4Yf+KxEEW z;SreWYkq8W=(D)10YPkNPUtC}$Nkv}ppNzamwlYY_O*SBJ&ozfMd2QH`!!(TGgB3! z)!Sh)FoovB;n0R0CVAUh!LicC;a;XBrwh9xe2p_NooX3GZTbtL zBK? zONVIdMTzJ|xc`#L!t&v+z~gqalV@(`4ySF`IJP?L^?xoKJF+K7W@&$`#sTuSi+f>F zLMr%RZsnq(V|S4kgF~f+KpRhq6!twb!$!rX!cxW4p(`a#&!>Ce7M(J=fR*qsjqm(; zN41;boc+A`96Yzlss84e)b{usp;y+-c-tC$U=RgX^i?!%k_$*~Y8}feZ@zRMS=zK7 zTq5i7T2w+_Ea0+|l4;?A-u7%QTE<`Ac918ywm;=?c7CT&=VZ$QAsYDQ*&|JEJ{v zrMP8s`a=9u)4PBHHbA3n#wf@1rT8FM;}ao9e`Ks~=WRj!y6*P%UEMb`H`j)4vNKvI zdT@2)`H+`ds{Qth`DKV=n-_XT=YgWq8BQ>ZQs?}A*ws0UsQMd5l)i#?yOiTnZjU3z z09}Xe90eYxi_1ohMg3G1EzB0?bu_SR4q@cp_27#4lxB~SXXU%I0eQ-(LwB}~?KYP> zVEX0mLaEVy(@Uzg)M^E;|;1I6cb z2jrGeg(~BXJy421a?-*{ljl8839gtgI zynNS&h2crLY-E-~_mHXMc)Sfp%)jSjhtU;&&DE^(vvm$UhtyBVyP(utE(`(T9WJMJ zW+-v=Oa@24qGUC#VrFc041fl>7Z0|HbkVZ{@|;TbqMMA`o%$Q|i|6Ym%#jMtH!d|z zi=V(W9ZcJ!aJT)=$s$@QLiwVU8sme|OU!^lx-CFdQp?ev&ypJ-oM;E8^H$T)1YJoCT2U()!&|)|~ zr`+tj+KG4+F$-3+w*8{3Q0(X)IXWnU~pBAPiLdUt+$jex6Ce?1kqWX ztve;q5-rX{y&9RBs$L-+?s2!b`^Ff9qEwcx&3_;!?<*8>F{Rla{iKu#PK@1Rt(_C6 z?RN1?><^M44Yx7honLtxKb1Y=vfn$(pZ3PpK@x$zQf&K>K5{6yOI^q^GrDA`mv8mM z5G8p~+Ctdkc=uU*gdoeq5R_D)F$;^?(<8R<2Y$t_4cizB@L|_#195cRm-uSj$0oFc zNsie+efUu%XEqJHmOmf9(9yfJ@X_}6Eoz!f)LnFGwUTGcr57xp^PXEM-F;J< zWv-;uqgXl%h_v>Oy6=z)w;z&~8mjjg8t;*E9(q=O$p_saAd8!6>XuyTYjToXnI!$O z0F$gArinrp|E@_@3LoAS&m2IU=AmGdH1DQ7VBUDf&M!F=!oDWAlmIHkt-NvdBrHwa zq`0&iqsHb9>uo07=St^?Qhj^9UAxB*>Xdt+%XQ;DzWaFnd5lX#2Hk|)ZET=|fD`O< ze|!Ockt5!3AM8lST>A(>B;Yn@Xnc)Ii8P_6J7f8>ut%7Dl?{|YvCkA_GCvKs*C3bf zxznwSz(Pz-2(9_5HTz<^fVx`eu7jezHIZuL^39}`O68)iL%V8wox`Od`*@?>xMh`% zy4Ydl6J+?Zj%j@D+D9f}0Q#XAf4$3|w(0~F+sX-$+|KEl+>TA|hA)PS5jJzO#rP0h z?#S@u5WrY%u32w%gh{<^y5d=0A5ic15I%rK{xT+Q&f*cID(ZU{)4wtCin=d0FhhR>|F3U@X5!JGuY`02@DB*g5L>R)iN2D;duBZBm$jV`3LrflQKJZ}qu%w4gh%a8+E05@NSk3&y zCeZy<0!~WlX%~r%;3=4Y5G4*$KH35{vH$#>{pXd_N>4qznSU@R?kGJinH5laip&HA zDP;jdlq}|L=|wk@j98?>XV~C8Y>>%t$~!*Pm$x%a-zHSa2E)u61w519GVgps7IbCf zbV^XobZ;$~xVAPa;C2_#G`?|ZXGf)u4AbiC{I^SPdy?lcEe-rOp2U+ zjO?C1fL}IdEbH|%qTOG?7o?gdjqWk!5NBZZ%e60);Hjdk(s+9epkh}li@fMca^1=v zA|ERNbQfWfnf2Mmn;QE+IJ;CNns(XTX5wWO?o?P`?;@4^?bJcMu&QF7=b2O@Dv2$SqaWGOrYp zOg2PM))MSHy|6&&FLZuTQEo0{S<4_xDLRmPS>%D(^I{w1Xhv4|aOqlON!1!m#h<)V zA!Cj6YL=yE0c@ZHIJbv5mnxa5<*A^T#c{zPQ?2@^2Ll9tw?QOL>vEj;9x|hTjddO& zc5whn*XO>A-pwd3Y8emsv@G*^k4GMeWS{g%1_?fEt6SCXm0Hq~GG0dO&)3}p%N*8E z?)CR7EerM5)gCUi*OE`R{k%{(zOa*iF0Zyr77iZ3{c>YC%17=r2EbcT#B*17AS%=n z83eM5=)cFN%i&Nk4he?Ht~vI)xQ}n744)sne!+ejeN`JpJv4y0A+1B4DX9$zErB0$ zTs0>4y(~oaB0Mjo?!ZEx?Z*c{+<|!?b~N1~@W_`1P^cpMyiHg{hY+%E!)$E(%W@1p zOLDV|J>H||ySMyYXRQw#o#x4ijcabe!a>z#wdH~U412_Fz}7tntcOy4*Xyn5gWXft z39uP|hnD`y$@KLCuyOa2!Yvye>Y=Xi;HdH?d5<9nRm9tm)+}i6^z}OQ23HETq&3DY zW0j$=-1N$r4MMaal~DUh3??G!2Vh)=3$hmf!G$fn%57rA}rt{8PD1>T~NZgrigu^d}z;+?b8 zZcvN|7+_i#hNE^vx?2yN$ojo zOO4BARUbkZeIVvB`ljiu3~IN^W#I7-7V9!jZZ-D27R*;h0xwi$V&gN8?j|ww>cir* zZcJ5Zed*B4LoLRvXu*LD*7BQ%$@QXc%`Ce!zSBD+<6EfDZlp^uOqfR)8~rMq+)rcd z0k+$jII}~4ukAh@Wp6$j1G*Fjyy>HhUsx!@Db?ZW1*C=+!@516+-O!kZ#ZMxn1>UB zf4Q$@zH)S5Srq2_FvWfbb!NDkg$Yd>8trVV5vQ0(ObM6)=}=9II9Yydt(^0|0{)y_ ztE%()Bp0qZv=E+}%y|!pr>jJhZYYhI(jtlNi#wA&8)*M%ZPoYQ{7h>xIBvDArQpV2j%wbQONzV5TEW-{4Te0RDEC?0*OwQCFEzN4Krg zKeT;>qAmS|L)NK78lG)XMmBD6%Z6OLf1|1N)|wt8ifSMIMulgDaeqcznnh?sZf{pO zp;6SKtsLk2L3A)!LsNzsm1LduL)43`^RDaH>gc7WIJ~$#ns4{o6UAgT?wj@xyGX*H z0cI}xk=e|Qi}QR=fz@LhLzXAXF%@)Df zwZMg)hw)PN*9rhfx1G*30nw&Y@ivz%p@lTOXWrQ()JPOW@Un(FEF z4JJHoHTn{71Ez%9bB3R{2?;&BI|DDNUEIxpEmGJvobaZyGyRluY|`p#HDOKsXGC)pqQYMoS(>ITZ@vFoIhOPt4#l)YxHuT>zViD0!!yu zW)QM5S^5c%m7)gKLoZ{~!#xUQ;+Rbq7j?~4>u7zwCznfAZ*h*%9RvsMq?a6C83H!$ ztLhQYFUy$`I17m1i3WccvkHmB`o!V`&o%#;<5kS(CY8bxec9X%h^a$B@DA!RVb_3I zKLjk^LD~N^jo(385j^#XGOt)Q{$}w?M2PT%}+p5Wf6GSI(70Nl zevT`+Buiee__D?YvwC^22UmZhmXDuV(>NbCQWSUCAzy8Oi zLVn7)-?~(^QB|~C$5cQZukU8j3q%ELyDJysrTnEmxnix_XVyODXi#xy8)sMK$9Tk+ zRjpB&OwR04;Gk@7X|pEtR{@^E^KvVTvE1{NfbuTH6))ZbU4Eq-@sqV8lWhjYFn;MA z6Ds%B3~-S`wwojNGK8Rc z^8J*wX6y6=&EA8h5dVwb0E;^eQIe_+%h7v!5tBL}+l;YgE`_qw79%rzZ*sjRb=Z_> z#xvPtdtSNs_#owcO?&dPE|1ZuWy;d-FDUW|JS#;SRW)ucQ&y&uY zke6fB8Zdb~-CtHOJT8|K(IsVina>t^@GZQ42P0_3M zL(6sD{k{^FCzc0`!&egKOu(GqGAl zaHZ589~0n*+`P!7B@InuJBa-ptIHyBn$;zoP`pMHp8(gLfL=&>AGe4&*-MBwtWQIL zjX;}Ai8bJfF~o#sk%#g~`bJ8z@(T|Qi}NBw*{!vtLGPJPRM&&f@X*Ts-2^G2cLVzO zQ?m#3hsoAt;?*9XkBw7%9Hu`UT&9tnKxn^NG&DA7kZhowTPb3&1rp;V9DwP)9b?uap;^}2^7Sww&moHbG zDZ!Yj?*~4=j&r}dPmtxmTi&ztWx$iajYf~UHTLoS#GIJ#z^?Xzm=eH|J{;@l#qFcr z5hn7$$An|7(#*cXCTm$8t)l)W{9)cm%} zFGR}KzBMP~7R@%-JccN6&_=7kw3Z)(X@jl{BRr%S?Z*3J?v_ck{RWRw=+TdTWZbR8 zu|@fbAVs~%WEZKm_f!*1RCW>>aaaB|)MWlqDQVquyPAi5oC8nf{}aeJP|2MQ`gb4z z{D)p_p$a z!KGSFV^7GkiaRo|NNUg>T)U<NPZB_z}H-uI~;?ZvxW*?pn<$D-9rN$i6N%y~@g%H#HrD4c^B_!Zi6r;0)guo34J@faSv{8jiFm3;8 z$bTpv4j$FO`Jb!_hG4XIQXz27K~KoOiZ&{5NlM%Q55b>RR&1Cq7L~mT(+Y@h$0Wg(-YqM?=`w+FhR$G; zYCJy+hs$N-H2)4)!sRk>Ujd=K;mLK#--61^h|%I z$>`sVBufJiOob$=U0v?GS-Kf)CoR~E%UEW8d7R_Br>~aVdo%>GSfkQIw*2J*x}t0m z=^{I~b>X`wVS}=4@p=2{+&iZ;sEyZL5!WJ>>{EuE$ovjD|Hd>34Bf}*5*HJdo~|YC zbr>%uqMj^k5*c>VlWUAi-r-%_0*g0Qd59}y?FiMQrB!UxyUiYMV!@^=H?iWVDCP*ZJ6B&ko=w*| zB!SkU{wyjVKg>h)m^D>9M7IM|m)LX(S0F(7o#BA=$NinF5%*fs0~!FDPD${>jod}w z)_^B-*w*+w0@~UM(0MqEZJoE5%fr68FPFbP%ta{Z>)|4#^s(vg*WU-yWv6THp}B$e z?Wz!bS$j_|-X#{5x9Q3)2i`2_Mrh93&;;C{_T<64Uy#dN_oWU-_gT>lAx{&?zM{C<_ z`D+|4FKhX$4DROd2WS(2I5L#5=1%3f2&ocxh%ERh0PvC~1TKEm=ur*FHR%i%C)Xg$ zRR?$T_C2&w*(5i(?x2kp;eF?7`f(5kTK)(Ko9tjDLe; z)~axI)DUYbU)~bQSL5g?f3jcIJD(3PSn3e2203YLCsX?y^nz*p@AnQL?%V71+R*qP z!`;6#jUz@{q$WK?C&B$*FtxwR5hH0f;j;M)<>9i~3kTHx>6xh8y_`o?k?OnG8&B>3 zBxj)<=z+uu z*4C<>Y~h^mpdV@H82;S3TD&}nKRf7GoCJK(Wi#k^x66k3Mnn#es+$WP#IHZ-+Rfc# z6+vxz0xV3ZuOB`iPXwuL0d%$i8e6dZJ-WQT-MqcjK|H_RA&p%Crw9U;#CCWV0GeDR zj;!{AgZSm*T? zd+*&J0^|=%-@PU^FwFHQb^KEcrr^(S?#t%=JAf+uBd-9hkDRf78s7j9ea)u3d5NY~t~9B=Ye+XN)R zAL1jf=6^1~FZ*x6pGO}c@FkGrX#P`ZI@&&8BH@1Q@m0Xyc`{@IEvMla^xL zjb-iMqY^afnj8NBpvFdM9xf%k=YI+n;i~yK613TaBHLoQWeaEe{~R>GxWIK=b|JW! zaE$H-fg5hxvYU?!pg|SS9BBL9Yl+wT0{SiS+J1iqpnRMQja<=8n>HRA&ZfIzMMLzN zMP}4V#dwBpuBlD3w8Ip|9-BII2vzUFuixkd&(DB*ue@-0Z&b9drU0F)WjGL);ktS!8w{EXFf_b4_E?xE-eK z?aB3Ti(M0G@aLP8x4kiM>pT-`WMs1I%G;&#>wIH9i+|mlg3UF}Nr~B1jmgKeG6i+u z!&b-Dd$XxplixsxRFL`=R@)CA&H86<24pXFcTG%A=0gvtJvCf7X*?yW^j*Yw)~s9n zC$>#5j&Y<&5Okko^JU~uldd;{bU2WZcZRWU`LCU{`wH*ZD&DKUu}I5-%z5W{7y48F zV%&mqZxMGbBs2djXe(Aj7IbKgwR=0X+_V*U^A==jkl@S%>UD|%K>4Pz#MZE6Uq7&) z0~{bGj>w7}E0no*z#Tgdd15%|m|yF!hIG=dCiGh3%(giJ=)_M2cDlJ^Ly1Z(`>7B| z?aDV0j|aUvG^-~RVL$g`dBz}_h1_F0iiX-1+KMoZ(rBI`ofd-w-vv<1B<(8Xj^VN_ zbJb8P!|FS3Lv5=FNC9`d9g-tM;dWJSo9qts!D%No`oarYh(l}%29 z1fb~Jkul3}#Dz8D?h&2><%lojwcQ2t_#sP~5PnE|CWQAG3}O{4vAPM=&38|is^8Y4 zX+CjUUHh{3&ZlBlJ5a_jY4SGt^3>L*6P0S(XSLl)P`LC~o23HsoVEjDw^wa&$VW>| zXhGSnRvT<(>i#2 ztp1|BWMu8mUoIK1pW0E-ZKX3Wl<%52Skt-WP$_9x*sYUaKKKvXvgA-IX;{!r8&N(u z<4`JY$k(lNOe_C29cs0?8SFR`ZL`5FZ~I%nA>3L9JN&Fk*wN4{V{wDMLWIbec~q5N z7T=I{P{yxgS7<)@!HE}cE&n|9Y-Q>ew z$LUv^yzghBC%&Zxtt;cN6t#*#X%UU?vaO_n5!#vSyp84)k%rDZPECMy!wJ^?f_B;b zvL47vIrqV@C>*!Bkge1COsDfck99Upd0)8xg$Wfjnuhe+Wa!HsnRfbGd=U^U^-5kyoZ?_vt^uv~?}>vs$&HX4MV$Xa z^|^h%z<`LisB3?T0_P|{UQYzR-f5$Uw=bX{swxR$ovbiAUm^7kxgmr1N%m@?C(3TO zPU?boXI&<8aY%?DJVcN;U3u#4wW2T`GV(F)P-TQl zDl|KdxVKnSx+Tw#?O#7TH`*u(OhGc%4^n!=**E=^diSC;w^$TO894J&;oY9pshAsM z(>Ekh>Td9?g})d7e%Ym?wG-0anhPY&S*Kojzs<5LXP-@rj@gwo*J3{1C;3Em`13IA zI%Xxw$Ty`?M&xrqKe=~Ik+kG~nulMd{oq@EpL}Hpm;FNsS?2Cty1P5Q@Lt}|=t<^P zDiKBBP$|;$NgT2_S;2QZZeg_-J{_`9XyWr^yKJFMEt>Yu!9YM6t5owD@r$PCK&>hl zKtn8)X^?{-qub6;ht&2c!3I*p1wuD!`|$@%Y4D$X42@lH37;tZ}EiYb9dqkR-~iU22E!1i3LzPhHx zNjT-2E&h6Uvp()pcdLZn$jv$sHBfCS_CRO@d|H`tabbd*ru32z#;|0@T8u$esKN=kzcjS@r#vl9( zQ{q{f3ienh{kfnU6OQ+wy614U9C)yTx_#jJ>5!!Ycy{#*U9AQltfB&jM+yj1w!}+g zh$~nCqEO0q`O;YJa}THVLUCL6OJgqxRntL^Bc{5(4!v*W5%zOy9z$%m3F@rr)M#dsNsT`yl<_p>5lvg8m*4(pma#Nc84&(ayKz!nREp z$M~ODDI-?<0I=&A%vl zpL~q_N>zJMp^#brgOR_}?Qw2G)qO-^9{{{P&PDLJkH|87lQmux?cmBhh;`QTea=2M z%+hOOPPz`FdyZ{+>n~{g9o4)zM*Up0Woo+@^N)#W=yHZifdaOYCnOy%rkkyXSS8cz--S;u}}nY|8?m?w#gIV%EC=XsWWZCoHnd- z`B>VvlyaoRcxt(@M-^~b7BbJqX{+3iy}4u|D@k2%-D@A+Y6o0?1ly&xd2eWOcDf$- z(&E6SA5gyFIK+!v*lwGUBM6E~U>N6(m+S0PJsaEJYzn$bC>?BDc=>ZUgfXV_EE`G8 zw|g(5g+a=df*v*TL*573W2oWu09Ze0b7hrvmf$~ekYA4y2)dfy_Oe<;+CP7G7HYn4 zbT&x19trS;p|F#{xh?PJ`K=e#xR=$?iTSM$+rEg-8h+2Bj@0D#^gVp5~d*7d- zf*x;o53XL95*f=dL){$Nb|5{NxTn?jTvr0~!?fGH-VAembM!VgdNU0Kn$tUHZ(+I} zdqAZUh22O(>?G|fMVXWf*9s+FA@KTy4X>>yeN4ol?hH(2-xEMKD0^=9Db-hC6SB~y zU}kU|%aL`gNYT`Dd}b-uj80?!V!em5Tb@CI?6wV*6;tO7oKNwI2O69cCuRR!6{jYG z*;r;iuS2suukL4p4ygS|&!#$ZjU`E`)$8s90ZKR~+#F)hcsh_B*zgK*lK^X+e?Ww< zf9S-J&3_q;L&!2Ja_r0Uw^FSCJ$+!Bil(d0%FJ-Pf8C+tM~5n>Dn(uBXO<~nkC&KE zUl%B5ld>Pgst1cyX;vYfxNaQYtnFN4vqx4>qb;)=w=q*`pn2fgYK?hx-ofn~ zWrJu3?Oa%AzZ{wO5JaYSsH)af0_6^!+#+r$h2#z(DY*-D6Wp=eS*d`ede@Q7cqJR# zoo&SK!bRX`JXq}pKJv6R?@fzo#0n+32L(uY z1%2^Ayh*mZuX9qkDX z;-^AqZq||JU^sj9GK-)%E!#<+7P)6fr@3D}zN_(?#`qkvBj)$;7%y7hz(7T{l5-bm zZ#P`Kp?B(Z#M?)d)c?6i#9v1u1PrRt;0s^-FJjW?OEpxNnz(aL@o6=T#|#joECyHFM4 zxMXdJSDhZkeMv@K|gAX@xv2u?FmFw^t0tnJk zyH#fzWH!WNgX9`YHAnIl7(POtSf^xEZ3WU?hmx+J`I^M41_Xca+H)N>4CJy7q~E@7uM7bOPI zm~Ze8bt^L2W5!L(7S4Xj+Eq56~9k)P_g|v5n2t)gr-i;$Ca& ze+(=(6E3a(Auj1=6E^g_4F90|t^RQ?Z490%zYEnj*JxXjjZi~+PcpPqBK&j!_~m!s z`>*2YtkVe(a-8@?XD9Mp60&ej-yXbB+zp=QXmL<|fnChqgCr z(-wV|ET_lVO#n7iZ46!q53bnUa?!bBBjN(OzP6`)g(6hYnqSBjh@5X4l8oy7L~uvt zA~V_Ad5x_XOA|#&Qzay3ckmipEiOG^0{Go#q9}D+1t6Vl7KN1KZN|J_XLIWN{0`K% z_YIQP?y2Q|uz-H1Pka~VdC4j#&2s5p4!`iuPnxPi-vHEg>&dIU4sxZCLUOiNb#X?v z20`47=oS}o*6(vz{EQh@n(3UWR9cPvD8W<8>+beAlaVp;h}%qW-FbufXd7wC%p!tI zTI5H}uR3_&P6m`;uF^j@&Ku-N+bBwAmMlulB3bq)0N1wR1wx!W;#U-flft-uz29>d z;6a5RZ201T;Pd($g}KDP$nFcZho2U-yB%q8Ig7SA_lU;uy(l}aUiD)u?+ZaP^Ugr} z@*i6d@0No^hFE26zn=a|XtbrHs5;F`V{JZ{Q7s%Zg-~ zwzvOW%$3>P^&m5c#jZn-tOR*~#EHY9nySk1{CHu|s!pQ^j~VP(KJ=`ubKr>7KX0Ma zm=Jr@`iLs>WY}_07Y1d)LUcw5L0bda!gym=iN`YYn9XIKW-tL4zE=wzNNXLj%BkV9>Y;Xz^8<> zzYB=YLn|z1U@DpSDJ$7q?c>^OAUzVN|qP^XE?StMI@uJ?TleD+G5h=`lUh z@+l%OOV0=i%L(@Aon)~8(SqEv;Mo{pC8prnYZ0}y!?3;jj1S?8I=p4(uV^9)^ekJh z@zCm*{uOD)l<*U*Ih;d>x70k0M!7)GyoHJuH$Hia|j z{443KzROFR@8LHs_YvCyUK{_nL2akw?_qE7M3>F{6I?2p`5VvwF~sSYc7|K&@Rpk= z(sUH)S+@xB{HZkZF}xBHTyjqr&^MUuwsYOM{+L!O0hY`*Ck2zMmtw{{9yA4w7o30ER( zLIls!le(18;3{6L;YoZTfMCM(emEPdq$m6_2~=YJT4Y$rs?Btb<%ykMSB#-eK%Y!Q z3{6f!CqBqGh>PcezFGSPP3uIVj+mwg5{)tJ4D%!Z z(n%<5Jlbsk=h7_cuNU8b{aSvf(P+V0dd+_Vt2nOm2Z=}D$MH9*pVKMyzm#TAX{y}( z3&5CT)D&~_fyDb?fxdOSkY? zR}AvOXwU0pJt3L?I8do2g|ckxYZ>0r48F4!vp$Zb19gl*T6gYDt3&!?JC$K{`7G{% zZrtdTK)$vk5G$EIQ&oVp!JV(-Ew_?0j4rWS4Om1vNOZ@c9Y%@i3+?0%HP84uj)Y1j zC0H^aCg8R%siQ?C_f>&q)e@^PK4k}e^A0M*xRJ8vIF2gb(!VG%+jO{8F%y}L^{qRE z4C6-2I^$-E5w)A=tNa4_(s95KzE{?B+ILJ39`;#tSf#~Av5PNz02CRt)b3=QK1Hph zb^W$t14F5uI<-wNH@ATr^ZS`|b}TRRPLKWkEUqf%by3yg&wW2x+K%O{+KFL2ixtO= zk+sAFVyY_~ld^17zhZ3Tl`D?VgdoRhwC zbwRe_P#>TDVqB$Lhe2)j8>hv0hLVeMD*rF2)l(;iw}xjH;(n<84{06{WX*~c!XWf? z=X&|J7UI0!I;3l@ND{~?QK`B!%kVpS_G;~K%nGME6#MH&)wZc+vajzq{i4q~*Zycl zd*v!&P;yS9Y}Bi*N9;-Qp6{r6_lx?w+Qc(`l$-PnpLkVh&zI$)H9vO0jh_;g&?sNj z(7D@YA3&)zuTs*4Fu#F(5v2+{E2j0%RQUZzsI!oWI0HFn z*0iNjsXK!0h~Qb$i?MYDqC@yLM9)V$LyWyRJ^60tjEUAnM7XcIivahUVoQB4l#b>| z9KiM%M-=XeOhkm(tGn=V7b!MX=0a&{hBIdjw2UIc?Oj@iaHJFpxuTX(`;BP>KPWBR z|B{jqXHFa3GKwG@o@uOvI`i=xMJ%fh;Yc6fDSw5MdeZXio_y)vzYw+11`rp%L1>(v zk+MipHsi1c!L(pQ#E7(6dY$>_$%ne|g%ZVZei@8L%H&1a zXNEPN+vhb@4on%?IrE7?oe?5Ry5;};K2rRq5mIoZvhq8vZs9~AwY0<3lcm?3}!CitwuwcQpgS$J8 zyERU5cX$7qoOACzcjnG~GxN^7-nE`p^{Z#s-n*Oby}PJg|0)K)$OC}+4TsCOqZ3&? zfNy$2Sb80T05e4R0?gd}11==i;itq!{#W{J9&bq6@UIiD^(Z6pj%*46NbwsvXiOUC z>xp+~gUwxVqTBA>i9!xZJ74Z_O;bMy@){*USBjyKt(s_uZ*Fzrg;~5a{56#DZS`Wr zd0a17KpK&pY^aBv6b3ECBJ4_~$yC%JXr(|~G&8MvkE;+!*fxX~(P@gOhLXMAfqUtE z8VOo$8w{iB*DVg?4bk|O2jYonPM&S_X|}Ls4l*R}lZMQ^t-NbP>)75-oS3r5Fzgr~ zyjAOba{%RaCnylul8!sVk~Xu0hqH`3byCEhc0mlhqXOdbp~v@YY_H>pe>cFVlJ0yT zQI{y~-1|OM$2>@|HlfCCsY``t=l`17wXM zu%p>74)-#TL-UG5Guodjme`iQ8jm8*Az%2w(Gc<>ejIKJ41Jh!DjoV&FOLQSq0*(Z&gmzR++QbhWpDp#W50^!=6m9M!GmlY< zJ7JSs7#Qi`&E|&<4)-j9JcY z@^l=LnL9+z&3JnpihQ3%08$UvE9z!cUBf9n@%Fk;*K2BD(q&P;VoK5pGr>s~?}L>FhF{fK zx2*&j9yKB@qoiJo2si>~Jm{?TobS)-_|gxAd6%JD?bq-SPQt8tfhZ%}5zPqgA$s&- z%?MfeBipUdr{aGgLUm~s=FNzlY*#qV4xaS=Ml!K9wA^*Zb>b1=!Y`0EV%03}^`#lR zyUpc;KSja|41ILzfV~x%1Q?EX85@@QSGDa{Ohnc}JYV-KhQB5Y~qkLTT z_f7v6QRMbI#&3_SWO<8Yc9%QHxlbTyMVeNFDyJ2k`@VA=TahcpMUyIR>LawRqR=y{ zbcWcx*n!z|1D`K853M9G{LI1!|oQqYlW)}s<>W)9qs0oL0H+#VCBuke&5Q1Hy&)Agr z8*h)Z_?z-j7j%yGGo)N!e`VB z$0>%`N*507k<({u7x({+scrwt{YPDpjAX4&YdQ#_HQd{NOh4tCgX(c8#M^## z>HeBS;BhF@`)mz@wZh{%%5HIzrSQ;8CVqz*R|ou@2+ht<0ZXuLA8lw;WT|iwx5ng# zIDjM_mHH#d~+IVPLFn(IC;xy08?#;N6>2IZf=Q@+trzOwo)e5G*9%&fvq=JOWO z1jO3aro&G>$p;=8mGZL-%I9{p4awhh7k6|v-YK7>7r4HhoR?v9RvMD}wL~P#SRCwH zs#wsN{OvF&t8q=r7-3R7J1JgiNTr}&l1(jtllHk>sB9l+UZVIvFbf(9g={l%fAsk&2a3)Sc!D-c7A*;g;Y=37%gXp)y^h&(l z*oI5{CGZogHk{f^`wVR)!xip?k7|j~l`pq|%Nnt+HXQR%SMBf`a<%!nF|1=B@pmY~ z9iqj#Ka!{ZjFMFpq@u})!5sYvzfA${5dDh#mm;Yx`;H+OJzgnf zAir}%dDV{gpKZK>{ICt>ZaZ2-uDJ4)esx)6`dq*dr9bV{C#Xe@V#PR>f(l6$)%<>1 z6^(4#LS^H)f};P5Ns>bgQM`PdR9^o(wxBtskh`TNHtL&k?4`WL2|QihBzlr$78?P#7L@Krdzh43F(1aEDkV&mAueWF`G zrB1gv;`EZO^-*zkE1f6gl0w_8o`2(Z6C-NQiqKV%D9r<^O@Qgf zcCdC<->E_~4xsV@m7DtESJ~=!%964 z!`#d*hnGO@Su54}4xh!-+@3xiTL+BOhp!BySPeqX+b{VtaYpwnJu?{3{T`WKoU>ho zoSGQwJmA#$3F_&k4_;zI`UGZKHZ*sq{*>W@C&!%oi*WhcDaF6&ai!tj^YG~f|7*|i zmcWCaV>l1^+ayn-xe-#G;r5Loz|^r`#REQMQW||IOMen0qKlFUH#LdoLg3=0!qIMo zHzS^9;QKPHnl`6ifBKo1Jo-3BBFLPdIQD(CXAtf_39Jk86MlU~?N7$}rpxAy1Zt9d1s>0VONLyf&K_itPlI>J^KKmXO_LdEmK#PY$5N8{HAtQd?NSkD*qvrX~gc@gYU


nFu#a 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
~vmDuVF{XkXzf`xie-nLH{rSW{@P0^x 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

?{$ttSxRjVh}H^dtH>Gh8~|G9}n0tA?K z=%3>~4&_AyHmb=tJX7ue+di<34dZ70dX*H%gN89nzY`%h6^H zfsYN}3eh6ieZ$uM4)-AQKzdW?LC@M72?I>uKMbG623p&1B3&*A=$45`an^EH2U7kW zs^S~!vbK%Q7JJ*LkTGf`0L4CiEhT5fG@kI~bW-;#dy|iPSDcBcE%^LD0s6W@*HcEw zsf-cD$etb4H6KtFUqJ#nZ9aVvE9PaYUN;~er2`*!tZYYYYJ+J&FRFwxzh0E*oYkM#o^fDC_ zr0ttd*CEvyaMSm*R#t8Uu0O^esng_7wtk*xk1+XrlZZd%FoXCN-k~qdJReTc}pOj;oQqS+n+> zB3(5Z`U(C7+_()FSnM&XRxrcMKa`6TD9?V(tXb97=SPgwKz9;VAAYi;^?X1XuM0DR zW%mJ;ep(DKtcM|Khi`-HyMJ_%Vn1w3;l5N*hl1|H!Uw*}>sK8Sjf<8s0ai6NmqKIlP+N72bxu?uR z9vl;NV+Kglp%dxiMcdh`!t!TiCo0ZF6ok?RRr@|jax=Jmj#l+3eFT&%>}g}!+aB5Q zK7^SoL=OYML}lioBp9JcsGCH}QGJZmw#AWOmb9HLz{0)fA)!wAI9k|?S(TDIZ9RX< z8q!f^%2&5jxjNs_+O5$xpf&^0Gs^U?9EgE!6L=|XcwM@r*zd_f{u<*qs9NM41v4=q z19U%KN+UFWDTePzf=VQg<52<{WT0*}kSq#*v7BW$P|TqN=8v%MMJx^7ri=G^BNcn|?gZ6rc(Ab+0Q~*#KDJDztj$pOVaeBv=Pu>P#%A+ zRb?D8>qZHeYGx|1tB0nK{%_An>%IEl>HOZZ#WKI6niQ!&@AhW zh+zlRgZZZ3elE7%I5@p!1AboTB4IbdbkEglt>Tq{%0HHwW(72_emku1A@7<5uO^FW z4L6eVy`hB=6OhQ>zKVXdMfsq4?AoC#>e{tx1H@FS>TiL|VMsFw%x*=+%Wn6GPkl?V zD7}5meY-Nkn$yl%g&G-xH<{*aBi+T`Z?QbIEScvyll4Nx-N#i?3sgNu?F zS(q(sg-*%T@Js#^O-+|W{1XaXc$ggW6*^E!|Ak)6I=;2!%iJ#uTJZ{*1m_u;h+$@0 z|3T5W&M<;q)J@2ZlqF5i@DKeeu7SiI8RrZU8#oS`V@GOZY}&LeXDbSTQe|-&(2}=g z-cJt9i`>nOzXPUvuI|*LfnLt*SlsyXDFAWL%9*`aI8xEqBj-d(LRIbAKR~hZvig_- zRmD3w_+*Jq*K%F^Cnkm;z2c9>?9zxU#D8RDez@l4FnZ@-owxWIT%yEEpke~ zI^`FV5$1o&FcO28Z5rDoho;u%!LE~6lj@xAeAP1&9}_7~dP0OyZSiJ|+D|s;`b=hs z$7w8hxmK1mc-@%GTC%LOzn!EQz9QcR zF1RHCFOfNg9OE_a$RyP+!)X?C>wZQY-|TaLur1{QJ({H2F$&FML+8b^K5JfKgF<{R zB`#qT!SX*IKHf>K{?#wD4?jp9ggw{yKtE{wi_gel^#V^8pWL;yZ!{S!;K}MF;ON_t zin(p{u9g?}g8@VXtzaZdRxiRO%tD~6_*KNZFEG6?Yph^?&(?k9v$dwpK}(P<7Dvn{ zNyeLVU|3#=c*qv4(-_?#S$|sTVtw76#?GZV)hI@IEkm9<2OjK{q|G;vnOu#`v0(R7 zQ$SP=lkzR_!<-1$luVneTWNFAg@&64I-kjgwh4$prLu+zj17wlTypfHoYl)vcaE;c zdwz|G3kaLxJmqSOsf{ulS)zMk*{S=@8fa6P#CCbTRu z5U+dxDPs-#Zz>_Q47#z^7-%uUU&ZC5uXpCfDPefqo)=4M4*N4*D~5)4#VXQaxVu55 z0DL)qJ^R)A@f)(bwJ#D@o(O#jqTD!c#S}zwc?O;hq$ijYQXhvE+-WHw3xQ2|eLuGD z`>&FZs_q`u=gw>6Ie@JyqN&I# zC7CfJ^6D{&pUHb@p^Y5;g)pagWF`cSTcuEvzNb1e=UYB~n@X2SZ;4Vx^-!&e$gP1U zmqe5)g*5O9LsX-ja3Iw24HpL2vhm!!6>jfuZYqmp2!67}FT>frSr|Rr|Ff02n3mG} zCz8-(dmJ{#X+V)UL=iQVOht9L?&gi{4v)tea3zs!HyHwQu_a?_hnDXzgX~(zW+`Pd zciD{HY-iIiq;DxKP~3HHJgqS+U-MUNZAdR-kMR>{YR+|uylSuQOt=2<{&KIz=4U*O z@lZD>x(-d-t8?^QJZw3ii7Z;oG5qpWx7)%Cl@G*%Of2BTO{wu+@8*v_{m&oBaSI@V{7%QLtp2V7e#+zxa(MYU$Kyis8Q$&= z=WMRq?#;R1Tg8Ply0JO!XZ5FwKqWQ2=W9bV!CXne^5@xX4JZ}|w}G*g0=PwpOKhNT zLb2jjddmxE%NH5q{O|QAi{^|WGku2w<6osMM-;-o5zafdCBQ zQ_cLls=SaVTjwYnW**FF4Bcy5vyf0(^32`V{C<6$v}Ub=bW&{W#T-wUly>@zRXBcv zR?b?LtRyT&rnS?gPLG-|V>Xq=^o-t(lRR!uetyMBjR2ZGvx|GYtNSR{fM*T|<`;U| zpFx*;`T#%9(v8p9j-#K>brM=!Yq^E{INMeO#ovoT0}dt+x_|9cXoy0arIsNRpCVss+$$EMVvw0GC53qXkukPK%I?rBkqd=!qIFgzny z-G9-RQQe02tZ{yq<0@|Y4!UMWKu5s@#np;zNBg@f2)E(T)|D-!Oosjf!CW}CqG6L% z4G;tpC*mKU>XnjRn8h3VVGfZCFO4F<&kE4z8D0?lPS3|el)r`OV8Ub38`$BLSp$%| zfU*WL9g!{Xi*MajPT3gpWS$?)9%P1?f)amcI^+0man7X~^HDjr>t=o#b+AwoHs1Le zq}#4GWU*c8vC#GM(fyGzuy5Vb7L^E>i0fdIo5T~EQ}2F+W*tt0PQ}a)?Ue7dz={3} zS#uMa6TVn7(CZP_=?k20j5PYZyvOS7W$sR`*CIdU9Zo6u9oeZy`9LD1ALc#N5#A0|ee=H?_S$CR z0Vq@2=GVJ%ymThsKoGa?MS%L5CYKi?Zm>`5HqUwU$*UWyB3)$Cjc=$$;J4RATo%Ea z?=G#?yL$YG+0_{Hm0~K?_h8{@k&rda(0M#MzMe6nB^GNMMtT!EDHV>WeV>75@w$ua zs7e`9nmHIqqNDKv8!Lp3!E9iB{{v(mlu}% z@e>FcBGP&*GURnVL-@%?Z*!&_q4gon>M}S_FUhfA+Gcab?*F9)Ya{9}h`Q8>f<+GUmxr0J2~&eqjqdh3gYd3V`lO#9tnB{C=qevS>6@bKLh1ZStGX1%(TI~Qe`TR* z9nyuF0+p2=he|@@t(!Cy!6+(9hT)a~3@F=MD^lFu4b%QWFjiI`7~#udwY;`ECTS29 zDx1M=Z40R4vg=WQ|E<}uU)83=`vsmwd-d7YcTGWQ0pB4~NO zcx2{Y1&APKtOzxhDn!&lv>y`Ks>(yUY5tAllap;ziops zL4+NZamgDneGcnyKm*u*rMv~A$X;%^DkD7>)n}$ffN>Zn(rE> z?n@DsxA?R!G=s2d++ni>*rZ?WcT+-IE}&1v?~P~ytFj^sHW#EEG+(dn$etB@z;{pi zlIr5y!tx$oN@CKVt8Sp0!-|Af*HRfJE_KpJlD6E*sZWN_u^tcv>W}=v|Goa~@wH`e z_$`B)?b7XO8>+~AZ{F{1qT*JXAi1QEHDH7CSq{#M-N$=5fOKse;b25%t5Te3y&2)k zikM=DmbcqQ-sC9y%5s}yvu;0=j*DSIwNNvG{vnsZa5@#C0AA|<`BNJ=s*S_tfC85C zw8Msd0g-YO@?6&fyBIjIW4HzD)3EQ6iwL_USQ@pwYDX+fYK-LwsF1n`_}zDrDYvl$ z_teJkkvE~gf$@!XfBm(Wz7;AOQ-VQ(EVQhLHh>@$pXW5^8Z!0Zj9YvePhxv?!F^1J z(c4YU!LU*;Wo;;WW^Eew0ddGzutYw#^UQzIeg*4aLOy_S9L3C8BQ*J*R2aanPz_I9 zLWBgc>+u110AUCIKCySc-KhV8F$!1o9=>MN%$mj9`OR2!K-pTq+a(z6JmzQe=iEp=K=d7;?tq!-iaB=v?Yk(}U)PBS z=lwC|SbRx7l7Qr~txScA%(3y4+<9#uPMaRFRDGaHOikS&l4B4p0cajEipRELbTQw> zOt7VuZCGWplja5*p&D}Pri;cY$H|Y4AdS{%4RdcU2{FfJ-8XGYnZmv8EA5CqzBK(9?29Kcxn*BcO9I@aPRy#JeY{YQRy za{=VF|HLiJq0buND7n{vtK8B@Hs=TX0rV5c)~(41JtX|NzQOChE(`UUrR$;#gBPBZ zm0hP-Z1wZn$2>Ekk+m z+i}YaM^rX@QEh*46K(~(^%l^m_n!Y@9C(NmfLvp?W+UX$JfwWX+mzU*n9+Tfd-^<% zg*sH9+;7xaaU^W>PV!uKd{6mJ5y1e zBOlrP;w~T!nYn;%ET_cWg)tbXjGAHf7N5l{F4W3(^e#lkpo^?_uHl#WoNkga6r9gK znNZTs4r@Qc}9)u{>;zN_>ybDy$=S_&wNFS#4eQ^V>%K<0(N#z13jY#S^Ex z)?f38T)%%q0vB$`t^+2ZIiX2Ait5baI}bPWn(m@r_0eBNx@TSey>OV1aPI`%vqHb_ z$LXi5oUZQB_rU@*ED=Qd{G#6#H(u%2`S4 zPl*a^4d$?D_PSlHo~U>u-t_Rg0-)D}BgKy>yUqrG8mTkgDJrYc{X*UeI=bzOa~03q zdE-*Ui-MBK&1k=TC`XAga1=Vjcy4^k4F1Q|hJG(vkBHkIrtVucZhuz(Ui+1*14E8a zJus-g3t*k#TLmC5=|6Ksa<0!bKaB5*-wOGRN9;5CY8>KY;;5h*CjZ`b^HGlo38=DHPL*A{dz~Nhv)zy_@Rb&!*-4^&Pex=C_=>m zc|^Za?K&yX&AHkKN&{QK=a=W*->W+o9E1V|!t;+)%yECE0iktMl%56v6Rj}-y?X+FR)-Ky9dtlL27)v)@MF-nB_K< z4nc-WDWa-4xW9u8dq!};2+ByC$!>XfX&^9;HN!lEZh-jq&+C8eN7(V(-K@1leo?*8)gd^5u!5Ho7h3Iy z+Y!sQ?gB@k^J;7b?Le^_0$T+l>9Jd>MP5)}bjxHKto5)~(q`3#n48MZU9y~9aZ!AP zyNb+}Iu4-*84Xm)TDQvYk(Zgv4+G_nL^+)hfSr`?4CxnyXQ4Rdn4!_(Mv&M+u|$uA znCApDI5+Glmg?OIhNwC3ZX`M-oi~;m*+hfu}I6m>^2WS-P;-7<;^h; z;LT;2h_{ZjJt?DKHsa{C`VyR)WT2z*2BhPpqJ_poIgK-$lrkV0wRc&4Np5XQ<#1Ri zTJ98+RTAGi(+tIa{tg@sBgVhp{^)~U6m}WN0w@f>X0}RIncNkuA=+s=i@0jv7j6A< zu^wg>jaV5>?sBVkHU>0(2vpSCq)A&{A8&VR6mB9av5%x_+Uu+vC#$nj&p6Sd<^XNnO&U z_1pYcny-pPJ3skQG0ox^>5C0TFb6uc%g6=%!LQwrsjp=phsf7aiB6nVl!N#iqlyp~ zf>858PT)=Bz&TJu{bu!ajX{-pcUt-`U8Bz(tAvSR$ObX&X(x{Y%pEkJ$`7-K*dbs` zI8+D+p?Fbime2yXKox`&{>A&pW5WJvVA;Ygms^tdGvQL8()U)NQOkG`gjTN1i4-K7 zexR@*+7?ocyjD0ym%BCrcI;Ppe)*Z8qm{fwC}a-6HRb4WMJe)zym=u=nJ4~PKdj)~ zNs_rvqJuo*@0;(UOBvX*9Rm3g;N1<<9L^oRbca;=$mgUl( zN*~=DrzVPsMP({870Gd=QrB|3)-PtWB@fRZ=ERn0!i+B3?r4TB_Qtp%Ng9TU9VJ3J zCDELh58{lKi;jw#rxS7yy(`B7_qXKkSm}qsku@1v4_5E?35A|ArB15$CqO?XEb~iL zIs$dum(5y7rH3Wq|A0l~6WFS+!>y`#4S1Gx25t%C11_n?pOgm4)v};OttT>d45phy zm_3*WjTwagKAOJc|F84zgOCSy#&hX`?>8H>3vwz6 zE29+IYv9vz0gp3mf*-$Y?i~=rb@(d=3En|Ql0any7Y8ljc;~}cNh4H!eUoSqCh;~1 zd>kw84Xp>}?ZZX;%8iOYS=d%bHW0+R2QfY{YA6_f_t77OA4FVnp$w!dA|acdQxy8)PVBC(~LK7GOCaFpLN-m z-oGV%o8^37UdKAtOSh$;b;(nO0|x>~y3}_CmP(EVM{(_}QmiR1mRyks@BQj&P4C2> zT3?gZ^jtzk?Y>Ozs`YMXvEe%&#}n4gmLK$~DSDiUt7AQ1bkT=}Om`?ln*w;{4xXIJ*9@uVE(c60xBnZ9V~(iHMlasx%YcFs2=&;mCC44W#x| zhrcgeIek37?O5Qm4pfXmQP{RwR&;~Q0aNBLu_a%^BmbgD-q~Gr@8bw{zh9?&NRoXq zkv&Z=>2*ggvU)zY8x)iz{`(-(>Tei9@9ZkN|8Z3RkwK|hLSFIg6I2IC#MI{rQ&)fj zSwp*&`P#Xy<9o-HYxB>)KF-o^mTHpZ2o@arc7%LS5P9aLA?NEr45K90SHJaA_#g=4 znZw7fTX7~HIluP8Z{^Kflb}?jO4WnX7HzAEA^|`epqM=NJ8xm^`@%oZFTX#=Ye#+~ z<$@qeSd8fh&z4KECmlEwkG;(N`sI9L^txEOg9GN8e+Q?jzUQ#S#pv7nhC{Y**TgD4 zR-I~nSY3s%nzav` zop)WH-~$H8Tkhj{u>k&v{cGjvjv0AKb#mf_JvDosxU4p-E{mpR@tLN+w4`S>K_3M>IivwHqV;?wpcfOnEHWk9mC3`J}cM zljFV-FdLLiT?&;Ad;YhUZ4Ne-xY7xXOjz zx(*8iW~mobV%oc z^L3A>GTF}7^di<&mAH>mw(d>OSNX`%xQM&HM8JL4s_1OJx3ZsivAEtfTNPBTK}cq^ zBsq zFQ0SdOkQnTk?Y(TEUjKF22wb`yMbxn-yuJ~wx%)$&9ZBOnK2YlRY`tN-J>>G%d zIrX$Aku!+9PFgAvVf|!DZN`GWt-$rbp@rxv9DLu<@ruOE>W<}BEATLZ%USdY3749q zBp0vP8&i1t0L(aKlgIWFe1JU?-FGld-3-o)RrgOQha^f8Q8cg2a3n5BQzaZxz?-=` zlP;(s%WDxsX-UzHYj-A6t?wa7G83W0#K(?iK!VpH5oGUkKjU)94AGcE+l|^Gv&)e6 zY!#O_srdu0Gqrsk~R+p%%oXHtynH!12Q8v_SmlY7a|9Ldu zlp=m5cZTe$r%lHcXdheGvk;c=T(H~wXlqKJJddfje26Jo`_&T{#!>*@7HK8u@|dn@ z1w!p(TB)SGYOXa-@2j3p52=T$SdiDZ_@?4Tsj^xp1}=na1WZO7K~z>!@4!Y0rE0Fw zTF-CUJ(jIHv8sHZr@D4YUs1;z4_|xW!g4c>$iAsLR=jgb(P3|jY209}CijFVR~`nc zRAnlArz)$TA+)-sqGWj_94zs80cQ^|Wmb<=lqzpt9kI{kxS|Wq*gP7K-BwP{U^=6U zOxavIo82;DK6!!cjad43JwoWtl+LHRud6cq*a(|OQzqy-W)yf3?T1FK~11zaN zT$Tb#4koZf%@cQaX4Q972x6ZV9=xg4Xit zv2LY|{9HNmzR0Do+HNEJy@);kyyV)7slR--yT6>#^$4Hb4;=(s!SOh{q;3d?KnHY` zUEw2QE(tIX`f>lc@3{k$a5%AS{A5lbU9gxKif6xmh7dSY2k*VR`T#?6@{3!In?k53 zw`VJ|8aoc6qh-raH`64$e*dXW@;V`C+JV@TpEdBZQONRBBm>Kg4%OsW18)@)69eYt zZVO~ohi81x$;b%~Sgc(~%$#Mql)5kSs>ffyL%08@R&q!9$mM`104z6_aJ!dWi4;&! z3yVA4!r23NT!s3f$=Jmpa$@K1eroqmr4H@;5!KjJH+11iL1mh^YISYaUTfV2cLVh7 z+eO`Y^8MS#=b&MbDgc77xMJKr_57B;ThfNS7w-=Q4w5JTWgTY%M3}`XMcyk8~Wpz?jiIr1SiPbgazV( z3!HHvCL%ueJW3DgBD|Ptt$O>OHT(x4gq}M}c^ij?g?w+`bGoK25ga*9CMm97+4ZBk zF9jd)`+w@Dhe76gd)kDV#R0L#LDKlt-07^004hM$za?LEH0oxW`8!JZO62>43X>#= zUXYNn66)MrzKiIg zt>Cw~EtiCn0EB+wwS_bbme^{H>P>WlLDHApS3S+E-z;a%0o6 zdaJGz`MraPszF30@zC_hAfCYZTyj%BPVT?xI`Ne$ltAxPCYVQ04zf2EqCw!OzBFfrZ7ZYr^ z_NW+#9*ei#*5e}{Y#)A)ZhG&0wA~HhgEuszbxU>dMn}Dzk)mQ7ggQ0?l|1pS4OOXa zP;*k9+tso+2-%)yFkes)3fYr8$a6xSk+MW7{1{86s z4p%f-Q0QGQ4d64o|MiYL^)jZ)HlNM? z;UXnVwU&wE_f0{zaOy1oTgk#Rq;41@kz>s)N9QNkU#t|-1rC(oA@Zg zaDyB22+a5}fZx#`AII(*NISY@$i2vB{l%b?StR9G8NI=Z39xjQo?=R&+Ou(DwonIm%57r-X1gB`uE=?(ypcM*A zIF{%h7s39brnHr$>bSmvASp@-VNkjOObM|Ay;s$uNBR(Qq7x&$fb zkW~O@vZza|w!smB!jNJEGkn;pqHepVw`q?RegyIVIP-}oM@D#9Y#UoCn#GHM3cU*( zr%D1C?RuK$6;uW3;$8X5ZKnp;x*c`^;k|Y4EqtI_4&dbPQf11QH7l%_&rDpA|@sH>2Rg1 z-0hU{`Rp2&s!Iy!x-)<^aGbstsU<33F1ax^Xr+}s86TXvU^5upZRKNET2BP!>V5zV zr#RC!Xf09oXvvL@Yb-Ug+wszjIqSjTKD!XN(sC^@SN|iBa7Uut#^zM_1Yfw{WA4f2 zSzTg>LHzOjl%hm5EBLN(MaXe8?aHT)iX%6-Mf0%PK|gELZ{Uka71m{VO?B~jv}I8B zZUrLvi}v(3==yb0u9Ud$`g}3{4t*y&I;*DvB%`O5CBiLn`5^*KeNNbo#qRmAoVx3o z?hWDdz1jNf6I%*d4L37A8+w`r)po`lFKexfp{RFuxQ`Xt+c(y@hX|#Wr@^gtlX~sW zlzVu1w94MG*y>RRB}-W!L)GkPcONYlFILCn%SP8v8nioP)gxm8HnzEo-i#6~59BX< zqs*m{7pYv1isGM_x8zafmp!%pf@NSf$Shym$t>2aonUrB0aQd=UyQ8A{~^deRb`)e zq8@wGUi;A3Urk%P{=j?B_1N3bAif;J>Ga<&6r>@m3BUW0oa_KOQE;ytUw<=e6P}d> zEUdh57LqRd*fpQdwR`*Z%WGnqdMwEOs|xFuc7L3N1A~fqy*p|v%DcsUY}Ogt0a<*2 z)Fj9h8Tn`xt;CG$eB-od#&J(C%Dc&AsZtkko}7=Ey3rLMG^l+r-FPF#gW%CCHLkBr zE7l+aGmJ;4*IEk>FQMHY#-3szNykC)D+8uS_#a2eADw}#T!22{1>ZW2M~6emWr^|z zf(vzq&RkSc67uGObZ9-CfpKd_}$$z?iReI=|o!Cwn07!7_3`2Ep??rn7 z`|lq4W(~c9M0hv@PG*x&WA1=Q=aPz}BuBy+1W3q+BNpjf^?Urg%3S8a)qX z@TxTC;6x`J&Z&2xJq?-kDF<-?3MbOoWO1m>US=ou$rxY5gWex3TaCpS&asV@b&Bk(H&D5_K3|WmUVIfP)8& zdLT>lMzLKa6nxJr#(uy$cko ztQ=MKmWAh?Jf`ZqQ=t7@7{^?nmDR!cw05K{0CyXG*@!ILLN#^UE6~+t`VPD@Rtr}I zNmW!0|GRrriEgZ6KC!(TQN(MNwgD^jpmCAB67+JZV&@l<`iFfu0CY+w)AP$Jd%0!Y zjIpvplDj<9{rmi4kmTaaL)f~A2-}{uwo}son(^8!raeqdF*8jv)45}~f6X}K;PrgV zTvBo98qbc-#Jav-_O=Rh*fzp&ykoizs4TCAvfr)s|MtKxPEYdfGh^Dzv2D110JJ4e z03Z#^S$uyoyUFjZX#ya12QQ5!g%#6HSxsIayce2$fQQ?UqiP-pB<6zYnv>7)1+ZG7 z^RJGR@J`B0xU$UB=*^IR+7fE-%nF;}hZph24rG0w7=@($WFGIzHM8Eu6 zDzAIqv7v>aT4cn8dCxAx6C>!99Z(dJj|5UaU1<23tK zMD%vjIVPY$dHS1v<*9i5SQvjK`)N#jj;+`yvB|!~1xVy#KnUc?TYoToM{du-A=r-xm?G(pMb-?3SXSe`J1nVH!6u zKt?wx5ju6>bp}y*Cjc;{a)xV#XoK zd1|qZS52w}HCo(cGfykg^Q>fYYr_o6JI;Fc+V+C%S!4eD~p9Cd~#@}GPqNKlc5dO^ttkgkwV?rJovwT?f zTnA?R1CTT~zfqt{8zWIiu`7)})YhF~UAT1|#A}1ddFodyU&sn=X6*X0(Nd!R3H~ zb+z~;?3~CvU4^q2m4$O}>Xj3F**%M_4aH5CqE9&f2)%qFzGWL$i35sq@jpfZ{5FKU z8aroi?zTC&l^12jhQw;`vmL6`tpi@j{eE=3t87!@IFwtPA!XP-}GBvQ(X|w#IT?YgmN7(~KH6zwzGEi2wNer2MK0p7wRiC$M6NL9!>->D{b0#hHiSMAcadLEL= zm>Z2Unj`oUH=zWsCV?%?sfU4eS#bH18%YmxAwMWWmg%39?zYk*lQ?5Ng=!;s&2%{sPNs)OHWP;NL@{bg^kMC>T3b?&>5fV_h^$HK8Y{#7ClXCyYR(l5Y39{h*zxF41I& zO;*d2ufy)rUUEiuyPk9LfdAXtyX?@KD8fyJNvY0Uh*<-t@0+w}U-lglOE7&Z|JU0n zNJ3kZvf3oKL>0!I>1p~d!iD(+bPCMY`Y)C)+a3|(%T+3yA@&z+6g|adBdP4c^XcJpAU44$TkGqg) znS`UTrTpTpm#R`o0un%j+bM>FeF^Bm&Et4n3NY|~Sbbr>d8bSr-prQycV>G!-6{>6 zy#i}?x+OZI${>cFFH;#mlug6q3b8y^eu!N1Z+YiS z37%U~ACj$)na`|WWiCWncMqce)h#dhKZ)DHkKRen2z@S2xPNO@!nW=A*S(UoVY=zP zyjOvfJ*CCsR%==x|JA--nkn%&Sg^&jv+EejTWP|#U%&^G1pD!y9(-W{o`<1Q=)bLm z)?cusVCaTRl9=tx&O=|ohZ6*e$Vl*W*6GT_@=~Vz5M%wYuc-}(t^w7AHt9c*n0No$ zg>4~*Uiib%c%Ya)%AKJAj$k+oVFnVJOM4d3n0WF8UEyd1_lE-3RoB-}(S+IcC=_Y4 zJVAxw!7fQ8%I+i)Gb6lLMWnp94SA1)6~q!T_PbI7j6Nb`T? zxBoCermY1vMv;ue&&P(in@Q7=TV`Z8_Y!uRyy@_4GA6wORkYdt4dxsiS@eNvQT$u< zclJZGqVXskgu^z$0D1-i&wqNgD(KTI;E5Z0qtHc!sL>Oj7^L0Z{kJvfr4-G5i^WHC zJ5*2tMaG!6763z&2kvJGQd1;7xFiWMfXmNBWM0t*<(Db~4-hp|F#Se8Q2-+i>%(`R z@W(N*m%%!mJTHreKP{*_M>ve>^|*MqWcP&@1vS`N4V?zv%V;w<#Z&W;FH4zP)d)l` zJ_BLv_Liv0l?x{3h{oeRL@LVO>nYPn1Z+6I=wywF9+%XP1u&DkFrh7&%q{4KH-PDR z`Do80sibWJ@5@KKA4$aAHP0~kSY|Vrk4oUuTR9Rr8p~KF&qv2|=*=8) zD+;I4;474}DxxOGujOWhbojAX#I?@svFz$2cWA)iw~yQ_O;iD%$R`8yZ%8vJbBo+H zN%1G6ot*}!nttN6w;TJEvwtjt2mc0KvI0GzyG@}uF5WWd*W4#{rKZOpym{@W-O$W{ zFn%ZpmQu(~N8ihp$OEH{o^VNn&{#eJE|W&?IQpWwnU|MeqrLNjnR%`L^@S&QkfpbQ z-Z8_%=#i0+2-`ub`qsVtW5dtgL~C|BF@ZZ7sdDh3StYZ3+>QIq2ui4Wr=~kYbkuD! z@GvH%LPExlnx4qnD56UPu7To_FNZUz$0K-DaH#I8*^{amuY)uJY}pSyHc~)}6$l>0 zJaTJZwLPMkSdcx(V9g0;xr7G`GPr^A0gz5dGJkd0zAs06)yYj@85-CosxIjB(F zUZ9fK4K=1FJezA?re0$-)sY6{!#aK8jFBL5?Patxxl z|9Y$JKEK9~ag*=8D!>=VCV%dhS0sHN-FA+ifAU~Gi}U!DgU2QZK{R`41-f^eFc)ev zv&BC=L$^KCO>{o5pezeK3h;;&2`RdY*(zl5mk1qJ=%x!@Z5Tf;SW1#Cj7VJ7!UmaY zjSQU1LyvtuHhGZb|M_aS zLiwpQQVwgeQYg2Q)IiS4>Yu6|q?3uCfzrg^`)sR$p^LICnP#g|61KBf@* zAHE*|s9E2@_w$5`6F)xJH3n-JI9{qb-_ginnLF1ZLPW( zw2jzoeYE^b zZ@>pn;V=UTHDO|#VqMj;wxW`LwCeA_-fwG@*X(GH{m~m_)F^CGUg!GT25$>Qp%pXkIUbKJEUngzju$LPwY!zfsCM)tIN*5^fZ>I zvg=Z;GKq{Eja7F5Sdli-;z^PHh*r_LY^~L)fC8HwLuwKDcdNPd=P6j#KZUQ2U{8#Q z9}S;lw)1NAJI}ofxV0=T`-p`dnZ1Uv1BZ}m52{lSi3JSlJ8$_=JvERP0yQ*ve4{mC-VWz$A#@5yCq&j7^OEqhE?21#!LkHj-IhET?}a|(Nr@=?qaI0* zRcQ~NBizIq@)RC_p13`JIeCWp2~?MMQ9F&aBHM93ZGDv43(X=+?$K{(f@m(OfxRmv03ku*%urt*9*`QtC%NjlOqtMz%Mmz^|Wp44IDB*!IWTmBtAG$!+gkeJDNiRbmXoPbhNn@YbDs3C3<3$;QahaOXd!t+aH^(|Ym>V2XFrK{ap_ z_X3WN-Cy`>uQnLPkb!ggQ_JZVr`Vw$e6O$9#dxu7KswOlY;mre`-wr*IkYVRou zEp@z~9e`YpuUmTRctxf_X=tly_5N-9*JSiqG)3&6*}suKZXz2dVMO=pDmbwHfLZFq zePZN+nFDjH~0@&A^17NM6Xg4Pv3>aCg8^B`FM z&9fajlBsCb)~AUQf#?EoOaO6yf%H0Wh_#{nPtr{30!8?kMb`F_dDH@rE>r3lAPGFU z9p;#IVO4{{po|$mD!dXJsHOK7n0@$JVG@Y6>T9Eb>m-Rj9lDUZUl{C>AF3~M=4^v} zY>6~X-YLAA9q5NiC&~L&ck+tT49v?WqYyDb_hEtz-qjX<}c=d~98 z{rqpchw{n}&q`&V`VAuWga=TLyZr{LZ?)<8RW=TMhsUT<9c?>c^v*nEblFG($bC6M zd3)Ex%+Y~D5-6Z8Cr#rn;oDDR+D?&=ht$2B`r-fQzlVABer*2)L~$KgG;7wKs)#~@ zwjHi)ZSa%O<^yi)w|9e4)K%wjMpWK${&a;6)YruQO1=|rd9TC3-;-AIntbL&WT1NA zvr%k%qD!t)Ud!ehUshMZ9t&+WgbcPP7;sYjimvf1;()H%(dD%J7Z;@0=pe*q90Cii zIZhi}#scXGHuh}zniai+3LDzgio&zSixf9rfdV*ZQmt1wB_-KngTQ>lVR>Ak;xg!z z`46`1flu9^t|}X{2V0*zU;p$XZpik71^KiP&jm``24nI2TW6p*YV{vYw(o!TEp6bb z!D5lo*o;ud^kW$Qmm9o|^~l2A9QyRM7bnGIoyb!+69NEjTm(m@19S?mib5*|8A@^y zx4C8;9RJ4nN~O3LfKx8wDNhxtVUtOTtK&8Mytq*R8kDf%u;Ar5t&SF; zcf}fP*znFTs6oJ%EMxk|(`xW%K<0E@+b`6ZHF!X$5ddt>arVcoS>s~0&VtAANAXs;(>sDSi;?2V$XUwch5p@cz$ULV5rFBrWv5d!fY+4$KVZ?x(JblETc zt)#n}c+CH@xs&kVq^RhDrPsjN{M$Mo*_O#56)NPb~SS62F-JghAaJ^ zcXV(Qv@UZliB{NT?37QRat~~+GZ5slH1Zym#t)uBfvc4z6wn5FgF7gI=FVyuA1Xqz zp-{}Cn{B1YVfW$>MWHoVnZu}u0A&g!20{dc-JU1`HV#96V_(52T?YYgaFi}gg5SFWuDK@cx%%EiDh61e@nQT!Ss{Aonh((B@^!pzr}Y>uLvemAIlEmE*dylI4kvo#4Nx=-BP;#`px=OU3Y zcDx7m;e@83q7J?#@{W1Xp558`h4HcGXSJ7PN&`SenrI!cnE!8DoK(p^41!9y`b z6#06bNuAZ|1x?Nljh+{jIB4Fl0`1g8N{CVcflw}?E76j^jA88dZ#EGgiRjPz#L!N! zp%yzI!~7xI`ynRKN%GNyo4f8O>ArPcpbs-Wqt}r&GRRItDc<~-8JH7|-1!b?#z^7Z z#CaWFB4)&zsemf9^Qqp;C*2NPoYs`|Et+i!U?o+ zw__8v9v z+3rbGj2Z;K@?zs}_v1>K0Sjf_TD13w>DYGXW2I()>s%&{lLqDCY@l+RA+&eVxR1Z3 zyBSgh^{^)^ZDHQ6dfSHqgFxe*j~1yP2H9j5pUs06z)n!Yb468+KI0Dp3)z2HPM~_6 z%>Ihaq$b8ydkqfegECI?t$;Iy;&-LP!pKnO+uVjPgzHgAEu#4r0?p$w9feWGW1+4l4~;|@-)%#caVo)(w}b?;9-@+>c|_q?++Hg*W-No#-D9Ul$) zM48M-$;qy-p;>OZ{%5Ey_8chP<=lXZq6FddIy$FE1@O!(VEqKN5>I83Lt9oh?ECkXHFstU(91aQEq*h-rZF$dAU%#GT8~-fh@9 zv-Y~s&Xo*RhUpz|32mGGoS>@5Em|wrDNh%egnqGMS~Mk?#g4Oy9|4_X;l*^=}%ZR04!u} zn}+XAmA}mk*h3oQ|4RVGn8;-NdlxZ{8abD}wo%eRLVHM1FpWcW&o;hve)HL0I z$>WYZoo79fTe&zIR@2AGQ~(j%v9n|E;{!T^DEzzYE>4iutVbW=oiH$td~_KbFW5GK z!`4A+nf-pM+oc$-N1QLwfyd)`H7Hf9M#?C^WGn#_C(fIQnv4AT{nO}d39)@nB zZsni(r~jnPhd?{ZyH=RO?i^^Z5WfI~CtU3&qjfj4#qVVZYes>$d_WQALVx>JD_a7k zvi}TeGg_;*KwY*!8|~CG(9^n?BO(fr0;c*bA_1X>W&unsT~{C1)H_yD-r|u~{ByKg zPIaq@ZO;C^*}lM+m|I6~vbmrZUlREJS%3*7W==dfU7@xYR1bic<_;1Vx}AOeHu!UsI2^| zky=Odaaumz!HJEbhAAB#i$X%w$>om%pvjxs42?*MjzqP+3zMQjtE3Y1+24Ou$fhRq z+4TweNPTNI&-QOXStm*74j?&F*eKOS)<>)gU@<-QX)sLkL&m&kYPj0Unqd$cB5?O_x=x(j}{w^bW3V(^c5dKB$2MI13T-2d zC5?~hA?GF4=IR||WC~=;lE$$*4yERy{>Dm_+`nGI5!JVmgh6A|EGTrvy;XBr1y6lX zWv%hO3vPXClrynyq$%NW)Ch!2qDH`?)Ci6%az;R@)VOuy;t2Sa8iADjvJ8SrjR2VT zk0X7l5fsxc&@S^y2EY@MjFZgFDyu;KNMD=L1rVfx{U(;fa-s6kneUS1;Rl+xl&7k~ z=qUi#r)6^Kh40PD2=eCM9+l(VfJftE8x(z8 zciT4nBvF`Iexua!gXITG0DW1ei@2r)g-y8B$`wFHmu3-wX)lmNLj=`cCD;q#R z`waqnx5in>=;jt}I_L6hN5zCsqdDPoYV?3Qv!UYr%Y}zv6V&QfvHp1!+}LDc=!>_3 zLQDmyhH8B(TvcC!HzGY2P1>rsVln6;Zs0w#El@UX!&969v-q3q&=ykKCkn_AX#J?J z7V`|xmD`Y}_oHfO(L^VV`=vV?DmVRc`|jhJ_s>Yd_Z-0e13KDE>=M7+6AqwRm>4Eo z@JSUisyf)S>*?7p!9Zz>4b_*$zyy*eNd^Ut9)kmU{P3VC6P|!M=k4oUhKL3$bS6Tm z+E*!1MN0?C=^k3+a%a1j`3HHL!DAw!!14q_BT<3>+yraa464g0J?B1 zF~$!UOhl|2fNx|8$zJgPefM3=UlCoT{ZjIw+RR)_LPT;!;?66%=+Lg3hD2UOF795l zD1o-tBa#HByXi{gW_)Whp_eR2x018)^Y)X-T5+ON(^u^e5)glfB>9e!g!&ANa*-Pcf<(F=kTL%czw00Ih+@w5h_#D_;!c zOS3zse)h}pB+UdrmbD&1zP$mUs z>!NXMo{I%aVuDLzie0(Pd3S>*p(7}vm++Suj=(8Z7h|6Ps6op@xeumJ2CD>0wZT8- z1Fux_^gf+cK#nW5gquB(Q)5lLRGd+yZ|t61{1qVwQ-TRIb1-FcGaQo!EeYkAm>*DO zVo&lz$sSNLUE-u`O8X!T{h)PHo=Jn2f(DsJKP*ld5oAJZPHR3=6L$Ww^D0@Jil&px z0$yJeH_+rwJW~8fuA4kg9WVOREMwshh)y`BPR_|gEir-8lC}0umH&qOzTLmCC1iYS zW(Y!gVtafbJNKs6lfEbKaH;?0-p#+V682-Aq)+fH-sBRN`%~ZPT=$)zbvI9Pc$)9< zt)S3Lcu*bdeWCJT^qxVS>18h*T1f9fH;F*enK?(a1L`j`$=s*-V%dA2 z7L46j310LFrrbK|1R%52fxLsVGG>M%Y_| zVP%d05pX=9&g4P7ong&|6(DJ*O=8 zoUbujcsCw^yCb=VNR}Yn=4AphxTja>7JvXfXxzP1H~>c8sYi9!36i`S22e^lZd z?zvA3xT^evoQ3?vPtOTq-6Z&Aq4oxuGASONw?{U9uRjX*>w}yaG8g6V=pfm5lgZ>(3yad+0rv+6!95oD zTR#J9tG9%{)o9#cg1X8~6|l=mGqeHLuEd0OU;%uf$1o;qs8$Sw7zBmn4cg)i))Pqt2x!Ou=N+fu5ATAkoo1+l6U}^REd$6ur-{c2pmC* zFFH{~OZ6b4)Cf-z(^x=|CV(>J;~+lYG&PwEFywN9&AZfq=MX>qNG&=f;MVL_j|g)( zA~BExi>6~BY#rXx6I1XSbQy$otpYE~P9ti;{@AXdJyQD%GZR#Bn|^0oYK6 zXne(*@yp2dv_4KA7-!*v``NZI!N_EkBdUf2-0BQqjH7Gv_}a4CO94suz1&{$8q_@A zQxbUHIsvqGSn^L|L|!$C8x(*ozM2vq-Ikd2AM*+$O}FZ$|Ho!x&#Bk|I2|QWaX^2! zx;~yC0c8DWmp*SZ;Le*#TL^2HN5z-c3ZzyLt^=I$aZp+|@Fj|FSr{?Y{eADf^GoNW z<+5dDdc&8)NA+qA@v~tc{hMVYU#fb()*~|RmdA41d?1R-P~A)5{x2EURc*9>&I4cW z1+oe$je)9=C?DgGL}e~ms8dzcWSLgn7H^|1ZxVD^f4OS^{PpGPmKx4C=eK`8s9Wb6 zIl3#&MPKk(Ka05>_79uStQZu1J8|UK5cFcOBqk@*XJ1kKtRE#mF_`)|U-si(sG;jO z%XrxzbF-ZmPgCCN|J$^>?05ojN&^c`BR^az*NgV9rBBNv6G782mx*I=O%3U@qiwb? z6ajy27oW#QHRRhyIH`vE~ z_%}Op{uaB1$jpgvH@k1->D9@kg{MdVxj273_whjZ$98eTOgvNnYm7osjX28+@_QmV zS;4a$$PET=H=(HKU5Bf0EQ2=tO77P+{K(Pj{&#~h`!haWVDF&IcY!lc7C&7~&pXQ_ zl^=frrO;7bb>P2YRjPxC9DXiP+5_d)SGBfE0PcXKY1aG~pAsRhRnR)=m6RH|s+e6M z97<;WH!H}Uhr^Z|eu2)fkJl&L7Agaw$5YrA#Hh$7><23%=|o$#)iz=D(;6x!!1MuC zt$*LO$KOOD4j55Y1qpE#mVdTGgwjYSS2PH2tXd=^288`dmL>7=2UkIJ9ZezM>_@}EA zbFGDD6Lm?5-kS}?QIz3tfxdB1P~Sq_1X>O3G39OaJM;;b#`?C=ot=@H>%QSf40=0J z>s#AH{j2`3R1XSUXF&6`VEq*9mp~6op;P=I3UyT}xVm}bG+z6xt&{&b%M|=;xeWhZYS*}Ht(%|$3i?EpB`wQu!itU6KE;Yzh(F^k;{&z`${eeB8 zZ6O?OjVdgORdj5RXN#a_T`XA`v2=nX6VHA{B-||rRvY%;0jOBSE=Wp*MG&zEYa)|~ zjXobWNglsktP08heJ_H-J`GVKA!--?dOuVIlE#K_x{WIShz;K@3i^l%8tW5#QcmQl zaN(tb#{Q?r+?0N!^W(PJATqBMJLl*E?iJxno~KaT=(hyuwu(NG8ju}hLlM3Llxa?# z-l+Ja+NqfKtL^T=U+2S>yoOo7)@k#WsG<0ON4i4~B}EF~BGXf}qD~@xHSR0tN3wDQX^gKB(|dB5{Ra*M|L{4i$eG zdl2LKmLh$28DdPb(1@>sLuWY%|5(q~`$EcpWbB8B$Y%4gfc%%}e_~Z&0sk|>zi(CH zN#pzYF|R6Q8Du>H@{FM>h|XH%kJhRC&xJS0T@b!c@t=*%Brp4YpOWX~%^CP>AWy|$ z#^~3&AYVnH(Vz_lhvM+7B774SQDD=Uc63*w^66Sm-O|-_R$)$n(SJ}IM&cy-UVw)x z6qN*)Si7pZ;lTyGMY#9-Ck(1n*#FB*dU&d! zc^j&bL&?bz1+{x?kt9KZYJ!7N^U^wXs>#%-N1f3xGBdd6vE0I?4v+GOM-=!!q`^>!3Spnom+SY&nONc_hhJpDrG$DtLcce` z#E>ot?+@B}sZCvK!w`$^ZzP0ue_*4~z4+*zsp)svixfgw&r3y>?xPRCc+y~pNL!fy zs?Vd*lX_j8)c3zuVH8NoPwgRx7c=UBVz&)EqU#rvws^6YfjT{$_jqD@yadzL-%*z@ zL}2j)wLMr5^=ODZPT^*i>^#mL@L<~$l)&6)165i zv3tlDgk%}HvP|kYX^|Oe1pd^v!xSJo|9Pp)s!%2hSAnc}88U`PP9cPS$*XD%z|9Yc z$=ce*Ak9KvA=I$z3fs0nB8@X_W(-hjvZIG8x}qK$)1Xja=^`i=j+u6HANoi} z)nT$u+@Yu)xd~u_w!tcDH2{&^AFQO-0MK3u$U5L<(u!Zs_cHJOl|2ohnNNo;Pbz$2 z)!eRkxj-WmCjip?;FYU;Dr8%K$DZ5zFdG12QZU~Na_R4P=YF>mXA#QI|KoHoOR{UZ zc;F)OKjw|M76G)4@m(w4LzJAqoW{`dJ9an0_e`}RAVO|>)8X!VLWR$gWvVzg}^a2Zd za4-I~*nkchD=<#`c^u8!b9w3hMM2qTP1-IjZ7{%ntw7<&=Y_Owl9>NtbwDG;f^WBH ze+1fqNSATp{_ujV-IUqdi-F_~8ab%``Is}u9Q8hf?(+KD{6bfeF8Q0|x0@#n@ad0G z2~km*$Sksup9hN@w8nfXBBgAY48pVWYFoQMky&5+)t$o3s92$dW-egGHB4Rj#EPPW z_NK9i?K6uk>>b+R8Xi*2^izA2%F4kZ*Dj;6Zr%98nBwZ(-cdj;Po~}95_xmg*vp8a zZ7(7Qn^0TUxWNrHJIUw5A)V%Mg}WErCwI2*phXkS|G@}T!%9BfO1G0-Htov?z$s7z z5b}lM7Z9fmwX#>OU*aXqPbb7>4OV7m4z=nm$cbtrI-lQRo2L2+Tf~W=D@QkBlN?8f zOw+^D%=8#XZ|5XOaUBeh=CZU{0668<$)4IJC%JwKJyYvvqS5p9bJ5D!jCJ?P^8emM zz_$qeCm%mR(7y=YL&z^ceS%M)A^vM5{F20X@%goPYxm_n0En_@i95+5xAJCLv=&3< z&!Pob=m~6Bqs%6{nsLA~p$vMj_*G<;bxFDC-FV3JKYdwb|h?`FDqJMj#?ooI&NPAK(nCy|=B6He9JiDkSeP?XCe zQdP`p%D{izPD8Xg%eAcaMwtqGn}74fQ?MeWaI!D)1NUwaXz{8tVC+s5t@I!oF_#xG{90I6b zafX2e71=3HQ9&?3^sE7lR_~;8bH<)VVkMGOH(Y-E!}a>dpTUj~!p?b`TVfC@`OeXc zm-YyEd=w;#ty6^m_DZ(QWVH2e*!V_Lht;8X4Cj9FflK+wVHoes?4+iKn&{)jamt?$viPm{(MR#f}LA} zpi23L!^Z5)XnuogtP$k3J5?Q*-fO_)BJ>dctM`c!+z5U;8ZdIaJCHs zkN_seW?lp|BX{TDzP#1k@cDl++qiGs?8XZ;$ATKt5q*H$)eS&vytE*I;lH zCO7QHwkJ7H=Q4zb1iKAcS3@6dH1(xaC;#p&bh9k~XPiA_ETje4H~FP!;X`6o+wJ>V zSphd;n(O~INbb&dr`szq(^8n-!a3QQb}mOPsCirQZEufkhI)-(6=z*rLv1)Qjh1JulKDjMH zp*?NqJ2=XGj6a1XW3vsGfQpw1u=O@BP$o2lGcA_R+F?HBen2CH-+z2N5qgqLax>@N+ydJ!Vg6i$z zg}I(yVnVyqDOYouPA$rc;LfSKU}5)wugWE!S1bC8>Lp@lh?blrdAga%C@kUIjre_( zwvP#;7ZSIhyx-~z6p;%EhL$xUt}ZRU#6{wNeE(JLVf&iQl6f(68O?0gCa;i6o+b0$ zE<2y&tFkKJt1^ezO@!K1t%1$eGEm+rY&Jor4iw=C*`Cb_C2 zvMMlC9!ynKST$@YQ8!z_vI6$}a#C?aws=UWws!l^9AyV>6!ibD{gQC5dTZ5zR%tHY z5+0^tI;Cm`X3I1u({8D_Rtk~|XJ<|s*i7rDCRUbFjFvD62JDp*9$lJ{V7A{b7-DYW zsFstWzhpis2&a-X!wNG)?L;pR@!!hm&E0GN2QbIo!Adqep6^nHW#{&54hR{mxxM&R zBmyx3!~+I_lGHq$*fU^C^x`ZY=AR%yvac)!g=C{{x1X=@fOB;wSzT0iCq|JiT9dhY zamZoI9F?Sv`TXQ2tuU{ml~DONC@1(-?gqO4@vxqQZ6 zDY(pky~nUsL>AvbB!*KE^yUnY1 z(@L6}pu7&ZdlD9gAdi!V^V$odPmlvc3CRw&oq&xQYgVo;1i-B;=}mI&YK}GDt~c_x zKJ00-XE;hJ!4wiYiZzWP8jAa0&{3#Y&UmeWv;`TAy#sipP17(s@y6yx8=ISrxiL1jZ6_NW z8*Q9yY}@9>wr$%!vv}V3`Tqa<&N+3>)ZJaxtgh~^u4|@my3rbvr}aJ0iYfVohIohh zMW(oea6?4Wz@cgJ)m$H{!j7R5X`MTnoJ}O zR-`QEoILK2?F)5K!Y>tHh49m3ZC)ON!kEUN4zPXFFQ=^^jA^-BeUUK8yy};y%y=(=8h_9W(o`>BU_XX@z&%VH(>iG}f;&FrqpJ$| z1mop_;Ef$l<6c-KjBdoev&(>M$sgn)ONE3J0%b3-+}Q4c`c8AjpM7+lp~*deQWxfh zx5h?yzj2cYX%JH;xbDCcOFN`TWn^9HG3&RySd6$Jl&z4^NRJL!M1nE zGJ$n&&c+O%0VK$?_c^FjoCOh9T5xL8{ z3L&v%iziGOpdXVh^l)!FCbgedJ&e5n*aFZU)g_kPp`qm}yXq7H{pKxA;&FhKsOf>s zEAnB{_R(-H>#E{m$~_`5oo_nUh}-AYMfpt&h38B5o`BvBPt$1Hir?(P{ib+u2J`9w=ASm$_iN=Ej_m z;}GF^p7E(Zsjj)IfZ;Yp?oIW!Gm`C zk>|=ZMbkHiP*v5G5s|J|Nb;2MiFv9skocgA;Zl1E9#Uu-T<7vF#XQxsHS0zXltB|< z#003WRgYDa;_WTkE(nNgf$cd_uX1zopDk~Op3XD--elDx^ZZv~$0Fs=p8!Guw6i$#X0%

+*6DpJT=zRl--|m_g0(S_AVNTAplcGWG~35{}U^G8UzkmeuX^(HNt%Z={G8{#nWr z9d*FbSg4;_JtF7$2@R7_SIKt6Qh&7a4p0w1C$5=pKwo#;EEz0qw>fJBNFHvjI)#xI z+#Ri`ICTc}pq@tg3Njp1p__%WDB4`ZkvbGY!ep|`&?sSYW^@qya}p^^lPEibA%jl` zAYXcpDp73(k|A2?2vG-ak|KYzWn*SXL{W656HSU8Bf(+BECm@#zKRjFMlHOt!J>2n ze$ydFXi-2raWM2nYYTA#MVBm0A(bCxgWgeFua_}FAj|mI!8`D(vsRfG#VUt2G9l5s zz)S|r&{n7X@ZfcN1?j!OtXl}0v3dfy?Xu-cJj$F(In_Lbq94w2g)Dd>?+Z%Ev%UE@g+goxhCSQGQXb1vi<8S)h! z!PdmU65Kx^(@>9jomw``P5!kh4@?Ese zAg0hdn%UC1wgCtlO=@~{cFw%b7O)4*#2NiWTR9_@Ua1g;|QjYBQeTY>f zZ@%{s_I_|H26qhW_K?LPs0w0zDL=S^4aht5!_chn5|4dXpa9)k%`HK zwz~&ukyP9RjwMiA8W9swdEqHgaO*mgh>le<{gj+tUDyzD6lTZV#+-)#zJ}$l!n+t; zApt7}>)C0-4ApdsFNRTIVA?%czag=P;t*w>o)mMHemfsnbg$pIlEVD+lny#jcli#i z88Bc+5!{Fj<(41`F*URXEJTl*NReut3`aQS#MK+HQsZ345ed`^GMwM%yfS-|LDuM&^t5^D(1GezMYo}UZ5Tk0~VhyC@ zZ3r4%{Mho7x_(;H6~AJh$XpBMe03=UE4TAmz`#Jy;8_hpf1#Hn$#n%0F?-grAPREp zVSo5Wyc2SDpjn-L30TLt0+&!`IF2m5)Ti)`g*C;4KuK%T>CUdlm{iqk8rVN;OLBIx zfoz8vdaX5`dv15qjV|y+#5_{>&~5ESg0rzihk4n^-F8j&VOt|bHSBOEm^TM7yLD;Q zE+=~NlWW&&I{*%ND5XU>IbvqIA(0uv$LZmO%60%R*gz%UzV!w(O#^r+x2C%sE@1$o<~E z%LfMsiW;ls?QbAz_CJ;5R@8Ix@mmsNL$Na5Q1{gF@mzjbu%L|=A+3JbAmtW#+X$Uf zO_H9oEbU=Mlw{a%Yt`$!6c2JikvABby`oBj*l!t5DPx4#?i~wD3|!KUAU4dud9u{+ z&`h%I)-4pmBo2%VAT+|NK(37whR&B%xuYU$;R#HP!Rn?4x!1tt_kroq^4}UKHD}t* zK4`QOTF(#=lCcR)aPhGpJfR27Ntbz1%w$hyqy*=HP3To)<`4)&@ZWMkC!i^Z*HH|yMb z#O4!ykKN!PIP9c940b)3)M(T)7*E~PdDDoo*@3rjK3_CJ*^-M&it1lK)WY+gDj_gT zztBR+n<0?}&|h(oS*JoRsh4|@&&n1A-qdhx)`)apdv4Sohep^GLX=t>Lj%-m2r*%j z94{i0z0)i`&>{dt^m0#&9fy04j0dKf?m|KlcvwyNjns1eI7`iv&>FTSRC9kJ7YhGf zmA;NJx|UlpP&M9`K5B%dnV(zM(39X5;U%QtKwRe9Mj&Bg5T+42S2Hjeo4B+sI7``@ z=Y|Vry+X;1YzRVP4BUCr#$_TG&}5lEvd=h4BCTxc&8#Vm5L`9>dDY4fSM{e7P@Xc_ zJWyQzb!8qL)HnLdj2$X}tqv58YHpw0 zmrr10u+tI zz&S01>qbT4(R(W@n*I&~Jwov@|DKE;jWAH2vBb5&fUo1V-Qq}E0I!}VUY6UmHSbNR zb3Q#x^2MmI;9UKs=^idfXhV9s8L$6>`tX^*^~=CN^$c0VNlARoe(uE|{ln=01>`8& zbxVs014`>&MABwf z?AF^|@*frrQ5$Y(gjCXv6Ps7-?&KJDg0{%+zNJw!%K8;In4|hqm(0!qd+XBievHK~ zbgd%W%cbsLJW4f!i*H;HM-Z!A0gnkD=0b2G^^--ZUIY# zIqUU8<>m8z5()=TV3FXD@ck-Kn@c(g7j3XUd(=NLoxFHcaht7LRwq-l z^jyBC2K;~@^vTV;YAiPQ)0Tl8m!Hx`ca}eY28W6m-$9gvY`0iUN9@FaR(Lq%%@5&n zXHT(Y!x5fJZA|1@-$EMJZDowN#$!Ohzc8BP`L3Py59yIb<3PS(9#$py^Es?4#Sy%_ z`37svjuXRuG9ME6j5GatT)3Yng) zk;-6hP7JhvJ2kx?VvXu$Ih5P4}=H9ra|>zGvj zzfFjS&G*C{u2&%a%tDMKX2sDVb<;xJtNe?t}?MO+pwn-?E zoeJ6^17K~1P*9w3oj}Q}^soSfZ_W&5nHG`QWV~bTu~Ne6R&GQGLB0Mo#hkU4Sb2NE zGwFy<@{1eH79T^Usd+2Zmo)&v=Sj%Iqi5v)e}hgelTZovW}C1wwY^aXT7~d!o$it` zY{Y$;ll+R!!clb};9PT*^f+F1qiOA!a!IiDNL{(MAZzmx(x;Zl=oq1_MV#^Dp+IEy zVLBBWSIGnFWvYq>e*;9ypLx{$#H2{IMc4w~&cj8FwkGz;cT4Hkpyx2ivwjt@VZU>i zkJAjYH8L}t{$)AeK?^3&484n?+W98FpQUUZH_r(<<%3ThJYJc~Bp*-2o@R-U$(jHj8R6jY zs>t`NTQ^HB=J#0<0+y89!XrnWm62v1-zo_I%tJrq@NB$9Gd3=W1k7yw4ww>jQe#lm ztal3F?Eynq7>HW$MhXO8pc`*st|1QbFUC(3`OG{7MHN-y=J&Qwf#!zEJ8ii zAW30ktJ_%q$^m8lY{+2e{LAZvsB{YGJ_L4!pYaZf9Mw&4AHLxUef-7bJP}z5ujruw ztK#~U+qelitVcYU1=rs%S(7AcF4Ii92r_Zt?=_uu3tRol#&4zPCzTtayhB2myc&t7 zgX_U)S_~ADXdS0?XVbLJv?%0RU8Ge0XpPdMOk6M`7sUrEj?acUY;ezeSa*`@+0zGc zF-n$*AUU?(QLsGu359HGYphEC0he{g5lla8npkzTf|(wVR44VFyAlsU;`j{4h%H|V z|J16yy30ASkjIKw*HON*mX91+_U1$b%nF0nw35+p-@bP1I7N+J6!;u%@GRE zPU2wd=1MlfV(}P12RiG(-G^GXE+*fsQa22H$t*KBlm1>X z`^L|QeAn0>m?)JV2UT>KQ&6GMNQvg>_r&zM#)eSRCub08rz^7#As4j2K$xd zJAF75dy)xaaaM>XdY!czus%z}sQsU){qi#9M0oT$AWB(Kpun@y)6}33UO*GwWcSu> zcdda5s>B6k{or28^NZ4ny5B;P;ELK`unUvaifvi9_I-4aHnc!*Y}FURgUr%FAt{%J zcMmrS)Igcito#nYf9OkPl3;e$ze(j>QH$j5>W=}CeA40U7f7YxCEs2GGROu9Ka6Ks z@OXq#^A1B5ig3eTV%I(N-qZ+-Swn8fUXfJ?0A_&MJ27+lgjBWWSWJzH zVmiCvt5ir%m`O*oS59lhWsrBoMB5?Zz+0Ut(-=d_p;mfG0tLjCq=7Or*6%SCS}GL* zrr}V!z~XzwJrY?pNR)c2)K&IucHp`|ZUkZCxe#5Z4<&X_X7kV*X&6_V8Pz4L01zvI zSPfYXXwFoDC0JR)%9F!r&P!7$6rke90S0lC z@Xq4v%XODgVlDCP^ktCQ0>H4CW@S=gduuWPHL`zL*Iuck{7mX|JIn5Sk4^t7*Oaay}yGkrJHYXjn9G9Es8Y85s8X z%2<*^cgSUHZGp-}nW_xS>NjVGfc%&Fp?=fQyL4CnXsK%i(onHad&${ z6}KE3Hyt(aGMO1Txzp1p=y!Gy9UY{7h?Y*s+!Sb9_l1`(iNgfwXtW02GvS0?wrQQ1 znw%z~+ERv-hzO$E)Bs7yvWEPZO2r$1nAuEX<4x*1{Ws~^yR&TGrp`Dbq}zazetn?nV> z05A8NZu$Z|BWr?yP!(?Z*IoIU9tAPoY(@^&B23gkCo!kcyc7(_7zN&~w=Pzv`lin40@O>B-mDxyW?U-GV;pf9BS(K~79!ff{zxz!6zcdA+g9 z+7ms0ecpDkZ_7ECJRxL}q}GGph_WVg$jugERc4<+M7wiJiQ{jaJq?*&>vP6Znl|?YSm@exf7h&LfvXYO1<_k))uo8p&lD|6nH_~XW`US&0d;8nwSV)#C$bC)bF$Al911Gnz9S-5;wpz}hfFmqGGP%?4oIK~l@9P$ zYiFq9$M_F%5Vc%s7Ykvf`7|T34?=vvOeX7%+UEg-f>fhZ79oDxQ9z!z*a=}Llvw5N zc4Gv8=0qO-=*J&r)E=81_6hab&WJg3SwSYuF*gQX&?*tucygGI6Wgq5=CyX?L+Ch z^iSy#fwtG9O~9V(LI%4VUAwes)riUkg%v$yM3Y9>zUi^{LV3;3tccq zSzB>2k}ql;eB9ILXB0%I6hzMEd$v>?h|j`4=zil%ly>Ktr>8VN6kKvMD%AHkO zie8lV?Sz9?(pgls`c^)WR_tL`O{am}G*A zqY;${$a*ELljxU}nD-)dRteDnsD1rY>(NG}=svO0{QeXj2X;1yd5=^u=RYPe4WL|Y zg#VaL>na8QQ^hL5|H1oas(Tzobd}{jt6esZ+n+Xd+8!;w>{W>-Ye)1zsI)M~j+Gn1 zs~Z2bm%KiZ=T-uy^$I@JQr6LA!htvUZMQ`Za!*1clj(p5TYvlMoPE`XqgF*0y8=&} zcl&<$k#_0e@>kkYe261^XMAmSREqOs3UyU~NM}IYg$LP}k0<;3&k0UP;$boo9OQ;W z$vK23X;9S2rHM10(Z zEXEaXO4G_$XwUL$U_eK(>o08rm&P(tn?ifWLJCo;RX z=r)jCe#0f>Kuv^@{z%wEq|mf`n>i2-W7h^ky*cq}_I|l#0(AF+2qG|i?n6sX&Fb07 z-$CWjq4`1|2}G#UOyfL0utcdBeEh@aG3Zeq zRf5f}^@{**lt#ZpQjFm4_zwZ4w5T{BgTzV9oclhDTW{wk|GIw++7QddtZb*%ya(#C zxs;tNko_WUwy4vD^`&3yi~VJgc?MlM7$<~PGw7;fi@Dfa%{S!`&HBVnkq$Prv>$U%GT=w4HZOnlF^B~&))3ndClm~Ye?&3q zbTE7W#!^YPDe&k3a2f_VEfD3=-y56*hE{J%JPb-<1|4|VXDE;eD^gqh?ZC(=6#Pg1 zK;6BwV6!XlhXqm!uYRx6qsXdkNLx~C+1Gv`#y|@Oqzafm)g5L+zA0-dnt9+}vH9!r(xrxc9u1SWaD*DW_Ru@e&e3?K8 zlSx5hzoN#+jrK|E#{niyryJKbEDpng&-Fa$6nb13Pxs0LnQ7~cfFo@nDRV_Cf?CR|gHS}9(0 z20TS4>tIL==QMqy2_z(MreW^ip&%DBHDVVC6YHS{qH_@#;v0=p@ zMhi#~nD1GHmQX_Pm4a*hf;0UYUo}eUDNhM-yBhkyCDlS67zkis$I|8d*}NXcNBU{i z36lKK>Epj9G%rXHt*bld)(G4fi?X`tY=JGW_d|=bSYhUzdGaUuModCK?gYXyCZ?6~ zBC<Ikq#|3g_5xz_ct7S;pQ_E<&1~+T#0FX%L)w0_~4z%X;7!uSnVC z=yxvWi!ndv0kAG7UFU`OsyQ^3+q*SN-v_7?^0nV2eO|C?0p3}m02-6yofV-HI6~8R z$;@{t5hTZik~dQ;W$bh2t`YGWz+8oB+KbjO==21h8#x5pT!EbgM90+$W{8K1nA06u>hU=8hB3vml`=i4IH(zPp_R~E?lwgpIdM$NH*M@ZG6J za#HA(iNR47q3`}i=aUP`81?v|=H}hT`ZaoW~lsdP0PW#YMCLC!D>p!t?Srzf@nos&fUouSX$f znDOOzB))ccjhg40YYV*JiQSsnMeGhI-9lrxlbY zW}W;i9YPU2l$^sSc?LeUPDkqLb+xt5=V*MOxQJH&NFxn~jwY~B8f5*R%!tsr3UF#% z`2D2roa7k&OGJ~3S!v4M_L|CTg~^1R2GSp=hB6uie3a*Z%19$C;AB&M26$U?1QvF; zE%DBwQI0jfopXd76W(@Evj1#QMGH27aY5`#N6J@fk56_sLl3drKZWFHm#-m9nl5z+ zX@;ptH@w_)vKZJTj@ls;M44N-CX z^_LLo7&xeKNEq=NTViKSShc} zR0J?_B8fcj+NeGuR|ft7R8#kCb*aM{?PHPD^zCSoKPk~2zyM!6X=?6_PN>pdz5+OL z7?9~ydd$#n%LcyrR*-SQQBXxu9v4-Yk9WycvedrSRPaL4r)-ob)|j#Q5ooSK$v6~T z0!V@9RSX2w8YHQ}Z^q0+B5;2|pxbZx`Nelau}akv4@K{wX--=vL9hgHPmmsrGpT4i z-ZDRr+zI$KmIdSnDe^OQcHpPwMD27NbSd+p2yr$lwe9ZkU_cy{8&t-klH>nYVq$yr zivGLR&?Xw`G=z^}nn3;19ohW&^)fqW$QBpFwuW}%lI3*U-)rX!jUJ>{&Vr$v^Z*-) zVv!b{2<=%j%!pSt6KR#XiDxvIH0|M2Ft1!{O>}T=r(%6sFtm(+8p(Sk;$l1`1@Vo> zq2UfU&R)dS+22M|Sv8ckkI|>i1)t(NEtPb-*MgAU?e=2dHBF;RD|JnHyxLnuR~{8X zZgv4^4>o&OYk(u>y{<^fyP}9ceWHtmXlyY#dtwnL~6^h9)jW)1XJTV zVK^Jy-7VEkLQPCu+;C+KZfW_^9rhhq+0kpbcyCr-t5Kv8>cHK(Q`XL+U&NaE-g^X= zUKc4IGR~~78A`C#eUOAlej@O(TWvu_O_{U}1_mVOUNLHv2i`V4;&{Rh@Rdpj3 z^XgDlR;oY3t^0y5UeRK?Mcd0%Csb;2=YAR+k(hp)Ky)AtcHLEQ_4oZ~OFIAK&=Nr)65si2c zhI|a2cyDlPrlNvKO^TWQL{72(6hiO=*U~;I&}=P}Ab8!Txpy1qNs-Fhi(yyH@ndiX z7mk*132|4wsj9vge+O;ibbl0pi}-QAraC|2Kx#j{m8Vs=Qaf81Z2mh8#4dml|dqr)pzgoY+gfm*vHe z^+y~S#BHtJ@O3o2pDfj#ziZiJnl}~l*tINLKc8|N;3|)x4xcU_DEc6~D?j@X?=F97 z&%)nGy0&|93*03l?LF*W_P;DZ7+@SJoK3%_bS;MNTZQ@YodN8%H*yZ?W_n2_{|uti zl@Y?fq<0>A%?(vdo{vW0M|uB|@&+O4DJ$D2WM#meG$D!*4FM@^EyOrn8zX)2BlGt5|$Wz>t2;PxYoQRSC=y}~tIN|P<-tBcQKQ{O>9 zb6Br9n!J;CwdpZDutI}{es|q2EVK!?nNzC|JsDjaw)cb2R$g23{EI&5(8#z-?;jAQ zTsX&78dDbzidNFW&hCkTVPkOS3l`j6e9y&p1@db*4<)fZ`QFC>_%KThbaCvRJ#Bo~ za}MjngG~Fwd3H)N8>78ph0I~dW3b=61{L=n zj0RrvJ2&D?ohaUIlH?3%Xpf5!_ZRK(t0%9qe(IrL2OT z&4*BwpJG4F90o`0DMae`F&u7s2H+-#gdw5VC+B8}d*QFhExKDkY(hTOrf0lztw(0u zjK>^>$l)tRaos4xVX-ahp2nuN_0b`FB{Y*!(}}!zU3E1lnGrJMdFWOa*kO~?qQwAT zrg!KkOek&@+oO{1kTS%TbNP);legZVvkJ>%<@Qf{Ogw+ww*g_?Jk}wvi*>UmD@$(cW9Ov=kh&i+RARdLRQO0f`ziA7qu+O z$HOm0_}wY^#I0e^Fe&nVnMcG0o4%(BZ7pcbREvj(dM5W=YLu0k zhn~CcxXPCVc*5*;lQqfrwZ1QMN;e4Y4<8)G-8rPEYPu06U~Q)=jYkIrE-Lh!RBCiC9aAkhMW1wzs;iK`(uZh?8>Cezt=az;O-Y~cjiO#DN z!3+c(FIVXb!6*$S+R`$-fx|7E|qG<9u#gkd|_1Lz5F#_Eu=zxe>lfYdC z1=})W3Di1net4#@N5ymyoKM^S^%DIHm0L%m zu>hWVk{43wWaQ^RHSPs7+n0k5r!4yG$dVgMV)~U`U)jcqTEh+32+k6E;ITq1XXy2` zvgbIy{uGc-vZ4Zx8wfqRnDuxJ*S77+WS?%Y$}?SC&eTPD#(Bi0YF4tJGM)~Nss)>9 zS6K?YvyG-W;Gji^Pa?{r%~*j5%(t^{K?}c?3i{Q%a7*%uVrMe4QT|DZS9Te)+ABZY zIH5*k8YR7Nm*`v#1_=|2d@`4V8xE3`S9dmo4?5@v>b6!13KUGvMkb=(Z*tys1+K~4 z>*L{U%GJ#8B@`O+Q(nOib~82I3JpzGukK4k4(UZwhpH2fVyzgH_ZX8?>-bZbi3lO; z(-0(?5mj0#k%q#GaRn5P$$CZ=GFLPI)H*qiK8~PE?jbh9U?e1#J_PB+ihcd50O9J; zUc(c&KaxuXiv`6D0QD;j&TB&t`iLpph{+bmh=!O`QkcV}dx0!tr9#~uR&ToVS@GE1 zACHxhApV#f*((142v%O^B1;}sf3xNl-asnwttvti;=pmF-BQm_UD8Qe`^$TF|8i2! zpR}ASB<5peWK?P4byc{kf9Q|_JJ@nr+TWcGu_crgkKJ(tvt_w~Y{Y|; zy&Tf(;3mV@?~duKpTD0}iLw5SxLt#)yjN~E+ww4pev)1h3Y!jztDA;Mg(D;LC5u_< zRGFR5$j*4NNmwCS(rGc4aS>$BUFZ|OHT(2MSrYC+9|O|`vz<$!GlXYY#ALGOBq7QN zq#GQ92fLB|`T}oa9kLQ&Q2&dMoBfu({IeIPwoAAvi ztG^;=^dWN9Hl95OXvfFlTH&*Hc_1rcR2Lmdf{HP?EerGPUTG5~2YG2u4PCeZZf~8V zt*J06BGfda#}8?ob|*SVj3=n8Vxzalin6nmi8D)>FZ2l&yDaom!w3RFQ$r%dmJiC+ z*?AJf*Qy__RBOW`@|@z36*=#+km>ocZt~%@m1tZRsm)UJt=GCLK5FB&EwX$Fu5DAc zzix|m31xYqL|pcMuEqQI6+*pzScoWAs+M#El^@p$FeaWacOwSST~cKAO&i1DxoGo2 zKfsfcza3bVTe|gfEaM9-mjfwkZ#5^Z$V-*LOl4{77| z>sqa78Q`Hnfgf8GhD!|*0XZV*lVc4lR#-4&UCBotSS*98CN|VmC7g~o^7GU!126)n ztQVg(zZtPRGs~6qou|5;_m5KPeqOadPlzoKi4lmUSL&x~<`sN~=q}2gFNf)}+Oy7F zxg2NUzSG0T%XY$+pVr>L4KT7b>ul(<$A)>uToKoie~rO%>|H- z#g~;OQw}L#l(HKFDithKu6hyyfeT_D}$DEUn@7vl{pp`?z@VO$Jxn5bbZ~;N> zXZg3{L4UA`9)J<%lbTAyU~eZN`zfEuOK52mQ`4^8)Jv#I2$8Jv6XV*03M-ZQ%x3PM zkK>G=x_Mr^iq7NDoW4uc_|rKRHrG6XN8YlZ4{Bs8_7zIUsy^5uvSJnZ5`M#qL{T#WCx{0@BFW8xu8265< zt$1qpS)Rn_b-Y%1p2&CCQr6zia%7DXaE;m@^;zOmmID>pG0Uekkpb#{mugvbS!3UM zS0^|gt$^=$uZ(D}e=q2(WlGs+e$!N5#o_7(rC873yu&|sy$T?9esTHKB%#RUuO?4y zv0qcuDY6nYY;+xeJ^2v?9%GpD5eJ{rt9(B$W-&*?i?d|s#kSWA=ATdZP@Wpb{uGV| zL3MNa3NgsazAw*Lk&yN4D9ZL~OWal+-(Vp?LQ3Fv)!BRFZlGa@-6BQ8GFiToi&Irn zulK~1ipq=bH`ciorEG-Oqja}v9BFO+{!Dj7N*+74kNBKo^N@CV%x7~*MI_=HdGD_o zTwVSh1aHatgjr2)`W{RTq068ioUz@fsWo={`+K|nEUWrtYbNH-QX(pme?ZNLf?UWHGSTDLK(|_@E^j+4h_%|InX+QiEiKaTe`$;qh zRDscC+AvS5nkZM%LOH>AXI7#9T;TgouUa&k8?+Q}h1&j&)kZZ?uBAyhTtX58YCE>6 zgQq))3_a0Hq9~jxpGspEMjcf-yR(*qzTdy+m1Q;dX=iav4lTfgFJ?O%Bfr)^O2}L# zp0U3RTjZqwi&CvKX#u!e7?B5AB4b6rTn+C%tz~t$Aan1nQum;WMSCX`EMHWmK7hiJOkmefvj=I>N$5KCzz8=yqhxxyQZx}E z@dt%zolAcw#*x8ezwJ3H2p-@|QqDFRCSnfd9}$W4_TJfJa_*1;q;dAM#=a<6{ys@CXv#rp)(nAKvk9#8q|iGgX_DmRPqhk7*k>w55( z#%tOu>Bw))fFlT1+^%JCH3G`LMIbY_H*UB#soV<#evMTDR`Wyqa|4P!S0}~>-ASr` z>ePu}Wz_{8;JWJG=kB)W?tWLblSl%uS*eO2kgO<{Go~;xrr5<4tZVn=`Vsv0?}1-b zfjuv-cmh4=rVxtKDJH38)q01?2Zvmonm&czGM2Y(Hb_<;7vO5^60FS~Nn3^ZjeAXG zR^nwb$np|WJyf{%vyD`2e2k5J|9TRM8i%aQ#|`wMy=e>)K6G&{hLQC|vz2L1z>;J3 zlNuhL$xou%+x@hkf6^*`iDVE9rVFhQ39UG)A4M83Zj!HOHSGr-Adz0Fwe-(BO}qVu;VV#2#JOK7jp5}F0MG0 zT4DP4AEvmvlA-a$!1`!Z+-=o55)M3rqiod+qYwb-BzuU~BtckJN%aX2DI3-vIq1*f z-nK5Q#8-y0l{U{xKji(^LAZwYz(x1&)C% z#wvt(bUEpeISpgsm(XN#)UQ5p*HH1th^caeBaoYjnd@zSKOd`NC3V4p63hLXO|Cc z)$-Bds;I(`OJuKB8y*5W^==CFZZbVuxiob4uqAjHoxq^%Sc>vFcG*(*Gcyjmsu1U-JQw7Qw9cjR`9~TNx=<;&kmV= zcuUiAm_l$BTBg^jG{vn;*l@4vqBq~*L<_fY(bgu$%%AI~RM1#Xilk1vV<;j23mLbr z3k{8c;aMUnO)6K2a2i8{=uBtLi{(uH&7DQsUm^(xx*rj5ok}SiT@ZS8ypNBCKJ)$@bAwNcV+u{LuxWPB!*TUL_+i5Hhe#fd)tG&v ze@rU07X~@{7Ps3S;q!eeH0m^|%Z>K=yL=&p-2niHztW9-f zU34y0*$Mon3LFD2V)+&{vSkY9*T<$(@5ccKvN7xIAK|HRMLyqv2F#efSEu)JNac%( z_G8imW|Z^cdzg$5$9{eF@(Q>PAH41QnBa%_OLZGD8Eb3dY}#&nYj8wd1LcDCT_uos zd}(2)_X6jhi$#2Dn~Hq+da+q3UmB5^$&3xg$va(iSS#x4Q&dXGzso+ml@sO#i23U13)>g-+=S=VXO+gqj#lvKOf4Bvxy4>J~9mi z5gttD#y~nzzbEzLvUzwsB|bS(tWzu~K0$h|zN5!IpK%krDce`W^SgG)#FAf*#~1nD zz+1;Q@}v5_5$jDp8i!7GAdV@;Wi>(;OetXb08xXXal zM9<=!?rM%_hQ#n#HOK<$I=tP=;F(O<$=By=632e;_hvr&Nz}jrh*@}jWmS{CL^eGf zen-;Cg<6W4b-YF%^ygqtq<3Mi+|e9xP;t)n&HzCvS)11 zfZ&Erb=a`F1BLb490Cb*abs*F+}ibaDM%=z#djGeslt^J&r*GA?7QjK^?rEBkJh_Sc6 zd|x9^+*sxvw7ntUTWQp(7^Yq6`cNNdSO^+a>#|SJW#rJ}`8uf4Gs$qD|KoU#b9M)( zS`Se#0Yo)~i*FBwG2DRhu9D`D-SK5I@lLlOp%Jo@D(SkGUuP*YEGONLN0U}2;1-XA zKXT23UDD9Sj@dY8spj?0qs3R97ecS>XL*7|WeHL9YGZH;IORjsp)(p6fI1FTXmfJ+hNEdd-`=D^ z4dT}P*qPL`FRWLpq)F$HoPbkROW72o#L6@FB+6-UJ2w0g!FGfpcNDJeFDX@y6-@%B zem`ddAM$!N8|Im{QS$7XbQ|rW+Ki)77q4ve*-yUNmE`iueAOpXr=={ub*0za=R0`raywG%BGK?5n06x8T%L;kIA4qGqM~Tf2?TrofS0b%F3};^_6WIkq$YnfC&U z5z2v$1qm&^+(r=~+p7#r0SDwH-_hl>X(m^8TpEo0;JqwL*l}+ z;!?2L?ch1m*$X7Z1}39%baHTx^!Mozws&*``$kwZc-?h?fOBCX4G;~CS&Rk;exuS@ zB+}0dT@eQ%!1%Avnw}KkJahV!U|TSl!jm>a_Rl z1E1=GI*W}?lc}vneaOWKof0?R=Uy?8%-l4uYBN?BmYh2Y%gtz(G>WO)@_i9T^&&11 zoaRAh4eMPRyUZk+yv3ZZ8)xW&*Ef_37B-@ap2-OZNn3J0qzO;0he?dw!v0!91NE((Jc3{Ko(Omz>7 zg(a(qyoE&&UzgoH5mA7_DKB`yU=<6MlEW4IjI(2kpX7qhj1NcuJVnEEAA^W|yp~pc z$d3Po3R2cWbA?~_1p3fq3bC1`Mh)ytRQSSL27nWz#ZiCz_oaPLgDMi%(xC4dv;eGt z+SzKZvLSRLpKg#+oE2nvAnu$?=4S}$6_B;TfKJbMrWW4}O!OSfE!iw zc2x)K?Gi@^R`V}Rs(o&L!gfY~1_YRx;R@7lrrsEe>9wiF`(}a7J{K9!WudjY)8O&E zP`MC6-9HU}l*{Cs8y0h1VEYi+^i^>6^Ka^Rj#+hJp0%7%iiArM&2;hpAK<8NfF!y1 z%$T`s3Ow`aV$07AVVcewZs)^}CNFtT zfpE)fv5EeZZzz)Ds^t;}oAHUye2Aq}ufL7DOy0YWpO3NzK3~zR3U<)(P^;XiW&@>n zvs%3Q)4`zf3^VP7V+Bdna8!z)r~0s*>XhbwCpKciGZRgU(3C1GsEg+caZgMFj<2hK z-j!T*a1#bGCUX>c+e7x<@8!omoiKlTDm*`HA1`4?oWNfyom_w6Q6aaAc|)I{Fu^P5 zC=>1a)>#;lMlRY9EF0fyDo`)oXTt4vwD1!3UX6&%hRe-hyiuT&Rn zV5mgTHl1vy)=B}s;Yq_68$~W2@}*jsF-O^LM};swydXON+C%e(3j+7!#~Tv2EDDPu zNW(-)+&bd_7Q4QnF*Fi&&vXR%85IsBmj zZviK|A*o%xe=u_9FM2bPGwM1Mz)4tQMpDf%lTf3DQ8@6jU zvP@U*WMHEXaJ0g@L4-!JHE6hbdoZTLUl_&INdRBOabh>Z)FkY#Eq6e0?n|b*kd`Uk zkC>*S`tN10?|MZW33(PMiHeR&b;+~#x1iULV3(;OxpAP z*^JMHt*Q8ISaRw}rdRJ|H{xbrPszd&oZ(UsoRyy95lqYo1J-{Sq%|kE zmcKH9A!rfat6w7FbUip_gn@WIEV!8Ci_2d?VesE!aIaLssQwF-Rj_|UQ3ZR2{68S8 zf{}gw2c-Xm_$%yRl*5Q#DTNXI6Z}%xzxV>f{{qAN0>dr(7dS;Q;41|%#{!t*+eOD; z66~Md%8p2WG4+(!@qI4dCaLN^&wnEMqIj16B+`UBleeX{z!_0w9U)>Z>*w<89u|+N z@bcRdQ%`h%A&yRbztNR0hp=uCmTs)@&c&h%LdW>QsA^SQ=dk%lRINz;rcvw~vGKV) zt85GsH}%-OWiYe;W#J!(<@*mYuxgr-_o}Bu4sV$X<*U+a+FCrf*zW-GjfG)9mB*Rm z3w}6S71OPK$*lgYyrTDFBc!nSrAcn;>9YsrYKcWxC9D1L6DKe7T0Y;K0JcZMckHW{ zTT$CJBZASo4>_pdZ;~Nfwx+{L*=OgUw9WnWn0RG2mYY=$o|bsOlE^e8V3U9_>3{d$ z$T9eHHh@GVNUpS<`RE2 zg3zMtKs@qmTPs3^OAv>T;p7p{)Lie%u9i(yNpa7Y3(76j-RjLs|zZ} z$?y7f5Pq(LA4+2;=IIKA4%qoChFXgqZ}{7Ds^lC_6`o@S@nyv>^=ATYG~36Xtwn>o zyUAidpcS%&7N8VKDNyzVc`I?fk7!~>qkC*T+1rA1oy_@)zebW?PA&w)|Hg(F3;eO7 zE{zoz*S`8!?}CPjFMdP#y>$ADKy{s`CSZ``G;{eS;2{GcXX%pWjhw_t1X8%68{N71 zHnHD`pO%`5zk2zyNvoBbIz^}K7sec8sA8aFj*I4x7nip`yu{tpag|>0=irM8tXrU< zQyP%nDnFf86aTW+o%IA7iOl5}EyWpN-i+wtaP{oU`1`4^%H$=MGM?n9T-ZYWbHTlW zcHXIZc4AjrjY2y;)m&Q=7K*4{>_(wu*wKWV+ZPziPM{MPFk2W+dLfN1qPAo`x} zI)C&BCnZJo%x;O-koxNFo=TOIA^(rtA3si6PUAzH+AGQ(Sj9%yWpCPQc21V(_ve4? z>wT~Ip!Ryzo5y1;0^^AH?MQ%b#7IezK53Nb_!zGFTT`uc(SmqlZ2Ouz)M7fL!)3=m z+3iUX8D&6nEaf`rFMWUBafqs#R>T3IR8AD`nf2N`N_cjst(TFLrL;`k37F}M*74!E z8-R)KwsEja!XLJYz$iZnMQZyjY^sIavwHCyi*Wb{^dU2})`n60&Zpfxgq(8xXX;J) zo|u7DO%5xQA^){-bKLmA#wi2a%PszQYvfv$h5p;N{8XwMov{KHCDS4W+t*KGv;C3_ z5W`sQ>{2P*(t@6Tc$;&Iqki5Vlz}yCw7)%5gO%#bf2}5pCo38~ENy_8HcURY4IjzQAy%qe&@$|OdK^r5h;KD>1w8@Ptuxx)F~s7|Q7 zyF++?D@=5z%*39~HNwQ2&UL`VlFrrA#FS25CLve<_ILcA`(SlH_XkwiJ#XptKy*L$ z2UK=J-jeHq@P2GGRCaIPFV_P>{n)su?Ap9v-1~$2(Q#2lw0XC#^O~}KC;VQ7H}^NQ z8neAe{BDFdhc>hLvOP!q#)UVTX)}4V-Fy7{$v3S{GU~Ej*ZfxfHmx=@YO|Toc?>C` z5Aoe|N_FrVZ)ZPZ*8208Kf}CgNv$_mvq{n(o-cYjDI0xSx^&i03dLeU*hmt(-;!%Z z&4w1;`R>tukOO4N-Fik4=v)Z3@PoA~j(!AA)DQc|7@+FO@fh)Tp7!H@N7aqu3FPfO z?#C_tM;Or1dDxHJ0jS*P?r2!s?{{bf{2bzbZdl#vw+Y7xd)f%6O-IdE;P(?*+1M#c zi^x{M_Tv>k@4NVoyd;O_#Vc^$Tl*VvNsiKs*Xz9Z;y3(~451gM>?4o3c{HWtpi^It z%i7=hpqf}|26@FCqzO>O9E=I@&mn(qr5unxx55NSe{9|Lw{oOMm54$33oMNf zhboT4ovHx?OPj#~f^oP~HI^aLZXiG>4rd}{4kDokA~wQt!huXd#H&C=1vtuy%qP>( zuTa-!r?s?d*aZDOb2N9R35SFOmm#Ev*Yva3(9HCoF9QE*rebi>xMo~KKAWR|Lr-e}a`1%eZqZgf+Pu)L=W@nsgP zkEk?inF1vfH9!f!1g+YOej`^b8J`T|@qwmhMLCTTc+4?_5NNJHrQ$rMXvH*!GEF!j z!56pJeK}C@o7JhKy`OxLUh$CfT!j=a^h3Lexrl3tq!(%lJoAQiQ-ZKOrVGtv7CDZ{ zG@=0kA&HFry4&lR*VFBOGJ;NrL>kdv0l_$oOS;=|m@d;TU>V}G-H_uCh62buMF%F# zm~wV6ibvh;biHL~MBhfDdF$mYEhwZ{{62_iPv-x<{*UXe>27vIix z@r~+GzS2y=-xMvoBlTH^)ZA*$1h%%Jv!mE~8L>QsvM~#pQqO zae8u#tU3`NHJx1(%ftOHa58}*(2(Gah*#?jtEIryAhq<;RQS?LB`Um=)?V>!-n}pj zOuMgenf7buZSWrT2YvY~!dvm-0qSkO1V4e;1mmwkdcTQNe+LTwG#LJ3?%KExRNPRh zH~eHWoc`Kp)ghsyqVfF^x0LX4Ww-tD(R+6)iwEmU-9H{X_LfJ>4@WQ?t$sk}g46x9 zxs`<8mMHUuS)JaA-AF5eqg`cP@i$)0x=H$KkkJ&$iUX!K5QBE=YFGTL(mW;SF9h`d zu1yRmcp%~0e#hQCCjnt5XtA?BLH(nH7B=2_LbH{Hh2Fr7w^3$>$%NiUvJYGqxe1fz zEzVP?AhG;{#!cb}YBWFTEsedz04LH@A${`*1(M8{F#ok^1~u}cjPoFwoxI@>qk?*^ z8ZHZNM36<5?rjMbHJnM}G%f7OJu+ajkro=Tc2MzDz09@l$Fe1*(+uJ13WS7j~OUme(&<6ZvjUAAVaBu^IY0G=>W`1zQ8{K2VG zQ{nWBW*EE0@E@TPvwR@IovQSY+Lh=j^5XZCM}>fPog0=vuXg3vGu6EwqZ)~$I&d{# z+dO&S)Mpd43*7*yKxy;qgSP#HR?M^oU);nWjytdwZ1l|#)Kb>l;3lYSUEm(1` zDXPVnT0siqJv1T5Kt&sgV-?4i*ZvAN)vaq?`3|K`#&k z=ld!LM}Qoz4)U-i~LvqToH7E&_Q zkngmtO|UP>8%YsA)6oucUvTb4b|Q!3y1n)m69YI~nO2 zj3V+w%@``HRep`&tKj> zeb*VWd)oe|l0#WouZp@+F)>!Za0k;bK`Y61$bPeaaYSZlM5gQCEX#EL|5;>}`L9d~ z$@~j+nWPnec1S+MS{xSX+e#!{^l=?Ru zKc)URVx%}?qyYaD*;0W2k3%WIzj>4b{0j}hqXyhRA%4^#UjCn9)gb;4fUFw-1mg9t zKm&;WACPHS{WokitZX51Z60sH%@&cMhhWKHA)_hWUv@Tcq6NuJ!|!d$5gi3jT&XQ_ z5#C%V{VmLyxN-SroBK~E@~aEJva&63pG znTz-)I@r9=i>#Y_hTy)<(n>UrWB+dCL6vLU z@JwQ2<79t@dV;iNd_uLEa|~}yO6Sc-W>tdBzjmhEShN`BG;b#C=FYBsm3Ir)5G@gw zTC9!ql}x=u_7qfZ^9@`-`<@iSsjZ%{61r7MKi|uS2BJa!|nto8%l15=-y95l~yL*L| zz`GrMOOG%bOiD-KoeRD-Ll_Ar6(Vqc2LIkhkPjyQzeD)3BpZ*nx|%j<^E_!2NcwsA z#VDL^k7GNFa1l9x)Owk`taA%Ts+#mWXnA2s!6GF)f(A#(U#-?{n|Rq06;&@0FIds{oE{)h8zc zF&DgAV&Za{YcqXvuc`@bQWf~5aS0~{10tKN0$#h-Uqgdk3OEzaAw*d-3L|*i4`qn~ zluOgXV;6lf?q~Pm4;|iJ7xrZcjt7s&VcH!}O$@}WKKoIm1`n|%C^8T8MI`F@FU#)) zrV?4(g6m13eErRmejym%--b=*(zo!_ti=s5n5^osK5tI*P+(|W8U;FWVfW4HV7>t zZz+2Y=*L2@I>tQdTWoJh;%q4YQItHO9t%tSW5zlW{?f06))!&g+I=hSRb>_c6@vIL zXm291by;Uhj{e6W9{)rs{0K(Y>8~QC8R9BUkx$v)_yCq469ScjtgyQWnx22MvY=zW zycKefv1Sy&=#z1?-=7yvKp@>2YqC?oxMR*;z-6wVC%|3LI z-jm#?xZTs|MIp?+j=ZE2aMu}?);i}bH)!gRp1X%P?g~JTZk{sSAX&E|o}h95AhtdV zn|~y{dHxmQ_07K7(XSH&g{qPCKqT9m+E}YPKAKQ>0w%Qvr$opD?T`J}zb8JDBYZ@@DUiR;H8I6V;Qsw7WxyoSo_l7=Kkl3iSpSKSAZ-2F>d zVE|(GHA0QuUZIb6){_KJ&TzWRH1P&a>)%8X)oB!5bEWTT)7VohiPI=fbTDuihqOP| zy^qEoliNHEMQI4vw#mRqJ&D<8IWxGLQpJ(vDFAJh4uvxzl2^~1QxFHC#x!u%vS{zC zKs?INW}L$Q99ef!TZe^stnsKBNY|NGT(PD$+LX*LFwsr$yoE4R%XizJEr~&vHXjkU=cAQG_*4rtt0a$6K5LQ6TCqoADy-ncZDt(D1zf< zgd;Iu1>Zdb5qGw~LPDK%950&-hv|sWH0Ue}!fkHrhY(E+hBtmCE)~*lpVLi5dh(a# zbz`+=7W?~0CJ`m~XP5aKjKwGeNi7%RLd@c&dWzPDxiH%LITt3cUF>~~eV^8S+BXjk znFQ(sqOYI?P8(ht6^Ry-tnj`ifid=EIw*!wy9B@^USKub}?s_HM$FRC&gcZhS8vMT-L``b(R-E!)`s zYNQrd6dmml1%Y~RS3RIbyUArZMYWt&A`Uc-drgVDOrey6#^};MdWcAaR!qyZP{q}Vpv4>OvBgWn1Q_NP>PKT7w}V< zxVV7(z2LMdQe=&fNDHAd#h};n5fc_Ca2}#C;uIUD*_i&v!hV0FJ$Fr1fRzp}W>_gU zsI+nZkD2`*e0#2;C=V;0>&TE|Y(`@vk)?_CzFC|Tf|(OF&#-7`;B~E9!4y-$aW$O{ zb+K(#+7IK?9MNKhqqJYfe{w|1Xjg|pUKItG_rYMauV_yGQ0did^7#;bB4p1`G(uj- zu2BT7)R+`Ams#pI_GS+K3pz;}+?$()0N$OmeLxYiMc*_p&k(?5L*NO)VWH!_gEBlF zu)c)`g!~oR$r}n@%_2(=()*A*^=P5#7b&~N!Iew1Y@X&9A-jdamB(@UP?zO)-3!0X z>UBw*)QBWbpk#NUgH4Lp;H=gaMIt&5xe3nGMbXDUfE^_gXwFT@w+xbA$G)m`we1BP=W!w^M!cgp+S3q60JU-<_nuJSW|OL9lhrHEC^_R zA+P&;Y3gEK=*YZPx=|NJvNM2atw zr9RBjAYkobz%lbO`5K%V;Hj?w>r||c48r6|XswJtZPqcwa$esV3~POy>n22EZXn)5 zm`y{#N+q2coX%AD9{h;7$)s`%G8aHfFxgV+)|uBtw!|EQD3Y8Pnp zOuc*(HF{R*0mw5BU!h`PO1|4)kyOp`6FoHAIA}|f)rUp!fv&95S}bW>Xw_LhGNrXx z!D)MVVWLhFXBKq6)&UVlrt+Fwh(Q4>PHsx7gFz-_ar&?jevKfVkxY6{)l= z`#H<=mP{HEC;(?6L(-2-MQ|cRGC$WXdCRog!jV}h z2d*UiFmc}O;n%sRug*(;-Qxm69X&*TD_TKB3~E_MnxE-@VKaCJStB?K?9%HW2mK9# z`UF>39Mr#BDq;1=SFgs^xAMFtTK4AvXXsR3^7fSxW<7Sm`be0=ywpybqmXjcF7xex zk_-P3k*U>iZtjg}Go@#8B&9j79RD6zz&m_LRgQ>L@OpOiIQ`iH>meIrwrm(HBg}l@ z9Wp21^7#Gz2DJxwBKZ?e#?EW?;xuz?*TnZSC1n3wZ4++gr5K0A_f5wYC86opVs~ZL z$q&HMCms}{MW^Bx%&&O+&hs5>5-4#BZcC@H2kXY^zy>n=cN|z0saK6(;AeV zjr6R43$7)WEQQt=@IKU)5iR;xu_pg{-9(WST*+K#de9t`ft7ag&P+>mO#+E{$gO0p zC(Sz8g{LR*8h^2y@?F0{0K)fAuL2~PCj0dud-<}~66A`D9tQY5S}r6rU2f?C|6J*g zzt{!uhZs?~cF>HzL0>6__?Kk5^HrS}$CgaV_~YPHhNhnUr z2r&q4JXDE@?tyrlMGRk3uwl`FEag7X1HYc==DiPwX=)Ko(Ie#^OKw4@A*yqDOZpld z0GA^P^cmiBpO~&`uBSn;J~R$@?Ci_Vd~P|v^oY$zyWX4I?lGWw9Qj+BBRt7Wa!X{E zzV8o23#Q|woO^=n7zSCe~Az6SSY+kEf)rJs9`L}v;$;1bpv({V(4-Lg+qNwY=6S%xIdhLqpHETS`^ zjs$SMlV4hbIkCR{MTrqn^}}M8<1{2GN}+Y#?*{1S#q5RmJTIj+U7VwtoV8xxj?3YEF_6r)bLo;o)lL^<{Ap)@Ee`eF z^C?RHoehm7E@ExOE&X;-|1{eE{a%;gQ>lbvYOqNO+}P|qL5^97P1Pk4-Q2xcgY2r? zn1&k)g6)Is=YS=N+3tETA4aIS+mxDHrxSiR1lkRpk{|}Tkf=dOoPdjN|Cc1LLZarR z?S!xDrt8-Y0ZKS6sNrj?5KlR2gWObIAd_yuPRN3UN|)NJMEq|FqUxgV*QMG|JelnV zR6vmVdR6BN72|z*#2BNI4jo-11ZgBjhbSmvBcXJIfPf>Vgn^WVbk`40T-VW~ z=Wwpi_5J+5zu)ct9q&1JZE`hQfV*bW46Nq8!*+#Qk! zE?bTIep}D!ui+}hHzDeMhdJ25ptZV z5JF*HaA?THrm-n0ZPfP$b+2AJ(Z6%D)O3T>^TXxnTkiEf8knI^g;HqY;(lSxOjBcx zz%~EU_IK%4_K^-xPy4&oMjCyun|+XQL*6}i6qerkrA83c$34Bi&PR1=Q>d}c3ab%Y zaicle+j_4u#C9B8G=OxyEdb9)EhB~6XSYv`*0gTni9G{W6c$Cp^V>NYG6IcEcg|k| zUrvg)KXt1Wms5R0U?hwZha4~hdJks%FVAkL0kKRQPo@Xjrw3L~AFP^Ni7;=SKH*gw ztFdOGQ8$rU3uB z;Q?h&ML^qWq_IdNtHf+lq1fvd?G}(P?ps4uPLiKb2tUyJfTts1p++6&=c+L^j@;S=*C_6})B>9F2YxU+; zNe*H5B)q$b(?Ks(qOYssNl(h3z9iUCYQlJ(V zpvqK=h47d_rb=?F#VA5h8PJNDL=Xr7rjjOwhXpd_lUqGT5%j-nm8m2P;UR%c+2mH2 zQEv)mj6uYjF#);CRNthqfk1|7atRt%s*C)tZ0o9&HCLj%qg0|O zqxhrL2t>~v4usiCK&>02(xe1ECq*s07=fLM-b%$6E<_Fmzud&!wAdWp{GzIo;gDwh zK5S&Xbu8fRbJve9AKf+Tcs&DXsTtRr@-OWbXdmoSkE5Q#SCbs^uuSDQK*u&#SCYvN+5bg8yvYc+F{JX$zfx7=0V|erlX` zLTXudzXniK-p}-yEO*GVe`-9pHFvO;P_{&K@?%>y*Iyn?2m)N7YdM=aI}iSS=NQ>O>2S$XLeE7hR*pz$a#OZDg_&Fqr+RV( z#z@d9+s{-;RySDJe=>g3Dzh-tZ2_Va65GG&?ZeO|^N~Fvx>PDBqj2#uE~Y0lxruFH z0}0h_5S{+JFP1VbeigihCtplu8YD^z)y#hXc{Zw!y5CTy!9&y^61V`S$iMk{{#>ID z3BZ6U9Sb2nfi!4xy~!wCT^VSDKuHp4M@)eyg>(hdAb+J5l!2ZI6a#^F+Z5PBuvZ{e zFL~T>RKrNwP8q?BAgcZ?0Ez&U@solmfmH3}aqy^yuCg5j!E6jDQkjgm_)9$o9#zjr z$V5!82&6n8y_Sz4Yn$X1NPawe?e#YiFv%m3oHKeY1wp1VdHL^SFw+l*kw#2%3nbT! zUYkXnIV#K|7$YVf1(Iq;e~k_TNfo0C+X%+C$v?$b1S4S5ULdJ#RN;qF-;_@ggAK@2)J`q6v8rx=~UL*Y4(8mJE&!ey~gdYHX zB!HaxElLR_%#1?95b6N5q`>K4u0T={>MFm*S%g{yT0$VU>1Hp*E*AlhVG~ST% zHuBZUKuxV0?n*bqiy_v{diX$VR$Y9czL2_7vpy~u6NrtWc<1H$ua{6K!lkSr7q58iVnV}3ehNi~*Gg(0uhm-jQZnUifKZ&xw-(jMhMYHNMwQtO zr?kn}bNm`?fQDI~X<%5>qo)40DHm)9F?oTsfpaz7uRIY$xDv{I`(cO#r9*;VKfotF z0H?Qkcofm=n%ocq(lA8&j?3klbw$aBilqrNnT7&nRV7dGc9qE`{e}A^q%&RpfGL-+ zQ@tgJ2iVE;kJJgYY5N-&ECW^wh?WWXm4Q%7Pch=5Ng?up8YnOnzW4mj>vXm$_v#~o zEIGpDHZ?$X1Gk&!5GI*cYE8YA&|;)=Xr|JIOC!qf+lfqmT#2fMG2 z@UVd)I3ZNnq+$iKf-fQ4dxvg)GZRH7OsV;rwnw&GHqPd}?<|MxDHYdq*0a}(2?*14 z=x>D}2}*@>zHrPqOUMRU1$XLVCw6J`oF3&9usiC$;MI>8&-ov<@)9>w1 z-|>}@vX1G1y&kBLd^YKU5TX|;`y3qiSZb-h!QGSAD41%`7tu0?f{WoaY6-P)y4cWO zYs3{AYqGS9NYkOaRbm$?c>2U+qmles18+U0sx~}mZ7l+nStO=buOG3V?_(Pzbvi&} zgN42sLwcN&p=R-=7n{Lp8T^BSykYyL*q>+DJw1K94ab#Q_A4>9FF)UXd2!Lc!{F10 zm?E;%iug(0DI)tv6;wp_qaw{J`uj>NBK>nE6_Nh8D!z#HAJtM3>7Q%9i1e4DBxVl$ zt_Ya}|5yO#fUvXG9p-=^RxoqGcNN4O@UzNh4)|GRF$es)GMEFt7R#bfO7)KVRHyVe z@v~1#>5h71r!*bQXVsL_tLhD%(p0}hYIUnDT8zjnvDXpSw9ZEMgOTu!w(}(bE7A+) zYJT%jlPeyt*;4~9Ux17hCRjB}+wa_D>P*<*d>1*l1!l2nx^J43YA-DFYM{JS7Jm>S z&#o2Gz-^O_NsR1wSetvb^lHgv!2B*V1=P(-u1lje7Gw`%t;EQ+q*j!1&g@!Jx-+#| zwr@Kn#3W+)1lC07Sl^f=w|o(y4S95kdp-g0ToFC4b{1_DNGZu1xerNelIgwJ3)=6g zRMRW;;ytI!7()!%;lJ0aSo>Js#18qcTA9oPd|=}XS$?#5@r7X(u6Bo^rXEW#B0*vG zqd7ww{L_Qv$I8!-c~@7Y-%kZn&25hcU!jphujp6=F1y4w)nUCo84Uqdspa)?Z7fT~ zzGI@N-g5lp91X9YVUu$7ygOc->Lu7Wo2N2Vom?vzg5?lAf2dPvC*B?qSy zjiM119@T@@2=Yhrl3pWJu1i`rC=sE}Hq% zNqVZ<>-j~J57iBe>ocnIl;5m>z2}@l{fV<;_4I%`!lD5sVISY%_1PDE5I49SB!2Gn zp9yrUaFs3QXad-EyX!De$J`T&;o2YsKHl(`Zb%4GIlYv4K zinN9>HRI+*t;FGCp!Wq(!e$Qq+NA@$CxU`_T?g~0fAIiIEj918<3CP26Cy5O2@zIhIukK<}XyQE)OFgD-7g%8I>|#OY015up@J2 z{zCZ&9dIp;IIw=6%s9sFi6!%dF|pedS~*h-=84mnsTn|D41NS!`DbakJwcRtGn`&* zmb1+BaExa?vgMw8k!DFg>=k=6O6)cj4t+74WXdl9{+b%^=#HL_l>~Z7%RN`QATtu< z_T*zC?*?<+Zj5cEt;v(*B@nlG*e9FzR#jLTqug_0)mCfraWiKS=c`Zh=Z6TBNd#~$ z1lqQY3EBL@C?>J{uVBv0G-H+`w_V6Qhq3#4DFo#%CqXSPr=R zG|p3((UGnN`p_qeKay52Qy+ZnBaxbsBZ1?+$zIaVVM)ptK0HuH!0AESjz2)4l8X<0 zcKQpTuhUM4ssw0frr4DY6T9VJAmt@xBIO~xOxQ^%Mz~1GO4v)dPWUnLa^K`Tc{}RT z0JLT!X41IaV?uu#f4n1le?Gwicjk$VkK#2Eb}_aYUEx!BD0-mMVKTq#>U2;VeLV+P#$kw{#@3!nT6ZB25w4oDT- zV7STN>u+7?7dB;mVB&-=F6}f6SRp=aiYTQ3y86LQ7atgH%AHCqR%!K8EHA28Uoe|X zmFzGXePoT{nWeu}3_SDu($0+er94m-(z;vormaN|M8Cwj?AAC3qRSOh54X+|V;zV% zDx^xb=Ehrp6d7CZIuNl|NF{E~nYP9_5HWufKW)usx4v^Al&lc@w6*G=zV{S z$Pe^}T?kKBbbB!J>VF(H5$>$$hF~N$z2RTR1!}qqO}|anb0B5qa@Q|+_3)!tN1n3E!E1{_ca!=Shu*NuW!JiO#ZWuWkF&FA)E3*{O}hA- z*6oThaGW=0XI7~#vbY;BxOnULfJ$WtkJsvI#z4Ng|Ic*qQ&w5kU{rQ9gmv}C7P!mX zxB_^UPS*kBZ>85*h0|5q5(g&LV2k%yB|dHO0+UiO$8l3KYq#HK4vE*u zkEI&%_y^LKwr7FCB$!XSNtd-veKY>9C#1ss zA4vxW!(cwfCLPu`h0XXbPrV9rFWR2pB*sttcZ2B-g8__~z>e+9yemfzuz za@-Qh(yB0q?iB7XL3pY1+hrQ202sfOeDj(5DS!aW1eR8#F*LDoZwca>>RF}1>3g$h zf>QvdmhmjDx?^Y!VeJy{)3*(<%K)cfm|CJ(nsvuk&m@_fb^BK}JhWeV8yEuZ=)gz} zQ+d>XS3d1OnWy_xV~X+MLE?Yk+@B+vV*b{y%Aj{BDVc*Hvg9AgKrCoy;3v z^-mbPbNq#*SThjfQ}hUDy@+una729jHJIT@oL1a^9&Zb8tH=*5u}^dQim9-`nUjIF z%$Mpy2{+nY8}-zj$0a(Pf_2Lvi;`gF5Tn6qZfzXJdx?b3DA)epoUD1SkvAgad|?xO z&~;k!*Aq61YSpO~ui%hrZr)};`lN1M&9>)PN$<iTR<5;+Nc9mRvE&>Iq=gNI( zZqs8l_cyW|i{?K!*(0nDPv0Y-i9BgW4qVuB*c#h>(1q7^xr?-Gy%WZ$wODKs9Dt~uH0DCqvbul3lF(3*a^XsFw)EHwf?4ghJOd+qu4E+7rc z`pq(-TCK9T5O7`q@EN-2F~4pu(%_Bfcj71G{*UP1J~r8#)o`8&;8S!@0l#i7(%^2t z*&RG5z$fUQJbv9uq(NxE$pKUyPuAuTE(HKap?hZd zb;Xg8|9A8|sJe};jU-$$0vL(z`NXd)f`r`bH~FX9_2QXkBH)q$ULE6dva;NGbYK){Isz%=1U zm-~&lq00HP|4<*oi2%S^bdMCjP83pqrr$^csvIWk|05mOe1@S%{YFGk_Gj9GdJHGj!TLSwF+NMotd?6Ae; z^IC6d+Gl{20FsE`3ffR4O3w=(97@vQqq972S|=ueAde9bsBY4dq?4tSR!~@-SgmDX z=6F9Dkw!c~KPLC!BxdG>v@`BOnmL`O4>L!4K|8TZ^OZb4SbO;LS7@x3x*kJ1FFN2H z`c>XwdG$uYiq8JaMsy{QjP0XcoGtpw(U7(%f?V1SDiqa6DnG`X!CApZ3XD&}IB50C z$2O=)Hkjm4%~!>3w$xoeUZ5)7aBk>;X5m~Fu(_?eK2~sg-?O1{H{D%&A2dCgpe}Rk zNc(XhB%Q;CK4FT~r162|TV0`fb&vSS07$y14LxXz(4;X)vb9fWTHRwc5&=o)v!Mr1 z0Zba>C0licHq|}gkv@=g8XG#$6qZS2y<~IWA0>DS!=w=<*{mzHs_vm3=?zH-+R*(( zGMY3pOE&chb*j4;MS4Lpf4O=>(#>sXd!`sn8u=ufbcNc~-Qy#FAXg(jAnD#Vw4f2S!H4OmGYn9q`%b!>$OCWx-pp^inaKaKxthqsgNjW| z|E|3H^D${n%c-}NW$$RfGlWK2|qaH8*MR%^V54jneum<3aRt4Utb*xQ%43kwjgnI#i zjA&FBKlq<&L;U}ArjEjl4N`v=sUy{|7Y#L>l~s_0dqx1yqfzhp!8ZS2)b0FWOQeo) zzg{NPuvJz80rvy|8PKS9e(fnFSh!y&6RO`TYlMI+1AquLir{~st^eZ%p(K01oPp>+ zKE^Q;OwzBj2-Rnkg;m3qB7lBq6h6Q9|IhS35{%oga{$%HlZ9==l^B4&Z9PZWU$Z^~ z5Y~oLve5Pw(8fv9-WvjA%j*1%)~=!Zr&Ipf24@|umjyIzLn&BjdkSbXBx$z~fp5s_ zh`|3Z)-FULtF}8p8AeoW7kJr0mx~p0r`%*ONF96CW(O$6h>Ge0A35j}vO=cIO~iuK zuve{ifL9q&*OU$s+6%gdz3RUMBw|F(c7dfFbfQ@Gr^}6ef|RjW{dR!(jHu%- zFo}cC0;@i2IczUT347Id2Z+mv+V2A6I_Pw;>RXk=#DWw&{F7Wx^wNH>D z_Nw;|5L3~xs8G@%k&R$7k|P4d-Rtrzb7`xG0K1&SSPAkqr1GyK5hC(Ro%B-&pu_E z4~k85j5Oee*9mF?D&Tq^ zyTX2Qw~C$XZtNWU(KkUxhG?aV{kinZqqw}q7jsv_>Ym(v`I|b3%j14=awW9x$?{A5 zmCAzWq%Z$N#rSeBF3<7B`zyEWa-CmLucQ?`zW&lJu9W-P#Fd7BDbtrOaixyWK3u7< z%hh~Av69AKNEG4zp<3u>%!laurx&!ODQePqKAX+C!e3%`}*KdP!65?;TP(-X53`L|z0-HN7uD*94N zt7hZ*^p*c>)R$1ldbM+UCC438N(LwJPKQ?EtZedq9CU5irq5j_q6?3of0mBs`pieL zP=HW=ro`#%jR%d$Z$rn!xtwx@E{xv!yIr+iLxPo zyVWK|z^U;8bLhR?kf-SbgcQMmmEi}e&~r8^NxiJT0JcT-^DL9__v9ASt|F-bIZF#g zEE_B@EFvs6ET849j?E=3{5`qmHeY&0!A6TDg}RU2RLdKrw@*aFrzN7SYt-`pLLAfA zR)HN9C9R9T94}%yRd`&A7JN&x*+3~MB)}>>eN{-{T~_*TW|Gho3sqI#F*KE}n|gwI z^-tG@EccNnobZLCB_gb=)$&ca^_LV!x%HQOV-sZf=FmhD{?*F)Mn4zRe#gaN`)Mir z>_ZZ^dd_;fs@c?lMUWdbB`v8uQ#5<`oNap(M(Yr5sjHg&W5b*MBIGxErEh;-o8YoC znf}`Z;RnBl6(^(X`n_Ebu)o0A6Zkn0f%*eQ=q2TAz2pxh3}x$jH6KuXfwCu<7P`dg zITn4mEL-On!(>#-9N25B1v<$%ZQ2l3O{%iw#xZ;=jNTsz;8#)kh?a(Mpze*?XSNju@ z%zUO{zb?d?`tQ}q>i!D+I=T1DWM^Y3l{fFl@YMVYXU%U^U3@chM)qHJho6z|>)fQL zko-Md_<1##&PL^4_{Laki_~TGAbH^O=UcSIT~qvZi-lFIlfkUrIkz;{g_tj%kRN(ki^h z0oq|WV(0)1hNa1-qB7%!i!2|gvKcQzNcsX2-tvt({uVM$NQyV&_ox_S1JvzCGo`pIJS09y=ou ziQljo@l(R+mq*V?&`%fnW%*AL{~~IQYy=c_WBqgb?JZ{oXA5T!XF_Lo0}jGI6VTvl zB9MR8JV-^<*b1VioAi4y0S}@Q&H3xi(==>=iE#cQ^CT5MV{?d#t}%E}`^oPiQJWuS z9toe-oiw{12PReSvQ|5%>ur`}w|SB>Ue>ObGlX#Jl<4KPIpITk??;q%vni zLL~3?Us9U)8wJ;yPG63BCPdtSpY+|eIPW_OMgmFCi0B`tK8jf8_zMn4!~Z~t!1ufU z`|%^%i*+bR9PX*dyTxxpHli-zeVMbDs7OFON_y0sCzP-FX#Mo9lQOc(FfM@X`8xL* z8B#r&S=r8bWYRze*MINzYx?!*&K!Tjqc8kVgz)7R{Qveykqs+np`RkS{71|*tIkMWMeO7msSnY4z_w@L zb{RW0aQ8!(>}Q_Ai*N6cyZ7?-()AYgsq_*p(|QNED@_^d>xcEufh*dI@?h`somVz12D_I#`XqNbl*}9j+eL zGYolRTzd3}75=!|;nnX!KXev6BPXg=XQbxYeZUXExqr&Zw_MrcIwRaAexYY1+=6uP zjAYQ|osoR^do3B?ReDRtFLnP7-vJso!naz94YsIH(tDhM&$rd3bKHXuJXpmI@-0_l zg?-j1)_KSbn?JoAgYozd%yHX%vy_C4LG`|AN76S>4CL z_4aL6qJwSfW9hokoL(?{cN1{<_RVose8-fiOt*fyz&3vMz zO7w~@2;A?$te?dB4qD4UE%l_;_d9&X0Q=vu=OVE89Z$dej+`C={@np^5g6s)9-slI z0cd#+>pQg4m1w_3k=GsPJFv1EFusFWZ>0ZQM!UY7h2xIf3MEA2HCHFVV1Fn`0_?Pq zzI51y*C7qET%a+qdvAPz7QSQyE=m68yH`P_>&^OT;?4baz)nlZ2 z3n^N{RP}aGo4#@HAcz9~yEO`?+5HamXV=K*Go5)A*~|6@5!fV4pY%L))@qU`t?Ggy@tY= z_a;^hfL+tC_}Ywm2NKAO)|h{_hFHJeI<-CI@oRh-Xm5a$=y%^&0QD=tdEYPzl!<|N zb$7ht72sW6{X%tyF>Ogs@$&A>W=ieIhq2_@&z$$1i@h^YL7*3!0orl>ak|W~cQ>i* z4W@mZATjUb4OaGELmq2Ym|e=y*H(8um*+t;a;q5pMMOW|7B?V1)C@Nmp>N|10E)uq zoB90YUi3sNi8HF`APv^y&iSTDp!8Llgmgn}w{)aM=C$$b^U9o;7I4mIg=@n|x|a-2 z0_pfacNBrC-AllD7aJOs;<1AEW~JG{Yp0S9%XbT2Xk^qGzlr<&O`GWH0$8Y0E_`g= zDbM~+bA4lTR@8<@@pNK;A~4}CG==qfBSf9vFQEgOlxr_&evFK*Yrj84!}p)j&e$Qx*_e1UG( zelFudtZScR{)t$N5HllV;#TM@e~9^@vP55{7xhG?ONRTGd(1pQP{{K<_RrWx)!_!A z(e|X{R2wZ_lyBu(%%m=58A^2&<@de06?}Zdly`ge)h??z2Fp$5_G5_bcGF@0*t?ls1E4iO^W*!MlIh2JDJ_@dt;7AShF6q;3+)(z*f+fo(T9!`hyF~~^FW{h_Fq$_B2*5Tnt zDM`D3&K;e)rsNY6O)hc7avy}%<-GL99b<<{igveQ@Ah8L!QLU}Uj6Y_2tMdQRl{tE?qv)zde_T5fmmWamPBY1LgVY27%!rUl>55(z?DQ#6-aJ+FuM zkNlq7*d(_Pg~InG*sLFGbS}uO)-HeK-=6t|g?%ApzUaw$lEJC$%5IuR?p*TDhS&Qi z$f?)df*Q*I+u|eTf41^!Nf1l9-6IVyQ)h$geG{P6pNsCZ4g33remY`k<1Y{J(|JEX z^S4v-ZfE&$Yet71EFPj5YhLXmb-DK;2R?Ooox=QWp3dy(U*4|m5wbBUxhtaV^K`yc zskXBs{jQ7f`%4UdoLN*N+-p$)$3xZK1wcz>8m(C94Z6>-d`;$il!8bTmbfOBF%`l=V+s+N2l(d?iC3^1vr4^O@ z1uL9i5ynEa z?fACsDokQ=rGEga%l4IaBIM9hmt98sr8a>m;WnxyyE_B-^rT3;>xnSbWhkE`U!gLs zton6c#4ozkf1r*~lF@r@WrxcD#5nUl%wX2?BGy7S&4bzZ)L!QlJJYTwAx@65fnnEN zJTdC%pWRtn9WKIA!w${}XLi*|&l9F@h7L+R+<^PhdJQxoUY6r~Vcm{=D&oo{8ujdx zhY)KTgqOg$-_biRlYQq3TJu>{mX9BJ>!GAjA?w z{iWG3W(@je=jxr?=NmW@F?$Wu=Iu%2UI6@_gq-WCdr-8W%#*|bSy{iM2;F7CTR+$m z!#VNBz#Om)3Zpvxu*~=b_#l4AM?sHc=7+|c#DHfFg8u>7c-)Ise%yCJa^Zvh)Y zT0qjdTHU_ra6O%lyy=d?VfA}?`Nda=St~}CEwFNOxO(47UKYL6E_9XsvOMd4uc}>d zlU{`PwWp{~m0s$ry*_=^L*T%!;dPAtidx1zokDTz$mS5NCP(+oc z6k0UU60v=FQ^NC*+d&W`!gb9?y)QB^Oq^!oToI_(wqLPlfL;3noxMH@bVz>b+L{wl z!w25%S64oBbFcM$em5v3`>|Bc5!@E9d*@4(5kPOj&(>zpCYoy2uIJX5u%NdO1x93@ zr(#&=a%6S9hKKnTh-txatpgnO7nev|U#UFg9eQISeJA8G7c8LvX4$Azx-3*)vcs(^ zyur&O;~b-o2fqFli&}|}2ujx-LdpSMPj$IrA|V<&cJcSeu8;&G=F4h0VChwVo+tMN zt|Y?U@E(`q9!}wat|ZyTRm%f;bd$L5Xi&ar;1qvEZaG5NM-i4LMD>bXn$xXu$3S;# zB$uo5{4EU2NXrR1{?#NkZMnp_!bbURw}Nh^o#>(=clRDjP|#f{nbR(uPU^{K84!XO zsSqQ~aL)LBYIynif;`##=Wz)ormnekiqtblNK=B`)WBn?T=&~g$F!a_x^-OF(eaGB zuVh2GIITgZU!LpL8>@}ealTHTcfmzNiS z$=WN_#unW-Ln(0E;8-VeRHaR!>pHDGZsbR!*;g4}eC^IpZu?I|Qq`hicScNzsd(~` z&n6u&o=EfC;5vk(nKXR@y7E?l0#369{P0reCq*pbszZK^3i~4tU zCM@Di%?}8Q71G}H-%q*4oXc7J26eyj)|(?#k?*kcDAmQ<8~}wmp0mH}NipS^pu?!rG0K_t!by2bTr$*LtWWy0WGjO^&X=yS>rl>i0BtVd&~; z#Nicg*}mukhnEM+1*{F@q#v!$Sp|y7k5zdWd@&Q(R1fWE^9#<&s~x19%&REI%k}^{ ze;i3-E?*P|g*q%(S5dU^&(xA3pZXiR=DjI%jCfQl-_#p+W1l|s`2+hTU;RWmHR7Ou!iO8s^p zyNqhQi0w+|K?jM))mw-Lhl2+oPImU^%0G#;Mc$s-djQZ;_IXH>YkZ+iaom8#*-*8J_6b1|ustXTBmOPOgU zsWDv(ae{6`Wp11o>FD20@H0-X&Reyx3&^}+zTBifS;Ric_*wUZ=NrLP!>dPWPM0qi zMR?7rb=k|%I_r})2@W-B2zw#s&mGy^puMJ6wL}FnAzp@wC#jKr=?(jGtIM@+t9brG zl03t?iP7q3SQ{4ZPu#kz?-3K`DFBicHMfe$LRQl(a78qd%ZpgL0Q*!axswig5$87s zRCor1ic{w4CKU;9ERM`eE0A_*Dw4SwRwx;wZ^#2eE)nAjs4$mxhuN&%hRyr&Ytak&LUuz?rhj0ByA~xcGc-R;lAqit#cq>Rt>StiA*f!Jtoa_f@g_S*Ual@NosZLW zNy;XPjcC_5>3X^O_F2PS5fCQJx7 zJL_@LmIt=xqaBJ<2i~EH&yi%W@#tT+$k7xeUd3HoPpU&DlA2@%C(5XDOBCP-W%f^I z%tD5+@-6-Qi`E}HtW zuOjM%!DE7LjG(vR#?Hs@7jnirA9HW^6&Yz3B;Lnn6K!(a)YV>!61nC!N&{nB&lZ}9 zqPEnwR5;e)2$%xwZ8^Rb6}h|(Rhmt#Tq5*P(UNw+X%KL62`DaB%++cXw9H|R9LdqR z#1=cgcoIIfSa*4x70mSa!sSn?7W&J#~L1+ug6eFc=9a-tI%)YMxNWD zr)NT9bM)S49S1{fZ6~~A?y2jf9dyUK@5bb52jFY9_$fZuE@{0c?;b+hh$B7o!XUVq#foLlnCpc2vC{2c~^7k9Wj43)>lgWEka5JElCa)%9pO- z9`9XdV~G#<7$%1e8a7W$lSP&3mS;**Zbwag&h7x4!aAuOIf_+NLf(FWjC*RRTdM1^ zl$L<9n>tes8Qr=r+aWIoz46IZXr*?_eyhP~mtSIv`Ha=BvZA>{ohEUW`n)k!JY|et zMMG@j=2fQbA&sZ@l@}w5oN6#rLss8hXLQz-bueYeD6jaE$P9V;ak*`5!&bakZ5 zlCC5b3exZSVXy(x1?i#c@;p9$+?z72FOF#|bZAv>Woex)y&LoDlOVqW-bJz!TnYg< zhV!aSU#LTY>C1!R?>r@{V+|)m1Rx3b;L2cEP~!wel8K>ukYuwA=4uJ!>+U0TZ<_y0 zui%Y=r=HX5xzdbd!LcTB3ZhieE%c;1Hosvj~3xf(&^!xNk>oZ}XQk>mCgoF5bVBR?ke?hWR&-q1>fJyaGbc8$x8 zlP?L*XiP7AXSmfYw9Wv>xuA9#4KmLfQ01@_zjG4!iAth-D%|pUYZ;t?7nxAjGs^YW zDnO68x%oPvm&XHX6#w?R|1+Yo#T?k@c+6I04t)Z`mAHXJIOgpW(uRdr69gXFq`>-9 zI@1<3hV1GdCHdSCK2@+aGluB87-$ORA*;yc9gDrWV?mBJwCT1XZeNZ)wnae5ncz!| zX~%F*ja7c%L%U3XPIu&CbCs_Ej`m&;rse9E9qbB@roxRr`RxIYk+PO~Zv$Uxoc`TO zZ26^R8d!IWtj|L_&4wLJzbxFslLzg=R+T!!k!lxc^)-aog>$V+b=xD=uF4bZoJU8c zg^Zaj$n8KO7F3;-jh{Uesb!HDQ5()WEVK!*4NEI3D20&dy50i0CRM0=%&@h5wFi>! zu%#g&SeUY9*s1Y_r=lr=Iu-aP774IaPfD>#*7F68Btu&FE2l=bepJ%E^wB0oPdp~p zcJPf}7x$Yq-1P-;c{eK1vmtu}0n<`SXs_IgD}uUy)L!fKxq%ea18N2>F*;Eu4|qVN zy>gp;je><1^Zacf3u6Pm3lI#vO_=~nIKM{U!`MU4LgHGfpJ{YM8KQJm>AB()Wdp?p zrCg;KO4*7}6$=#^l#q(M%5I8}l@Ut!l_Hf}l=c*(mFAQplrAdnDeWruD#j=y{R(~9 ze3RTM-Cnr8b|-YX;6h9Ra8u3N*y~I%QDMNS?R%h6Aab~^sJ%Pa?>t_=S0VEd*~?jI}JUT zclB@w$}(V}FuESx1!Yp84E#+I8pbveGDXEM(TQ?>?FKPsgV$Nj_3Y6s%*CJ#irNn< zrs5hZwrMhacVG3qDoeceLEpGiHNp(Cm>W+8INjTma)TJdZzxBEkS* zR;j|EGNSTDbwS05HNDI1K6T+eT`}EjeZJ)T{nC2R^j|`8bvHfI0t+kp%2zO?CD(RX-R`Vg%&~y4W*&0FgfUBn5SX7VK}VEPzsuEC}S9AC;{a$ zl!TH(vtZi_59HY7R~1zhUML_H8Rag>5xc=n9=20ncM;G>$qM<%qLI@^5Bwf{LPGRx zjDlQ-NO}x=!=O+wDdsJhmD~fjdPa2Ts$RoQc?Gm`yjKw}d=b>7gQr($RIOrXB@5(Z z0rsE@5-#Z?AUej=Dy!yj!lIR)0bL2bn-F3%(d$tA`YWi+gwdybRIf^^64XCv;Waqv zfk*mcAt`2?>Ocq7xgtswhjt}stnV1I3Dt&*y?!LRt)ruJwRc)aTL+@!-m9p?uS2YJ zRY$G2%D~PPLv__$+jl7NWpBfJ42jMYU2UCG9i9Rn^%J<6HfZ%aoC0OH>Huft^Iuir z^DnYT`NK{4{85HQsz7WYyLLeQEffmK17rt&00sa9w1sLUUt?+)L*UoqA;1Y;VZa+~bpGG0My7?a?$ zKn|Mxs>l^8p2Ix9xR-igLvJ&|Lbt{@4~T00?e&SF=M{6Kd6 zewp_PHygAo;*jd)E|j|cnX1UKxmIglIa-ZZ++@GD?}*+yB>WoS?iFjl zJ4Bf0X)i_JA;Z=LJ$e$d!UV~A4kV#~wbl6EfTqWJT}EEi%U-b{&ijOOKh=7yB)a8Z z3xAhofVar5=9_^oQ$f{mk%9NM+RLC#QPnQ{psPmh zgJg&AKlA2ti$Kza-;M^pCNw$FzolrG>m@9mcCSs#OPPOc+FtUZjWB+?M9Ydl8!qwK zW85jPQe?83>9&!R(e3AnsUMhRvkj`1&H3VTH&mj`1fQd@;?qG8sY%psmpV}Wr9PF% zv~_}5&r8)9Qt8K28_a??lnafDZB+rE;&qiHLgVRmHF){>$Eyu>E(5{ch>ZDpgRZN zxt~(*tLw~W6JUy-8*g=pQWEu;V;hRzn**^;E=tG7FJ8igL@#q>rCdu1#NcBC@Sn(k znpW`E256zVcX_vkd;C;qa1I{r%I)%y1iG0ZMa02e#dpBOWx_L@`@EHEJ~gYt$*nz> zD{6X#m&=uf=*WD%=S2DHRjqVmSVSTF4_B3h>Gt#d#pgoz_jfjS$H%JYRB>Km;_bf0 zhJC7>Z}F|<4t;#Eg0GD3q81-1;%|dQ&!Qs7_wblRrt(^d zgFtUP?)O`G2iIagygjf)vc6AEi~y8V>K-*ft9hzn4;o6fGnXX8a<2YH3= z2G&F+x!BcJL0S{LsuI^ux~qE+H}@NSDZQ@0$78V%+JU^wkTF~mF}SZ~%~15vp5cuh zPEk`dqt?yl%1;ln6P%tU@5Xp%QcHNzz0c*VPK+FD@_((*aIa(SR&zYgVYaeJzTtAt{*eY}F*4)i?p zJAAt^@uf_H!;7NZyIH~=hYS9_zFm1nV!1X+-Av}|03;CR3PyQ*5=8%kBug4Nlw0-jC#)Bb!*-CgR zJ)Hh`Ea0#*;t|rj$~e<>LaEMjBnpn*}_FT-`8lQod4tM#!Q_c~MQ0 z!Gbw?P2mv^=EW3T`A){$Tq!1M#=Mg&l;8=00BB~3_88K9KE8N)G|Id!v{;c!Q1cmk zLwf3c)n*~NK`Q*~PQr4lrbb!e{d1i{YFiclXfYYe^I=Nsc_4+Id6T>dmJ5;hk zDTSDalEmdQw`xarVQkIJJ)9>88WRIo^iWmQtz)FvLiR<&Lwv0mkfU>j5nIE zsx3iUtW0jsYhXlK%f-lyhdzE^38G+ozsox?5i>z^-JrHCo+lF(jSuFYhz(8!@tNH! zqR5+LRu_3Cau0d*Zb04EFtApREXFP3a&`AXp$=5=7154RV9DU}xB*M;^t_W8;!@>v zrHE#dnb|1qoY##i=pK*9;YD!UyT^m)WLs38n6(xunF%QS@t@1=BIJli z4jy3Yhg_ME?TPNGSR(0uZ6GZc)$9d&^>!hqhGJ*6BGMk8rYTkVyy)ELxN!&VAIpWa`3!5N z#!yeHw~~HNcq_fAVy-n>m~|=DloPp?yHDo3rPOgB)?%k+00kab#&rVtE8&P9(huw= zk_A=g8kLYZGld#Ne5SsY^epV{5#qXPnt6b!BhnTESPxf+cW)K`|3lhYMnx69|9zjfDL_vKyt zvz~MIv(JmY-<)&Se!kCs+$o1QNH3zqY%LU!G%rC^#^HG^g?qX&CsaPP>^!B- zk++>cXf`eQ2&N~EgjXVrT{+&>!CwcgV||t3g?mc&_t_*Z!}?te++Myh|I&5aDD{ag z)ZJ%}n$6c%!HodtCg&y?V$O3{T3t+Jq35MpPl{Q4(!w2-iCY4fuhb7`<{4)eh{kV6 zmq4$@E?&qan)x=nz44ka=LIk8oDqw^zn$b6tB8?5W(+W+mXC!EomMl~A|(Qa9q_-qK}q+l*Oi`tV$!txmor2~KSEPji#phM5il zZqCk@$lOJwJtLyri3n{kUj0}E+vaZmfL@b>S6g8-tzDynP&h+mkYG2hU+y(ho5$)U zo0+coIPG(I8Lf?$)C)l#t6v;3@x7cUD8=)RZHX4L>CSROi;(?9BH4m2v|7wbXyTu( zlhA6R399$qN5ipV4+ru&scoq}BTH^hm0P)Pp2OcgJ4>HRXuXJST5i2u=-X}#aX!5n zCj#-ZP^NAsg>sn;9n`8(#_QCeEoqy-$Ck>5yqg(aC0=`kA(G$Ue66@-#rA5Krxrrl z;>#PYwyzx9vvw3DLi}BIT~bapP{XbyL5RQJmKIgyIDZ%@g5RPlEcw(pqk&8A{CwbO zi{dM5x!ThsR$^9Nd(=bskRQe0dDj1Boad)}F*~)L)wv(gI0K%lWOIx7y@~j4@M7d! zr-1&#g$CT;=}d&U=l+2%kAa4nJ>oZ}=E<<#Wv84D*{dR@qOATs$z%i?{a! zz8FM2o$m@@P`NTHgiHtp|qMIKcnsO49D)*tFJnwK z^pHr7;bP6rFk8Nke;4l}a8Nbz7DPZbdisy=GMq5`mW<(sjAU=w6hIc*sw!xLi9xmr zC5~KDz%D6}r8YK@pUoz=)U+T9F?xTo3lGK(KDTe@HpnaJ|sbKvek{8@?V2qZie(OAmoyhY3*R(V6bnABbO!3+@=gd zuRL{BCQOhf33>3m!UumJpPg9#qG+!jd2)5LPdQMLbnTa6=NV(TE*7k>qWT3a`_Yk{ z6K94gH1zDZE!2h2JWC5SdK+pZciKsy%T4C+H)^)hZuKq8vBl+^rXQheRwb9po0rN< z7s^X#%1fupODD=p$I46IdLH^0kw$@@l-gV@-IT2Kh6TSYx^6bQ&gd;%(uubY)V2;( zl9h~FhjH&6XvX?HK!xDF8bbi6B`pQK_sI}IJ4mOMqFdFB73F`pE7|EZiuN%pzOS#A zt6SA%=->Ari@CG;rVi2}cUVaK>qa}Jb+7JsuZniBf;zz}i}%MuWoSdCX+sHVLxKJt zvFJ6t|BJ-43DPqZ>92|ZL8%k{gOxe>sIZwW@2a*hhWYwvCX(p}GV_t~>bu}j&P6HD za*n@b0U}gHlNWl~gQQFitcQ_U7;g>}6~J#qRR8O&J04&mV)Q5ao=fyS^}lQoeZOPx zzhH?_Oo3zGsvxZKUM>LU`#B_+k0HZ3H)=qM?nxC)RAg>UWKA7hLG=^XI~Ail6{=L91a~URgvy%UH^Rv`<~iuS}&YTOM;c zPq}vcheAAJUv)L;rQQaD=K5;2?efjMwAo^XePMS)NqwXeEsaG zzk8>5?=xKg$eeuqvkc)Z5Ps__n^Q-aElHqRChz@NyEHb-7DX&{u=xy`l5IF*^#7D zBW;Bs`u`dY=QEn&*m z-3S|Gf1BW#!%nc2`u47g(8t-UwtkfvoIc7id z8s{%wy)~||IKPD7E{3SU(?(?D)zU^JNmc0|k;TRRVR!P);{=2C_|$(&-V=_Aj?g7l zisd`}4qjWNiQO@w4$Yr}>B_dn?&wP5bs1@rMG*7F#qPrv(#{@PvlF*?fLd1f@F;>4k{%2vDTYjgqB#s zb{|AO))4bx=e$vfAoAVedA*bri7vZ$$L@oO@HoR#|AsHR3G#p4(BJ&C=BT~u8DsBh zz8lXWC7hm#wBHoQ4jPg~aPyjC9C-XcwTgUGBz#<_Fr5QBsLhws9YgUIai8F~2DG*= zRrR9e1CH1qQr6*IfBtklj(8OC5bw6uc`l6ELNWuGx|J<~ptPfjm{Hmzf?YixS-Aw* zNC=?=-aG_6hveFSXYXUA+*0QQ6Y?Yi=w;uxMxpYylAFy{L_&FRLnxXo3}r4|T&#qj)BQpM@>KCDjv5w3c*G4o&U7e#rLE_ z^DQ+2saBR&u2y(oDISU->(GKgFJI#w-{;rQqPp>k?%Eey_oYtMk>GKq8}$X_f7_+6 zyp#O49Hm=n!tMT*so1=PsSLZsywv=ILe@#S@7MRbE|=N=W7ZxJ-{i+6kpH!8R}_9p#kd~u+{w=O8W{9Tw5uvSRt#mZqvx29&HvWEXMn3N`d2d}v z$Fj1hIshQ@HdQ$~qH`tEQRllj^*s>b?lsfQnrC42)a{d(wS}Z+F`X@dd(dGa@lfw> z6_X)ftCrIaafBA^w#c==^~)T+`arFU$*Sm-pIp++bHk-6yyq<8r;`~i1i#lf++sQ_ zsAgt8-ey*idwnw}d}?Llt98wGDM+RInJ1sZdhEz7F13Z)EY_h##_T6kqk!cL0~24a zQ&LiLY<|?%HIw8(_*>@UYR*oHwD+?(5o(_Go?n8r$uyO$`TI0dr!gaauYa++Gmr0F zd#<0#s9ZUTrQ~T|p}Xm_Bnk*?vjAu!hb%HQv2d0^XZE|v^{WA~tBD{tk<<8yqV6#7 zgL2B-<4e;Il9?yFONr}-**^>3Fm%VQvkywNmn8C%O~@9{2xbz*dJZi?mJCJyW!t$2 ziN9h0oge$=`dQ%rV>&4E*S0S?KFx)z#k2Ni$2=k3X4U%#;+U32GGGb+V~DMEPZL_{ z=zW7dJ3TwY!8oQ|Ssq`DS-@Sxuk8=h)6tc)ihnCtwrxU;oDnG0X%idx88||It9l!_ z4a&Yh)yL}=?Pu0|Y~l$xVpxJh!y8`?y7B**e)C+2m-u^R0gy-85|Kn$B2aA~e~<4# zZ*|S)u-!r_J-*DLjVgWuofj#!Zw(l-_sxCJ^SV+h%f!;lj)$UbKay^r!)*A^!darz zp-j{K;iaZSy}pv5Qq=TA1&c$`ad262M#F81>FoPO^MC<=GBE9^X*-i1g@d`qR(ogZ z_*(6zR}C#8kgIe^fQI+R6-E@d$)<2|&w37yS?LPa&^V@~SXXa@16n ztChsEK8ZAM(azm=gy<%e<{M>U4vbvZ>o9+tmG7(L-=qy$Gp^^*r}W?EMhtp3@}6H6 zX;4wD8om0=;z?`sBrr%3Jn*~jc;v%<7k=d{?r+5-ev=fPR~(SR1T3rNzR9cCp<~$s zFXrB^z3$aY=*c-$Cs2>lB+$?((0HNIZEoozzAaWN)+AOT?k|qeB+#Z+u6|)1 zaf)LYQqnHOJH^p;T8_+}&+kujwbYKpEmOs3Gwcv(e%kQiixV&^pIDNrK1$wU5te3gQU_kH_<6*X?OySG2?@M+jqOCI;_X5X(>`rTzr*nGRuz;;&7T1;M$ zMcES_U#KpmJ+6`DpIuG6re<#pYz`k`*IT{NAsU+a=^!gU@ssYJ0x~wRf<)_B_;Kel zUXEzj!g%eFt4@c5RQ7r9$QSjmsAd2Rou@}$omyTXobxow6U)onnDzE(tOJnEM> za@JBk3O8Xsw4EG|al}>+*ri|M;Rat$@n@^ZC_G^Gp!zgrqdD|hOR2mI>R~_h$FFPc zrQBC9PmI!OQsb23f8un9S#0IRX6yYuvX9$7!P?fR$$|H-)ze;3LxwK-72|JjMz7bk| z4SUkVaw<(ofpHYS#FP%`xWGa&>^;=pX_Ztdh)FmUfEFhw1tZD)98yWVV2b?KUFjxW z>1cuBr6Pue%ga+oCJVLs4(*J%ppXY53heT9S%QQ1@^RZYz@qa(4qhTdFTCU+2+kOKZli_Dd z^vusa{2~AN;LC}pPJL?IYUgJS zjLx^zHa8=+;kNT&uv?Ci@;6RaUDwCjZz~-F8O}4$)fW^`oka0Yyzw4?(;QX~YYmv9 z)n;&MY6=HAvXOt4r&Eq~sVUT;U|2C$*^@(CuM2WhyzDsSpdjncW^mUxY5=b4n;w5< z!}vyBq>ati+*b&{$_14XLqmwLM)QW;r=eMY8$QB{mTDEiet!&AUg#Sok0R-oRJBdI zOia3CfZFH8S`__P4oktr$UZw$QIVLk(3V%n3#q!(QV45N(bsE5TqTZB3(i9?6{8bd zq52$JT>VR})R@JXH3nCM$X7BAj|G-aPTXjROgmIi>l4@c_RAPqAs#==OW*H?oD8X{ zilKU~BGG!NucTU${-??D#Hv%-T2Wf@KogU(>Ztw5?1;r&w^OS?tYoleLc3X79!$hU z^peSA6kWu*1Sk`E80kGi7D3?M za)*|W1%0DOOb5e7qSLavp7gf|zolRRziJ~2$*ZKbPSxwG#)j8&(gri0X&r4~eXI|> zPkE_7zU12=>Bm^SHm57bZKF1tTb@O5(m$-*x5__HNjit28DE%?)!dJMZSYC_^7~ zg&tWpKQnKd?gsHF-Y3CV&Ql%h@)aT>3e7%GxEJxH(>S4JSX=?`8G!T) zK;p?+17Lm(Vq&r$Y@;I=E3ZPTg5RY5D3Ac|}5+fZmHKhc-jgMVk#(>IILD)$up zyX${d>t_F2Lr442ziBFkj8rln98&vwGBo+g&e@xl+3cL6^I9z9f zg4RVio1bR7`-|Qi9~Y_q@WFyQqsqUOUxnOjqRJ^J*$pae>7=Clm1;HzD-+5~WFF6k zzpo?3@k0BZBkdeQGZ!4(7kkIK6Jx|4Gp~Y}ox;j;*@;+6IT}?m{U_6aI z4+=FdsQK1Qbir76M;~L|%>UsVWU!M&Cvc-m9m0_B`d*xA<~n)a^CH^Ng3!={GnMvt zUZZR3{*Y{=Ozv}5k`LMP--BEyMq(o&_OExw#m~aEMHo%s4k-A9fMZjr`J+9e&m&}q zW^c)=KaJfCUOll&roTN4w*#h@X|*1F2q$(jH7z6A3)eTYOtqq&`WbE;vL{CdjK1Pl z-a;MQn6lh00JTgz{M4E8k)h2=&6W|i4}LWUxhx& zAI86?&LASm8t(5?k;}oe_5+)bBt+&)SlIj(2L}8NuhJ^$DZ8K2O=~%P8IbmuYrRVY zZtUX2G42!+NjUrw#al6+w(yyGeV6h<@d!rtl+syIIF(i9T-zF-j8@(i{nE;Q+T6pf z*7B=1-Iram8XFxt+3uwY=`psN;SAT7(TDj140NJeDF}zrTxiE8VatT3poSD^Ec2C& zu+k%&MO4^mPM{XaaFiyV_z-(=t-{jV-1Ls%+EY`A65w@rgt3U@VX?tV|gyUVjozzy>MyPAj?U(Cr)xk|EuWrtY^`y zJ}KgrhPY6N7*#w`BKlR%C6|9iVf4Z1PYzpoJvy0-&OoY5hYLKWu&AzcrY+pSYXaQ2 z$od^MCo&sMIc4l{j3gGK_o}bNF-%CUdf-~f&pEInOfhQm*2gg4l*z?J)R+}?K9Uwm z#(oy7T+rf3*~)5tekX9MqK#wD|EAz>aV<5wwM8H)mXH1E)5PdUG zKqT#zH?c+Z^Oc8-mX?&@JfMhiw@oK@X5dGa4D^r`EAGs1eC0`6L_aZCHspC_-E-R` zMivo>mUg|J%=!snU?GKAa%SS^Q@o=Q5Kj9p%@R`S;X;+?!@^>De}JJ~GN3AZ7*LbC zrhau$Ay9%@o^1&~l56s>Py-A)`@fRF0{-BC{O$eIoVJ~zFOcIg1h7n($-=kP4)S6i zw4DeT++Cw+CfZ#iAB_2*yYmFHW}=}rvStG5Yhu9|>1zhT=pMhz2bAjyi6E)71rGnc zWmfRc9Pq&_Pck30-`V-hZ^Gk?j=`mY>hZYVFgjz?)_UuTjD1g>zJwaO@D{}URPU_a zWMr`(AR0}#e03M?znD9Z6eFU@U~|l9b|(p8u%v}JHe3{h-mWhsiWf#axJhVc$}mH9 z4#F51lB~MnLe8z~`IM+I!6aYp+}S3bP{)HBJTx*LY4+@0G5A*dV+i<1Q%;=a>>!6- zw_yGPW#z?;zy@`w+g^S3Bd#>n(THs&HtD%1XuvD?c;fJ^@XSCl4{fHy3;y$knD+`X z(|ReQQ3uo;G^e`hxRvrR5fIjhIb^HWvsa7q@9R@s6#t-;RO4n+Kkoo^e8Og3o`QG- zMWz|}`(7e~W#0*iwHMdT;1jf44NCopzeS@_x6J1B9?zi+5F2S?+sUtL)8S zDqE#h`m9`@&_c(QESEIVh*iEr&tYAIsv}zy#;Xga6DkJwXD?b|E@x+?{*Ui6C|C(V zv04~8h}moZrDZDB?a7yC9nnw;nu+|-?0`2&#+1P=sDm)ouo7X`x?Z-pNs;kXG3ph0h9O z3^2|Ri+ov$LR^y8T4sa60sPS+9WKcx*%mZ{J84BDB%qr4#1$J`+fI8snv{ui(ZSI! z(FJjAadQb*aXK%PQU<~&o@GD#BV%p*#e35GrFW&OifXf3n88C-2kNzfZb@UUy)qD z{54|9P~o@#Gkabo>AdgeWR=GkuZQ;Qb#65js!ojr@E z^F*T~8;4#6qZLpeD{(!PAzHBy3q@>fV?$~d+z%BY7iJ??{!G7n(h<=Mpb-w3X$Z*NEz@#lPiM*?f?6 zdPCW5Ny3+w*cSfai2KFk#B|GAp|<{mP=@0Cy-T>h{sHd+cvCvZOXV+q1P0HvO}(ww zQ~pq7lS7G6yt#9z-hI>dhFZQSzs{YGmQG-^TM;1Nol-x&$#cyiL=qZPDnhlXTgWsT z!HNl`Z8I9{SRNkl_zO0|MoLsg`Is!QRGUHE8 z()IXYgg#!kh72+?7~}m`obX5mddutzUX;uzJ2g@V>vha^GXymF$!61-J zgLm}nPvJ)x;BFmwW?x_V6T2J+J&y&PEHTYEldH>?e zwMh;>*q)^)4MJ%P3a+se0U$SVuT}Nz-K3%xE2AoZgMR^p5JluH=o}`LXnZ~Y&7}*m zWycX|?)_*9=R`55yrpNP<~>7=mLYr^<2vGvH+hlV)0(<}aaAG(pBJ1JMjb~5gCGYT zkn_JrStyksmMX$aDo^yDyFfFmj7A@AT`vmQxqX|uw%2%)DollUpS#unYeM6Pk~#7L zzpOb@L;)#pyal6qre;6Ne2Khx>N71$gnP`EKU&RlzvR*3Twy|WqW-n%Qwwy8_N86M zPczZ{$I1762EvUqqm%wt`GHb~{dA9hi3wl^9%~Iad>;H1E}YOP(E0~E8D&n8B%aeu zmsw8ac>Tfga$z9$W*{!GAMtyV&3&#X)|^c~vnNKEP5!DU4rY02r{~gZ`EOL5Ym0!} zqncLa@#A^LsL+2i+{b6E^qtE$^xg~m6wQUh^Wl6jxF~of)Rb4b#Xo^2`Dxu+> z(F3D*X79|^%oz_23geyP#g$5zL})US-T}V|K_zj>5z~=EF;y`l@fHamsTRo)sbk3< zX?iIi=^e>35w#V&m6^pbvPM#Q(n&xIAPp}Jj~ifmR(ghxHs#y&CoBhi>HIyorq%_c zP5IgwXwjt1$_Xc0Y_iq}R|2@5A)^fg-7fTPwWs|NO-Nh#gm2xMp4Wy`Os{{PevCf( z$T5(4)>LVLZApKe_Ranmfa{rGwAcmM2Ft>@_GqoG6B)5`Q|%Fx6wKfQ^DI306)OYU!PE&4}P9XS0_;g z=VjmxpI)_+j>pb3c7y*A0 z>|u13BW;-KTp*7bWK12?mg^IVD8)U;OyvTV&Aol> z4KsCBdYKrAl{|6U`^p=jU2qX@JKe=%LfG@UkrxdR{QIMits!0db5V3}PS6#m)}z)F z?e*Qm+ox4gNZx475Qck+E5>Ql7_Qt>Y=8(cp2|01gwZf>>Vr97Lg)fw6qc2S1k2_^ zYYhku&<1=^Id~Hy5ULLApDto!K%f!Zhyp~CL9GELlm=0cXoYIROrW$-A!s+W66OUv zhdqNuz-D1@J_wg1g(HNkgx?5TI+{5ul_ZqRzj^wmx>)N&{fBoS58|BZ_#mBu6p zm6zhjscz5Vwdd5>$Tzt~k{r0u5yxbG)E3#-IL(Kq2r3+kE$WxHT~tDlz*Lz);3ZOWSUWet(wV#a3N{*?JeRv0Y1ohDBaJB^*Pow3Alf?qw2 z=_OO%nL@C*V6fGafbMP^WxO6T&qH#7hU1kT{fmHSPba$>w9>9@1^dJ6*8QkBt*kNG zM!7D`r5_e71Qy8XKQM|68f4dG~?G zf1Wgtvp~{cMHAgNH}N-}mZ=)U>0nOq!_*&CJvt=%{@=t~yr09jwsuJ<^kE|2D4bo9nOc_#Vt#Vazo!^DHWqr~I%J(p|brzLrnPSuw$ z)Ryx1%kU)5{0N!P4npvi&y5K|fiyACXJ(P~>9O*!qdaZrbwAE9Zmb2*XvHO{Y%`TshM_i8gz59Mu1N*MB*vyIAHeaR`H!jaO zL6v*-XQ3{1j!41J5FNIpUo@OzTpd=BVF4F&TJ;$M!^SbX%sx?;Pw$ESX7lb&5o76P zP;;)~F{SzKA|pon+=fxO`PZwo==S3K@>}Qno!znJ*hgX0@CS(a2dRQ<-%hws;8A`m zK`P1}5CRN=zp`Gto3c|RJm9&}^J!@9l*A}xtQJQ&u0Lfn4Oy_6>6|4T&+YY1KRo(s zB2&?k-G<+G(iYzKv#q>s3X5cl@Rr@)oyUcYiJFkdF19(eabeAOY-&13eA7?2^AMe5 zku-T24y`wm^GWt zLz!iojxO&2DbrQU+3qI*M$@ex;I;YZb`f%F`RFP~PY2Modos8A7>*eGIVy48JaYPN49@&Iv>6QjDOq4I5Go z-l$AabgR?)G{6Z>YE=(QR%Ab#lK8bk| zA(X|#u6By5pQzvO7@QT}dcRj=Pfb|$437wVO;7Cl^h@1TC)oow-?%b(K!Ew*^l!fz zLzLx0ca_ezDgy)LoZ_PPj^4?I4!y?XTchuB8l&t{y3(3$&nPob6$N)c0(a4~zW-C~ zY$Pd|QfRQgqCCi_VaJEE;zMfMk&dBWVbZ2^gA@)Trf>Wx`~^(>oAxFAP!ax1dB)yZ z%J&KMy^sC0b&>1~XUB`-9K15V3SQ<)Cb%o+p6TST{6^<~8XYFRG<+9zggr#(=%wRh zLkV^o|KV^CkJL|4R{WdyYtNG_Mv8*i%Txf4pferFL3?(>qm)0?Pg=T@ouB&CIRl$? z_dF+MG-*3w3fK=^bx_fK=>8V5Ma*3_KtUEw#UZkG7^@YHfk^e3NP)|QOaPb>PvSWC zXwN;mQ}yp(#CM+G@Zo(R?r`{kZ!e5dkQ)M@fk!{Q5TMzo$)jzg{Xl0#52H<>3Ed81 zR6UXT@fr7SO}*lJjKyQdkOe#wu#MHF{~XQS=Ks?F+&|9$b!9`4WI#>=gAx#OXmiNF zXMxuQ-~ns}Kf~1>FsHK~(ZVvH@j$DQ9kie)8`M`+@R`cxeWHKqFqnZ>AoL9k58B2& zDT(-gRnyqN0o?pJ$|IqI84P-+H; z9Br%)vy2mqoaQcKf#oH?O{wFMlCg6>~vj>lmz z`ra$$W?OxkksxnV3FXRq;}(5CRxvXDua%fVf^bYVMjy+LB?kLpgTO#60PBhs!rlk# zGr8uv<-(4@nMgWAIwNmmeK4J}xAu{$w^}VUl0|3an(&LEzCN7B*bxaGJpk2U4#4D0 zK7m8P*z?EUh-Fv+3I@FzhJZ+c20F2K&DhLv(!l^mJKB~Pk=pQ$w7&RTYJI~u{;EAL z8wX9DZ#rZ;_nxhPnos;UUt19~e{_&JV5KZBE<2rj+{<&1Djd8WnK!-qO7aZ3wRNZu=at7H>=TA?5qrp%xcHO_^%?+^k$YJFEPWMA6kI{kR64eF&uQ_0I_26BXO{Jskott zvE_l~wq?D=)+bqs8pq0?6R&P_`0NbOf^&lC2Qy(2tBH0SvIYSrk(F9aLuruWJf!^Uf z>aEAS^xg+;kk`gYv94-P|C3aL#eh$cwHZ8mztJw3Ie6TVX4fMCJYz_Y^Q?hECxby; z9t>c@sh~{1Q3$u$6t0x^#$yuv#!x=fQ4BFPyupMjxQyPJ8t0-N^56%<^by=}4Dc3= z%ml-bT(oa6@F~>r}O;^>G=qga_2~~G{gZ9IHLG|^_Vnt zBMPi*cj#@Q$be#l7Q6)pK~lETp3(fhZdk6nHDbL_oH|Kgo*GaIQBGK)Jz?^%4C z|LXaVX5yJtoQ;1edtoJcZ^h(ntSv9{=HDOYx?E;78iy^pc`=^fvPpUK;f}qmhkGQ2=C|34NrLb11t93R0;i(?n}v6;3{eM z-HcTJaE37ACqo9D@y<#KrGMM1$@|dTupFEboL%rlc*hxRdA&^!yzX%#T2a}xG#4Wd z*eCG75g2qQ>@T_ZzHukHWNa#p{ybUwkt68WbQ#;=2L$E2=hMNHHFPcHxtf=9jV6NY zD=uvlF3${?&g;^zch%?V>X8(}gL>Yr?;U`i7zGa*TaI!MZ9z57%Vv~ZX{)D)8d$#| z(uK@`s+~Qx;N?|j%C6Y68!<%(YS9*6l}GTm?CBq0lvbe`D-P-Fsze1u1WQ%J%o)Rs zwA69L=j&=T#f|5Dpz6>mKmIV9^v21#Em2)(5NX*ZyN6n6B)Q3ISIrM0GO3zP@lwL2 zZ=2%j4U1SVQs!Y&=Il>swOqnfx_%#TQT)0C3axo2CCHHxHT$aVAUwu{KY0HV@peN1#Lx@vYWxKz`~_Ce z`OjL$iZyf7zKjK@fPj!qB~Z%5U!XEkjqB8oZi90~%E+K@V@oDa0pmCCSs&i)D0+K~ z(NRFjeRuWXc8HjM-pf*%YUyU*U^3rOpbN)uTuxPqx4%QX8qW=~)3B=3Py=EJff(ic zgSY*acLA91bRNWXn0tUQqFfwDG$LLeMWtlO4%{a2RMz>u@G{@iBck2odoAr3KSvdO zueMRdXdA3>6PCI?T%`r%+QvBi#p+n)nyCQlx#HY3NR8S0ex+BD0!0d6;pHNDmWFS3WI^;H*98%y;Saxn$o^qN5mFb5orW z=7`397eWN$)-__(H61^{sCn=%vM=t@3SLFSVTLKq{c9Q?X_qn07y4Xq$R>5Vvv(We zGnD~=&8+`7`&U|jae}c0fmADj7)quAShXIm}iMn0eo0wz7wZmF7v&VOy z(=4>O2+N`(T@p%3MHaQlg#(UojbcVgN6&EJPo<<2RgyANQ<61Pe3Q$Fm;1f2VL&0K za4!uiy(fB?!zq3y7B6WinJWUc4!2;^Y;rx1*HqL{YvUkF>+u-oDhMxB1&gGLNIQtQ zSR^od@}zW)DG8x9RvebH*6Kp&-X$m*#!ee5w=xy~{@!D| zbXj)JJ_1mEXTlZPPYAQ8a-TPi<|vy&|0sdqy#_@Uo@#F?4L9^!$2RMLD+C>*lFA9N z{xQvcJ<=p2!3`uvI9GQrzM^?(jHlf@KP46saBwffWsKKP%+6I7jMcCR1wb1_@iiDH z)NwegQHv|_j`RnhY6S~UG{ZzTi<`#Tgm2nd_zx#K4Ih+h_1%fBEp*0J8HSemXsQgg z#av;Fb2KAcUClB-^DbHw1xEzaLPvTfI`g8@F=*8ZE>x(=U3nG;4PSH%IvLFcEhdCl z*_oJ!BIvnOgD0F(Kon>~81(?9Kjxa@J_g%wgN>(6jdY;Pd)<>W^C}+9gN;4)& z<@XRZzF3sADKw1!EV(3^$Hv1%JGcDraMotFC^*tjBz0_0L#^V7L7J4XDx2^7u9E!1O#tXAo#M)oQkmf&eF7Ta z5!K;^a(aws(O^|t=?^h5T;CuK+5o}_bDnaSQTFy#89D&;5qQKg*s@tS{8cyJfyg(PB<}AJ{Hpnb z%-bvFWKZ23%@0}-ld&xr0`KLL!W(|2Zn-y z&!M`*usw4T^Kd9u-vP!2hwA5!U|x6~aetx3QJpRtkRrEvNcGwWxHf|_wSx^tR#Fp< zG5o{Ydr&Kf2Q}24cHaMcN(aPt-WUa@t^_6mO_kcYyE#-r8CkN~?>-$ceyGFUY#^}y zk+-%`TOd*&k`4c?u672dG z;~DG%>KIr^8xc>D^i)H6gCc1=r1g79tEJj|&+{gfbG)e(BQPNdb zkr927Dt*zjnSngx0VMmNA3pBuxVk?lVo}S8(60pWtAs}QzEN60RQ*rWN+i48IJ-5$ zXZ8GLzrXpJH3NI}ju{cLbia>aic1Z!p@89}D%kvJv&N}8LqMcuF`@_V+m;=WJ4eu_ zapY-rQ!__!1j4~>zTI6PrXs*lF61!O8$oSw0{4E11hN^A@B|t#oxz!xHX*9-&5bLM z6#ro!1BKszh%5Ga8&_pgMO*8h{$uL7FP&+YBEj~rdgFHQN6#&d!u^9zJuiK4G(y0)kPl=dWbO=9Y@7Y1&o@Vy?De-itlZ>-XtBy$ zJG;-3A1;g80+hvI(&Ido)E$Req(^gRDsyJ^4eB4NWLrFb(i7AfpE4!80Y46ZXnA{C z#ro}6s(I>UF7^07u$wqiy5Y!#p2XgAQ-XBEr`3{MrByUcnCrR3uUFdUStHg1HPW6m z(hiwLfpkS^--Qk(r^o6Y6^}&1dwLy`tsWiarR8P8#j=r&3ERa!z<*4Qu1^Uyv&IqG{G%|DSq7lR2JC0|%N)Nd;R8@5zJSR2qiK0&sJ`uSFJ zZ5bf11=+7567_H27zQM8{tGiC402i5g1d#$1>u zjrY-}i*bm9Hi5tzwv}DWI_7If9F~uRtim3t%KQ2XvsX*b>SlUI8Nm&~bhsy@lMKbgZMc1k@nypj@M$|8e9zAw0s*R@BEWJ-G1CMxal4?cwFsO zY1Ll1B`>dHAbN>GKF|Hxs{*FB!;&B`8VJ3duuNOlT<%>dT9#SfTvlF=*2`!af3gM& zTEr(C=?1?r;D6k>rtk7+&fQ++=8}D~`+2U({+iwO9**h5bQ+h`j#BKmCMH>~s}5GE zpSF*3`=nzTb_}`aCyVT^nvmbhmhd+6{l|YBD7S4JXBwvycde*3lgY`;bMkE3dG?U< ziSLiVQ~sL*7l7#9xLxY5`flf5#_sLi&0Xc)&|U9c-)-l(tk|tM(bzw^Kk|g~#PS;R zJoDP}e&@C3W#(<=Myfrz6ql!#tM>%Il$5Kd#!=?-(CBpLJ+DF8W3b}nosU0UUYkaZ zz2J)>W|2v`%xclnAsPc7c9A zm>(0S%{y6d!Ld%R{O7CN*9fzyPk2Rd!^QrJQexUpnazWlby)GoJU#LqOzOY939?0} zYDhlbSlYHsw$8DRjc4fy{6a)=t$NCDUfEMDu^zw4(dmB-b*vE zS>&a_QDprz1LtSFmwc@n@D6S(V@O84uq7P^^&58Ebeh515vIVt-&gw%Pu>{Zn`&&AD znxxIMsB^+VhfC-g*fmNoiM>j+aHDPrIr=HUQlZH__73%Rj`j3{tjH0Y5~-d10L^et zZGx_seIMG&-$i%h`c!*JsdZC?)hX&_bVs{TP->dToab5Sp<6;Ejm5+0ufY0;yG){R zlp0Yhvt5*td%8sinQrC*nX^6H> z+$flJAvt1r+5GGLN&$mY;(>=XYq|k0{J1REGbooUOddg3pARzqgLGK)x{b-{4fSbg ztL`h?O^)t_GW#7D(;Fgz`%pu=dhreNg~Po9(tyI%f9`r;!()tstU0+#>)Vn@ zcL&!^tr-ubVr3?m;d}Yr?$(SU$h^Hf&r^mPUp`X{Y1iIHYm*PzfyuqT|J;gEj}ZdB z*eC^Qs%im%-{X4GF3GlNH{D1N(KsI!F}~7$;`**6|xc7NfDJrsW#%MEI!YWSj~B1 z4&TajJJ%yg)pYz~rE7&85jw8$bCO z)9)UTnk~x<9tO6O;Aae0*cFSX_MT9o1gWY@5fch0Sl)dTlvhIpoU?nf(e*tW^^hTxC^@82J6} zHwpCrM3plYEm*k+zO?6wALI80 zlScy6A62t1vXq|ps)*dQ4q9E%*9*!J!9V*rD}O87&tq``enDX5fdDlzhpMBRejqA; zk-^$HF=vczvaI5GA!fC-zJ18=r*>`rl!!Is>QcRckToM+R>nV`7cL%__&P(&QUCSY z6>0+IuwKJW3xqGIrSN(41oZ$P@KbrL12I~zVQyrQqFVA3<()I&G^+G3QoeY^PknpA zI5a40rK4tJy_8wUkGFrppfG2$K{b=L?^(QtpARmj;XjdV=+={zP7SAL&{u(d_v9lc zXm0#|Cj5TR+BYdtq=SY_e+pWA|{2L<2b6w$wMQsdom3rh(C>?7r&qN+j>@SG+1MBu^ z_Wg|+$rzazRrA#$Rnt{=jh733sjWR;Ztbe?g%MlP%jhi@yBvF|*~1!0%yKaGr=i5D}ZV<~OZ;p}{jhr}U;grkNIur}UWSbb;u4KR z=3>iJs3zND!R0^JnrzGLt<2%`A%|c8vRI&d$%dD&TP9t&`L1SBbN28@(%=!>BBzvx z+bdD=qp7L93v7#H>hGqeOv8&GaWlqx&+od5|MK6xrub)KRP55LPyUq_!mSJ#u^&lr zv5$X844v*Dx@A5>USR9HdiiA2*~4`d5fwS>6}reFeGTKmS8+O*oTrn#SbJf@E0p|A z`gXST?ZUf{V2);cF1N&9kD@OMCzEiFCP;+LdQy#s2=hnE-xDWD$Z^yxUd`jydI!Vr zZRzc@?UtiE+#EcQMcN3p7rGvpZz(@cWI0};)7dK$$X`f`inx>b_M{mQ#L%)0-?rZ8 z<8GN?GSZ1moH_|$7(d7oqZ^wzpYw__;TU-`3@~N5byyF4)uZ}jD#`lyy~O>K8Nj{s zsq;I5+vD4IN0&u?s4cx7ZogF-?HH3!z5y%%e*jqG_V*(uU_DnoSCTl}=#Pp1nS9!t zu@+hjwSPRxD9P}$4U?N!QBTNkz7{{7h=`aL{s>krv!+NbAuXXWWi3PnZWSR6y@xu$ z7(0gLwa#6_KCTE{4gTNoZ-}r>zB!xKv`xRMjzPYGjJ8-?E#+Zj5aE}hriO#4i{Pg7ri*~;YiqJ?c${TU*$tqF4 zGVJX3^OKr+$+&J(5e*N2IT>lL3XnJQ9=}F$@)D1R0yOI#jqVl66;1<813Y|<7 zM^+t9ErRG;$4_J>n$_Lg7gH0hQ&xjZyO$w^Y?}48A!rl2y~ttikDY<{0&fHf5j;9Z zJ4!otI^sK?b;x#jb$E6#cO-Q9bZB(Ak)L#!cUX`SxjC5Zn18m$pg{$}OwOl}taswE z(Xyr8E&qZ|!*lrNs7~6-RF+4k>T_lD5ig4$I3M=?%w?=oGdyWu-QGFX6?0VL3Ak-| zEFwSfg#LH?+Eg~4xs_`BO}_A4W|BF0;&%_x)4)8?5s;A=`aN4aXb z&Va9fc(?}tw+GsEyd<=9vyY!(49tG4;%w;6et%;PJ^+3GcJY;n@bjz2QVTr@V;yBN zh<*p<7kN&O%mdJM$QaoC)UiiE2l)Ua_!H+gV3)^IIfD9uw|H&e2pEm9(=x}2)QXWr zY6Yc`rtN@63pt(GO3izWRc>aRBT^>|$7jcQ$NeU^W{5PuvBasO)kFrIO+f z*w>Yq3dWi89UV4+y#C@#zw05O4<)D@)pF)Ik~w$o3UlU!`FEn(g)n}md|1o$a_;dT zN53ytwP=Uw#TB?YCJ)-lwG_l2i>kYx>r3tp_|1cy-os^)jofV9kPW~Yf+$eu2MF&^ zzQ~kd!W}iw3fn+zAWkgl(b6sk5Wc~hbtAdyD%Jt>^y6M5zYGiy*b7h&SO|;^%pp7okP5sRs2OBSaPH_QI}26{ z-p*agJ$ni*f9-_UKQU}JN5f8MEf+Fp3+H7ea3Z2YTSBYCUE%{mi6VYN1N;?2NFjEK zLatYSyFZ>3x{N&m{ObG%Rq;YqpxT}C^+uQ=g+Ak+QsD=lRCi|e$SsXH|57tBB<{A5zGlQr3K!jIi-_sa(%H#Z-BZs_n9uYrxY=iiP*Ti zKd^VZPxF3Y;a+ZDJih;1ASnQ<-17zeclIga3m_an@a)3#S(XYdqc zJTl+T0cwSCg_=-5Ql3&Zs0_~LH()z(0k|B33+h3oQQN7#)GTTPRh#NX^`z2M3#dL+ zO{zQPDdizGlKLqusjtPjaLCn8{mqZUOnsO2R<-1_)sWhIMPB;Ylye14v;WwLz?!J= zGE$73n?l3|%C`t3R-;E{R${@f%JRxSiHE35NvdC&!~w{PT(M)6WwwD?3!;F2;;y{R z4BzQ!#|hblCG(+}+Dxknk4>kBe@vnLEl3$qHCr@iEN;Qzo2!#_&Tu}fn5={9@g=ti zQ)MRZHks^u#&3Dt17*4RxJj>0)ALvyT3v41e0-7qnw8n(?8Ioya{Y;UoZoc6bt8=V zcp~3~WN^;P8R1MS1u(_N4o?j!{qI!ACKiiO^DpF`O7 zc@AZNVIJ@t;_tQVywb_sd4J%0=XlSRPET?Jx#9Eoq4@dxiaZ~U2g&qu$y`ZHy!&?& zPc{mzh(_a2C(7mi@G~3TFzIPR{l4J}YhHz#9Efx|j={QCU(Ef&-Y6xcqjo;nCV6IM zi7nFo#?iDg;|~rafqN1?BO0UpBg_=fAt!7KDg}fq)SizeBq$#i0BPKRM5$TEA14%f z&g<7FsQCb+#bcwGSvZ03lide+@=y7{Y_zxu7ZXrxnBP(~axCm!c5t$~y&?f$eF-9+ z4w2FZT>A?9YX;7!f2I6EWuZh0b2ob2(yeO|ofHM5acuo&QK#d21=RUHIklh)0U5bB z@`&q2C`X7H+8T)cU`u`R#WSaQH{PjRH;nvO^hSQZf}-|9`s7Cwb#o1XW#5NTLz~)A zK_k`s19J#HdolZacs2tz%l;T)TuxwCJ#I1VjR+}OUOAT#-6lsOl!QoAnJGU4%2 zInY-qWL(d=KN82T9TLxaST54jFZ4rne9-9}C$|3&CqAue7xRe!-&p94yjab`O>HA~(5ws(^}4=%^#12QGE3RM>(j;FrgBpDG98 zb=LSZTXUuO)x5NCpU*7N%$d(4lIe0&fNT*duKj{37gEgo@3D!Qi>83gVPbB7VH!g{ zpY3{0x^bUR{IsFk0ovZ${aU6t(rN`RANLqnid$d(y4t@wv|5WBz^≦6_)+ab2se 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 B^&kKM literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.ttf b/src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..74decd9ebb8d805201934266b3bda6a9d5831024 GIT binary patch literal 607720 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%0D23K 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


twYgtF{Ie$EB=e^-i;8wN7 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 literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.woff2 b/src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3bf9843328a6359b6bd06e50010319c63da0d717 GIT binary patch literal 182708 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

=9Iu46dgboET+e9!2YZS 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 h$Tyq4K{V~K{nkhW_dE!^7kjm6Lx{iM^ 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%0D>Q!cM>J`je@F5*Tj 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

J8q>nG(9z!c`cmMW%RHFO2e_$&BD<%@mg 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 b&xQ}h!>H5&=O>tNF^qKYgI$h4GgeFp! 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 literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/src/scitex/_sphinx_html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f815f63f99da80ad2be69e4021023ec2981eaea0 GIT binary patch literal 86288 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 B + B --> C + C --> D + D --> E + E --> F + F -->|"0"| G + F -->|"nonzero"| H + style E fill:#e8f4fd,stroke:#2196F3,stroke-width:2px + style G fill:#e8f5e9,stroke:#4CAF50 + style H fill:#fce4ec,stroke:#E91E63 diff --git a/src/scitex/_sphinx_html/_static/sphinx_highlight.js b/src/scitex/_sphinx_html/_static/sphinx_highlight.js new file mode 100644 index 000000000..a74e103a8 --- /dev/null +++ b/src/scitex/_sphinx_html/_static/sphinx_highlight.js @@ -0,0 +1,159 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true; + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 + && !parent.classList.contains(className) + && !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling)); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect", + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target), + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms"); + // Update history only if '?highlight' is present; otherwise it + // clears text fragments (not set in window.location by the browser) + if (url.searchParams.has("highlight")) { + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + } + + // get individual terms from highlight string + const terms = highlight + .toLowerCase() + .split(/\s+/) + .filter((x) => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '", + ), + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms"); + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) + return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) + return; + if ( + DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + && event.key === "Escape" + ) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/src/scitex/_sphinx_html/_static/workflow.mmd b/src/scitex/_sphinx_html/_static/workflow.mmd new file mode 100644 index 000000000..0be4d81ac --- /dev/null +++ b/src/scitex/_sphinx_html/_static/workflow.mmd @@ -0,0 +1,21 @@ +%%{init: {"theme": "default"}}%% +graph LR + A(["Research Question"]) + B["Literature
    scholar"] + C["Data
    io"] + D["Analysis
    stats / dsp"] + E["Figures
    plt"] + F["Manuscript
    writer"] + G{"Verify
    clew"} + H(["Publication"]) + + A --> B --> C --> D --> E --> F --> G --> H + + style A fill:#f5f5f5,stroke:#999 + style B fill:#f3e5f5,stroke:#9C27B0 + style C fill:#e8f4fd,stroke:#2196F3 + style D fill:#fff3e0,stroke:#FF9800 + style E fill:#fff3e0,stroke:#FF9800 + style F fill:#f3e5f5,stroke:#9C27B0 + style G fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px + style H fill:#f5f5f5,stroke:#999 diff --git a/src/scitex/_sphinx_html/api/index.html b/src/scitex/_sphinx_html/api/index.html new file mode 100644 index 000000000..ae358dfac --- /dev/null +++ b/src/scitex/_sphinx_html/api/index.html @@ -0,0 +1,709 @@ + + + + + + + + + API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.ai.html b/src/scitex/_sphinx_html/api/scitex.ai.html new file mode 100644 index 000000000..3b0b126ab --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.ai.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.ai API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.ai API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.clew.html b/src/scitex/_sphinx_html/api/scitex.clew.html new file mode 100644 index 000000000..aa501c063 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.clew.html @@ -0,0 +1,1200 @@ + + + + + + + + + scitex.clew API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.clew API Reference

    +

    scitex-clew — Hash-based verification for reproducible science.

    +

    Standalone package. Zero dependencies (pure stdlib + sqlite3). +When used with scitex, integration is automatic via @stx.session + stx.io.

    +

    Public API:

    +
    import scitex_clew as clew
    +
    +# Verification
    +clew.status()                      # git-status-like overview
    +clew.run(session_id)               # verify one run (hash check)
    +clew.chain(target_file)            # trace file → source chain
    +clew.dag(targets)                  # verify full DAG
    +clew.rerun(target)                 # re-execute & compare (sandbox)
    +clew.rerun_dag(targets)            # rerun full DAG in topo order
    +clew.rerun_claims()                # rerun all claim-backing sessions
    +clew.list_runs(limit=100)          # list tracked runs
    +clew.stats()                       # database statistics
    +
    +# Claims
    +clew.add_claim(...)                # register manuscript assertion
    +clew.list_claims(...)              # list registered claims
    +clew.verify_claim(...)             # verify a specific claim
    +
    +# Stamping
    +clew.stamp(...)                    # create temporal proof
    +clew.list_stamps(...)              # list stamps
    +clew.check_stamp(...)              # verify a stamp
    +
    +# Hashing
    +clew.hash_file(path)               # SHA256 of a file
    +clew.hash_directory(path)          # SHA256 of all files in dir
    +
    +# Visualization
    +clew.mermaid(...)                  # generate Mermaid DAG diagram
    +
    +# Examples
    +clew.init_examples(dest)           # scaffold example pipeline
    +
    +# Session lifecycle hooks (invoked by @scitex.session)
    +clew.on_session_start(session_id)  # open a tracked run
    +clew.on_session_close(status=...)  # finalize run + combined hash
    +
    +
    +
    +
    +scitex.clew.status()[source]
    +

    Get verification status summary (like git status).

    +
    + +
    +
    +scitex.clew.run(session_id, from_scratch=False)[source]
    +

    Verify a specific run.

    +
    +
    Parameters:
    +
      +
    • session_id (str) – Session identifier

    • +
    • from_scratch (bool) – If True, re-execute the script and verify outputs (slow but thorough). +If False, only compare hashes (fast).

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.chain(target)[source]
    +

    Verify the dependency chain for a target file.

    +
    + +
    +
    +scitex.clew.dag(targets=None, claims=False, strict=False)[source]
    +

    Verify the DAG for multiple targets or all claims.

    +
    +
    Parameters:
    +
      +
    • targets (list of str or Path, optional) – Target files to verify (mutually exclusive with claims).

    • +
    • claims (bool, optional) – If True, build the DAG from every registered claim.

    • +
    • strict (bool, optional) – If True (F2), return a failure-attribution dict with +failed_node / root_cause / invalidated_claims / +still_valid_claims instead of a DAGVerification.

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.rerun(target, timeout=300, cleanup=True)[source]
    +

    Re-execute a session in a sandbox and compare outputs.

    +
    +
    Parameters:
    +
      +
    • target (str or list[str]) – Session ID, script path, or artifact path.

    • +
    • timeout (int) – Maximum execution time in seconds (default: 300).

    • +
    • cleanup (bool) – Remove sandbox outputs after verification (default: True).

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.rerun_dag(targets=None, timeout=300, cleanup=True)[source]
    +

    Rerun-verify an entire DAG in topological order.

    +

    Each session is re-executed in a sandbox against its ORIGINAL stored +inputs (not freshly rerun outputs from upstream), then compared to +the original outputs.

    +
    +
    Parameters:
    +
      +
    • targets (list[str] | None) – Target output files whose upstream DAG should be rerun. +If None, all runs in the database are used and their output +files become the targets.

    • +
    • timeout (int) – Maximum execution time per session in seconds (default: 300).

    • +
    • cleanup (bool) – Whether to remove sandbox output directories after each rerun.

    • +
    +
    +
    Returns:
    +

    Unified verification result for the entire DAG.

    +
    +
    Return type:
    +

    DAGVerification

    +
    +
    +
    + +
    +
    +scitex.clew.rerun_claims(file_path=None, claim_type=None, timeout=300, cleanup=True)[source]
    +

    Rerun-verify all sessions that produced files referenced by claims.

    +

    Collects unique source files from matching claims, then delegates +to rerun_dag with those files as targets.

    +
    +
    Parameters:
    +
      +
    • file_path (str | None) – Filter claims by manuscript file path.

    • +
    • claim_type (str | None) – Filter claims by type (statistic, figure, table, text, value).

    • +
    • timeout (int) – Maximum execution time per session in seconds (default: 300).

    • +
    • cleanup (bool) – Whether to remove sandbox output directories after each rerun.

    • +
    +
    +
    Returns:
    +

    Unified verification result for the upstream DAG of all +source files referenced by the matching claims.

    +
    +
    Return type:
    +

    DAGVerification

    +
    +
    +
    + +
    +
    +scitex.clew.list_runs(limit=100, status=None)[source]
    +

    List tracked runs.

    +
    + +
    +
    +scitex.clew.stats()[source]
    +

    Get database statistics.

    +
    + +
    +
    +scitex.clew.add_claim(file_path, claim_type, line_number=None, claim_value=None, source_file=None, source_session=None)[source]
    +

    Register a claim linking a manuscript assertion to the verification chain.

    +
    +
    Parameters:
    +
      +
    • file_path (str) – Path to the manuscript file (e.g., paper.tex).

    • +
    • claim_type (str) – One of: statistic, figure, table, text, value.

    • +
    • line_number (Optional[int]) – Line number in the manuscript.

    • +
    • claim_value (Optional[str]) – The asserted value (e.g., “p = 0.003”).

    • +
    • source_file (Optional[str]) – Path to the source file that produced this claim.

    • +
    • source_session (Optional[str]) – Session ID that produced the source.

    • +
    +
    +
    Returns:
    +

    The registered claim object.

    +
    +
    Return type:
    +

    Claim

    +
    +
    +
    + +
    +
    +scitex.clew.list_claims(file_path=None, claim_type=None, status=None, limit=100)[source]
    +

    List registered claims with optional filters.

    +
    +
    Parameters:
    +
      +
    • file_path (Optional[str]) – Filter by manuscript file path.

    • +
    • claim_type (Optional[str]) – Filter by claim type.

    • +
    • status (Optional[str]) – Filter by verification status.

    • +
    • limit (int) – Maximum number of claims to return.

    • +
    +
    +
    Return type:
    +

    List[Claim]

    +
    +
    +
    + +
    +
    +scitex.clew.verify_claim(claim_id_or_location)[source]
    +

    Verify a specific claim by checking its source against the verification chain.

    +
    +
    Parameters:
    +

    claim_id_or_location (str) – Either a claim_id or a location string like “paper.tex:L42”.

    +
    +
    Returns:
    +

    Verification result with claim details and chain status.

    +
    +
    Return type:
    +

    Dict

    +
    +
    +
    + +
    +
    +scitex.clew.export_claims_json(path=None, *, file_path_filter=None, read_only=True)[source]
    +

    Export every registered claim to a canonical JSON artifact.

    +

    The exported file is the single human-readable + machine-consumable +view of the claims table in db.sqlite. The DB remains the +source of truth; this JSON is a regenerable artifact.

    +

    Path resolution (mirrors scitex_clew._db._core._default_db_path()):

    +
    1. Explicit ``path`` argument.
    +2. ``$SCITEX_CLEW_CLAIMS_JSON`` env var (escape hatch).
    +3. ``<project_root>/.scitex/clew/runtime/claims.json``
    +   (project root = nearest ancestor dir with ``.git`` or
    +   ``pyproject.toml``; falls back to cwd if none found).
    +
    +
    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path, None]) – Override the resolved path. Useful for tests / one-off dumps.

    • +
    • file_path_filter (Optional[str]) – When set, only claims registered against this manuscript file +path are exported. Default: every claim in the DB.

    • +
    • read_only (bool) – After writing, chmod 0o444 the file so accidental edits +fail loudly at the OS layer. Default True (the file IS +derived). Set False for tests that need to mutate the file.

    • +
    +
    +
    Returns:
    +

    The path the artifact was written to (absolute).

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    +

    Examples

    +
    >>> import scitex_clew as clew
    +>>> clew.add_claim("paper.tex", "value", 42, "0.94", source_file="r.csv")
    +>>> # claims.json now auto-exported under ./.scitex/clew/runtime/
    +>>> clew.export_claims_json()  # idempotent — re-emit on demand
    +PosixPath('.../.scitex/clew/runtime/claims.json')
    +
    +
    +
    +
    + +
    +
    +scitex.clew.register_intermediate(name, value, supports=None, session_id=None, claim_type='value')[source]
    +

    Register a computed intermediate as a Clew claim.

    +

    Use this from inside a @stx.session script (or from an agent loop) to +record any non-trivial intermediate value with explicit upstream support. +The claim becomes part of the DAG and can be queried via clew.chain, +clew.dag, or the MCP clew_chain / clew_dag tools.

    +
    +
    Parameters:
    +
      +
    • name (str) – Descriptive identifier (e.g. “acute_n_sig_pathways”). Avoid generic +names like “result_3” — the id is the only handle a future inspector +has on the value.

    • +
    • value (Any) – The computed result. Coerced to string for storage; the hash chain +sees repr(value) so types matter.

    • +
    • supports (Optional[List[str]]) – List of upstream claim ids or session ids that this value depends on. +Stored as JSON in the claim’s value field for retrieval. None means +no explicit upstream (use sparingly).

    • +
    • session_id (Optional[str]) – The session this value belongs to. If None, read from the +SCITEX_SESSION_ID env var that @stx.session sets at start.

    • +
    • claim_type (str) – One of statistic, figure, table, text, value. Defaults to +value since intermediates are usually scalar / categorical results.

    • +
    +
    +
    Returns:
    +

    The registered claim object.

    +
    +
    Return type:
    +

    Claim

    +
    +
    Raises:
    +

    ValueError – If no session_id can be determined (env var unset and not passed).

    +
    +
    +
    +

    Examples

    +

    Inside a @stx.session script:

    +
    >>> from scitex_clew import register_intermediate
    +>>> n_sig = sum(1 for p in pathways if p.padj < 0.05)
    +>>> register_intermediate(
    +...     name="chronic_r2_n_sig_pathways",
    +...     value=n_sig,
    +...     supports=["chronic_r2_min_pvals", "reactome_pathways_v2024"],
    +... )
    +
    +
    +
    +
    + +
    +
    +scitex.clew.stamp(backend='file', service_url=None, session_ids=None, output_dir=None)[source]
    +

    Record root hash with external timestamp.

    +
    +
    Parameters:
    +
      +
    • backend (str) – One of: file, rfc3161, zenodo.

    • +
    • service_url (Optional[str]) – URL for RFC 3161 TSA or Zenodo API.

    • +
    • session_ids (Optional[List[str]]) – Specific sessions to stamp. If None, stamps all successful runs.

    • +
    • output_dir (Optional[str]) – Directory for file-based stamps (default: <db_dir>/stamps, i.e. .scitex/clew/runtime/stamps/).

    • +
    +
    +
    Returns:
    +

    The timestamp proof record.

    +
    +
    Return type:
    +

    Stamp

    +
    +
    +
    + +
    +
    +scitex.clew.list_stamps(limit=20)[source]
    +

    List all stamps.

    +
    +
    Return type:
    +

    List[Stamp]

    +
    +
    +
    + +
    +
    +scitex.clew.check_stamp(stamp_id=None)[source]
    +

    Verify a stamp against current verification state.

    +
    +
    Parameters:
    +

    stamp_id (Optional[str]) – Specific stamp to check. If None, checks the latest stamp.

    +
    +
    Returns:
    +

    {stamp, current_root_hash, matches, details}

    +
    +
    Return type:
    +

    Dict

    +
    +
    +
    + +
    +
    +scitex.clew.hash_file(path, algorithm='sha256', chunk_size=8192)[source]
    +

    Compute hash of a file.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Path to the file to hash

    • +
    • algorithm (str) – Hash algorithm (default: sha256)

    • +
    • chunk_size (int) – Size of chunks to read (default: 8192)

    • +
    +
    +
    Returns:
    +

    Hexadecimal hash string (first 32 characters)

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> hash_file("data.csv")
    +'a1b2c3d4e5f6...'
    +
    +
    +
    +
    + +
    +
    +scitex.clew.hash_directory(path, pattern='*', recursive=True, algorithm='sha256')[source]
    +

    Compute hashes for all files in a directory.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Directory path

    • +
    • pattern (str) – Glob pattern for files (default: “*”)

    • +
    • recursive (bool) – Whether to search recursively (default: True)

    • +
    • algorithm (str) – Hash algorithm (default: sha256)

    • +
    +
    +
    Returns:
    +

    Mapping of relative paths to hashes

    +
    +
    Return type:
    +

    Dict[str, str]

    +
    +
    +
    +

    Examples

    +
    >>> hash_directory("./data/")
    +{'input.csv': 'a1b2...', 'config.yaml': 'c3d4...'}
    +
    +
    +
    +
    + +
    +
    +scitex.clew.mermaid(session_id=None, target_file=None, target_files=None, claims=False, grouper=None, **kwargs)[source]
    +

    Generate a Mermaid DAG diagram.

    +
    +
    Parameters:
    +
      +
    • session_id (str, optional) – Start from this session.

    • +
    • target_file (str, optional) – Start from the session that produced this file.

    • +
    • target_files (list of str, optional) – Multiple target files (multi-target DAG).

    • +
    • claims (bool, optional) – If True, build DAG from all registered claims.

    • +
    • grouper (callable | dict | None, optional) – File grouping strategy. Callable or JSON/dict spec (see +scitex_clew.groupers.resolve_spec). If None, falls back to +.scitex/clew/config.yaml (key grouper) if present.

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.init_examples(dest, variant='sequential', *, find_examples_dir=<function _find_examples_dir>)[source]
    +

    Copy Clew example scripts to a destination directory.

    +

    Copies only the runnable scripts (.py, .sh) and README — not +the output directories. Users run 00_run_all.sh themselves +to generate outputs and populate the verification database.

    +
    +
    Parameters:
    +
      +
    • dest (str | Path) – Destination directory. Created if it does not exist. +Existing script files are overwritten.

    • +
    • variant (str) – Example variant: “sequential” (default) or “multi_parent”.

    • +
    • find_examples_dir (callable, optional) – Locator callable (variant: str) -> Optional[Path] used to +resolve the bundled examples source. Production callers should +not pass this; it is the canonical PA-306 §1 DI seam — tests +inject a hand-rolled fake that returns a tmp_path-rooted +directory or None.

    • +
    +
    +
    Returns:
    +

    {"path": str, "files": list[str], "file_count": int, "variant": str}

    +
    +
    Return type:
    +

    dict

    +
    +
    Raises:
    +
    +
    +
    +
    + +
    +
    +scitex.clew.on_session_start(session_id, script_path=None, parent_session=None, verbose=False, metadata=None)[source]
    +

    Hook called when a session starts.

    +
    +
    Parameters:
    +
      +
    • session_id (str) – Unique session identifier

    • +
    • script_path (Optional[str]) – Path to the script being run

    • +
    • parent_session (Optional[str]) – Parent session ID for chain tracking

    • +
    • verbose (bool) – Whether to log status messages

    • +
    • metadata (Optional[dict]) – Additional metadata (e.g. notebook_path, cell_index)

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.clew.on_session_close(status='success', exit_code=0, verbose=False, register=None)[source]
    +

    Hook called when a session closes.

    +
    +
    Parameters:
    +
      +
    • status (str) – Final status (success, failed, error)

    • +
    • exit_code (int) – Exit code of the script

    • +
    • verbose (bool) – Whether to log status messages

    • +
    • register (Optional[bool]) – If True, register session hashes with remote Clew Registry. +If None, checks SCITEX_AUTO_REGISTER environment variable.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.config.html b/src/scitex/_sphinx_html/api/scitex.config.html new file mode 100644 index 000000000..a4cb6ec0f --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.config.html @@ -0,0 +1,1330 @@ + + + + + + + + + scitex.config API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.config API Reference

    +

    scitex-config — configuration helpers (YAML + dotenv) — standalone.

    +

    Two distinct API surfaces:

    +

    Public (top-level scitex_config.*) — convention-free generic +primitives usable by any Python project:

    +
      +
    • PriorityConfig — direct → config_dict → env → default cascade

    • +
    • ScitexConfig, get_config, load_yaml — YAML-based config

    • +
    • ScitexPaths, get_paths — centralized path manager

    • +
    • load_dotenv, get_scitex_dir — utilities

    • +
    • parse_src_file, load_env_from_path, load_scitex_env — bash-style +.src/.env parsing (canonical line/value parser; load_dotenv delegates)

    • +
    +

    SciTeX-ecosystem internals (scitex_config._ecosystem.*) — helpers +that embed SciTeX conventions (pkg-short naming, project-scope walk to +.git/, _skills/<pkg>/ layout, SCITEX_<MODULE>_* env prefix). +For scitex-* package authors only; not a stable public API:

    +
    from scitex_config._ecosystem import local_state, env_registry
    +
    +
    +
    +
    Priority Order (same for PriorityConfig and ScitexConfig):

    direct → config (YAML/dict) → env → default

    +
    +
    Usage:

    from scitex_config import ScitexConfig, ScitexPaths, get_config, get_paths

    +

    # YAML-based configuration (Scholar pattern) +config = get_config() +log_level = config.resolve(“logging.level”, default=”INFO”)

    +

    # Centralized path manager +paths = get_paths() +print(paths.logs) # ~/.scitex/logs +print(paths.cache) # ~/.scitex/cache

    +

    # Use resolve() pattern in modules +cache_dir = paths.resolve(“cache”, user_provided_path)

    +
    +
    +
    +
    +class scitex.config.ScitexConfig(config_path=None, env_prefix='SCITEX_')[source]
    +

    Bases: object

    +

    YAML-based configuration manager for SciTeX.

    +

    Loads configuration from YAML files with environment variable substitution. +Values can be resolved with priority: direct → config → env → default.

    +
    +

    Examples

    +
    >>> from scitex.config import ScitexConfig
    +>>> config = ScitexConfig()
    +>>> config.resolve("logging.level", default="INFO")
    +'INFO'
    +>>> config.get("debug.enabled")
    +False
    +
    +
    +
    +
    +
    +__init__(config_path=None, env_prefix='SCITEX_')[source]
    +

    Initialize ScitexConfig.

    +
    +
    Parameters:
    +
      +
    • config_path (Union[str, Path, None]) – Path to custom YAML config file. If None, uses default.yaml.

    • +
    • env_prefix (str) – Prefix for environment variables (default: “SCITEX_”)

    • +
    +
    +
    +
    + +
    +
    +get(key, default=None)[source]
    +

    Get value from config directly (no precedence resolution).

    +

    Supports dot notation for nested keys.

    +
    +
    Parameters:
    +
      +
    • key (str) – Configuration key (e.g., “logging.level” or “debug.enabled”)

    • +
    • default (Any) – Default value if key not found

    • +
    +
    +
    Returns:
    +

    Configuration value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +resolve(key, direct_val=None, default=None, type=<class 'str'>)[source]
    +

    Resolve value with precedence: direct → config → env → default.

    +

    This follows the Scholar module’s CascadeConfig pattern where +YAML config takes higher priority than environment variables.

    +
    +
    Parameters:
    +
      +
    • key (str) – Configuration key (e.g., “logging.level”)

    • +
    • direct_val (Any) – Direct value (highest precedence)

    • +
    • default (Any) – Default value (lowest precedence)

    • +
    • type (Type) – Type conversion (str, int, float, bool, list)

    • +
    +
    +
    Returns:
    +

    Resolved value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +get_nested(*keys, default=None)[source]
    +

    Get nested value from original config structure.

    +
    +
    Parameters:
    +
      +
    • *keys (str) – Keys to traverse (e.g., “browser”, “screenshots_dir”)

    • +
    • default (Any) – Default value if not found

    • +
    +
    +
    Returns:
    +

    Nested value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +property config_path: Path
    +

    Get the path to the loaded config file.

    +
    + +
    +
    +property raw: dict
    +

    Get raw configuration data (original nested structure).

    +
    + +
    +
    +property flat: dict
    +

    Get flattened configuration data.

    +
    + +
    +
    +print()[source]
    +

    Print configuration resolution log.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + +
    +
    +scitex.config.get_config(config_path=None)[source]
    +

    Get ScitexConfig instance.

    +
    +
    Parameters:
    +

    config_path (Union[str, Path, None]) – Path to custom config. If None, returns cached default instance.

    +
    +
    Returns:
    +

    Configuration instance

    +
    +
    Return type:
    +

    ScitexConfig

    +
    +
    +
    + +
    +
    +scitex.config.load_yaml(path)[source]
    +

    Load YAML file with environment variable substitution.

    +

    Supports ${VAR:-default} syntax for environment variable expansion.

    +
    +
    Parameters:
    +

    path (Path) – Path to YAML file

    +
    +
    Returns:
    +

    Parsed YAML with environment variables substituted

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    +
    +class scitex.config.ScitexPaths(base_dir=None)[source]
    +

    Bases: object

    +

    Centralized path manager for SciTeX directories.

    +

    All paths are derived from SCITEX_DIR (default: ~/.scitex). +Priority: direct_val → SCITEX_DIR env → .env file → default

    +
    +
    Directory Structure:

    $SCITEX_DIR/ +├── browser/ # Browser profiles and data +│ ├── screenshots/ # Browser debugging screenshots +│ ├── sessions/ # Shared browser sessions +│ └── persistent/ # Persistent browser profiles +├── cache/ # General cache +│ └── functions/ # Function cache (joblib) +├── capture/ # Screen captures +├── impact_factor_cache/ # Impact factor data cache +├── logs/ # Log files +├── openathens_cache/ # OpenAthens auth cache +├── rng/ # Random number generator state +├── scholar/ # Scholar module data +│ ├── cache/ # Scholar-specific cache +│ └── library/ # PDF library +├── screenshots/ # General screenshots +├── test_monitor/ # Test monitoring screenshots +└── writer/ # Writer module data

    +
    +
    +
    +
    +__init__(base_dir=None)[source]
    +

    Initialize ScitexPaths.

    +
    +
    Parameters:
    +

    base_dir (Optional[str]) – Explicit base directory. If None, uses SCITEX_DIR env var +or falls back to ~/.scitex.

    +
    +
    +
    + +
    +
    +property base: Path
    +

    Base SciTeX directory ($SCITEX_DIR or ~/.scitex).

    +
    + +
    +
    +property logs: Path
    +

    Log files directory.

    +
    + +
    +
    +property cache: Path
    +

    General cache directory.

    +
    + +
    +
    +property capture: Path
    +

    Screen capture directory.

    +
    + +
    +
    +property screenshots: Path
    +

    General screenshots directory.

    +
    + +
    +
    +property rng: Path
    +

    Random number generator state directory.

    +
    + +
    +
    +property browser: Path
    +

    Browser module base directory.

    +
    + +
    +
    +property browser_screenshots: Path
    +

    Browser debugging screenshots.

    +
    + +
    +
    +property browser_sessions: Path
    +

    Shared browser sessions.

    +
    + +
    +
    +property browser_persistent: Path
    +

    Persistent browser profiles.

    +
    + +
    +
    +property test_monitor: Path
    +

    Test monitoring screenshots directory.

    +
    + +
    +
    +property function_cache: Path
    +

    Function cache (joblib memory).

    +
    + +
    +
    +property impact_factor_cache: Path
    +

    Impact factor data cache.

    +
    + +
    +
    +property openathens_cache: Path
    +

    OpenAthens authentication cache.

    +
    + +
    +
    +property scholar: Path
    +

    Scholar module base directory.

    +
    + +
    +
    +property scholar_cache: Path
    +

    Scholar-specific cache directory.

    +
    + +
    +
    +property scholar_library: Path
    +

    Scholar PDF library directory.

    +
    + +
    +
    +property writer: Path
    +

    Writer module directory.

    +
    + +
    +
    +resolve(path_name, direct_val=None)[source]
    +

    Resolve a path with priority: direct_val → default from SCITEX_DIR.

    +

    This is the recommended method for modules that accept optional path +parameters. It follows the same pattern as PriorityConfig.resolve().

    +
    +
    Parameters:
    +
      +
    • path_name (str) – Name of the path property (e.g., “cache”, “logs”, “scholar_library”)

    • +
    • direct_val (Union[str, Path, None]) – Direct value (highest precedence). If None, uses default.

    • +
    +
    +
    Returns:
    +

    Resolved path

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    +

    Examples

    +
    >>> paths = ScitexPaths()
    +>>> # User didn't provide path -> use default
    +>>> cache_dir = paths.resolve("cache", None)
    +>>> # User provided custom path -> use it
    +>>> cache_dir = paths.resolve("cache", "/custom/cache")
    +
    +
    +

    Usage in modules: +>>> class MyModule: +… def __init__(self, cache_dir=None): +… self.cache_dir = get_paths().resolve(“cache”, cache_dir)

    +
    +
    + +
    +
    +ensure_dir(path)[source]
    +

    Ensure directory exists, creating if necessary.

    +
    +
    Parameters:
    +

    path (Path) – Directory path to ensure exists.

    +
    +
    Returns:
    +

    The same path, guaranteed to exist.

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    +
    +ensure_all()[source]
    +

    Create all standard directories.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +list_all()[source]
    +

    List all configured paths.

    +
    +
    Returns:
    +

    Dictionary of path names to Path objects.

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    + +
    +
    +scitex.config.get_paths(base_dir=None)[source]
    +

    Get ScitexPaths instance.

    +
    +
    Parameters:
    +

    base_dir (Optional[str]) – Explicit base directory. If None, returns cached default instance.

    +
    +
    Returns:
    +

    Path manager instance.

    +
    +
    Return type:
    +

    ScitexPaths

    +
    +
    +
    + +
    +
    +class scitex.config.PriorityConfig(config_dict=None, env_prefix='', auto_uppercase=True)[source]
    +

    Bases: object

    +

    Universal config resolver with precedence: direct → config_dict → env → default

    +

    Config dict (from YAML or passed dict) takes priority over env variables. +This follows the Scholar module’s CascadeConfig pattern.

    +
    +

    Examples

    +
    >>> from scitex_config import PriorityConfig
    +>>> config = PriorityConfig(config_dict={"port": 3000}, env_prefix="SCITEX_")
    +>>> port = config.resolve("port", None, default=8000, type=int)
    +3000  # from config_dict (highest after direct)
    +>>> # With env: SCITEX_PORT=5000 python script.py
    +>>> port = config.resolve("port", None, default=8000, type=int)
    +3000  # config_dict takes precedence over env
    +>>> port = config.resolve("port", 9000, default=8000, type=int)
    +9000  # direct value takes highest precedence
    +
    +
    +
    +
    +
    +SENSITIVE_EXPRESSIONS = ['API', 'PASSWORD', 'SECRET', 'TOKEN', 'KEY', 'PASS', 'AUTH', 'CREDENTIAL', 'PRIVATE', 'CERT']
    +
    + +
    +
    +__init__(config_dict=None, env_prefix='', auto_uppercase=True)[source]
    +

    Initialize PriorityConfig.

    +
    +
    Parameters:
    +
      +
    • config_dict (Optional[Dict[str, Any]]) – Dictionary with configuration values

    • +
    • env_prefix (str) – Prefix for environment variables (e.g., “SCITEX_”)

    • +
    • auto_uppercase (bool) – Whether to uppercase keys for env lookup

    • +
    +
    +
    +
    + +
    +
    +get(key)[source]
    +

    Get value from config dict only.

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +resolve(key, direct_val=None, default=None, type=<class 'str'>, mask=None)[source]
    +

    Get value with precedence hierarchy.

    +

    Precedence: direct → config_dict → env → default

    +

    This follows the Scholar module’s CascadeConfig pattern where +config dict takes higher priority than environment variables.

    +
    +
    Parameters:
    +
      +
    • key (str) – Configuration key to resolve

    • +
    • direct_val (Any) – Direct value (highest precedence)

    • +
    • default (Any) – Default value if not found elsewhere

    • +
    • type (Type) – Type conversion (str, int, float, bool, list)

    • +
    • mask (Optional[bool]) – Override automatic masking of sensitive values

    • +
    +
    +
    Returns:
    +

    Resolved configuration value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +print_resolutions()[source]
    +

    Print how each config was resolved.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +clear_log()[source]
    +

    Clear resolution log.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + +
    +
    +scitex.config.get_scitex_dir(direct_val=None)[source]
    +

    Get SCITEX_DIR with priority: direct → env → default.

    +

    This is a convenience function for the most common use case.

    +
    +
    Parameters:
    +

    direct_val (Optional[str]) – Direct value (highest precedence)

    +
    +
    Returns:
    +

    Resolved SCITEX_DIR path

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    +
    +scitex.config.load_dotenv(dotenv_path=None, *, walk_up=False, stop_at=None)[source]
    +

    Load environment variables from .env file(s).

    +
    +
    Default behavior (walk_up=False, backward compatible):

    Searches for .env file in the following order, loading the first match: +1. Explicit dotenv_path if provided +2. Current working directory (cwd/.env) +3. User home directory ($HOME/.env)

    +
    +
    Parent-walking behavior (walk_up=True, opt-in):

    Walks parent directories starting from cwd, looking for .env +at each level. Stops when reaching stop_at (or $HOME if not +given) or the filesystem root. All .env files found are loaded, +with the most-distant parent loaded first so that closer-to-cwd values +take precedence (closer .env wins). An existing process env var is +never overridden by any .env (process env > closest .env > … > root .env).

    +

    Note: walk_up=True is ignored if dotenv_path is explicitly given.

    +
    +
    +
    +
    Parameters:
    +
      +
    • dotenv_path (Optional[str]) – Path to .env file. If None, searches default locations.

    • +
    • walk_up (bool) – If True (and dotenv_path not given), walk parent dirs from cwd. +Default False for backward compatibility — new callers should pass True.

    • +
    • stop_at (Union[str, Path, None]) – Directory at which to stop the upward walk (inclusive — its .env +is considered). If None, stops at $HOME (or filesystem root if +$HOME is not a parent of cwd). Only used when walk_up=True.

    • +
    +
    +
    Returns:
    +

    True if at least one .env file was found and loaded, False otherwise.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.config.parse_src_file(filepath)[source]
    +

    Parse a bash-compatible .src/.env file and extract env variables.

    +
    +
    Parameters:
    +

    filepath (Path) – Path to the file.

    +
    +
    Returns:
    +

    Dictionary of variable names to values.

    +
    +
    Return type:
    +

    Dict[str, str]

    +
    +
    +
    + +
    +
    +scitex.config.load_env_from_path(path)[source]
    +

    Load environment variables from a file or directory.

    +
    +
    Parameters:
    +

    path (str) – Path to a .src file or directory containing *.src files.

    +
    +
    Returns:
    +

    All loaded environment variables.

    +
    +
    Return type:
    +

    Dict[str, str]

    +
    +
    +
    + +
    +
    +scitex.config.load_scitex_env()[source]
    +

    Load environment variables from $SCITEX_ENV_SRC if set.

    +

    This function should be called early in the MCP server startup.

    +
    +
    Returns:
    +

    Number of environment variables loaded.

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.db.html b/src/scitex/_sphinx_html/api/scitex.db.html new file mode 100644 index 000000000..1589ada33 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.db.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.db API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.db API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.decorators.html b/src/scitex/_sphinx_html/api/scitex.decorators.html new file mode 100644 index 000000000..2bff16939 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.decorators.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.decorators API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.decorators API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.diagram.html b/src/scitex/_sphinx_html/api/scitex.diagram.html new file mode 100644 index 000000000..f397a42a9 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.diagram.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.diagram API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.diagram API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.dict.html b/src/scitex/_sphinx_html/api/scitex.dict.html new file mode 100644 index 000000000..71d8fc5b3 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.dict.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.dict API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.dict API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.dsp.html b/src/scitex/_sphinx_html/api/scitex.dsp.html new file mode 100644 index 000000000..2fd42aa3f --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.dsp.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.dsp API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.dsp API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.gen.html b/src/scitex/_sphinx_html/api/scitex.gen.html new file mode 100644 index 000000000..9e1d48030 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.gen.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.gen API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.gen API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.introspect.html b/src/scitex/_sphinx_html/api/scitex.introspect.html new file mode 100644 index 000000000..a0c917cc2 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.introspect.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.introspect API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.introspect API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.io.html b/src/scitex/_sphinx_html/api/scitex.io.html new file mode 100644 index 000000000..2662c8502 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.io.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.io API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.io API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.linter.html b/src/scitex/_sphinx_html/api/scitex.linter.html new file mode 100644 index 000000000..bad5299ec --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.linter.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.linter — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.linter

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.logging.html b/src/scitex/_sphinx_html/api/scitex.logging.html new file mode 100644 index 000000000..907cfe2b9 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.logging.html @@ -0,0 +1,1272 @@ + + + + + + + + + scitex.logging API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.logging API Reference

    +
    +
    +scitex.logging.getLogger(name=None)[source]
    +

    Return a logger with the specified name, creating it if necessary.

    +

    If no name is specified, return the root logger.

    +
    + +
    +
    +scitex.logging.configure(level='info', log_file=None, enable_file=True, enable_console=True, capture_prints=True, max_file_size=10485760, backup_count=5)[source]
    +

    Configure logging for SciTeX with both console and file output.

    +
    +
    Parameters:
    +
      +
    • level (Union[str, int]) – Log level (string or logging constant)

    • +
    • log_file (Optional[str]) – Path to log file (default: ~/.scitex/logs/scitex-YYYY-MM-DD.log)

    • +
    • enable_file (bool) – Whether to enable file logging

    • +
    • enable_console (bool) – Whether to enable console logging

    • +
    • capture_prints (bool) – Whether to capture print() statements to logs

    • +
    • max_file_size (int) – Maximum size of log file before rotation (default: 10MB)

    • +
    • backup_count (int) – Number of backup files to keep (default: 5)

    • +
    +
    +
    +
    + +
    +
    +scitex.logging.set_level(level)[source]
    +

    Set global log level for all SciTeX loggers.

    +
    + +
    +
    +scitex.logging.get_level()[source]
    +

    Get current global log level.

    +
    + +
    +
    +scitex.logging.enable_file_logging(enabled=True)[source]
    +

    Enable or disable file logging globally.

    +
    + +
    +
    +scitex.logging.is_file_logging_enabled()[source]
    +

    Check if file logging is enabled.

    +
    + +
    +
    +scitex.logging.get_log_path()[source]
    +

    Get the current log file path.

    +
    + +
    +
    +class scitex.logging.Tee(stream, log_path, verbose=True)[source]
    +

    Bases: object

    +
    +
    +write(data)[source]
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +flush()[source]
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +isatty()[source]
    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +fileno()[source]
    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    +property buffer
    +
    + +
    +
    +close()[source]
    +

    Explicitly close the log file.

    +
    + +
    + +
    +
    +scitex.logging.tee(sys, sdir=None, verbose=True)[source]
    +

    Redirects stdout and stderr to both console and log files.

    +
    +

    Example

    +
    >>> import sys
    +>>> sys.stdout, sys.stderr = tee(sys)
    +>>> print("abc")  # stdout
    +>>> print(1 / 0)  # stderr
    +
    +
    +
    +
    +
    Parameters:
    +
      +
    • sys_module (module) – System module containing stdout and stderr

    • +
    • sdir (str, optional) – Directory for log files

    • +
    • verbose (bool, default=True) – Whether to print log file locations

    • +
    +
    +
    Returns:
    +

    Wrapped stdout and stderr objects

    +
    +
    Return type:
    +

    tuple[Any, Any]

    +
    +
    +
    + +
    +
    +scitex.logging.log_to_file(file_path, level=10, mode='w', formatter=None)[source]
    +

    Context manager to temporarily log all output to a specific file.

    +
    +
    Usage:

    import scitex_logging as logging +logger = logging.getLogger(__name__)

    +
    +
    with logging.log_to_file(“/path/to/log.txt”):

    logger.info(“This goes to both console and /path/to/log.txt”) +logger.success(“This too!”)

    +
    +
    +
    +
    +
    +
    Parameters:
    +
      +
    • file_path (Union[str, Path]) – Path to log file

    • +
    • level (int) – Logging level for this handler (default: DEBUG)

    • +
    • mode (str) – File mode (‘w’ for overwrite, ‘a’ for append)

    • +
    • formatter (Optional[Formatter]) – Custom formatter (default: SciTeXFileFormatter)

    • +
    +
    +
    Yields:
    +

    The file handler (can be ignored)

    +
    +
    +
    + +
    +
    +exception scitex.logging.SciTeXWarning[source]
    +

    Bases: UserWarning

    +

    Base warning class for all SciTeX warnings.

    +
    + +
    +
    +exception scitex.logging.UnitWarning[source]
    +

    Bases: SciTeXWarning

    +

    Warning for axis label unit issues (educational for SI conventions).

    +

    Raised when: +- Axis labels are missing units +- Units use parentheses instead of brackets (SI prefers []) +- Units use division instead of negative exponents (m/s vs m·s⁻¹)

    +
    + +
    +
    +exception scitex.logging.StyleWarning[source]
    +

    Bases: SciTeXWarning

    +

    Warning for style/formatting issues.

    +
    + +
    +
    +exception scitex.logging.SciTeXDeprecationWarning[source]
    +

    Bases: SciTeXWarning

    +

    Warning for deprecated SciTeX features.

    +
    + +
    +
    +exception scitex.logging.PerformanceWarning[source]
    +

    Bases: SciTeXWarning

    +

    Warning for performance issues.

    +
    + +
    +
    +exception scitex.logging.DataLossWarning[source]
    +

    Bases: SciTeXWarning

    +

    Warning for potential data loss.

    +
    + +
    +
    +scitex.logging.warn(message, category=<class 'scitex_logging._warnings.SciTeXWarning'>, stacklevel=2)[source]
    +

    Emit a warning (like warnings.warn but integrated with scitex.logging).

    +
    +
    Parameters:
    +
      +
    • message (str) – Warning message

    • +
    • category (Type[SciTeXWarning]) – Warning category (default: SciTeXWarning)

    • +
    • stacklevel (int) – Stack level for source location (default: 2 = caller)

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    +

    Examples

    +
    >>> import scitex.logging as logging
    +>>> from scitex.logging import UnitWarning
    +>>> logging.warn("X axis has no units", UnitWarning)
    +
    +
    +
    +
    + +
    +
    +scitex.logging.filterwarnings(action, category=<class 'scitex_logging._warnings.SciTeXWarning'>, message=None)[source]
    +

    Control warning behavior (like warnings.filterwarnings).

    +
    +
    Parameters:
    +
      +
    • action (str) – One of: +- “ignore”: Never show this warning +- “error”: Raise as exception +- “always”: Always show +- “default”: Show first occurrence per location +- “once”: Show only once total +- “module”: Show once per module

    • +
    • category (Type[SciTeXWarning]) – Warning category (default: SciTeXWarning = all)

    • +
    • message (Optional[str]) – Regex pattern to match warning message (not implemented yet)

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    +

    Examples

    +
    >>> import scitex.logging as logging
    +>>> from scitex.logging import UnitWarning
    +>>> logging.filterwarnings("ignore", category=UnitWarning)
    +
    +
    +
    +
    + +
    +
    +scitex.logging.resetwarnings()[source]
    +

    Reset all warning filters to default behavior.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.warn_deprecated(old_name, new_name, version=None)[source]
    +

    Issue a deprecation warning.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.warn_performance(operation, suggestion)[source]
    +

    Issue a performance warning.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.warn_data_loss(operation, detail)[source]
    +

    Issue a data loss warning.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +exception scitex.logging.SciTeXError(message, context=None, suggestion=None)[source]
    +

    Bases: Exception

    +

    Base Exception class for all SciTeX errors.

    +
    +
    +__init__(message, context=None, suggestion=None)[source]
    +

    Initialize SciTeX error with detailed information.

    +
    +
    Parameters:
    +
      +
    • message (str) – The error message

    • +
    • context (Optional[dict]) – Additional context information (e.g., file paths, variable values)

    • +
    • suggestion (Optional[str]) – Suggested fix or action

    • +
    +
    +
    +
    + +
    + +
    +
    +exception scitex.logging.ConfigurationError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Raised when there are issues with SciTeX configuration.

    +
    + +
    +
    +exception scitex.logging.ConfigFileNotFoundError(filepath)[source]
    +

    Bases: ConfigurationError

    +

    Raised when a required configuration file is not found.

    +
    + +
    +
    +exception scitex.logging.ConfigKeyError(key, available_keys=None)[source]
    +

    Bases: ConfigurationError

    +

    Raised when a required configuration key is missing.

    +
    + +
    +
    +exception scitex.logging.IOError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for input/output related errors.

    +
    + +
    +
    +exception scitex.logging.FileFormatError(filepath, expected_format=None, actual_format=None)[source]
    +

    Bases: IOError

    +

    Raised when file format is not supported or incorrect.

    +
    + +
    +
    +exception scitex.logging.SaveError(filepath, reason)[source]
    +

    Bases: IOError

    +

    Raised when saving data fails.

    +
    + +
    +
    +exception scitex.logging.LoadError(filepath, reason)[source]
    +

    Bases: IOError

    +

    Raised when loading data fails.

    +
    + +
    +
    +exception scitex.logging.ScholarError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for scholar module errors.

    +
    + +
    +
    +exception scitex.logging.SearchError(query, source, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when paper search fails.

    +
    + +
    +
    +exception scitex.logging.EnrichmentError(paper_title, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when paper enrichment fails.

    +
    + +
    +
    +exception scitex.logging.PDFDownloadError(url, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when PDF download fails.

    +
    + +
    +
    +exception scitex.logging.DOIResolutionError(doi, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when DOI resolution fails.

    +
    + +
    +
    +exception scitex.logging.PDFExtractionError(filepath, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when PDF text extraction fails.

    +
    + +
    +
    +exception scitex.logging.BibTeXEnrichmentError(bibtex_file, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when BibTeX enrichment fails.

    +
    + +
    +
    +exception scitex.logging.TranslatorError(translator_name, reason)[source]
    +

    Bases: ScholarError

    +

    Raised when Zotero translator operations fail.

    +
    + +
    +
    +exception scitex.logging.AuthenticationError(provider, reason='')[source]
    +

    Bases: ScholarError

    +

    Raised when authentication fails.

    +
    + +
    +
    +exception scitex.logging.PlottingError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for plotting-related errors.

    +
    + +
    +
    +exception scitex.logging.FigureNotFoundError(fig_id)[source]
    +

    Bases: PlottingError

    +

    Raised when attempting to operate on a non-existent figure.

    +
    + +
    +
    +exception scitex.logging.AxisError(message, axis_info=None)[source]
    +

    Bases: PlottingError

    +

    Raised when there are issues with plot axes.

    +
    + +
    +
    +exception scitex.logging.DataError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for data processing errors.

    +
    + +
    +
    +exception scitex.logging.ShapeError(expected_shape, actual_shape, operation)[source]
    +

    Bases: DataError

    +

    Raised when data shapes are incompatible.

    +
    + +
    +
    +exception scitex.logging.DTypeError(expected_dtype, actual_dtype, operation)[source]
    +

    Bases: DataError

    +

    Raised when data types are incompatible.

    +
    + +
    +
    +exception scitex.logging.PathError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for path-related errors.

    +
    + +
    +
    +exception scitex.logging.InvalidPathError(path, reason)[source]
    +

    Bases: PathError

    +

    Raised when a path is invalid or doesn’t follow SciTeX conventions.

    +
    + +
    +
    +exception scitex.logging.PathNotFoundError(path)[source]
    +

    Bases: PathError

    +

    Raised when a required path doesn’t exist.

    +
    + +
    +
    +exception scitex.logging.TemplateError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for template-related errors.

    +
    + +
    +
    +exception scitex.logging.TemplateViolationError(filepath, violation)[source]
    +

    Bases: TemplateError

    +

    Raised when SciTeX template is not followed.

    +
    + +
    +
    +exception scitex.logging.NNError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for neural network module errors.

    +
    + +
    +
    +exception scitex.logging.ModelError(model_name, reason)[source]
    +

    Bases: NNError

    +

    Raised when there are issues with neural network models.

    +
    + +
    +
    +exception scitex.logging.StatsError(message, context=None, suggestion=None)[source]
    +

    Bases: SciTeXError

    +

    Base class for statistics module errors.

    +
    + +
    +
    +exception scitex.logging.TestError(test_name, reason)[source]
    +

    Bases: StatsError

    +

    Raised when statistical tests fail.

    +
    + +
    +
    +scitex.logging.check_path(path)[source]
    +

    Validate a path according to SciTeX conventions.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.check_file_exists(filepath)[source]
    +

    Check if a file exists.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.check_shape_compatibility(shape1, shape2, operation)[source]
    +

    Check if two shapes are compatible for an operation.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.nn.html b/src/scitex/_sphinx_html/api/scitex.nn.html new file mode 100644 index 000000000..cbdd40de0 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.nn.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.nn API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.nn API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.path.html b/src/scitex/_sphinx_html/api/scitex.path.html new file mode 100644 index 000000000..4e4d28df2 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.path.html @@ -0,0 +1,1146 @@ + + + + + + + + + scitex.path API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.path API Reference

    +

    scitex-path: Scientific project path utilities (find, split, symlink, versioning).

    +
    +
    +scitex.path.clean(path_string)[source]
    +

    Cleans and normalizes a file system path string.

    +
    +

    Example

    +
    >>> clean('/home/user/./folder/../file.txt')
    +'/home/user/file.txt'
    +>>> clean('path/./to//file.txt')
    +'path/to/file.txt'
    +>>> clean('path with spaces')
    +'path_with_spaces'
    +
    +
    +
    +
    +
    Parameters:
    +

    path_string (str) – File path to clean

    +
    +
    Returns:
    +

    Normalized path string

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    + +

    Create a relative symbolic link.

    +

    This is a convenience wrapper around symlink() with relative=True.

    +
    +
    Parameters:
    +
      +
    • src (Union[str, Path]) – Source path (target of the symlink)

    • +
    • dst (Union[str, Path]) – Destination path (the symlink to create)

    • +
    • overwrite (bool) – If True, remove existing dst before creating symlink

    • +
    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path object of the created symlink

    +
    +
    +
    + +
    +
    +scitex.path.find_dir(root_dir, exp)[source]
    +

    Find directories matching pattern.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +scitex.path.find_file(root_dir, exp)[source]
    +

    Find files matching pattern.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +scitex.path.find_git_root()[source]
    +

    Find the root directory of the current git repository.

    +
    +
    Returns:
    +

    Path to the git repository root.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.path.find_latest(dirname, fname, ext, version_prefix='_v')[source]
    +

    Find the latest versioned file in a directory.

    +
    +
    Parameters:
    +
      +
    • dirname (str) – Directory to search in.

    • +
    • fname (str) – Base filename without version number or extension.

    • +
    • ext (str) – File extension including the dot (e.g., ‘.txt’).

    • +
    • version_prefix (str, optional) – Prefix before the version number. Default is ‘_v’.

    • +
    +
    +
    Returns:
    +

    Path to the latest versioned file, or None if not found.

    +
    +
    Return type:
    +

    str or None

    +
    +
    +
    + +
    + +

    Find and optionally fix broken symbolic links.

    +
    +
    Parameters:
    +
      +
    • directory (Union[str, Path]) – Directory to search

    • +
    • recursive (bool) – If True, search recursively

    • +
    • remove (bool) – If True, remove broken symlinks

    • +
    • new_target (Union[str, Path, None]) – If provided, repoint broken symlinks to this target

    • +
    +
    +
    Return type:
    +

    dict

    +
    +
    Returns:
    +

    Dictionary with ‘found’, ‘fixed’, and ‘removed’ lists of paths

    +
    +
    +
    + +
    +
    +scitex.path.get_data_path_from_a_package(package_str, resource)[source]
    +

    Get the path to a data file within a package.

    +
    +
    Parameters:
    +
      +
    • package_str (str) – The name of the package as a string.

    • +
    • resource (str) – The name of the resource file within the package’s data directory.

    • +
    +
    +
    Returns:
    +

    The full path to the resource file.

    +
    +
    Return type:
    +

    Path

    +
    +
    Raises:
    +
      +
    • ImportError – If the specified package cannot be found.

    • +
    • FileNotFoundError – If the resource file does not exist in the package’s data directory.

    • +
    +
    +
    +
    + +
    +
    +scitex.path.get_spath(sfname, makedirs=False)
    +

    Create a save path based on the calling script’s location.

    +
    +
    Parameters:
    +
      +
    • sfname (Union[str, Path]) – The name of the file to be saved.

    • +
    • makedirs (bool) – If True, create the directory structure for the save path.

    • +
    +
    +
    Returns:
    +

    The full save path for the file.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Example

    +
    >>> spath = mk_spath('output.txt', makedirs=True)
    +
    +
    +
    +
    + +
    +
    +scitex.path.get_this_path(ipython_fake_path='/tmp/fake.py')
    +

    Get the path of the calling script.

    +
    +

    Note

    +

    This function historically captures the caller’s filename via +inspect.stack()[1] but then returns this module’s __file__. +The tests codify that legacy behavior; do not change without +updating callers.

    +
    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.path.getsize(path)[source]
    +

    Get file size in bytes.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to file.

    +
    +
    Returns:
    +

    File size in bytes, or math.nan if file doesn’t exist.

    +
    +
    Return type:
    +

    Union[int, float]

    +
    +
    Raises:
    +

    PermissionError – If the file cannot be accessed due to permissions.

    +
    +
    +
    + +
    +
    +scitex.path.increment_version(dirname, fname, ext, version_prefix='_v')[source]
    +

    Generate the next version of a filename based on existing versioned files.

    +
    +
    Parameters:
    +
      +
    • dirname (str) – Directory to search in.

    • +
    • fname (str) – Base filename without version number or extension.

    • +
    • ext (str) – File extension including the dot (e.g., ‘.txt’).

    • +
    • version_prefix (str, optional) – Prefix before the version number. Default is ‘_v’.

    • +
    +
    +
    Returns:
    +

    Full path for the next version of the file.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Example

    +
    >>> increment_version('/path/to/dir', 'myfile', '.txt')
    +'/path/to/dir/myfile_v001.txt'
    +
    +
    +
    +
    + +
    + +

    Check if a path is a symbolic link.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to check

    +
    +
    Return type:
    +

    bool

    +
    +
    Returns:
    +

    True if path is a symlink, False otherwise

    +
    +
    +
    + +
    + +

    List all symbolic links in a directory.

    +
    +
    Parameters:
    +
      +
    • directory (Union[str, Path]) – Directory to search

    • +
    • recursive (bool) – If True, search recursively

    • +
    +
    +
    Return type:
    +

    list[Path]

    +
    +
    Returns:
    +

    List of Path objects for all symlinks found

    +
    +
    +
    + +
    +
    +scitex.path.mk_spath(sfname, makedirs=False)[source]
    +

    Create a save path based on the calling script’s location.

    +
    +
    Parameters:
    +
      +
    • sfname (Union[str, Path]) – The name of the file to be saved.

    • +
    • makedirs (bool) – If True, create the directory structure for the save path.

    • +
    +
    +
    Returns:
    +

    The full save path for the file.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Example

    +
    >>> spath = mk_spath('output.txt', makedirs=True)
    +
    +
    +
    +
    + +
    + +

    Return the path to which the symbolic link points.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Symlink path to read

    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path object pointing to the symlink target

    +
    +
    Raises:
    +

    OSError – If path is not a symlink

    +
    +
    +
    + +
    + +

    Resolve all symbolic links in a path.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path potentially containing symlinks

    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Fully resolved absolute path

    +
    +
    +
    + +
    +
    +scitex.path.split(fpath)[source]
    +

    Split a file path into directory, filename, and extension.

    +
    +
    Parameters:
    +

    fpath (Union[str, Path]) – File path to split.

    +
    +
    Returns:
    +

    (directory with trailing slash, filename without extension, extension)

    +
    +
    Return type:
    +

    Tuple[str, str, str]

    +
    +
    +
    +

    Example

    +
    >>> dirname, fname, ext = split('/path/to/file.txt')
    +>>> dirname
    +'/path/to/'
    +>>> fname
    +'file'
    +>>> ext
    +'.txt'
    +
    +
    +
    +
    + +
    + +

    Create a symbolic link pointing to src named dst.

    +
    +
    Parameters:
    +
      +
    • src (Union[str, Path]) – Source path (target of the symlink)

    • +
    • dst (Union[str, Path]) – Destination path (the symlink to create)

    • +
    • overwrite (bool) – If True, remove existing dst before creating symlink

    • +
    • target_is_directory (Optional[bool]) – On Windows, specify if target is directory (auto-detected if None)

    • +
    • relative (bool) – If True, create relative symlink instead of absolute

    • +
    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path object of the created symlink

    +
    +
    Raises:
    +
    +
    +
    +
    +

    Examples

    +
    >>> from scitex_path import symlink
    +>>> # Create absolute symlink
    +>>> symlink("/path/to/source", "/path/to/link")
    +
    +
    +
    >>> # Create relative symlink
    +>>> symlink("../source", "link", relative=True)
    +
    +
    +
    >>> # Overwrite existing symlink
    +>>> symlink("/path/to/new_source", "/path/to/link", overwrite=True)
    +
    +
    +
    +
    + +
    +
    +scitex.path.this_path(ipython_fake_path='/tmp/fake.py')[source]
    +

    Get the path of the calling script.

    +
    +

    Note

    +

    This function historically captures the caller’s filename via +inspect.stack()[1] but then returns this module’s __file__. +The tests codify that legacy behavior; do not change without +updating callers.

    +
    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    + +

    Remove a symbolic link.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Symlink to remove

    • +
    • missing_ok (bool) – If True, don’t raise error if symlink doesn’t exist

    • +
    +
    +
    Raises:
    +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.pd.html b/src/scitex/_sphinx_html/api/scitex.pd.html new file mode 100644 index 000000000..667923e7f --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.pd.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.pd API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.pd API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.plt.html b/src/scitex/_sphinx_html/api/scitex.plt.html new file mode 100644 index 000000000..0b9e78e5b --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.plt.html @@ -0,0 +1,686 @@ + + + + + + + + + scitex.plt API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.plt API Reference

    +
    +

    Note

    +

    scitex.plt wraps matplotlib with data-tracking axes. The plotting API +is migrating to figrecipe. +See PLT Module (stx.plt) for usage documentation.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.repro.html b/src/scitex/_sphinx_html/api/scitex.repro.html new file mode 100644 index 000000000..c523f5acc --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.repro.html @@ -0,0 +1,1139 @@ + + + + + + + + + scitex.repro API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.repro API Reference

    +

    scitex-repro — Reproducibility utilities for scientific computing.

    +

    Provides tools for reproducible scientific computing: +- Random state management (RandomStateManager) +- ID generation (gen_ID) +- Timestamp generation (gen_timestamp) +- Array hashing (hash_array)

    +
    +
    +scitex.repro.gen_ID(time_format='%YY-%mM-%dD-%Hh%Mm%Ss', N=8, *, now_fn=None)
    +

    Generate a unique identifier with timestamp and random characters.

    +

    Creates a unique ID by combining a formatted timestamp with random +alphanumeric characters. Useful for creating unique experiment IDs, +run identifiers, or temporary file names.

    +
    +
    Parameters:
    +
      +
    • time_format (str, optional) – Format string for timestamp portion. Default is “%YY-%mM-%dD-%Hh%Mm%Ss” +which produces “2025Y-05M-31D-12h30m45s” format.

    • +
    • N (int, optional) – Number of random characters to append. Default is 8.

    • +
    • now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    • +
    +
    +
    Returns:
    +

    Unique identifier in format “{timestamp}_{random_chars}”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> id1 = gen_id()
    +>>> print(id1)
    +'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
    +
    +
    +
    >>> id2 = gen_id(time_format="%Y%m%d", N=4)
    +>>> print(id2)
    +'20250531_xY9a'
    +
    +
    +
    >>> # For experiment tracking
    +>>> exp_id = gen_id()
    +>>> save_path = f"results/experiment_{exp_id}.pkl"
    +
    +
    +
    +
    + +
    +
    +scitex.repro.gen_id(time_format='%YY-%mM-%dD-%Hh%Mm%Ss', N=8, *, now_fn=None)[source]
    +

    Generate a unique identifier with timestamp and random characters.

    +

    Creates a unique ID by combining a formatted timestamp with random +alphanumeric characters. Useful for creating unique experiment IDs, +run identifiers, or temporary file names.

    +
    +
    Parameters:
    +
      +
    • time_format (str, optional) – Format string for timestamp portion. Default is “%YY-%mM-%dD-%Hh%Mm%Ss” +which produces “2025Y-05M-31D-12h30m45s” format.

    • +
    • N (int, optional) – Number of random characters to append. Default is 8.

    • +
    • now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    • +
    +
    +
    Returns:
    +

    Unique identifier in format “{timestamp}_{random_chars}”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> id1 = gen_id()
    +>>> print(id1)
    +'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
    +
    +
    +
    >>> id2 = gen_id(time_format="%Y%m%d", N=4)
    +>>> print(id2)
    +'20250531_xY9a'
    +
    +
    +
    >>> # For experiment tracking
    +>>> exp_id = gen_id()
    +>>> save_path = f"results/experiment_{exp_id}.pkl"
    +
    +
    +
    +
    + +
    +
    +scitex.repro.gen_timestamp(*, now_fn=None)[source]
    +

    Generate a timestamp string for file naming.

    +

    Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for +creating unique filenames or version identifiers.

    +
    +
    Parameters:
    +

    now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    +
    +
    Returns:
    +

    Timestamp string in format “YYYY-MMDD-HHMM”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> timestamp = gen_timestamp()
    +>>> print(timestamp)
    +'2025-0531-1230'
    +
    +
    +
    >>> filename = f"experiment_{gen_timestamp()}.csv"
    +>>> print(filename)
    +'experiment_2025-0531-1230.csv'
    +
    +
    +
    +
    + +
    +
    +scitex.repro.timestamp(*, now_fn=None)
    +

    Generate a timestamp string for file naming.

    +

    Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for +creating unique filenames or version identifiers.

    +
    +
    Parameters:
    +

    now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    +
    +
    Returns:
    +

    Timestamp string in format “YYYY-MMDD-HHMM”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> timestamp = gen_timestamp()
    +>>> print(timestamp)
    +'2025-0531-1230'
    +
    +
    +
    >>> filename = f"experiment_{gen_timestamp()}.csv"
    +>>> print(filename)
    +'experiment_2025-0531-1230.csv'
    +
    +
    +
    +
    + +
    +
    +scitex.repro.hash_array(array_data)[source]
    +

    Generate hash for array data.

    +

    Creates a deterministic hash for numpy arrays, useful for +verifying data integrity and reproducibility.

    +
    +
    Parameters:
    +

    array_data (ndarray) – Array to hash

    +
    +
    Returns:
    +

    16-character hash string

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> import numpy as np
    +>>> data = np.array([1, 2, 3, 4, 5])
    +>>> hash1 = hash_array(data)
    +>>> hash2 = hash_array(data)
    +>>> hash1 == hash2
    +True
    +
    +
    +
    +
    + +
    +
    +class scitex.repro.RandomStateManager(seed=42, verbose=False)[source]
    +

    Bases: object

    +

    Simple, robust random state manager for scientific computing.

    +
    +

    Examples

    +
    >>> from scitex_repro import RandomStateManager
    +>>>
    +>>> # Method 1: Direct usage
    +>>> rng = RandomStateManager(seed=42)
    +>>> data = rng("data").random(100)
    +>>>
    +>>> # Verify reproducibility
    +>>> rng.verify(data, "my_data")
    +
    +
    +
    +
    +
    +__init__(seed=42, verbose=False)[source]
    +

    Initialize with automatic module detection.

    +
    + +
    +
    +get_np_generator(name)[source]
    +

    Get or create a named NumPy random generator.

    +
    +
    Parameters:
    +

    name (str) – Generator name (e.g., “data”, “model”, “augment”)

    +
    +
    Returns:
    +

    Independent NumPy random generator

    +
    +
    Return type:
    +

    numpy.random.Generator

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> gen = rng.get_np_generator("data")
    +>>> values = gen.random(100)
    +>>> perm = gen.permutation(100)
    +
    +
    +
    +
    + +
    +
    +__call__(name, verbose=None)[source]
    +

    Get or create a named NumPy random generator.

    +

    This is a backward compatibility wrapper for get_np_generator(). +Consider using get_np_generator() directly for clarity.

    +
    +
    Parameters:
    +
      +
    • name (str) – Generator name

    • +
    • verbose (bool) – Whether to show deprecation warning

    • +
    +
    +
    Returns:
    +

    NumPy random generator with deterministic seed

    +
    +
    Return type:
    +

    numpy.random.Generator

    +
    +
    +
    + +
    +
    +verify(obj, name=None, verbose=True)[source]
    +

    Verify object matches cached hash (detects broken reproducibility).

    +

    First call: caches the object’s hash +Later calls: verifies object matches cached hash

    +
    +
    Parameters:
    +
      +
    • obj (Any) – Object to verify (array, tensor, data, model weights, etc.) +Supports: numpy arrays, torch tensors, tf tensors, jax arrays, +lists, dicts, pandas dataframes, and basic types

    • +
    • name (str) – Cache name. Auto-generated if not provided.

    • +
    +
    +
    Returns:
    +

    True if matches cache (or first call), False if different

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    +

    Examples

    +
    >>> data = generate_data()
    +>>> rng.verify(data, "train_data")  # First run: caches
    +>>> # Next run:
    +>>> rng.verify(data, "train_data")  # Verifies match
    +
    +
    +
    +
    + +
    +
    +checkpoint(name='checkpoint')[source]
    +

    Save current state of all generators.

    +
    + +
    +
    +restore(checkpoint)[source]
    +

    Restore from checkpoint.

    +
    + +
    +
    +temporary_seed(seed)[source]
    +

    Context manager for temporary seed change.

    +
    + +
    +
    +get_sklearn_random_state(name)[source]
    +

    Get a random state for scikit-learn.

    +

    Scikit-learn uses integers for random_state parameter.

    +
    +
    Parameters:
    +

    name (str) – Generator name

    +
    +
    Returns:
    +

    Random state integer for sklearn

    +
    +
    Return type:
    +

    int

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> from sklearn.model_selection import train_test_split
    +>>> X_train, X_test = train_test_split(
    +...     X, test_size=0.2,
    +...     random_state=rng.get_sklearn_random_state("split")
    +... )
    +
    +
    +
    +
    + +
    +
    +get_torch_generator(name)[source]
    +

    Get or create a named PyTorch generator.

    +
    +
    Parameters:
    +

    name (str) – Generator name

    +
    +
    Returns:
    +

    PyTorch generator with deterministic seed

    +
    +
    Return type:
    +

    torch.Generator

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> gen = rng.get_torch_generator("model")
    +>>> torch.randn(5, 5, generator=gen)
    +
    +
    +
    +
    + +
    +
    +get_generator(name)[source]
    +

    Alias for get_np_generator for compatibility.

    +
    + +
    +
    +clear_cache(patterns=None)[source]
    +

    Clear verification cache files.

    +
    +
    Parameters:
    +

    patterns (str | list[str]) – Specific cache patterns to clear. If None, clears all.

    +
    +
    Returns:
    +

    Number of cache files removed

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    + +
    +
    +scitex.repro.get(verbose=False)[source]
    +

    Get or create the global RandomStateManager instance.

    +
    +
    Parameters:
    +

    verbose (bool) – Whether to print status messages (default: False)

    +
    +
    Returns:
    +

    Global instance

    +
    +
    Return type:
    +

    RandomStateManager

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_repro import get
    +>>> rng = get()
    +>>> data = rng("data").random(100)
    +
    +
    +
    +
    + +
    +
    +scitex.repro.reset(seed=42, verbose=False)[source]
    +

    Reset global RandomStateManager with new seed.

    +
    +
    Parameters:
    +
      +
    • seed (int) – New seed value

    • +
    • verbose (bool) – Whether to print status messages (default: False)

    • +
    +
    +
    Returns:
    +

    New global instance

    +
    +
    Return type:
    +

    RandomStateManager

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_repro import reset
    +>>> rng = reset(seed=123)
    +
    +
    +
    +
    + +
    +
    +scitex.repro.fix_seeds(seed=42, os=True, random=True, np=True, torch=True, tf=False, jax=False, verbose=False, **kwargs)[source]
    +

    Deprecated: Use RandomStateManager instead.

    +

    This function maintains backward compatibility with the old fix_seeds API.

    +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.scholar.html b/src/scitex/_sphinx_html/api/scitex.scholar.html new file mode 100644 index 000000000..539a76528 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.scholar.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.scholar API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.scholar API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.session.html b/src/scitex/_sphinx_html/api/scitex.session.html new file mode 100644 index 000000000..9e233e5d4 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.session.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.session API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.session API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.social.html b/src/scitex/_sphinx_html/api/scitex.social.html new file mode 100644 index 000000000..1c95e71f3 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.social.html @@ -0,0 +1,678 @@ + + + + + + + + + scitex.social API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.social API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.stats.html b/src/scitex/_sphinx_html/api/scitex.stats.html new file mode 100644 index 000000000..47e63176e --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.stats.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.stats API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.stats API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.str.html b/src/scitex/_sphinx_html/api/scitex.str.html new file mode 100644 index 000000000..9b2be888d --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.str.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.str API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.str API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.template.html b/src/scitex/_sphinx_html/api/scitex.template.html new file mode 100644 index 000000000..1df97908a --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.template.html @@ -0,0 +1,680 @@ + + + + + + + + + scitex.template API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.template API Reference

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/api/scitex.writer.html b/src/scitex/_sphinx_html/api/scitex.writer.html new file mode 100644 index 000000000..bbb19cda9 --- /dev/null +++ b/src/scitex/_sphinx_html/api/scitex.writer.html @@ -0,0 +1,1136 @@ + + + + + + + + + scitex.writer — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.writer

    +

    SciTeX Writer - LaTeX manuscript compilation system with MCP server.

    +
    +
    Three Interfaces:
      +
    • Python API: import scitex_writer as sw

    • +
    • CLI: scitex-writer <command>

    • +
    • MCP: 30 tools for AI agents

    • +
    +
    +
    Modules:
      +
    • compile: Compile manuscripts to PDF

    • +
    • export: Export manuscript for arXiv submission

    • +
    • project: Clone, info, get_pdf

    • +
    • tables: List, add, remove, csv_to_latex

    • +
    • figures: List, add, remove, convert

    • +
    • bib: List, add, remove, merge

    • +
    • guidelines: IMRAD writing tips

    • +
    • prompts: AI2 Asta integration

    • +
    +
    +
    +
    +
    +scitex.writer.usage()
    +

    Get the usage guide with branding applied.

    +
    +
    Returns:
    +

    Formatted usage guide string.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +class scitex.writer.Writer(project_dir, name=None, git_strategy='child', branch=None, tag=None)[source]
    +

    Bases: object

    +

    LaTeX manuscript compiler.

    +
    +
    +__init__(project_dir, name=None, git_strategy='child', branch=None, tag=None)[source]
    +

    Initialize for project directory.

    +

    If directory doesn’t exist, creates new project.

    +
    +
    Parameters:
    +
      +
    • project_dir (Path) – Path to project directory.

    • +
    • name (Optional[str]) – Project name (used if creating new project).

    • +
    • git_strategy (Optional[str]) – Git initialization strategy: +- ‘child’: Create isolated git in project directory (default) +- ‘parent’: Use parent git repository +- ‘origin’: Preserve template’s original git history +- None or ‘none’: Disable git initialization

    • +
    • branch (Optional[str]) – Specific branch of template repository to clone. +If None, clones the default branch. Mutually exclusive with tag.

    • +
    • tag (Optional[str]) – Specific tag/release of template repository to clone. +If None, clones the default branch. Mutually exclusive with branch.

    • +
    +
    +
    +
    + +
    +
    +compile_manuscript(timeout=300, log_callback=None, progress_callback=None)[source]
    +

    Compile manuscript to PDF with optional live callbacks.

    +

    Runs scripts/shell/compile_manuscript.sh with configured settings.

    +
    +
    Parameters:
    +
      +
    • timeout (int) – Maximum compilation time in seconds (default: 300).

    • +
    • log_callback (Optional[Callable[[str], None]]) – Called with each log line: log_callback(“Running pdflatex…”).

    • +
    • progress_callback (Optional[Callable[[int, str], None]]) – Called with progress: progress_callback(50, “Pass 2/3”).

    • +
    +
    +
    Returns:
    +

    With success status, PDF path, and errors/warnings.

    +
    +
    Return type:
    +

    CompilationResult

    +
    +
    +
    +

    Examples

    +
    >>> writer = Writer(Path("my_paper"))
    +>>> result = writer.compile_manuscript()
    +>>> if result.success:
    +...     print(f"PDF created: {result.output_pdf}")
    +
    +
    +
    +
    + +
    +
    +compile_supplementary(timeout=300, log_callback=None, progress_callback=None)[source]
    +

    Compile supplementary materials to PDF with optional live callbacks.

    +

    Runs scripts/shell/compile_supplementary.sh with configured settings.

    +
    +
    Parameters:
    +
    +
    +
    Returns:
    +

    With success status, PDF path, and errors/warnings.

    +
    +
    Return type:
    +

    CompilationResult

    +
    +
    +
    +

    Examples

    +
    >>> writer = Writer(Path("my_paper"))
    +>>> result = writer.compile_supplementary()
    +>>> if result.success:
    +...     print(f"PDF created: {result.output_pdf}")
    +
    +
    +
    +
    + +
    +
    +compile_revision(track_changes=False, timeout=300, log_callback=None, progress_callback=None)[source]
    +

    Compile revision document with optional change tracking and live callbacks.

    +

    Runs scripts/shell/compile_revision.sh with configured settings.

    +
    +
    Parameters:
    +
      +
    • track_changes (bool) – Enable change tracking in compiled PDF (default: False).

    • +
    • timeout (int) – Maximum compilation time in seconds (default: 300).

    • +
    • log_callback (Optional[Callable[[str], None]]) – Called with each log line.

    • +
    • progress_callback (Optional[Callable[[int, str], None]]) – Called with progress updates.

    • +
    +
    +
    Returns:
    +

    With success status, PDF path, and errors/warnings.

    +
    +
    Return type:
    +

    CompilationResult

    +
    +
    +
    +

    Examples

    +
    >>> writer = Writer(Path("my_paper"))
    +>>> result = writer.compile_revision(track_changes=True)
    +>>> if result.success:
    +...     print(f"Revision PDF: {result.output_pdf}")
    +
    +
    +
    +
    + +
    +
    +watch(on_compile=None)[source]
    +

    Auto-recompile on file changes.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +get_pdf(doc_type='manuscript')[source]
    +

    Get output PDF path (Read).

    +
    +
    Return type:
    +

    Optional[Path]

    +
    +
    +
    + +
    +
    +delete()[source]
    +

    Delete project directory (Delete).

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    + +
    +
    +class scitex.writer.CompilationResult(success, exit_code, stdout, stderr, output_pdf=None, diff_pdf=None, log_file=None, duration=0.0, errors=<factory>, warnings=<factory>)[source]
    +

    Bases: object

    +

    Result of LaTeX compilation.

    +
    +
    +success: bool
    +

    Whether compilation succeeded (exit code 0)

    +
    + +
    +
    +exit_code: int
    +

    Process exit code

    +
    + +
    +
    +stdout: str
    +

    Standard output from compilation

    +
    + +
    +
    +stderr: str
    +

    Standard error from compilation

    +
    + +
    +
    +output_pdf: Path | None = None
    +

    Path to generated PDF (if successful)

    +
    + +
    +
    +diff_pdf: Path | None = None
    +

    Path to diff PDF with tracked changes (if generated)

    +
    + +
    +
    +log_file: Path | None = None
    +

    Path to compilation log file

    +
    + +
    +
    +duration: float = 0.0
    +

    Compilation duration in seconds

    +
    + +
    +
    +errors: List[str]
    +

    Parsed LaTeX errors (if any)

    +
    + +
    +
    +warnings: List[str]
    +

    Parsed LaTeX warnings (if any)

    +
    + +
    +
    +__str__()[source]
    +

    Human-readable summary.

    +
    + +
    + +
    +
    +class scitex.writer.ManuscriptTree(root, git_root=None, contents=None, base=None, readme=None, archive=None)[source]
    +

    Bases: object

    +

    Manuscript directory structure (01_manuscript/).

    +
    +
    +root: Path
    +
    + +
    +
    +git_root: Path | None = None
    +
    + +
    +
    +contents: ManuscriptContents = None
    +
    + +
    +
    +base: DocumentSection = None
    +
    + +
    +
    +readme: DocumentSection = None
    +
    + +
    +
    +archive: Path = None
    +
    + +
    +
    +__post_init__()[source]
    +

    Initialize all instances.

    +
    + +
    +
    +verify_structure()[source]
    +

    Verify manuscript structure has required components.

    +
    +
    Return type:
    +

    tuple[bool, list[str]]

    +
    +
    Returns:
    +

    (is_valid, list_of_missing_items_with_paths)

    +
    +
    +
    + +
    + +
    +
    +class scitex.writer.SupplementaryTree(root, git_root=None, contents=None, base=None, supplementary=None, supplementary_diff=None, readme=None, archive=None)[source]
    +

    Bases: object

    +

    Supplementary directory structure (02_supplementary/).

    +
    +
    +root: Path
    +
    + +
    +
    +git_root: Path | None = None
    +
    + +
    +
    +contents: SupplementaryContents = None
    +
    + +
    +
    +base: DocumentSection = None
    +
    + +
    +
    +supplementary: DocumentSection = None
    +
    + +
    +
    +supplementary_diff: DocumentSection = None
    +
    + +
    +
    +readme: DocumentSection = None
    +
    + +
    +
    +archive: Path = None
    +
    + +
    +
    +__post_init__()[source]
    +

    Initialize all instances.

    +
    + +
    +
    +verify_structure()[source]
    +

    Verify supplementary structure has required components.

    +
    +
    Return type:
    +

    tuple[bool, list[str]]

    +
    +
    Returns:
    +

    (is_valid, list_of_missing_items_with_paths)

    +
    +
    +
    + +
    + +
    +
    +class scitex.writer.RevisionTree(root, git_root=None, contents=None, base=None, revision=None, readme=None, archive=None, docs=None)[source]
    +

    Bases: object

    +

    Revision directory structure (03_revision/).

    +
    +
    +root: Path
    +
    + +
    +
    +git_root: Path | None = None
    +
    + +
    +
    +contents: RevisionContents = None
    +
    + +
    +
    +base: DocumentSection = None
    +
    + +
    +
    +revision: DocumentSection = None
    +
    + +
    +
    +readme: DocumentSection = None
    +
    + +
    +
    +archive: Path = None
    +
    + +
    +
    +docs: Path = None
    +
    + +
    +
    +__post_init__()[source]
    +

    Initialize all instances.

    +
    + +
    +
    +verify_structure()[source]
    +

    Verify revision structure has required components.

    +
    +
    Return type:
    +

    tuple[bool, list[str]]

    +
    +
    Returns:
    +

    (is_valid, list_of_missing_items_with_paths)

    +
    +
    +
    + +
    + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/core_concepts.html b/src/scitex/_sphinx_html/core_concepts.html new file mode 100644 index 000000000..313079462 --- /dev/null +++ b/src/scitex/_sphinx_html/core_concepts.html @@ -0,0 +1,856 @@ + + + + + + + + + Core Concepts — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Core Concepts

    +
    +

    Research Workflow

    +

    SciTeX covers the full research pipeline, from literature review to publication:

    +Research workflow: Question → Literature → Data → Analysis → Figures → Manuscript → Verify → Publication + +

    Each stage maps to a SciTeX module. The @stx.session decorator ties them +together, ensuring every step is reproducible and provenance-tracked.

    +
    +
    +

    Architecture

    +

    SciTeX is organized around a simple principle: every research script should be +a reproducible, self-documenting unit of work. The @stx.session decorator +enforces this by managing outputs, logging, and configuration automatically.

    +Module architecture: Experiment (session, config, io, logging, repro), Analysis & Visualization (stats, dsp, plt, diagram), Publication (scholar, writer, clew) + +

    Modules are grouped into three layers – Experiment infrastructure (blue), +Analysis & Visualization tools (orange), and Publication (purple). +See Module Overview for the full module reference.

    +
    +
    +

    The Session Model

    +

    @stx.session is the core abstraction. It wraps a function and provides:

    +
      +
    1. Output directory: script_out/FINISHED_SUCCESS/<session_id>/

    2. +
    3. Logging: All stdout/stderr captured to script.log

    4. +
    5. Config injection: YAML files from ./config/ merged and injected

    6. +
    7. CLI generation: Function parameters become --flags

    8. +
    9. Provenance: File hashes recorded to SQLite for reproducibility

    10. +
    +
    import scitex as stx
    +
    +@stx.session
    +def main(
    +    lr=0.001,               # --lr 0.01
    +    epochs=100,             # --epochs 50
    +    CONFIG=stx.INJECTED,    # from ./config/*.yaml
    +    plt=stx.INJECTED,       # pre-configured matplotlib
    +    logger=stx.INJECTED,    # session logger
    +):
    +    """Train a model. Docstring becomes --help text."""
    +    logger.info(f"Training with lr={lr}, epochs={epochs}")
    +
    +    # stx.io.save paths are relative to session output dir
    +    stx.io.save({"lr": lr, "epochs": epochs}, "params.yaml")
    +
    +    return 0
    +
    +
    +

    Session output tree:

    +
    train_out/
    +├── RUNNING/                    # while script runs
    +│   └── 20260213_143022_AB12/
    +│       ├── params.yaml
    +│       └── train.log
    +└── FINISHED_SUCCESS/           # after successful exit
    +    └── 20260213_143022_AB12/   # moved here on completion
    +        ├── params.yaml
    +        └── train.log
    +
    +
    +
    +
    +

    Universal I/O

    +

    stx.io.save and stx.io.load dispatch on file extension:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Extension

    Data Type

    Backend

    .csv

    DataFrame

    pandas

    .npy, .npz

    ndarray

    numpy

    .pkl, .pickle

    any object

    pickle

    .yaml, .yml

    dict

    PyYAML

    .json

    dict/list

    json

    .png, .jpg, .svg, .pdf

    Figure

    matplotlib

    .hdf5, .h5

    dict/array

    h5py

    .mat

    dict

    scipy.io

    .pth, .pt

    state_dict

    torch

    .parquet

    DataFrame

    pyarrow

    +

    When saving a matplotlib Figure, SciTeX also exports:

    +
      +
    • A .csv with the plotted data (extracted from axes)

    • +
    • A .yaml recipe for reproducing the figure

    • +
    +
    +
    +

    Provenance Tracking (Clew)

    +

    Inside @stx.session, every stx.io.save and stx.io.load call +records the file’s SHA-256 hash to a local SQLite database. This enables:

    +
      +
    • Verification: Check if output files have been modified since creation

    • +
    • DAG reconstruction: Trace which inputs produced which outputs

    • +
    • Cross-session linking: If script B loads a file that script A produced, +the parent-child relationship is recorded automatically

    • +
    +
    # Check verification status
    +scitex clew status
    +
    +# Verify a specific session
    +scitex clew run <session_id>
    +
    +# Generate a dependency diagram
    +scitex clew mermaid
    +
    +
    +
    +
    +

    Configuration

    +

    SciTeX uses a priority-based config system:

    +
      +
    1. CLI flags (highest priority): --lr 0.01

    2. +
    3. Config files: ./config/*.yaml (merged alphabetically)

    4. +
    5. Function defaults (lowest priority): lr=0.001

    6. +
    +
    # config/experiment.yaml
    +DATA_DIR: ./data
    +MODEL:
    +  hidden_size: 256
    +  dropout: 0.1
    +
    +# config/PATH.yaml
    +OUTPUT_DIR: ${HOME}/results    # env var substitution
    +
    +
    +

    Access in code:

    +
    @stx.session
    +def main(CONFIG=stx.INJECTED, **kw):
    +    data_dir = CONFIG["DATA_DIR"]
    +    hidden = CONFIG["MODEL"]["hidden_size"]
    +
    +
    +
    +
    +

    Best Practices

    +
      +
    1. One session per script: Each .py file should have one @stx.session function

    2. +
    3. Use relative paths in save/load: They resolve relative to the session output directory

    4. +
    5. Return 0 for success: The exit code determines the output directory name (FINISHED_SUCCESS vs FINISHED_ERROR)

    6. +
    7. Put config in ./config/*.yaml: Keeps parameters separate from code

    8. +
    9. Use stx.repro.fix_seeds(42) for determinism: Fixes numpy, torch, random seeds in one call

    10. +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/gallery.html b/src/scitex/_sphinx_html/gallery.html new file mode 100644 index 000000000..fd2bc8431 --- /dev/null +++ b/src/scitex/_sphinx_html/gallery.html @@ -0,0 +1,1023 @@ + + + + + + + + + Plot Gallery — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/genindex.html b/src/scitex/_sphinx_html/genindex.html new file mode 100644 index 000000000..d8eb9ecc4 --- /dev/null +++ b/src/scitex/_sphinx_html/genindex.html @@ -0,0 +1,2550 @@ + + + + + + + + Index — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + + +

    Index

    + +
    + _ + | A + | B + | C + | D + | E + | F + | G + | H + | I + | J + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | Y + +
    +

    _

    + + + +
    + +

    A

    + + + +
    + +

    B

    + + + +
    + +

    C

    + + + +
    + +

    D

    + + + +
    + +

    E

    + + + +
    + +

    F

    + + + +
    + +

    G

    + + + +
    + +

    H

    + + + +
    + +

    I

    + + + +
    + +

    J

    + + + +
    + +

    L

    + + + +
    + +

    M

    + + + +
    + +

    N

    + + + +
    + +

    O

    + + + +
    + +

    P

    + + + +
    + +

    Q

    + + +
    + +

    R

    + + + +
    + +

    S

    + + + +
    + +

    T

    + + + +
    + +

    U

    + + + +
    + +

    V

    + + + +
    + +

    W

    + + + +
    + +

    Y

    + + +
    + + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/index.html b/src/scitex/_sphinx_html/index.html new file mode 100644 index 000000000..cda5bd9dc --- /dev/null +++ b/src/scitex/_sphinx_html/index.html @@ -0,0 +1,843 @@ + + + + + + + + + SciTeX – Modular Python Toolkit for Researchers and AI Agents — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    +
      +
    • + +
    • + Edit on GitHub +
    • +
    +
    +
    +
    +
    + +
    +

    SciTeX – Modular Python Toolkit for Researchers and AI Agents

    +

    A Python framework for reproducible scientific research.

    +SciTeX Ecosystem + +
    +

    Role in SciTeX Ecosystem

    +

    scitex is the unified orchestrator package. It re-exports from sub-packages +so users have a single import (import scitex). It does not contain runtime logic +itself – it delegates to sub-packages.

    +
    scitex (this package) -- orchestrator, templates, CLI, MCP server
    +  |-- scitex.app  <-  scitex-app   (runtime SDK: file I/O, config, validation)
    +  |-- scitex.ui   <-  scitex-ui    (React/TS components: workspace, data-table)
    +  +-- scitex.plt  <-  figrecipe    (figures: plotting, diagrams, recipes)
    +
    +
    +
      +
    • scitex-app (docs): Runtime SDK that apps import at execution time

    • +
    • scitex-ui (docs): Shared React/TypeScript component library

    • +
    • figrecipe (docs): Reference app – figures, diagrams, recipes

    • +
    +
    +
    +

    Four Freedoms for Research

    +
      +
    1. The freedom to run your research anywhere – your machine, your terms.

    2. +
    3. The freedom to study how every step works – from raw data to final manuscript.

    4. +
    5. The freedom to redistribute your workflows, not just your papers.

    6. +
    7. The freedom to modify any module and share improvements with the community.

    8. +
    +

    AGPL-3.0 – because research infrastructure deserves the same freedoms as the software it runs on.

    +
    import scitex as stx
    +
    +@stx.session
    +def main(n_samples=100, plt=stx.INJECTED):
    +    import numpy as np
    +    x = np.linspace(0, 2 * np.pi, n_samples)
    +    y = np.sin(x) + np.random.normal(0, 0.1, n_samples)
    +
    +    fig, ax = plt.subplots()
    +    ax.plot_line(x, y)
    +    stx.io.save(fig, "sine.png")       # PNG + CSV + YAML recipe
    +    return 0
    +
    +
    +
      +
    • @stx.session – Reproducible runs with CLI, config, and provenance tracking

    • +
    • stx.io – Save/load 30+ formats through a single interface

    • +
    • stx.plt – Publication figures with auto CSV data export

    • +
    • stx.stats – 23 statistical tests with effect sizes and CI

    • +
    • stx.scholar – Search, download, and enrich papers

    • +
    • 120+ MCP tools for AI-assisted research workflows

    • +
    +
    +

    Getting Started

    + +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/installation.html b/src/scitex/_sphinx_html/installation.html new file mode 100644 index 000000000..73ac810bd --- /dev/null +++ b/src/scitex/_sphinx_html/installation.html @@ -0,0 +1,845 @@ + + + + + + + + + Installation — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Installation

    +
    +

    Requirements

    +
      +
    • Python 3.10+

    • +
    • uv (strongly recommended) — install with pip install uv or +curl -LsSf https://astral.sh/uv/install.sh | sh

    • +
    • pip 21+ also works, but expect 30–90 min for scitex[all] +(see warning below)

    • +
    +
    +

    Warning

    +

    pip install "scitex[all]" typically takes 30–90 minutes because +pip’s serial resolver walks version histories of the large transitive +dependency set (numpy/pandas/torch/jax/playwright/openalex-local/…). +Use uv instead — it resolves the same set in parallel in 1–3 +minutes. Every pip install line on this page also works as +uv pip install and we recommend the uv form.

    +
    +
    +
    +

    Core Install

    +

    The base package pulls in only lightweight dependencies and gives you access +to session management, path utilities, string helpers, and the module +discovery system.

    +
    uv pip install scitex          # recommended
    +pip install scitex              # also works, slower for [all]
    +
    +
    +
    + +
    +

    Research Workflow

    +

    For a typical research project you need figures, statistics, and literature +search but not audio, browser automation, or cloud tools:

    +
    pip install "scitex[plt,stats,scholar]"
    +
    +
    +
    +
    +

    Per-Module Extras

    +

    Install only what you need. Each extra maps to a self-contained capability.

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Extra

    Description

    plt

    Publication-ready figures via figrecipe (matplotlib, seaborn, Pillow)

    stats

    Hypothesis testing, effect sizes, power analysis (scitex-stats, scipy, statsmodels)

    io

    Unified I/O for 40+ formats (HDF5, Excel, YAML, PDF, images, …)

    scholar

    Literature search and PDF management (CrossRef, OpenAlex, Semantic Scholar)

    writer

    LaTeX manuscript compilation, BibTeX management, Overleaf export

    audio

    Text-to-speech and audio utilities (scitex-audio)

    ai

    LLM APIs (OpenAI, Anthropic, Google, Groq) and ML tools (scikit-learn)

    browser

    Web automation via Playwright

    capture

    Screenshot capture (mss, Playwright)

    dataset

    Scientific dataset access (DANDI, OpenNeuro, PhysioNet)

    cloud

    Cloud integration utilities

    app

    Unified file storage SDK (scitex-app)

    session

    Session decorator with reproducibility logging

    diagram

    Diagram generation (Mermaid, Graphviz)

    db

    Database access (SQLAlchemy, PostgreSQL)

    cv

    Computer vision (OpenCV, Pillow)

    dsp

    Digital signal processing (scipy, tensorpac)

    social

    Social media posting (socialia)

    tunnel

    SSH tunnel management (scitex-tunnel)

    all

    Everything above

    +

    Example combinations:

    +
    # Neuroscience analysis
    +pip install "scitex[plt,stats,dsp,dataset]"
    +
    +# Paper writing
    +pip install "scitex[writer,scholar,plt]"
    +
    +# AI agent development
    +pip install "scitex[ai,browser,capture]"
    +
    +
    +
    +
    +

    Development Install

    +

    Clone the repository and install in editable mode with development tools:

    +
    git clone https://github.com/ywatanabe1989/scitex-python.git
    +cd scitex-python
    +pip install -e ".[dev]"
    +
    +
    +

    The dev extra includes pytest, ruff, mypy, Sphinx, and build tools.

    + +
    +
    +

    Verifying the Installation

    +
    import scitex as stx
    +print(stx.__version__)
    +
    +
    +

    To check which optional modules are available:

    +
    stx.usage.list()
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/ai.html b/src/scitex/_sphinx_html/modules/ai.html new file mode 100644 index 000000000..6dec49388 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/ai.html @@ -0,0 +1,760 @@ + + + + + + + + + AI Module (stx.ai) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    AI Module (stx.ai)

    +

    Machine learning utilities for training, classification, and metrics +with PyTorch and scikit-learn.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Training utilities
    +from scitex.ai import LearningCurveLogger, EarlyStopping
    +
    +logger = LearningCurveLogger()
    +stopper = EarlyStopping(patience=10, direction="minimize")
    +
    +for epoch in range(100):
    +    # ... training loop ...
    +    logger({"loss": loss, "acc": acc}, step="Training")
    +    if stopper(val_loss, {"model": model_path}, epoch):
    +        break
    +
    +logger.plot_learning_curves(spath="curves.png")
    +
    +# Classification
    +from scitex.ai import ClassificationReporter, Classifier
    +
    +clf = Classifier()("SVC")
    +reporter = ClassificationReporter(output_dir="./results")
    +reporter.calculate_metrics(y_true, y_pred, y_proba)
    +reporter.save_summary()
    +
    +
    +
    +
    +

    Training

    +
      +
    • LearningCurveLogger – Track and visualize training/validation/test metrics across epochs

    • +
    • EarlyStopping – Monitor validation metrics and stop when improvement plateaus

    • +
    +
    +
    +

    Classification

    +
      +
    • ClassificationReporter – Unified reporter for single/multi-task classification (balanced accuracy, MCC, ROC-AUC, confusion matrices)

    • +
    • Classifier – Factory for scikit-learn classifiers (SVC, KNN, Logistic Regression, AdaBoost, …)

    • +
    • CrossValidationExperiment – Cross-validation framework

    • +
    +
    +
    +

    Metrics

    +

    Standardized calc_* functions:

    +
      +
    • calc_bacc – Balanced accuracy

    • +
    • calc_mcc – Matthews Correlation Coefficient

    • +
    • calc_conf_mat – Confusion matrix

    • +
    • calc_roc_auc – ROC-AUC score

    • +
    • calc_pre_rec_auc – Precision-Recall AUC

    • +
    • calc_feature_importance – Feature importance scores

    • +
    +
    +
    +

    Visualization

    +
      +
    • plot_learning_curve – Training/validation curves

    • +
    • stx_conf_mat – Confusion matrix heatmap

    • +
    • plot_roc_curve – ROC curve

    • +
    • plot_pre_rec_curve – Precision-Recall curve

    • +
    • plot_feature_importance – Feature importance bar plots

    • +
    +
    +
    +

    Other

    +
      +
    • MultiTaskLoss – Multi-task learning loss weighting

    • +
    • get_optimizer / set_optimizer – Optimizer management

    • +
    • GenAI – Generative AI wrapper (lazy-loaded)

    • +
    • Clustering: pca, umap

    • +
    +
    +
    +

    API Reference

    +

    See scitex.ai API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/app.html b/src/scitex/_sphinx_html/modules/app.html new file mode 100644 index 000000000..f5c836daf --- /dev/null +++ b/src/scitex/_sphinx_html/modules/app.html @@ -0,0 +1,681 @@ + + + + + + + + + app Module (stx.app) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    app Module (stx.app)

    +

    See /api/scitex.app for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/audio.html b/src/scitex/_sphinx_html/modules/audio.html new file mode 100644 index 000000000..551fb4cd3 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/audio.html @@ -0,0 +1,681 @@ + + + + + + + + + audio Module (stx.audio) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    audio Module (stx.audio)

    +

    See /api/scitex.audio for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/audit.html b/src/scitex/_sphinx_html/modules/audit.html new file mode 100644 index 000000000..e1f07bbe3 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/audit.html @@ -0,0 +1,681 @@ + + + + + + + + + audit Module (stx.audit) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    audit Module (stx.audit)

    +

    See /api/scitex.audit for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/benchmark.html b/src/scitex/_sphinx_html/modules/benchmark.html new file mode 100644 index 000000000..d79cc2003 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/benchmark.html @@ -0,0 +1,681 @@ + + + + + + + + + benchmark Module (stx.benchmark) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    benchmark Module (stx.benchmark)

    +

    See /api/scitex.benchmark for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/bridge.html b/src/scitex/_sphinx_html/modules/bridge.html new file mode 100644 index 000000000..78448f88f --- /dev/null +++ b/src/scitex/_sphinx_html/modules/bridge.html @@ -0,0 +1,681 @@ + + + + + + + + + bridge Module (stx.bridge) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    bridge Module (stx.bridge)

    +

    See /api/scitex.bridge for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/browser.html b/src/scitex/_sphinx_html/modules/browser.html new file mode 100644 index 000000000..4aa483ffd --- /dev/null +++ b/src/scitex/_sphinx_html/modules/browser.html @@ -0,0 +1,681 @@ + + + + + + + + + browser Module (stx.browser) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    browser Module (stx.browser)

    +

    See /api/scitex.browser for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/canvas.html b/src/scitex/_sphinx_html/modules/canvas.html new file mode 100644 index 000000000..5b2a3a317 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/canvas.html @@ -0,0 +1,681 @@ + + + + + + + + + canvas Module (stx.canvas) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    canvas Module (stx.canvas)

    +

    See /api/scitex.canvas for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/capture.html b/src/scitex/_sphinx_html/modules/capture.html new file mode 100644 index 000000000..dc3e00fc2 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/capture.html @@ -0,0 +1,681 @@ + + + + + + + + + capture Module (stx.capture) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    capture Module (stx.capture)

    +

    See /api/scitex.capture for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/clew.html b/src/scitex/_sphinx_html/modules/clew.html new file mode 100644 index 000000000..2445ffcdb --- /dev/null +++ b/src/scitex/_sphinx_html/modules/clew.html @@ -0,0 +1,768 @@ + + + + + + + + + Clew Module (stx.clew) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Clew Module (stx.clew)

    +

    Hash-based provenance tracking for reproducible science. Clew (Ariadne’s +thread) records file hashes during @stx.session runs and traces +dependency chains back to source.

    +
    +

    How It Works

    +
      +
    1. @stx.session starts a tracking session

    2. +
    3. stx.io.load() records input file hashes

    4. +
    5. stx.io.save() records output file hashes

    6. +
    7. Session close computes a combined hash of all inputs/outputs

    8. +
    9. Later, stx.clew can verify nothing has changed

    10. +
    +
    import scitex as stx
    +
    +# Automatic -- just use @stx.session + stx.io
    +@stx.session
    +def main():
    +    data = stx.io.load("input.csv")      # Tracked as input
    +    result = process(data)
    +    stx.io.save(result, "output.png")     # Tracked as output
    +    return 0
    +
    +# Verify later
    +stx.clew.status()                         # Like git status
    +stx.clew.run("session_id")                # Verify by hash
    +stx.clew.chain("output.png")              # Trace to source
    +
    +
    +
    +
    +

    CLI Commands

    +
    scitex clew status                  # Show changed files
    +scitex clew list                    # List all tracked runs
    +scitex clew run <session_id>        # Verify a specific run
    +scitex clew chain <file>            # Trace dependency chain
    +scitex clew stats                   # Database statistics
    +
    +
    +
    +
    +

    Verification Levels

    +
      +
    • CACHE – Hash comparison only (fast). Checks if files match stored hashes.

    • +
    • RERUN – Re-execute scripts and compare outputs (thorough). Catches logic errors.

    • +
    +
    # Fast: hash comparison
    +result = stx.clew.run("session_id")
    +
    +# Thorough: re-execute and compare
    +result = stx.clew.run("session_id", from_scratch=True)
    +
    +
    +
    +
    +

    Dependency Chains

    +

    Clew traces parent_session links to build a DAG from final output +back to original source:

    +
    chain = stx.clew.chain("final_figure.png")
    +# Shows: source.py → intermediate.csv → analysis.py → final_figure.png
    +
    +# Visualize as Mermaid DAG
    +stx.clew.mermaid("session_id")
    +
    +
    +
    +
    +

    Verification Statuses

    +
      +
    • VERIFIED – Files match expected hashes

    • +
    • MISMATCH – Files differ from stored hashes

    • +
    • MISSING – Files no longer exist

    • +
    • UNKNOWN – No prior tracking data

    • +
    +
    +
    +

    Key Functions

    +
      +
    • status() – Show changed items (like git status)

    • +
    • run(session_id) – Verify a specific run

    • +
    • chain(target_file) – Trace dependency chain

    • +
    • list_runs(limit, status) – List tracked runs

    • +
    • stats() – Database statistics

    • +
    +
    +
    +

    API Reference

    +

    See scitex.clew API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/cli.html b/src/scitex/_sphinx_html/modules/cli.html new file mode 100644 index 000000000..d10420179 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/cli.html @@ -0,0 +1,681 @@ + + + + + + + + + cli Module (stx.cli) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    cli Module (stx.cli)

    +

    See /api/scitex.cli for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/cloud.html b/src/scitex/_sphinx_html/modules/cloud.html new file mode 100644 index 000000000..c4bd5d74f --- /dev/null +++ b/src/scitex/_sphinx_html/modules/cloud.html @@ -0,0 +1,681 @@ + + + + + + + + + cloud Module (stx.cloud) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    cloud Module (stx.cloud)

    +

    See /api/scitex.cloud for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/compat.html b/src/scitex/_sphinx_html/modules/compat.html new file mode 100644 index 000000000..e5b5b5f77 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/compat.html @@ -0,0 +1,681 @@ + + + + + + + + + compat Module (stx.compat) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    compat Module (stx.compat)

    +

    See /api/scitex.compat for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/config.html b/src/scitex/_sphinx_html/modules/config.html new file mode 100644 index 000000000..cfeb85715 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/config.html @@ -0,0 +1,758 @@ + + + + + + + + + Config Module (stx.config) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Config Module (stx.config)

    +

    YAML-based configuration with priority resolution and path management.

    +
    +

    Priority Resolution

    +

    All config values follow the same precedence:

    +
    direct argument > config/YAML > environment variable > default
    +
    +
    +
    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Get global config (reads ~/.scitex/config.yaml)
    +config = stx.config.get_config()
    +
    +# Resolve with precedence
    +log_level = config.resolve("logging.level", default="INFO")
    +# Checks: direct → YAML → SCITEX_LOGGING_LEVEL env → "INFO"
    +
    +# Access nested values
    +config.get_nested("scholar", "crossref_email")
    +
    +# Path management
    +paths = stx.config.get_paths()
    +paths.scholar        # ~/.scitex/scholar
    +paths.cache          # ~/.scitex/cache
    +
    +
    +
    +
    +

    YAML Configuration

    +
    # ~/.scitex/config.yaml (or ./config/*.yaml for projects)
    +logging:
    +  level: INFO
    +
    +scholar:
    +  crossref_email: ${CROSSREF_EMAIL:-user@example.com}
    +
    +
    +

    Environment variable substitution with ${VAR:-default} syntax is +supported in YAML files.

    +
    +
    +

    Key Classes

    +
      +
    • ScitexConfig – YAML-based config with env var substitution and precedence resolution

    • +
    • PriorityConfig – Dict-based config resolver for programmatic use

    • +
    • ScitexPaths – Centralized path manager (all paths derive from ~/.scitex/)

    • +
    • EnvVar – Environment variable definition dataclass

    • +
    +
    +
    +

    Path Management

    +

    ScitexPaths manages all SciTeX directories:

    +
    paths = stx.config.get_paths()
    +paths.base       # ~/.scitex (SCITEX_DIR)
    +paths.logs       # ~/.scitex/logs
    +paths.cache      # ~/.scitex/cache
    +paths.scholar    # ~/.scitex/scholar
    +paths.rng        # ~/.scitex/rng
    +paths.capture    # ~/.scitex/capture
    +
    +
    +
    +
    +

    Utility Functions

    +
      +
    • get_config(path) – Get singleton ScitexConfig instance

    • +
    • get_paths(base_dir) – Get singleton ScitexPaths instance

    • +
    • load_yaml(path) – Load YAML with env var substitution

    • +
    • load_dotenv(path) – Load .env file

    • +
    • get_scitex_dir() – Get SCITEX_DIR with precedence

    • +
    +
    +
    +

    API Reference

    +

    See scitex.config API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/container.html b/src/scitex/_sphinx_html/modules/container.html new file mode 100644 index 000000000..52dda4a58 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/container.html @@ -0,0 +1,681 @@ + + + + + + + + + container Module (stx.container) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    container Module (stx.container)

    +

    See /api/scitex.container for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/context.html b/src/scitex/_sphinx_html/modules/context.html new file mode 100644 index 000000000..9625abb59 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/context.html @@ -0,0 +1,681 @@ + + + + + + + + + context Module (stx.context) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    context Module (stx.context)

    +

    See /api/scitex.context for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/cv.html b/src/scitex/_sphinx_html/modules/cv.html new file mode 100644 index 000000000..49e243330 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/cv.html @@ -0,0 +1,681 @@ + + + + + + + + + cv Module (stx.cv) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    cv Module (stx.cv)

    +

    See /api/scitex.cv for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/dataset.html b/src/scitex/_sphinx_html/modules/dataset.html new file mode 100644 index 000000000..1316e5c59 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/dataset.html @@ -0,0 +1,681 @@ + + + + + + + + + dataset Module (stx.dataset) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    dataset Module (stx.dataset)

    +

    See /api/scitex.dataset for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/datetime.html b/src/scitex/_sphinx_html/modules/datetime.html new file mode 100644 index 000000000..ae6d1eac9 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/datetime.html @@ -0,0 +1,681 @@ + + + + + + + + + datetime Module (stx.datetime) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    datetime Module (stx.datetime)

    +

    See /api/scitex.datetime for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/db.html b/src/scitex/_sphinx_html/modules/db.html new file mode 100644 index 000000000..141ae2050 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/db.html @@ -0,0 +1,681 @@ + + + + + + + + + db Module (stx.db) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    db Module (stx.db)

    +

    See scitex.db API Reference for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/decorators.html b/src/scitex/_sphinx_html/modules/decorators.html new file mode 100644 index 000000000..59cea2278 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/decorators.html @@ -0,0 +1,756 @@ + + + + + + + + + Decorators Module (stx.decorators) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Decorators Module (stx.decorators)

    +

    Function decorators for type conversion, batching, caching, and more.

    +
    +

    Quick Reference

    +
    from scitex.decorators import torch_fn, batch_fn, cache_disk, timeout
    +
    +@torch_fn
    +def process(x):
    +    """Auto-converts inputs to torch tensors, outputs back."""
    +    return x * 2
    +
    +@batch_fn
    +def predict(data, batch_size=32):
    +    """Process data in batches with progress bar."""
    +    return model(data)
    +
    +@cache_disk
    +def expensive_computation(params):
    +    """Results cached to disk for reuse."""
    +    return heavy_compute(params)
    +
    +@timeout(seconds=30)
    +def risky_call():
    +    """Raises TimeoutError if exceeds 30s."""
    +    return external_api()
    +
    +
    +
    +
    +

    Type Conversion

    +

    Auto-convert between data frameworks:

    +
      +
    • @torch_fn – Inputs to PyTorch tensors, outputs back to original type

    • +
    • @numpy_fn – Inputs to NumPy arrays

    • +
    • @pandas_fn – Inputs to pandas objects

    • +
    • @xarray_fn – Inputs to xarray objects

    • +
    +
    +
    +

    Batch Processing

    +
      +
    • @batch_fn – Split input into batches with tqdm progress

    • +
    • @batch_numpy_fn – NumPy conversion + batching

    • +
    • @batch_torch_fn – PyTorch conversion + batching

    • +
    • @batch_pandas_fn – Pandas conversion + batching

    • +
    +
    +
    +

    Caching

    +
      +
    • @cache_mem – In-memory function result caching

    • +
    • @cache_disk – Persistent disk-based caching

    • +
    • @cache_disk_async – Async disk caching

    • +
    +
    +
    +

    Utilities

    +
      +
    • @deprecated(reason, forward_to) – Mark functions as deprecated

    • +
    • @not_implemented – Mark as not yet implemented

    • +
    • @timeout(seconds) – Enforce execution time limits

    • +
    • @preserve_doc – Preserve docstrings when wrapping

    • +
    +
    +
    +

    Auto-Ordering

    +
    from scitex.decorators import enable_auto_order
    +
    +enable_auto_order()
    +# Now decorators are applied in optimal order regardless of code order
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.decorators API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/dev.html b/src/scitex/_sphinx_html/modules/dev.html new file mode 100644 index 000000000..c60783aa5 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/dev.html @@ -0,0 +1,681 @@ + + + + + + + + + dev Module (stx.dev) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    dev Module (stx.dev)

    +

    See /api/scitex.dev for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/diagram.html b/src/scitex/_sphinx_html/modules/diagram.html new file mode 100644 index 000000000..dde45cf27 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/diagram.html @@ -0,0 +1,775 @@ + + + + + + + + + Diagram Module (stx.diagram) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Diagram Module (stx.diagram)

    +

    Paper-optimized diagram generation with Mermaid and Graphviz backends.

    +
    +

    Quick Reference

    +
    from scitex.diagram import Diagram
    +
    +# Create from Python
    +d = Diagram(type="workflow", title="Analysis Pipeline")
    +d.add_node("load", "Load Data", shape="stadium")
    +d.add_node("proc", "Process", shape="rounded", emphasis="primary")
    +d.add_node("save", "Save Results", shape="stadium", emphasis="success")
    +d.add_edge("load", "proc")
    +d.add_edge("proc", "save")
    +
    +# Export
    +d.to_mermaid("pipeline.mmd")
    +d.to_graphviz("pipeline.dot")
    +
    +# Or from YAML specification
    +d = Diagram.from_yaml("pipeline.diagram.yaml")
    +
    +
    +
    +
    +

    YAML Specification

    +
    type: workflow
    +title: SciTeX Analysis Pipeline
    +
    +paper:
    +  column: single          # single or double
    +  mode: publication       # draft or publication
    +  reading_direction: left_to_right
    +
    +layout:
    +  groups:
    +    Input: [load, preprocess]
    +    Analysis: [analyze, test]
    +
    +nodes:
    +  - id: load
    +    label: Load Data
    +    shape: stadium
    +  - id: analyze
    +    label: Statistical Test
    +    shape: rounded
    +    emphasis: primary
    +
    +edges:
    +  - from: load
    +    to: analyze
    +
    +
    +
    +
    +

    Node Shapes

    +

    box, rounded, stadium, diamond, circle, codeblock

    +
    +
    +

    Node Emphasis

    +
      +
    • normal – Default (dark)

    • +
    • primary – Key nodes (blue)

    • +
    • success – Positive outcomes (green)

    • +
    • warning – Issues (red)

    • +
    • muted – Secondary (gray)

    • +
    +
    +
    +

    Diagram Types

    +
      +
    • workflow – Left-to-right sequential processes

    • +
    • decision – Top-to-bottom decision trees

    • +
    • pipeline – Data pipeline stages

    • +
    • hierarchy – Tree structures

    • +
    • comparison – Side-by-side comparison

    • +
    +
    +
    +

    Paper Modes

    +
      +
    • draft – Full arrows, medium spacing, all edges visible

    • +
    • publication – Tight spacing, return edges invisible, optimized for column width

    • +
    +
    +
    +

    Backends

    +
      +
    • Mermaid (.mmd) – Web/markdown rendering

    • +
    • Graphviz DOT (.dot) – Tighter layouts, render with dot -Tpng

    • +
    • YAML (.diagram.yaml) – Semantic spec, human/LLM-readable

    • +
    +
    +
    +

    API Reference

    +

    See scitex.diagram API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/dict.html b/src/scitex/_sphinx_html/modules/dict.html new file mode 100644 index 000000000..169999324 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/dict.html @@ -0,0 +1,681 @@ + + + + + + + + + dict Module (stx.dict) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    dict Module (stx.dict)

    +

    See scitex.dict API Reference for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/dsp.html b/src/scitex/_sphinx_html/modules/dsp.html new file mode 100644 index 000000000..1adfda81d --- /dev/null +++ b/src/scitex/_sphinx_html/modules/dsp.html @@ -0,0 +1,749 @@ + + + + + + + + + DSP Module (stx.dsp) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    DSP Module (stx.dsp)

    +

    Digital signal processing tools for filtering, spectral analysis, +and time-frequency decomposition.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import numpy as np
    +
    +# Generate test signal
    +fs = 1000  # Hz
    +t = np.arange(0, 1, 1/fs)
    +signal = np.sin(2 * np.pi * 10 * t) + 0.5 * np.sin(2 * np.pi * 50 * t)
    +
    +# Filtering
    +filtered = stx.dsp.filt.bandpass(signal, fs=fs, low=5, high=30)
    +low_pass = stx.dsp.filt.lowpass(signal, fs=fs, cutoff=20)
    +high_pass = stx.dsp.filt.highpass(signal, fs=fs, cutoff=5)
    +
    +# Power spectral density
    +freqs, psd = stx.dsp.psd(signal, fs=fs)
    +
    +# Band powers
    +powers = stx.dsp.band_powers(signal, fs=fs, bands={
    +    "delta": (1, 4),
    +    "theta": (4, 8),
    +    "alpha": (8, 13),
    +    "beta": (13, 30),
    +})
    +
    +# Hilbert transform (analytic signal)
    +analytic = stx.dsp.hilbert(signal)
    +amplitude = np.abs(analytic)
    +phase = np.angle(analytic)
    +
    +# Wavelet decomposition
    +coeffs = stx.dsp.wavelet(signal, fs=fs, freqs=np.arange(1, 50))
    +
    +
    +
    +
    +

    Available Functions

    +

    Filtering (stx.dsp.filt)

    +
      +
    • bandpass(signal, fs, low, high)

    • +
    • lowpass(signal, fs, cutoff)

    • +
    • highpass(signal, fs, cutoff)

    • +
    • notch(signal, fs, freq)

    • +
    +

    Spectral Analysis

    +
      +
    • psd(signal, fs) – Power spectral density

    • +
    • band_powers(signal, fs, bands) – Power in frequency bands

    • +
    • wavelet(signal, fs, freqs) – Continuous wavelet transform

    • +
    +

    Time-Frequency

    +
      +
    • hilbert(signal) – Analytic signal via Hilbert transform

    • +
    • pac(signal, fs) – Phase-amplitude coupling

    • +
    +

    Utilities

    +
      +
    • demo_sig(fs, duration) – Generate demo signals for testing

    • +
    • crop(signal, start, end, fs) – Crop signal to time range

    • +
    • detect_ripples(signal, fs) – Detect sharp-wave ripples

    • +
    +
    +
    +

    API Reference

    +

    See scitex.dsp API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/etc.html b/src/scitex/_sphinx_html/modules/etc.html new file mode 100644 index 000000000..dc4786908 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/etc.html @@ -0,0 +1,681 @@ + + + + + + + + + etc Module (stx.etc) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    etc Module (stx.etc)

    +

    See /api/scitex.etc for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/events.html b/src/scitex/_sphinx_html/modules/events.html new file mode 100644 index 000000000..e556affd7 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/events.html @@ -0,0 +1,681 @@ + + + + + + + + + events Module (stx.events) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    events Module (stx.events)

    +

    See /api/scitex.events for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/gen.html b/src/scitex/_sphinx_html/modules/gen.html new file mode 100644 index 000000000..41552d4e1 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/gen.html @@ -0,0 +1,711 @@ + + + + + + + + + Gen Module (stx.gen) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Gen Module (stx.gen)

    +

    General utilities for path management, shell commands, and system operations.

    +
    +

    Note

    +

    Session management has moved to @stx.session (see Core Concepts). +The scitex.gen.start() / scitex.gen.close() pattern is deprecated.

    +
    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Timestamped output directories
    +path = stx.gen.mk_spath("./results")
    +# → ./results/20260213_143022/
    +
    +# Run shell commands
    +stx.gen.run("ls -la")
    +
    +# Clipboard operations
    +stx.gen.copy("text to clipboard")
    +text = stx.gen.paste()
    +
    +# String to valid path
    +stx.gen.title2path("My Experiment #1")
    +# → "my_experiment_1"
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.gen API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/gists.html b/src/scitex/_sphinx_html/modules/gists.html new file mode 100644 index 000000000..82fd01e55 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/gists.html @@ -0,0 +1,681 @@ + + + + + + + + + gists Module (stx.gists) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    gists Module (stx.gists)

    +

    See /api/scitex.gists for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/git.html b/src/scitex/_sphinx_html/modules/git.html new file mode 100644 index 000000000..9a066bca7 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/git.html @@ -0,0 +1,681 @@ + + + + + + + + + git Module (stx.git) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    git Module (stx.git)

    +

    See /api/scitex.git for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/index.html b/src/scitex/_sphinx_html/modules/index.html new file mode 100644 index 000000000..27283cf3c --- /dev/null +++ b/src/scitex/_sphinx_html/modules/index.html @@ -0,0 +1,946 @@ + + + + + + + + + Module Overview — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Module Overview

    +

    SciTeX is organized into focused modules. +All modules are accessible via import scitex as stx followed by stx.<module>.

    + + + + + + + + +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/introspect.html b/src/scitex/_sphinx_html/modules/introspect.html new file mode 100644 index 000000000..a7c86382a --- /dev/null +++ b/src/scitex/_sphinx_html/modules/introspect.html @@ -0,0 +1,746 @@ + + + + + + + + + Introspect Module (stx.introspect) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Introspect Module (stx.introspect)

    +

    IPython-like code inspection for exploring Python packages.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Function signature (like IPython's func?)
    +stx.introspect.q("scitex.stats.test_ttest_ind")
    +# → name, signature, parameters, return type
    +
    +# Full source code (like IPython's func??)
    +stx.introspect.qq("scitex.stats.test_ttest_ind")
    +# → complete source with line numbers
    +
    +# List module members (like enhanced dir())
    +stx.introspect.dir("scitex.plt", filter="public", kind="functions")
    +
    +# Recursive API tree
    +df = stx.introspect.list_api("scitex", max_depth=2)
    +
    +
    +
    +
    +

    IPython-Style Shortcuts

    +
      +
    • q(dotted_path) – Signature and parameters (like func?)

    • +
    • qq(dotted_path) – Full source code (like func??)

    • +
    • dir(dotted_path, filter, kind) – List members with filtering

    • +
    +

    Filters: "public", "private", "dunder", "all"

    +

    Kinds: "functions", "classes", "data", "modules"

    +
    +
    +

    Documentation

    +
      +
    • get_docstring(path, format) – Extract docstrings ("raw", "parsed", "summary")

    • +
    • get_exports(path) – Get __all__ exports

    • +
    • find_examples(path) – Find usage examples in tests/examples

    • +
    +
    +
    +

    Type Analysis

    +
      +
    • get_type_hints_detailed(path) – Full type annotation analysis

    • +
    • get_class_hierarchy(path) – Inheritance tree (MRO + subclasses)

    • +
    • get_class_annotations(path) – Class variable annotations

    • +
    +
    +
    +

    Code Analysis

    +
      +
    • get_imports(path, categorize) – All imports (AST-based, grouped by stdlib/third-party/local)

    • +
    • get_dependencies(path, recursive) – Module dependency tree

    • +
    • get_call_graph(path, max_depth) – Function call graph (with timeout protection)

    • +
    +
    +
    +

    API Tree

    +
    # Generate full module tree as DataFrame
    +df = stx.introspect.list_api("scitex", max_depth=3, docstring=True)
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.introspect API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/io.html b/src/scitex/_sphinx_html/modules/io.html new file mode 100644 index 000000000..ad3e91ca9 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/io.html @@ -0,0 +1,803 @@ + + + + + + + + + IO Module (stx.io) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    IO Module (stx.io)

    +

    Universal file I/O through stx.io.save() and stx.io.load(). +Format is determined by file extension.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Save
    +stx.io.save(data, "output.csv")       # DataFrame → CSV
    +stx.io.save(arr, "output.npy")        # ndarray → NumPy
    +stx.io.save(fig, "output.png")        # Figure → PNG + CSV + YAML recipe
    +stx.io.save(obj, "output.pkl")        # any object → pickle
    +stx.io.save(d, "output.yaml")         # dict → YAML
    +stx.io.save(d, "output.json")         # dict → JSON
    +
    +# Load
    +data = stx.io.load("input.csv")       # → DataFrame
    +arr = stx.io.load("input.npy")        # → ndarray
    +obj = stx.io.load("input.pkl")        # → original object
    +d = stx.io.load("input.yaml")         # → dict
    +
    +
    +
    +
    +

    Supported Formats

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Extension

    Save Type

    Load Return

    .csv

    DataFrame, dict, ndarray

    DataFrame

    .npy

    ndarray

    ndarray

    .npz

    dict of ndarrays

    NpzFile

    .pkl / .pickle

    any Python object

    original object

    .yaml / .yml

    dict

    dict

    .json

    dict, list

    dict or list

    .png / .jpg / .svg / .pdf / .tiff

    matplotlib Figure

    ndarray (image) or Figure

    .hdf5 / .h5

    dict, ndarray

    dict or ndarray

    .mat

    dict

    dict

    .pth / .pt

    PyTorch state_dict

    dict

    .parquet

    DataFrame

    DataFrame

    .txt

    str

    str

    +
    +
    +

    Figure Saving

    +

    When saving a matplotlib Figure, stx.io.save automatically:

    +
      +
    1. Saves the image file (.png, .svg, etc.)

    2. +
    3. Exports a .csv with the plotted data extracted from axes

    4. +
    5. Exports a .yaml recipe for reproducing the figure

    6. +
    +
    fig, ax = stx.plt.subplots()
    +ax.plot_line(x, y, label="signal")
    +stx.io.save(fig, "results/plot.png")
    +# Creates:
    +#   results/plot.png       (the figure)
    +#   results/plot.csv       (x, y data)
    +#   results/plot.yaml      (recipe for stx.plt.reproduce)
    +
    +
    +
    +
    +

    Provenance Tracking

    +

    Inside @stx.session, every save and load records file hashes +to a local SQLite database for reproducibility verification.

    +
    @stx.session
    +def main(logger=stx.INJECTED, **kw):
    +    data = stx.io.load("input.csv")    # hash recorded as input
    +    stx.io.save(result, "output.csv")   # hash recorded as output
    +
    +
    +
    +
    +

    Other Functions

    +
      +
    • stx.io.glob(pattern) – Find files matching a glob pattern

    • +
    • stx.io.load_configs(config_dir) – Load and merge YAML config files

    • +
    +
    +
    +

    API Reference

    +

    See scitex.io API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/linalg.html b/src/scitex/_sphinx_html/modules/linalg.html new file mode 100644 index 000000000..050804b4c --- /dev/null +++ b/src/scitex/_sphinx_html/modules/linalg.html @@ -0,0 +1,681 @@ + + + + + + + + + linalg Module (stx.linalg) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    linalg Module (stx.linalg)

    +

    See /api/scitex.linalg for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/linter.html b/src/scitex/_sphinx_html/modules/linter.html new file mode 100644 index 000000000..3d8eb940e --- /dev/null +++ b/src/scitex/_sphinx_html/modules/linter.html @@ -0,0 +1,802 @@ + + + + + + + + + Linter Module (stx.linter) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Linter Module (stx.linter)

    +

    AST-based Python linter enforcing SciTeX conventions for reproducible +scientific code.

    +
    +

    Note

    +

    stx.linter wraps the standalone +scitex-linter package. +Install with: pip install scitex-linter.

    +
    +
    +

    Quick Reference

    +
    # Check a file
    +scitex linter check my_script.py
    +
    +# Check with specific severity
    +scitex linter check my_script.py --severity warning
    +
    +# List all rules
    +scitex linter list-rules
    +
    +# Filter by category
    +scitex linter list-rules --category session
    +
    +
    +
    from scitex_linter import check_file, list_rules
    +
    +# Check a file
    +results = check_file("my_script.py")
    +
    +# List available rules
    +rules = list_rules()
    +
    +
    +
    +
    +

    Rule Categories

    +

    45 rules across 8 categories:

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Prefix

    Category

    Examples

    STX-S

    Session

    Missing @stx.session, missing if __name__ guard, missing return

    STX-I

    Import

    Using import mngs instead of import scitex, bare import numpy

    STX-IO

    I/O

    Using open() instead of stx.io, hardcoded paths

    STX-P

    Plotting

    Using plt.show() instead of stx.io.save, missing set_xyt

    STX-ST

    Statistics

    Using scipy.stats directly instead of stx.stats

    STX-PA

    Path

    Hardcoded absolute paths, missing stx.gen.mk_spath

    STX-FM

    Format

    Non-snake_case names, magic numbers, missing docstrings

    +
    +
    +

    Severity Levels

    +
      +
    • error – Must fix (breaks reproducibility or correctness)

    • +
    • warning – Should fix (best practice violations)

    • +
    • info – Suggestions for improvement

    • +
    +
    +
    +

    Interfaces

    +

    The linter is available through multiple interfaces:

    +

    CLI:

    +
    scitex linter check script.py
    +scitex-linter check script.py    # standalone CLI
    +
    +
    +

    Python API:

    +
    from scitex_linter import check_file, check_source
    +
    +results = check_file("script.py")
    +results = check_source("import numpy as np\n...")
    +
    +
    +

    Flake8 Plugin:

    +
    flake8 --select=STX script.py
    +
    +
    +

    MCP Tools:

    +
    # Available as MCP tools for AI agents
    +linter_check(path="script.py", severity="warning")
    +linter_list_rules(category="session")
    +linter_check_source(source="...", filepath="<stdin>")
    +
    +
    +
    +
    +

    Configuration

    +

    Configure via pyproject.toml:

    +
    [tool.scitex-linter]
    +severity = "warning"
    +ignore = ["STX-S002", "STX-FM001"]
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.linter for the auto-generated Python API.

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/logging.html b/src/scitex/_sphinx_html/modules/logging.html new file mode 100644 index 000000000..dec7a1dde --- /dev/null +++ b/src/scitex/_sphinx_html/modules/logging.html @@ -0,0 +1,795 @@ + + + + + + + + + Logging Module (stx.logging) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Logging Module (stx.logging)

    +

    Unified logging with file/console output, custom warnings, exception +hierarchy, and stream redirection.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +from scitex import logging
    +
    +# Get a logger
    +logger = logging.getLogger(__name__)
    +logger.info("Processing data")
    +logger.success("Analysis complete")   # Custom level (31)
    +logger.fail("Model diverged")         # Custom level (35)
    +
    +# Configure globally
    +logging.configure(level="DEBUG", log_file="./run.log")
    +logging.set_level("WARNING")
    +
    +# Temporary file logging
    +with logging.log_to_file("analysis.log"):
    +    logger.info("This goes to both console and file")
    +
    +# Warnings
    +logging.warn("Large dataset", category=logging.PerformanceWarning)
    +logging.warn_deprecated("old_func", "new_func", version="3.0")
    +logging.filterwarnings("ignore", category=logging.UnitWarning)
    +
    +
    +
    +
    +

    Log Levels

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Level

    Value

    Description

    DEBUG

    10

    Detailed diagnostic information

    INFO

    20

    General operational messages

    WARNING

    30

    Something unexpected but not fatal

    SUCCESS

    31

    Custom: operation completed successfully

    FAIL

    35

    Custom: operation failed (non-fatal)

    ERROR

    40

    Serious problem

    CRITICAL

    50

    Program may not continue

    +
    +
    +

    Warning Categories

    +
      +
    • SciTeXWarning – Base warning class

    • +
    • UnitWarning – SI unit convention issues

    • +
    • StyleWarning – Formatting issues

    • +
    • SciTeXDeprecationWarning – Deprecated features

    • +
    • PerformanceWarning – Performance issues

    • +
    • DataLossWarning – Potential data loss

    • +
    +
    +
    +

    Exception Hierarchy

    +

    All inherit from SciTeXError:

    +
      +
    • I/O: IOError, FileFormatError, SaveError, LoadError

    • +
    • Config: ConfigurationError, ConfigFileNotFoundError, ConfigKeyError

    • +
    • Path: PathError, InvalidPathError, PathNotFoundError

    • +
    • Data: DataError, ShapeError, DTypeError

    • +
    • Plotting: PlottingError, FigureNotFoundError, AxisError

    • +
    • Stats: StatsError, TestError

    • +
    • Scholar: ScholarError, SearchError, PDFDownloadError, DOIResolutionError

    • +
    • NN: NNError, ModelError

    • +
    • Template: TemplateError, TemplateViolationError

    • +
    +
    +
    +

    Stream Redirection

    +
    from scitex.logging import tee
    +import sys
    +
    +# Redirect stdout/stderr to log files
    +sys.stdout, sys.stderr = tee(sys, sdir="./output")
    +
    +
    +

    The @stx.session decorator handles this automatically.

    +
    +
    +

    API Reference

    +

    See scitex.logging API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/media.html b/src/scitex/_sphinx_html/modules/media.html new file mode 100644 index 000000000..f41af4de4 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/media.html @@ -0,0 +1,681 @@ + + + + + + + + + media Module (stx.media) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    media Module (stx.media)

    +

    See /api/scitex.media for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/module.html b/src/scitex/_sphinx_html/modules/module.html new file mode 100644 index 000000000..a25df5f31 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/module.html @@ -0,0 +1,681 @@ + + + + + + + + + module Module (stx.module) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    module Module (stx.module)

    +

    See /api/scitex.module for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/msword.html b/src/scitex/_sphinx_html/modules/msword.html new file mode 100644 index 000000000..a11d138b3 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/msword.html @@ -0,0 +1,681 @@ + + + + + + + + + msword Module (stx.msword) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    msword Module (stx.msword)

    +

    See /api/scitex.msword for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/nn.html b/src/scitex/_sphinx_html/modules/nn.html new file mode 100644 index 000000000..d1fd86ad4 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/nn.html @@ -0,0 +1,757 @@ + + + + + + + + + NN Module (stx.nn) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    NN Module (stx.nn)

    +

    PyTorch neural network layers for signal processing and neuroscience +applications.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import torch
    +
    +# Bandpass filtering as a differentiable layer
    +bpf = stx.nn.BandPassFilter(
    +    bands=[[4, 8], [8, 13], [13, 30]],  # theta, alpha, beta
    +    fs=256, seq_len=1024
    +)
    +filtered = bpf(signal)  # (batch, channels, 3, 1024)
    +
    +# Power spectral density
    +psd = stx.nn.PSD(sample_rate=256)
    +power, freqs = psd(signal)
    +
    +# Phase-amplitude coupling
    +pac = stx.nn.PAC(seq_len=1024, fs=256)
    +coupling = pac(signal)
    +
    +
    +
    +
    +

    Signal Processing Layers

    +

    Filtering (all differentiable):

    +
      +
    • BandPassFilter(bands, fs, seq_len) – Multi-band frequency filtering

    • +
    • BandStopFilter(bands, fs, seq_len) – Reject frequency bands

    • +
    • LowPassFilter(cutoffs_hz, fs, seq_len) – Anti-aliasing / smoothing

    • +
    • HighPassFilter(cutoffs_hz, fs, seq_len) – High-frequency emphasis

    • +
    • GaussianFilter(sigma) – Gaussian kernel smoothing

    • +
    • DifferentiableBandPassFilter(...) – Learnable bandpass parameters

    • +
    +

    Spectral Analysis:

    +
      +
    • Spectrogram(sampling_rate, n_fft) – STFT-based magnitude spectrogram

    • +
    • PSD(sample_rate, prob) – FFT-based power spectral density

    • +
    • Wavelet(samp_rate, freq_scale) – Continuous wavelet transform

    • +
    +

    Phase & Coupling:

    +
      +
    • Hilbert(seq_len) – Analytic signal (phase + amplitude)

    • +
    • ModulationIndex(n_bins) – Phase-amplitude coupling metric

    • +
    • PAC(seq_len, fs, ...) – Complete PAC analysis pipeline

    • +
    +
    +
    +

    Channel Manipulation

    +
      +
    • SwapChannels() – Random channel permutation (training augmentation)

    • +
    • DropoutChannels(dropout) – Drop entire channels

    • +
    • ChannelGainChanger(n_chs) – Learnable per-channel scaling

    • +
    • FreqGainChanger(n_bands, fs) – Learnable per-band scaling

    • +
    +
    +
    +

    Attention & Shape

    +
      +
    • SpatialAttention(n_chs_in) – Adaptive channel weighting

    • +
    • TransposeLayer(axis1, axis2) – Dimension permutation

    • +
    • AxiswiseDropout(dropout_prob, dim) – Drop entire axis

    • +
    +
    +
    +

    Architectures

    +
      +
    • ResNet1D(n_chs, n_out, n_blks) – 1D residual network

    • +
    • BNet / BNet_Res – Multi-head EEG classifier

    • +
    • MNet1000 – 2D CNN feature extractor

    • +
    +
    +
    +

    API Reference

    +

    See scitex.nn API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/notebook.html b/src/scitex/_sphinx_html/modules/notebook.html new file mode 100644 index 000000000..7e16fac04 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/notebook.html @@ -0,0 +1,681 @@ + + + + + + + + + notebook Module (stx.notebook) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    notebook Module (stx.notebook)

    +

    See /api/scitex.notebook for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/notify.html b/src/scitex/_sphinx_html/modules/notify.html new file mode 100644 index 000000000..760aa1039 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/notify.html @@ -0,0 +1,681 @@ + + + + + + + + + notify Module (stx.notify) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    notify Module (stx.notify)

    +

    See /api/scitex.notify for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/os.html b/src/scitex/_sphinx_html/modules/os.html new file mode 100644 index 000000000..caa75a462 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/os.html @@ -0,0 +1,681 @@ + + + + + + + + + os Module (stx.os) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    os Module (stx.os)

    +

    See /api/scitex.os for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/parallel.html b/src/scitex/_sphinx_html/modules/parallel.html new file mode 100644 index 000000000..0112e810b --- /dev/null +++ b/src/scitex/_sphinx_html/modules/parallel.html @@ -0,0 +1,681 @@ + + + + + + + + + parallel Module (stx.parallel) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    parallel Module (stx.parallel)

    +

    See /api/scitex.parallel for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/path.html b/src/scitex/_sphinx_html/modules/path.html new file mode 100644 index 000000000..3a026291b --- /dev/null +++ b/src/scitex/_sphinx_html/modules/path.html @@ -0,0 +1,681 @@ + + + + + + + + + path Module (stx.path) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    path Module (stx.path)

    +

    See scitex.path API Reference for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/pd.html b/src/scitex/_sphinx_html/modules/pd.html new file mode 100644 index 000000000..05e14ab26 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/pd.html @@ -0,0 +1,721 @@ + + + + + + + + + PD Module (stx.pd) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    PD Module (stx.pd)

    +

    Pandas DataFrame helper functions for common transformations.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import pandas as pd
    +
    +df = pd.DataFrame({
    +    "subject": ["A", "A", "B", "B"],
    +    "condition": ["ctrl", "exp", "ctrl", "exp"],
    +    "score": [10, 15, 12, 18],
    +})
    +
    +# Find individual (unique) values
    +subjects = stx.pd.find_indi(df, "subject")
    +
    +# Convert to long format
    +melted = stx.pd.melt_cols(df, id_vars=["subject"])
    +
    +# Merge columns
    +merged = stx.pd.merge_cols(df, cols=["subject", "condition"], sep="_")
    +
    +# Force to DataFrame
    +stx.pd.force_df({"a": [1, 2], "b": [3, 4]})
    +
    +
    +
    +
    +

    Available Functions

    +
      +
    • find_indi(df, col) – Find unique individual identifiers

    • +
    • find_pval(df) – Find p-value columns in a DataFrame

    • +
    • force_df(data) – Convert any data to a DataFrame

    • +
    • melt_cols(df, id_vars) – Melt columns to long format

    • +
    • merge_cols(df, cols, sep) – Merge multiple columns into one

    • +
    • to_xyz(df, x, y, z) – Reshape to x, y, z pivot format

    • +
    +
    +
    +

    API Reference

    +

    See scitex.pd API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/plt.html b/src/scitex/_sphinx_html/modules/plt.html new file mode 100644 index 000000000..11829ed68 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/plt.html @@ -0,0 +1,838 @@ + + + + + + + + + PLT Module (stx.plt) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    PLT Module (stx.plt)

    +

    Publication-ready figures powered by figrecipe.

    +
    +

    Note

    +

    stx.plt wraps matplotlib via the figrecipe package, adding +mm-based layout, data-tracking axes, auto CSV export, and reproducible +YAML recipes. The standalone package can also be used directly: +pip install figrecipe.

    +
    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Create figure (returns FigWrapper, AxisWrapper)
    +fig, ax = stx.plt.subplots()
    +fig, axes = stx.plt.subplots(2, 2)
    +
    +# Data-tracking plot methods (all record data for CSV export)
    +ax.plot_line(x, y, label="signal")
    +ax.plot_scatter(x, y, alpha=0.5)
    +ax.plot_bar(labels, values)
    +ax.plot_heatmap(matrix)
    +ax.plot_violin(groups)
    +ax.plot_box(groups)
    +ax.plot_kde(data)
    +
    +# Axis helper (xlabel, ylabel, title in one call)
    +ax.set_xyt("Time (s)", "Amplitude (mV)", "EEG Signal")
    +
    +# Save (auto-exports CSV + YAML recipe)
    +stx.io.save(fig, "figure.png")
    +
    +
    +
    +
    +

    Plot Types (47)

    +

    All ax.plot_* methods track their input data so it can be exported as CSV.

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Category

    Types

    Line & Curve

    plot, step, fill, fill_between, fill_betweenx, errorbar, stackplot, stairs

    Scatter & Points

    scatter

    Bar & Categorical

    bar, barh

    Distribution

    hist, hist2d, boxplot, violinplot, ecdf

    2D Image & Matrix

    imshow, matshow, pcolor, pcolormesh, hexbin, spy

    Contour & Surface

    contour, contourf, tricontour, tricontourf, tripcolor, triplot

    Spectral & Signal

    specgram, psd, csd, cohere, angle_spectrum, magnitude_spectrum, phase_spectrum, acorr, xcorr

    Vector & Flow

    quiver, barbs, streamplot

    Special

    pie, stem, eventplot, loglog, semilogx, semilogy, graph

    +

    Standard matplotlib methods (ax.plot, ax.scatter, etc.) also work +and are tracked.

    +
    +
    +

    MM-Based Layout

    +

    Figures use millimeter dimensions for precise control:

    +
    fig, ax = stx.plt.subplots(
    +    axes_width_mm=80,
    +    axes_height_mm=60,
    +)
    +
    +# Multi-panel with exact spacing
    +fig, axes = stx.plt.subplots(
    +    nrows=2, ncols=3,
    +    axes_width_mm=50,
    +    axes_height_mm=40,
    +)
    +
    +
    +
    +
    +

    Axis Helpers

    +
    # Set xlabel, ylabel, title in one call
    +ax.set_xyt("X Label", "Y Label", "Title")
    +
    +# Automatic axis label formatting with units
    +ax.set_xyt("Frequency (Hz)", "Power (dB)", "Power Spectrum")
    +
    +
    +
    +
    +

    Figure Composition

    +

    Combine multiple figures into panels:

    +
    # Compose panels A, B, C
    +stx.plt.compose(
    +    sources=["fig_a.png", "fig_b.png", "fig_c.png"],
    +    output_path="combined.png",
    +    layout="horizontal",
    +    panel_labels=True,
    +)
    +
    +
    +
    +
    +

    Statistical Annotations

    +

    Add significance brackets to figures:

    +
    # In the declarative spec
    +stat_annotations:
    +  - x1: 0
    +    x2: 1
    +    y: 5.5
    +    text: "***"
    +  - x1: 0
    +    x2: 2
    +    y: 6.5
    +    p_value: 0.02
    +    style: stars
    +
    +
    +
    +
    +

    Reproducible Figures

    +

    When saved via stx.io.save, figures get a .yaml recipe. +Reproduce any figure from its recipe:

    +
    stx.plt.reproduce("figure.yaml", output_path="reproduced.png")
    +
    +
    +
    +
    +

    Style Presets

    +
    import figrecipe as fr
    +
    +fr.load_style("SCITEX")       # Publication defaults
    +fr.load_style("MATPLOTLIB")   # Standard matplotlib
    +
    +
    +

    See the Plot Gallery for visual examples.

    +
    +
    +

    API Reference

    +

    See scitex.plt API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/project.html b/src/scitex/_sphinx_html/modules/project.html new file mode 100644 index 000000000..dbf77acaf --- /dev/null +++ b/src/scitex/_sphinx_html/modules/project.html @@ -0,0 +1,681 @@ + + + + + + + + + project Module (stx.project) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    project Module (stx.project)

    +

    See /api/scitex.project for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/repro.html b/src/scitex/_sphinx_html/modules/repro.html new file mode 100644 index 000000000..71eb82b30 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/repro.html @@ -0,0 +1,743 @@ + + + + + + + + + Repro Module (stx.repro) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Repro Module (stx.repro)

    +

    Reproducibility utilities: random state management, ID generation, +timestamps, and array hashing.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Fix all random seeds (numpy, torch, random, ...)
    +rng = stx.repro.get()           # Global manager (seed=42)
    +rng = stx.repro.reset(seed=123) # Reset with new seed
    +
    +# Named generators for deterministic results
    +data_gen = rng.get_np_generator("data")
    +data = data_gen.random(100)  # Same seed+name = same result
    +
    +# Unique identifiers
    +stx.repro.gen_id()
    +# → "2026Y-02M-13D-14h30m15s_a3Bc9xY2"
    +
    +stx.repro.gen_timestamp()
    +# → "2026-0213-1430"
    +
    +# Verify reproducibility
    +rng.verify(data, "train_data")  # First: caches hash
    +rng.verify(data, "train_data")  # Later: verifies match
    +
    +
    +
    +
    +

    RandomStateManager

    +

    Central class for managing random states across libraries.

    +
    rng = stx.repro.RandomStateManager(seed=42)
    +
    +# Named generators (same name + seed = deterministic)
    +np_gen = rng.get_np_generator("experiment")
    +torch_gen = rng.get_torch_generator("model")
    +
    +# Checkpoint and restore
    +rng.checkpoint("before_training")
    +rng.restore("before_training.pkl")
    +
    +# Temporary seed change
    +with rng.temporary_seed(999):
    +    noise = rng.get_np_generator("noise").random(10)
    +
    +
    +

    Automatically fixes seeds for: random, numpy, torch (+ CUDA), +tensorflow, jax.

    +
    +
    +

    Available Functions

    +
      +
    • get(verbose) – Get or create global RandomStateManager singleton

    • +
    • reset(seed, verbose) – Reset global instance with new seed

    • +
    • fix_seeds(seed, ...) – Legacy function (use RandomStateManager instead)

    • +
    • gen_id(time_format, N) – Generate unique timestamp + random ID

    • +
    • gen_timestamp() – Generate timestamp string for file naming

    • +
    • hash_array(array_data) – SHA256 hash of numpy array (16 chars)

    • +
    +
    +
    +

    API Reference

    +

    See scitex.repro API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/resource.html b/src/scitex/_sphinx_html/modules/resource.html new file mode 100644 index 000000000..a5bc7db46 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/resource.html @@ -0,0 +1,681 @@ + + + + + + + + + resource Module (stx.resource) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    resource Module (stx.resource)

    +

    See /api/scitex.resource for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/rng.html b/src/scitex/_sphinx_html/modules/rng.html new file mode 100644 index 000000000..b2d30b22a --- /dev/null +++ b/src/scitex/_sphinx_html/modules/rng.html @@ -0,0 +1,681 @@ + + + + + + + + + rng Module (stx.rng) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    rng Module (stx.rng)

    +

    See /api/scitex.rng for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/schema.html b/src/scitex/_sphinx_html/modules/schema.html new file mode 100644 index 000000000..b25f5360d --- /dev/null +++ b/src/scitex/_sphinx_html/modules/schema.html @@ -0,0 +1,681 @@ + + + + + + + + + schema Module (stx.schema) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    schema Module (stx.schema)

    +

    See /api/scitex.schema for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/scholar.html b/src/scitex/_sphinx_html/modules/scholar.html new file mode 100644 index 000000000..b65443bd8 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/scholar.html @@ -0,0 +1,801 @@ + + + + + + + + + Scholar Module (stx.scholar) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Scholar Module (stx.scholar)

    +

    Literature management: search papers, download PDFs, enrich BibTeX, +and organize a local library across multiple projects.

    +
    +

    Quick Reference

    +
    from scitex.scholar import Scholar
    +
    +scholar = Scholar(project="my_research")
    +
    +# Load and enrich BibTeX
    +papers = scholar.load_bibtex("references.bib")
    +enriched = scholar.enrich_papers(papers)
    +# Adds: DOIs, abstracts, citation counts, impact factors
    +
    +# Save to library and export
    +scholar.save_papers_to_library(enriched)
    +scholar.save_papers_as_bibtex(enriched, "enriched.bib")
    +
    +# Search your library
    +results = scholar.search_library("neural oscillations")
    +
    +# Download PDFs
    +scholar.download_pdfs(dois, output_dir)
    +
    +
    +
    +
    +

    CLI Usage

    +
    # Full pipeline from BibTeX
    +scitex scholar bibtex refs.bib --project myresearch --num-workers 8
    +
    +# Search papers
    +scitex scholar search "deep learning EEG"
    +
    +# Download PDFs
    +scitex scholar download --doi 10.1038/nature12373
    +
    +# Institutional authentication
    +scitex scholar auth --method openathens
    +scitex scholar auth --method shibboleth --institution "MIT"
    +
    +
    +
    +
    +

    Data Sources

    +

    Searches and enriches from:

    +
      +
    • CrossRef (167M+ papers) – DOI resolution, citation counts

    • +
    • Semantic Scholar – Abstracts, references, influence scores

    • +
    • PubMed – Biomedical literature

    • +
    • arXiv – Preprints

    • +
    • OpenAlex (284M+ works) – Open metadata

    • +
    +
    +
    +

    Key Classes

    +
      +
    • Scholar – Main entry point (search, enrich, download, organize)

    • +
    • Paper – Type-safe metadata container (Pydantic model)

    • +
    • Papers – Collection with filtering, sorting, and export

    • +
    • ScholarConfig – YAML-based configuration

    • +
    • ScholarLibrary – Local library storage and caching

    • +
    +
    +
    +

    Paper Metadata

    +

    Each Paper contains structured metadata sections:

    +
    paper.metadata.basic          # title, authors, year, abstract, keywords
    +paper.metadata.id             # DOI, arXiv, PMID, Semantic Scholar ID
    +paper.metadata.publication    # journal, impact factor, volume, issue
    +paper.metadata.citation_count # total + yearly breakdown (2015--2024)
    +paper.metadata.url            # DOI URL, publisher, arXiv, PDFs
    +paper.metadata.access         # open access status, license
    +
    +
    +
    +
    +

    Filtering and Sorting

    +
    # Criteria-based filtering
    +recent = papers.filter(year_min=2020, has_doi=True)
    +elite = papers.filter(min_impact_factor=10, min_citations=500)
    +
    +# Lambda filtering
    +custom = papers.filter(lambda p: "EEG" in (p.metadata.basic.title or ""))
    +
    +# Sorting
    +papers.sort_by("year", reverse=True)
    +papers.sort_by("citation_count", reverse=True)
    +
    +# Chaining
    +top_recent = papers.filter(year_min=2020).sort_by("citation_count", reverse=True)
    +
    +
    +
    +
    +

    Project Organization

    +
    scholar = Scholar(project="review_paper")
    +scholar.list_projects()
    +papers = scholar.load_project()
    +
    +# Export to multiple formats
    +scholar.save_papers_as_bibtex(papers, "output.bib")
    +papers.to_dataframe()  # pandas DataFrame
    +
    +
    +
    +
    +

    Storage Architecture

    +
    ~/.scitex/scholar/library/
    ++-- MASTER/                     # Centralized master storage
    +|   +-- 8DIGIT01/              # Hash-based unique ID from DOI
    +|   |   +-- metadata.json
    +|   |   +-- paper.pdf
    ++-- project_name/               # Project-specific symlinks
    +    +-- Author-Year-Journal -> ../MASTER/8DIGIT01
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.scholar API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/security.html b/src/scitex/_sphinx_html/modules/security.html new file mode 100644 index 000000000..0daef4497 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/security.html @@ -0,0 +1,681 @@ + + + + + + + + + security Module (stx.security) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    security Module (stx.security)

    +

    See /api/scitex.security for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/session.html b/src/scitex/_sphinx_html/modules/session.html new file mode 100644 index 000000000..7f6f2f044 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/session.html @@ -0,0 +1,890 @@ + + + + + + + + + Session Decorator (@stx.session) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Session Decorator (@stx.session)

    +

    The @stx.session decorator is the primary entry point for SciTeX +scripts. It wraps a function to provide automatic CLI generation, +output directory management, configuration injection, and provenance tracking.

    +
    +

    Basic Usage

    +
    import scitex as stx
    +
    +@stx.session
    +def main(
    +    data_path="data.csv",       # CLI: --data-path data.csv
    +    threshold=0.5,              # CLI: --threshold 0.7
    +    CONFIG=stx.INJECTED,        # Auto-injected session config
    +    plt=stx.INJECTED,           # Pre-configured matplotlib
    +    logger=stx.INJECTED,        # Session logger
    +):
    +    """Analyze experimental data."""
    +    data = stx.io.load(data_path)
    +    result = process(data, threshold)
    +    stx.io.save(result, "output.csv")
    +    return 0  # exit code (0 = success)
    +
    +if __name__ == "__main__":
    +    main()  # No arguments triggers CLI mode
    +
    +
    +

    Run from the command line:

    +
    python my_script.py --data-path experiment.csv --threshold 0.3
    +python my_script.py --help  # Shows all parameters with defaults
    +
    +
    +
    +
    +

    How It Works

    +Session lifecycle: main() → Parse CLI → Create dir → Load config → Execute → SUCCESS or ERROR + +

    When main() is called without arguments, the decorator:

    +
      +
    1. Parses CLI arguments from the function signature (type hints and defaults become argparse options)

    2. +
    3. Creates a session directory under script_out/RUNNING/{session_id}/

    4. +
    5. Loads configuration from ./config/*.yaml files into CONFIG

    6. +
    7. Injects globals (CONFIG, plt, COLORS, logger, rngg) into the function

    8. +
    9. Redirects stdout/stderr to log files

    10. +
    11. Executes the function with parsed arguments

    12. +
    13. Moves output from RUNNING/ to FINISHED_SUCCESS/ (or FINISHED_ERROR/)

    14. +
    +

    When called with arguments (e.g., main(data_path="x.csv")), the decorator +is bypassed and the function runs directly – useful for testing and notebooks.

    +
    +
    +

    Output Directory Structure

    +

    Each run produces a self-contained output directory:

    +
    my_script_out/
    ++-- FINISHED_SUCCESS/
    +|   +-- 2026Y-02M-13D-14h30m15s_Z5MR/
    +|       +-- CONFIGS/
    +|       |   +-- CONFIG.yaml     # Frozen configuration
    +|       |   +-- CONFIG.pkl      # Pickled config
    +|       +-- logs/
    +|       |   +-- stdout.log      # Captured stdout
    +|       |   +-- stderr.log      # Captured stderr
    +|       +-- output.csv          # Your saved files
    +|       +-- sine.png            # Your saved figures
    +|       +-- sine.csv            # Auto-exported figure data
    ++-- FINISHED_ERROR/
    +|   +-- ...                     # Runs that returned non-zero
    ++-- RUNNING/
    +    +-- ...                     # Currently active sessions
    +
    +
    +

    The session ID format is YYYY-MM-DD-HH:MM:SS_XXXX where XXXX is +a random 4-character suffix for uniqueness.

    +
    +
    +

    Injected Parameters

    +

    Use stx.INJECTED as the default value to receive auto-injected objects:

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter Name

    Type

    Description

    CONFIG

    DotDict

    Session config with ID, SDIR_RUN, FILE, ARGS, plus all ./config/*.yaml values

    plt

    module

    matplotlib.pyplot configured for the session (Agg backend, style settings)

    COLORS

    DotDict

    Color palette for consistent plotting

    logger

    Logger

    SciTeX logger writing to session log files

    rngg

    RandomStateManager

    Reproducibility manager (seeds fixed by default)

    +

    Only request the parameters you need:

    +
    @stx.session
    +def main(n=100, CONFIG=stx.INJECTED):
    +    """Minimal example -- only CONFIG injected."""
    +    print(f"Session ID: {CONFIG.ID}")
    +    print(f"Output dir: {CONFIG.SDIR_RUN}")
    +    return 0
    +
    +
    +
    +
    +

    CONFIG Object

    +

    The injected CONFIG is a DotDict supporting both dictionary and +dot-notation access:

    +
    CONFIG["MODEL"]["hidden_size"]   # dict-style
    +CONFIG.MODEL.hidden_size         # dot-style (equivalent)
    +
    +
    +

    It contains:

    +
    CONFIG.ID             # "2026Y-02M-13D-14h30m15s_Z5MR"
    +CONFIG.PID            # Process ID
    +CONFIG.FILE           # Path to the script
    +CONFIG.SDIR_OUT       # Base output directory
    +CONFIG.SDIR_RUN       # Current session's output directory
    +CONFIG.START_DATETIME # When the session started
    +CONFIG.ARGS           # Parsed CLI arguments as dict
    +CONFIG.EXIT_STATUS    # 0 (success), 1 (error), or None
    +
    +
    +

    Any YAML files in ./config/ are merged into CONFIG:

    +
    # ./config/EXPERIMENT.yaml
    +learning_rate: 0.001
    +batch_size: 32
    +
    +
    +
    # Accessible as:
    +CONFIG.EXPERIMENT.learning_rate  # 0.001
    +CONFIG.EXPERIMENT.batch_size     # 32
    +
    +
    +
    +
    +

    Decorator Options

    +
    @stx.session(verbose=True, agg=False, notify=True, sdir_suffix="v2")
    +def main(...):
    +    ...
    +
    +
    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Option

    Type

    Default

    Description

    verbose

    bool

    False

    Enable verbose logging

    agg

    bool

    True

    Use matplotlib Agg backend (set False for interactive plots)

    notify

    bool

    False

    Send notification when session completes

    sdir_suffix

    str

    None

    Append suffix to output directory name

    +
    +
    +

    Best Practices

    +
      +
    1. One session per script – each .py file should have one @stx.session function

    2. +
    3. Return 0 for success – the return value becomes the exit status

    4. +
    5. Save outputs with stx.io.save – files go into the session directory and are provenance-tracked

    6. +
    7. Put config in YAML – use ./config/*.yaml instead of hardcoding parameters

    8. +
    9. Use stx.repro.fix_seeds() – already called by default via rngg

    10. +
    +
    +
    +

    API Reference

    +

    See scitex.session API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/sh.html b/src/scitex/_sphinx_html/modules/sh.html new file mode 100644 index 000000000..22e39316d --- /dev/null +++ b/src/scitex/_sphinx_html/modules/sh.html @@ -0,0 +1,681 @@ + + + + + + + + + sh Module (stx.sh) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    sh Module (stx.sh)

    +

    See /api/scitex.sh for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/social.html b/src/scitex/_sphinx_html/modules/social.html new file mode 100644 index 000000000..90a7cece7 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/social.html @@ -0,0 +1,681 @@ + + + + + + + + + social Module (stx.social) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    social Module (stx.social)

    +

    See scitex.social API Reference for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/stats.html b/src/scitex/_sphinx_html/modules/stats.html new file mode 100644 index 000000000..7b2b03668 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/stats.html @@ -0,0 +1,820 @@ + + + + + + + + + Stats Module (stx.stats) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Stats Module (stx.stats)

    +

    23 statistical tests with effect sizes, confidence intervals, and +publication-ready formatting.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import numpy as np
    +
    +g1 = np.random.normal(0, 1, 50)
    +g2 = np.random.normal(0.5, 1, 50)
    +
    +# Run a test
    +result = stx.stats.test_ttest_ind(g1, g2)
    +
    +# Result is a flat dict with all details
    +print(result["statistic"])     # t-statistic
    +print(result["pvalue"])        # p-value
    +print(result["effect_size"])   # Cohen's d
    +print(result["stars"])         # Significance stars
    +
    +# Get as DataFrame or LaTeX
    +df = stx.stats.test_ttest_ind(g1, g2, return_as="dataframe")
    +tex = stx.stats.test_ttest_ind(g1, g2, return_as="latex")
    +
    +
    +
    +
    +

    Available Tests

    +

    Parametric

    +
      +
    • test_ttest_1samp(data, popmean) – One-sample t-test

    • +
    • test_ttest_ind(g1, g2) – Independent two-sample t-test

    • +
    • test_ttest_rel(g1, g2) – Paired t-test

    • +
    • test_anova(*groups) – One-way ANOVA

    • +
    • test_anova_2way(data, factor1, factor2) – Two-way ANOVA

    • +
    • test_anova_rm(data, groups) – Repeated measures ANOVA

    • +
    +

    Non-parametric

    +
      +
    • test_mannwhitneyu(g1, g2) – Mann-Whitney U test

    • +
    • test_wilcoxon(g1, g2) – Wilcoxon signed-rank test

    • +
    • test_kruskal(*groups) – Kruskal-Wallis H test

    • +
    • test_friedman(*groups) – Friedman test

    • +
    • test_brunner_munzel(g1, g2) – Brunner-Munzel test

    • +
    +

    Correlation

    +
      +
    • test_pearson(x, y) – Pearson correlation

    • +
    • test_spearman(x, y) – Spearman rank correlation

    • +
    • test_kendall(x, y) – Kendall tau correlation

    • +
    • test_theilsen(x, y) – Theil-Sen robust regression

    • +
    +

    Categorical

    +
      +
    • test_chi2(observed) – Chi-squared test

    • +
    • test_fisher(table) – Fisher’s exact test

    • +
    • test_mcnemar(table) – McNemar test

    • +
    • test_cochran_q(*groups) – Cochran’s Q test

    • +
    +

    Normality

    +
      +
    • test_shapiro(data) – Shapiro-Wilk test

    • +
    • test_ks_1samp(data) – One-sample Kolmogorov-Smirnov test

    • +
    • test_ks_2samp(x, y) – Two-sample Kolmogorov-Smirnov test

    • +
    • test_normality(*samples) – Multi-sample normality check

    • +
    +
    +
    +

    Seaborn-Style Data Parameter

    +

    All two-sample and one-sample tests accept an optional data parameter +for DataFrame/CSV column resolution (like seaborn):

    +
    import pandas as pd
    +
    +df = pd.read_csv("experiment.csv")
    +
    +# Two-sample: column names as x/y
    +result = stx.stats.test_ttest_ind(x="before", y="after", data=df)
    +
    +# One-sample: column name as x
    +result = stx.stats.test_shapiro(x="scores", data=df)
    +
    +# Multi-group: value + group columns
    +result = stx.stats.test_anova(data=df, value_col="score", group_col="treatment")
    +
    +# Also works with CSV path
    +result = stx.stats.test_ttest_ind(x="col1", y="col2", data="data.csv")
    +
    +
    +
    +
    +

    Test Recommendation

    +

    Not sure which test to use? Let SciTeX recommend:

    +
    recommendations = stx.stats.recommend_tests(
    +    n_groups=2,
    +    sample_sizes=[30, 35],
    +    outcome_type="continuous",
    +    paired=False,
    +)
    +
    +
    +
    +
    +

    Output Formats

    +

    Every test supports return_as parameter:

    +
      +
    • "dict" (default) – Returns plain dict with all results

    • +
    • "dataframe" – Returns pandas DataFrame

    • +
    +
    +
    +

    Descriptive Statistics

    +
    stx.stats.describe(data)                    # mean, std, median, IQR, etc.
    +stx.stats.effect_sizes.cohens_d(g1, g2)     # Cohen's d
    +stx.stats.test_normality(g1, g2)            # Multi-sample normality
    +stx.stats.p_to_stars(0.003)                 # "**"
    +
    +
    +
    +
    +

    Multiple Comparison Correction

    +
    corrected = stx.stats.correct_pvalues(
    +    [0.01, 0.03, 0.05, 0.001],
    +    method="fdr_bh",
    +)
    +
    +
    +
    +
    +

    Post-hoc Tests

    +
    stx.stats.posthoc_test(
    +    [g1, g2, g3],
    +    group_names=["Control", "Treatment A", "Treatment B"],
    +    method="tukey",
    +)
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.stats API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/str.html b/src/scitex/_sphinx_html/modules/str.html new file mode 100644 index 000000000..dc2d1604f --- /dev/null +++ b/src/scitex/_sphinx_html/modules/str.html @@ -0,0 +1,681 @@ + + + + + + + + + str Module (stx.str) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    str Module (stx.str)

    +

    See scitex.str API Reference for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/template.html b/src/scitex/_sphinx_html/modules/template.html new file mode 100644 index 000000000..7f874c284 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/template.html @@ -0,0 +1,779 @@ + + + + + + + + + Template Module (stx.template) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Template Module (stx.template)

    +

    Project scaffolding and code snippet templates for quick starts.

    +
    +

    Project Templates

    +
    # Clone a project template
    +scitex template clone research my_project
    +scitex template clone pip_project my_package
    +scitex template clone paper my_paper
    +
    +
    + ++++ + + + + + + + + + + + + + + + + + + + + + + +

    Template

    Description

    research

    Full scientific workflow (scripts, data, docs, config)

    research_minimal

    Essential modules only

    pip_project

    Distributable Python package for PyPI

    singularity

    Reproducible containerized environment

    paper_directory

    Academic paper with LaTeX/BibTeX structure

    +
    +
    +

    Git Strategies

    + ++++ + + + + + + + + + + + + + + + + + + + +

    Strategy

    Behavior

    child (default)

    Fresh git repo, isolated from template

    parent

    Use parent repo if available

    origin

    Preserve template’s git history

    None

    No git initialization

    +
    +
    +

    Code Templates

    +
    # List available code templates
    +scitex template code list
    +
    +# Get a template
    +scitex template code session           # Full @stx.session script
    +scitex template code session-minimal   # Lightweight session
    +scitex template code session-plot      # Figure-focused session
    +scitex template code session-stats     # Statistics-focused session
    +scitex template code io                # I/O operations
    +scitex template code plt               # Plotting patterns
    +scitex template code stats             # Statistical analysis
    +scitex template code scholar           # Literature management
    +
    +
    +
    +
    +

    Python API

    +
    from scitex.template import clone_template, get_code_template
    +
    +# Clone project
    +clone_template("research", "my_experiment", git_strategy="child")
    +
    +# Get code snippet
    +code = get_code_template("session", filepath="analyze.py")
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.template API Reference for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/tex.html b/src/scitex/_sphinx_html/modules/tex.html new file mode 100644 index 000000000..988e9c63a --- /dev/null +++ b/src/scitex/_sphinx_html/modules/tex.html @@ -0,0 +1,681 @@ + + + + + + + + + tex Module (stx.tex) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    tex Module (stx.tex)

    +

    See /api/scitex.tex for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/torch.html b/src/scitex/_sphinx_html/modules/torch.html new file mode 100644 index 000000000..2cccfe919 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/torch.html @@ -0,0 +1,681 @@ + + + + + + + + + torch Module (stx.torch) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    torch Module (stx.torch)

    +

    See /api/scitex.torch for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/tunnel.html b/src/scitex/_sphinx_html/modules/tunnel.html new file mode 100644 index 000000000..cbae132a2 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/tunnel.html @@ -0,0 +1,681 @@ + + + + + + + + + tunnel Module (stx.tunnel) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    tunnel Module (stx.tunnel)

    +

    See /api/scitex.tunnel for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/types.html b/src/scitex/_sphinx_html/modules/types.html new file mode 100644 index 000000000..ea14c604e --- /dev/null +++ b/src/scitex/_sphinx_html/modules/types.html @@ -0,0 +1,681 @@ + + + + + + + + + types Module (stx.types) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    types Module (stx.types)

    +

    See /api/scitex.types for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/ui.html b/src/scitex/_sphinx_html/modules/ui.html new file mode 100644 index 000000000..89c709623 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/ui.html @@ -0,0 +1,681 @@ + + + + + + + + + ui Module (stx.ui) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    ui Module (stx.ui)

    +

    See /api/scitex.ui for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/utils.html b/src/scitex/_sphinx_html/modules/utils.html new file mode 100644 index 000000000..a309c28ea --- /dev/null +++ b/src/scitex/_sphinx_html/modules/utils.html @@ -0,0 +1,681 @@ + + + + + + + + + utils Module (stx.utils) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    utils Module (stx.utils)

    +

    See /api/scitex.utils for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/web.html b/src/scitex/_sphinx_html/modules/web.html new file mode 100644 index 000000000..b2d023c7e --- /dev/null +++ b/src/scitex/_sphinx_html/modules/web.html @@ -0,0 +1,681 @@ + + + + + + + + + web Module (stx.web) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    web Module (stx.web)

    +

    See /api/scitex.web for the auto-generated Python API.

    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/modules/writer.html b/src/scitex/_sphinx_html/modules/writer.html new file mode 100644 index 000000000..2563492b4 --- /dev/null +++ b/src/scitex/_sphinx_html/modules/writer.html @@ -0,0 +1,825 @@ + + + + + + + + + Writer Module (stx.writer) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Writer Module (stx.writer)

    +

    LaTeX manuscript compilation, figure/table management, bibliography +handling, and IMRAD writing guidelines.

    +
    +

    Note

    +

    stx.writer wraps the standalone +scitex-writer package. +Install with: pip install scitex-writer.

    +
    +
    +

    Quick Reference

    +
    from scitex.writer import Writer
    +from pathlib import Path
    +
    +writer = Writer(Path("my_paper"))
    +
    +# Compile manuscript → PDF
    +result = writer.compile_manuscript()
    +if result.success:
    +    print(f"PDF: {result.output_pdf}")
    +
    +# Compile supplementary materials
    +result = writer.compile_supplementary()
    +
    +# Compile revision with change tracking
    +result = writer.compile_revision(track_changes=True)
    +
    +
    +
    +
    +

    CLI Usage

    +
    # Compile
    +scitex writer compile manuscript ./my-paper
    +scitex writer compile supplementary ./my-paper
    +scitex writer compile revision ./my-paper --track-changes
    +
    +# Bibliography
    +scitex writer bib list ./my-paper
    +scitex writer bib add ./my-paper "@article{...}"
    +
    +# Tables and figures
    +scitex writer tables add ./my-paper data.csv
    +scitex writer figures list ./my-paper
    +
    +# Writing guidelines
    +scitex writer guidelines get abstract
    +
    +
    +
    +
    +

    Project Structure

    +

    A writer project follows this layout:

    +
    my_paper/
    ++-- 00_shared/
    +|   +-- bibliography.bib
    +|   +-- figures/
    +|   +-- tables/
    ++-- 01_manuscript/
    +|   +-- main.tex
    +|   +-- sections/
    ++-- 02_supplementary/
    +|   +-- main.tex
    ++-- 03_revision/
    +    +-- main.tex
    +
    +
    +

    Create a new project:

    +
    scitex template clone paper my_paper
    +
    +
    +
    +
    +

    Key Classes

    +
      +
    • Writer – Main entry point for compilation and project management

    • +
    • CompilationResult – Compilation outcome (success, output path, logs)

    • +
    • ManuscriptTree – Document tree for the main manuscript

    • +
    • SupplementaryTree – Document tree for supplementary materials

    • +
    • RevisionTree – Document tree for revision responses

    • +
    +
    +
    +

    Document Management

    +

    Figures:

    +
    # Add figure (copies image + creates caption file)
    +writer.add_figure("fig1", "plot.png", caption="Results")
    +
    +# List figures
    +writer.list_figures()
    +
    +# Convert between formats
    +writer.convert_figure("figure.pdf", "figure.png", dpi=300)
    +
    +
    +

    Tables:

    +
    # Add table from CSV
    +writer.add_table("tab1", csv_content, caption="Demographics")
    +
    +# CSV ↔ LaTeX conversion
    +writer.csv_to_latex("data.csv", "table.tex")
    +writer.latex_to_csv("table.tex", "data.csv")
    +
    +
    +

    Bibliography:

    +
    # Add BibTeX entry
    +writer.add_bibentry('@article{key, title={...}, ...}')
    +
    +# Merge multiple .bib files
    +writer.merge_bibfiles(output_file="bibliography.bib")
    +
    +
    +
    +
    +

    Writing Guidelines

    +

    IMRAD guidelines for each manuscript section:

    +
    scitex writer guidelines list
    +scitex writer guidelines get introduction
    +
    +
    +
    from scitex.writer import guidelines
    +
    +# Get guideline for a section
    +guide = guidelines.get("methods")
    +
    +# Build editing prompt: guideline + draft
    +prompt = guidelines.build("discussion", draft_text)
    +
    +
    +
    +
    +

    Compilation Options

    +
    result = writer.compile_manuscript(
    +    timeout=300,        # Max compilation time (seconds)
    +    no_figs=False,      # Exclude figures
    +    no_tables=False,    # Exclude tables
    +    draft=False,        # Draft mode (fast, lower quality)
    +    dark_mode=False,    # Dark color scheme
    +    quiet=False,        # Suppress output
    +)
    +
    +
    +
    +
    +

    API Reference

    +

    See scitex.writer for the auto-generated Python API.

    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/objects.inv b/src/scitex/_sphinx_html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..227e213621262f150a67443086365b04c6ed9d84 GIT binary patch literal 28361 zcmZs?V{~Rs7cCmwwr$&XI<{?F9ox3;Jh5%3W81bmx8LuaamW2}f9)E(v})|ybFNxz z7AcX6qotL-Cy|xCyP3VKgR>WryP30#m4iJI3k)gIFJ}j9GZR-HA{7%WRWr?hZ`A)! zEf3MZvZ|#Sk+Yedk(IrvnKO}tIgzWSl?#!%m8}`kzo&_Voujjvi;I~lk(-N^y#BSw$#Dl+Wrs<3%^kM~zn zYy`WGcYo1M6@!G^hq{lt>hP{1#~O#fo93Tgc)Dl5TS`sG^%*=L!_2$7Z!b7zOZ_6< zxD$N2PV`b>X+7v>9PF0Gc=^-GR!Yq=nO4fDs?S*EqkXZYx;N)F^qQC2x&=pha;wvF zqp9lm!7p@6-iarB{UVteH%_Q|Pn5`s#NW}(c3gJdc8ac6DD&yYshPl30 z^o{E|y84W#_jjTi1(UibqG&ck5zKNFwV3NKZk1LW=BT>@iut6Nk7jz~cp#f{r5q=U z2pIP~#$}Zy49FLL74TUq!5=XTB>y1n*RL4Ol7 z=1C7#iz}U`T#!(L#b4?zxMONiD*=&LP6(+BCt$kEpVLHasL=ib;-8pG1(NsI^&sed zR{P4_%B||04$E_#D_2p0Q`_A0-9HcokPDp27XfLH=asdnmUCWusqYE>6V=X9J1SZ&vlPfIxv?Zuc)oeT zt1d4d5xK}{tN2z?L(I4Ndc(bM&lc9V?R5n@clXHQ9GJ^+KJ|CRFAlyCll zgnnl$p_tS96p3AOGoiEh_#_OEwOxR;#NF<+{b^Mt#L60g_0-N|8>o93n%=d0G3$V%vngp9YY0%%b1 z9z*U=&XzLMSYR1XUJ~D2NqrteWUTeE{Wz@$ul_cF%hfDa)6JlFXN|l1Ck0_X6~o_2 ziGa4-O_g+by9Tf3E<&m80p6?1^5x8uLs$MTK^A;^j8gv88^8oh?kRxZy#sJd>ipeX z!@JA8el`2jq6RaMQfLLK9=+ma!QI0q4kGcWdcA!duIuscbt7ufQZwc4#VV|&U!hil zG`xM-r5OKea2w#2-t)ORlx1i4pt9y5NY$yvP*3uxUaEder6;-SOjVQ%zw3-TDZ$>&8_)^ysffWju&g zdbEP$M@J&pqt0V$0SkmkVe%H-s#vMGqLe6N?HQ6jym~jXE;wL(J^J45cNuVK%de{x z<`TO4%V#$Qyn=Z`hg7nE+4LqUmDugo>AOwrDy5gKj6? zeA#rhb*`fD1gpEs%bHbt;O#yYX^gQ&<2Q`@8Ih_FPUn(iEI@ss1_ji*nrXDD7R2b< zXSudQDL_!oG?bU$4c})_#mgP__w4NEk^iBYUvvR``)&AY zj0n)oPhztZFRqm8u)w$286EBvSXOJEbn;hBQOr(n6wnKj)iJnmg0PDz=4hdrO;rDh zc(sQ7DaWtIoSC~92=BJg`_OE=FT^}{F{C`)%l+PSv;}PUD&B3pzLO8s?%o!4Px_8i zJGq0HwpLdLY2k~ykr8<0-9GJd^Lr=|DmVMh5;)CDLjpo^53k$>e7bLT24Yq?Ycn>j zuotto^!%CR;X9v8Pg5tsopIYHZeR5(9u3eiuHmmL zY?Cp9pQptWg?L!M6Rt1&j4|q)@^bR-zxXkJ{8V~R#G&(_fYQo~U>j-@U0(%KUWzTi;*UFxXo2OhlXD%(YoWgRGWsw&-E_m0 z=lQ7v7c33==&l#abU?mQCOiRFbFo~uF}(0^Hk zw_m!?i!yW2(vGr+Wuxbm zCfuS<@-%R?@I1UvAB-yO6XwfEtI>TYsvlpK{yp=(M_ZpwpKFvfb)(;^Kl{_c5o6ZT zJ^rh`TQhAey5~ICSN{0O&SmPwPi@ijbUyd;p-VNyjY(N*u14_)F94~dF1Z<#RGmXI z?f5BcrFH#_Xz6moJN+}>YoQI>=Q*S;`E{9~jEt{ys`hv1LfA|AhuET!Ws6`{QWIri zWL-!waT}RZ@aGqg1LF$gna&3C>kPLJ7juqm>egk-MO2IL>_ipG>iOo)>x13)1zi*9 zjz_&BQ>t-A6yB`kS&t%UOJR?yEBz?q@(u0#W>;B#6liyI%?N7po}t}wxx42aPQ?RH z#80+v9jNO?z4OhkfA0^AyrmxeOKQ*GI*5tzFB~jFZJB`Fu`-mzI*nqnYMTM@!``P>2q@eRh59&*(D41v@=(e)_tH z6g{J6ATc(}N05t;seJOnE4y`wZoF_;W76< zrS3pLaw#?&YEaLS1S>$QY=mJ`IA9K*aZLS<)sIGQBX~~!m70&Pv6PboMUbyd~-O(4p>5(%zQi~Z>|PH8Ea zQ*2COED8Gl^7>AlucmMP{z?AmV(Q7Pl^P<=pQ-6RMH>?{!_bUNz`~335a#&dLf#@1 z4Sz)zo-MqHXrqA1HBWN~rqSG;sPv+PHF;w}E>31$`B37g_i(TeGV7d(&-a{L>NfasP-CFp!d#+`rVCc z$zjhA*YA~snm$L;#ndWFgTK75;VMLHo8|6xL-qOod@q^-1lc+;Zpq;XWg1~q?wC|> zvTjcZ@gWW8t{;owQKfU|=mbUn=3Wz7=s#p4U@$%&Re49RAEsmryn*TI_nCBEzb7IZ z29usFlCHI(gtr8eUENeN22z)MDf>>@~_{z#OyhYOyZfshyhZ7u1iUe?1&FOvWzs-lc(?pR!%~ z;O4QumKW%kfm<-?ILW+-LnDkwXGzaV_xi^A8P(fJ2Y!A76N)yHF#m)MgkVp(RH*4d zvhH^>&wHW!;FMv#BQjP<5<$CZ45IW*+Zaavq9pf0C3TZuB_Sqd3mFiLiL*ibB_XK? z$3dwly1+o=W-%)O}R6m#>20E7PxZ8eNDYozh%)w^Ucs z8m|57i;c>CP@u@CS;V;9M-vl`%g3()?^$Q>=WB;NbP$%!<84&)y@%sW{kbkiFO^ow zj3^0#6Zu{bgcBM~sDv&$+P&{J?h;)1Q$pgnki+lPy654gSn#7@fC|$vEs=;y7bX0D zqfA}Iy6X>l!xQ$bQ1UY$Zfg)$ofk#M+JU3nevOu?;p!r{Pzp?hUZ&Ck!W$kmO=m5& z;rtH}ao*_8>FlhV`wz$VY8$EaIA#$DxO>~3D4bQCFJe~rD}=_w`=ghlRUK^mYS;MlgPV4qmz*2O2y#m-^+2Fg}R~`I6t-d7AEIVlT8cCi=VB) zq2S|?YN0oa$mjCxIs0zo^|&3smaV@xBQZTb#H6PCpAu;u&hEb*`=}sj<|zk7i9bY< z4I_Gy2;f%{qlQGE0}qIbKLnlT*Lo2N*#F!PkP?6LdG-qhi~)z7UvlXNf8)jHx5Xdc z5Aj{)-iUUiRv8@L!9QE!*++`2k~C{=*d$(BH>IAvAXtpMdk@8FJB$2Y);kIRy7jLK z%U9@<^up4vDH__i8(#b9#X%_7OIs~@ogsoAnvh=r`!)KJQtL3+%S2!>)(wDr-N2Xed8Wjwc4Je9W(HA1)iww*kG8J%T2?*>PZ%jT0P z-Lpe?%(v|)dh>bYe0frePF--^)jKb1^c!B{h{ul+-ziTg@BD#}+k=2l&7SbRCy5^m z_ZBT`$vHsa9B!cqWGK(xqJmy+|L4f~6(hSKZqO>_lk*^EWvWS+(q;!_=z@yE&D-yo z((SL(67HBfxM)Gc4ttm1R_>)Hmq1%1Z9X3WrHI%pB%W5}VXyHi>$kPxCauw+&+*%@ zc9fDW!u`(Ga0GJR{8eyU#UXa!-~me$4Yo(Ju>rQ-|JkPMH3=NvM;-KGK z-p?>*IUKoN5EzK1+ihYFz!*Ss{F2Kjjia?nCyuR>Y!dQ&RHPcFoUaa=1KR}FE)kax4#>~mDS>DM zuZ7p@_QJzELN6YI-NFiA0`WKSiXYptE_53XmZuXLHEC&5V!mFy~YAZ5_TOQ4XbVgw~9dH^~^3tq;E4wNhOzE?Gxlu1;vk zzM2MXpk|TGH7|MSf*L1mXQyC{TNiT3-}NaGqA;2n;X0?9lkYoL^p335ORakSgmXFeoYY}j*F!4G%dgS2Cg z7fcEQHb~}tb7wcBuVI#PL@Z7@F>z9}o>kcW6Z=t5F_cP3Idm((<~^epwj*y5(PAmJ z_ujC2?n{cfyv!GvUwA#?Hsng6qm3q)43VH!#SL$P^3;}r^>Z2UM{3Qy6xz-#Ti zAt@m&?{?>I6j=^pI?3Tn5;v`(>N&=X5E@QV~@h&(AA6O%}=Rl0ExoLx5*Yv?2f zhHwdj3X6cjg3FFC6^5Bv9{9Id47mr~YAx$cv>;T?#GmNjo~>AZnlK})VuWLA^umwE z^QE^T0^%X#M_A32Q#{xD^}3 zz`&N{`})EN)hc+k-f&$GfGl-<vJh@0x`xw-M4k+#NjUr`62@T>vN+I z=6(ab=c5)mSe3zEU}Jh^iq`(9L;X%4mf}ARE-Q%V)+Jq(tTpB^YufBr0lfp`NIpS$ zSj4a~ToGp&v|*na)KX2&5W*gAriSRlf>`K+Iy6CCf9bMMv0TDbK5(Y=A({e+(>}$M z;avez1BtoHYYMWRs6mReJaXqH7j!U5@2sQ4`?W(l#-OBFm*mWHm^WC?lZU9kN^Krmi>XAqZx|i1bi09`%W%; zy_vj989jp|o2hy>SmuGEb-sv7p>W|e%9FtIdxLsK|J^C2l&p;b`-$15wR!pZB#wwt z{rd9*1zC(*kme3l{W7&M2n6)Szo3=29o}GeZV~N!VR5n!AvZ@dR&3>M>P08Hg+g<} zGyG#PFe+Q*>UcU_{SqZn_d0av#|tj`x3(3j%s7b_k!`fR5t664&chy943h#QFunI6 zk7c-ffd)-b7?w#-5z={&Om!JFf*nr19vF`vrKa)Qqe_XJ@A|8@6AHO0GGl@o*4jQ# z{beeS8c~Q+(_(X?M0CV)MDaG2{(1WrPnX09+dx9teO0vyq))cMF%$nD&0=i?^U8hb z-fq^a#tAlsWl}-ocD z_h>dQqjk(`m%>^IN|O|ZXX=Ng;r`Vk`RX!4k+XsHQ%G2g9I}7y4Q<_KXI0l^F+QQr zOVdhSZ7&bnB%OXe9H3L-914YL{!c3JZTh=&xnC-yM;_t<$mCnaEFZ`k1|%FdwKjom z{>Ss2xi)v1DO)JDi-eG~50J5#+I#O@{9h4S+}dFh_;6d9)LtxsbXt9JW-u7aHtkI+ zXsG_s29NW_6NtQjOw0b<{5*sw1*S9t z(R;~O6dGL3`94MB6iJVB>TwD#|BMHLx#^);+ZdwKUqsJ=v%n~S%hX+g z$sNq}ayc}e_-$rWYUMN+gwcp1t(}|GgO9C=-+;&U4L1Wkql?YVbCITujX|sxiz73X zAFIBi{)pFtUT%#&%U~Ip231I}A(d^i%k9#jER}q_1_%}uD*6z^$|-=>KmL&P-!sa8 z%fR%w{dn2Mh+(u1($GR}MBcy&^*$2_a1UWAv)Yg#7tes+pBkAw=;}^ntxQIv-ieE$ z!oL>i$u9$KeV~|Pb8iuM1=HpdWGizy~$H9a8(-%)`gce z>8Kn{D%KifO}-@mm6NrMI=Jq*?`Bw&D3qDq%uqF#5XYSJa`DKM^XUN@D|Oeh(S-aL z)0!YR&aOv>_}(7ju@B0>ECuG{K(+P0G-g{%=nvC-m4RPSPNpykoicgY7VQ6)%q6+0 z^XP2?y@A;*B%89Jq>&>;-&@6qS{-?t(_KYrLFCEOm}Tg&{p7+n7UpJF;1=-?LR(UC zZ^G~8DeR~@%Z$JJ$JOGuREb{B89Sv@Thh5TAPMtJ0(W zU=3Xv@~;M7*n0DsO9Ho^n}xMiegUkWgOcfiq+D)GY9w2e&=l^XCRRwsW952p6q`al zelJa7P-!2|J^$zusFkkm^KhvMYf}Q$40d zh=-)s{_&zwtOyU6*h2gMfl<_JuShI1>rQ^Gn!B-H6Z;$$J4HJ$Y&Ap**#uJDR5O+_ z0e~yGK6nB}70SRqhwl9#kqe=-|IS>JT15hHvDAv_udlrBVSe`7nF=cIF5kc?2Xmv9 z$iH753>$99E7b*5jrRu%1%mC!v#&=EPraN=`x#4QoefGoIzBUq=n}fRNlS5W!jS^I z2k)}VE3VX|FvM;UCBLfdsZOHVCTp86QcC@{90;-Y16oK?97SWp=s z47#|SA7At*>H6a(lg)&^aDjym>hD(r-JA7fzMvzS@xZ|C0e0(8?9yqt2+jeTiYe{M z9ia3eB3x7)Am%)>ni`BETpd8Bi?jb9SF6L@oEp+dyN5|Z+S!WQ-@hJ{fGrGj=(#mh zgm;JwT{Ppa{g3|f@{@0Vug@f5nTO)LqbPh_nM)5hJg5OGPkqmCCg7?I_4Gyr1WNu} zplsDqD^6V9PUUrWk6pCosscQeTz9>^g+*Fj@zZOYY)_ls2TxCFZMj}p13dy((?*{? z^aK0xGm->udRxPgogpJm@aSRWJ|?d6`y?sdAC!AExH6}pP=k!I8;q%1a-q{06lG<& zo~fm*7^7W)K%s>R80Pa?tK3i$!gAu93E;CG-N6DwVIrYlFrx-EEc#Y0>DA9avP@O) z`Wy?Ge>W0dz%#LUE0SJ4!i=>|$Um#$-=X}W^TpS4lvcGNA#5TGlyIz=?Q(Z4I4m;j z{h*-k8C)mkS8Y+Dyh`dL(fD610_H_Eu5P;`PtP`!SoD3`*LvbzpqNH|rI4~Ne`?oh zsc>|&!Z}B^Y&la4z8`I~CKF1YIx13L(UJX+bX#ED+hk3umpq8w@j9ghXc&uhDy-h{ zRwS8lkA=FzO|cjjMY_G}FUx3baYtW0#I1wFs%)zYo&5wZ8w6N>s}KNJU#*N7d_^F^_3MW-R$v zLz&S3JR@W9em>5C#`aKkn%+}%kfoH9Z3CN=#xA1{(APD?EdxPjD>O?>7QZy9C>6b5%v z$;NOF9K<6^8I$_F8VYZH4^pyOO|CB0iT{H0ZpTY%Y;%TEL#E3tNkeX`ivNnL%f2T# zJy9pfFlK2rucbjV4>Hd96RbEZENWaeZBGh25exjm#PBL=ZRLf$@ETp%YFy1$RqhlS z%PrMs1ckrMX`h-z3}hL@|G8V2{OI6?t5&=ebUAueM|(m2STiRZ{RPAd>^^>i3q|#v zMrYD8F859#ZyTt9$az*3w8nCu)kR{qn7Cz&!9w}u<{{&ni|)TQvqDhCWTiWLX7en| zv1VHs(jd{Tf$}P6-ifRzqcqaCjxQwIHQeb74yj}q=Bs%1j`xx|4f0vj)j4x_9dZKk z&b!tx49+y&I*kP*49F%mPN8QL9YIP}!z(}0u5HcV*6Q79%h$a!w|39lVbE1eI==E@ zJw0uiWR`Nam+bDcvVG%<39Ut`t7rIj-OCih=Ia>MSWaD!F zXOEh7`<<#pBXPY>OFWCBQp zYH(93PKo(ccF&Ja#KWHnaGK>9B;QUQXr=+?JlD$Plmh(eJaqBDx|FIG(GizQk;YJ$ z?J}yoM?h_&&`4UxP_lzM~<8_QjkEhmj(kh9{k}eM{0_f=lT>?OuYZVXTuo*Q11x5i(OB z`xGi>M};OYK61T0cvy>cGOrPx!Fq;&E^E?S3;lV${=aXZ;tmDOo8a15+{eo(gD|Zu z|H<=S4ZJrIqx?iq7$w?CaDFrWvF#zgIYdA#FU+%V!k_02HOvR8;Cgk z@JF-ge6&6l6!#%+-e~i_zZ|?!*mmd(QWNmQM6hw!vdt58*V)nv9FE^jxycL;T&E2= z=e62qu_y$TLJt<^SC{qOS~1Z^6u)$DG`Z%Rik+?DpgCI`OIS8LSi0qJ^Lbj{36ILi z-#eZ%Q_nIY!G<@kKHI(ZfV3!FR64c_y3RMbp3SG-9DDXhwE>F1zHPY`KIv>lFkUkI z^H$*Jrpr%%wWN>kwvIV?R|6^2{jpeT!FP>c z{SJ|gFwRS|qu0+MRlqm;UXdjd^H5T1@&2-kSa>^X0rF+34Ar@fWgxgDvx64bOe2q< zFlf-VOVY_S8Il)SJp!kElRt`-cCUX!lc%8Se(}Xg0ehgjEF|;oWSctay@wiPz`j+- zl2L)F`g@-RPqXEHqxIQ^-8N4X9eDj=dUv{37E~(0!KSGehg-u;+jLQ_r~>wk%X<83v6hTrlWH;RzBMyzAepvf zKOkuP0eWH_hfQHdJXi-8FWz#m@joF*(dM{Z-1s)Xj)tuXWb(uM(-9EqLJcgN_Jtql zH4>ir*Q#M@jio0W_jJ^6@|L5;6Nbnw`ah>~zHd#uIB&~*t8@DDX^`K-!Y0r+87BkL zS2w8vfutX%uvw^~3Ww+2Y6@}@6Bm!HWcCWDGqmK-D}z)Lp+LYq9?Yo=hwoDvEk;@r z;^=BI{^=T17(x?=uYxu_rr$o|;ptu7o$TKZnulx*gjo8TD#zfu+9p_AM!XnzS(S|+ zgTLu7a@?}>j})r?b%$PJ-P?r(P*yNm1-r5niWemBJ%ASn8EE{Wj2^K68ngqlD?LZ^ zIF{ai`WsLGG?rCphy7w#qO7ie7y~)gT~N{2_z}_t-hRS-mI}P)QOvzLx;eZG*FWvN zaSt4*QZ83pu6rEXzypyhUu<=0$)iUbQpAT=w$ke>FH|5wb%|u||qFxU5W5uszv0wsogCY^Z_DS4CRZJA` zrDFW46@4J1-HCmxghm4*CTXKo5dMtaSXs`5Xp;Nt|9xcTK8^dXqd_SYTW#FSum00}{+2r$_h-|g(Q=gzVz ze&i-i{d1IEZka$ER%n!<9E@U;Oo32F%T{>6BZ|uQH80bN<)p`=={FxrePIo&XYvv! zGb9&vosIZ<1+R>!=_tD>?9fHcuzAq$O(1+%I>AxSDQZ zpuh>^2Sunz=tBf#4j9rf^J*3}vGJb7e%VceB@pG#VOJhqQLkyGo!12CVE*MC(MooF z0b!{1gF~9hN11ykgl|{(Dj1mfUzb`M9O3^qOEU_{LTC2~Du&7XTO#xnDtD0Ga~URQD|@dTXfvIw`LTa%zEZ1`iQ2Y#ez=yG9uU25h7d${Cqa^?d&0Oa~?mlvH9YR);-6B z$T&su1WGTCAFr=ck$k_l2H(0y!qNBDJYEpcUhB*B`>TJO0W71+clT5>-q?yr8_%iW zFp`azqN-2{E1@<OUv73Y?7}0{wfS|Wuw?~QLzi-oH!qQjpavUPAe&0BA8-ak=Y76!|2>IJPbw<=^}@yLNC&jgJlEBe~c1tbOzT4Sa?Q{T{6$S48J_|2=+ej&J6P%VHB^9mj+=P$gDC{M!Mt7o{?&}Y5gKLKmw0>zYTM3E%fFpin^ z?tmXdsdaBZtSCS0#cePta`ZAxwU#`phc|v?_MXUw12?5aPkW40Rhu4enoAT1pRuU+r5=)4}y{Lz+PYLfC0o za>E6(Q2iTtUvhEMbKV>pbj$((%pe!>UM-?g!}eM>Xkmscel*eD!DOF1>0H|*u&sMd z+P}8$mxE(lMG&|*3N7<=pugU*+Sz|cXP_YHLQ!|lWOw&+b(K-H-#kF@B-H=gP-V8! zs0P=kH~yJyol`o`Z<873S#9$;EsrPf@tNyUMG69ug2aVFUX5p z4*F%h;sqO~$#~mrxTd}hM0H{348E=d%0qm~AEVfQuldigC9@T{ln=x=yBsII=nY?o zFkKSw>)b)?gBNAD?+Yi1g!G2b6Tx-R;iM0PI8Fj@wyVE5eaM(%-^sLeZncAS(hxqN zZ4uJU!eB{s;T=qDTDR5?|F~UYkRGQw5DS7SEG~XI$*p%|QnQNdHAdaM^D#VnU1RjM z(9$H?+x>@2+N5Mc5#!g9s!VUal#{;tMTlQ*k(`!_youI#vkh2H?K9@4_oMqLR%OILVX}4*DFzxovdgON414W z37DFba7$wd=;uZ~bKt@zkKUYRcK$d^S1DI*KOz-!QOvwPy^jH;0XFCcd5&oDQ`~>6 z_HXb~2?8#u*iw3MjwDai)cL9TVzVdz;o^~WjGau=-vn zEqVNe6ZNN34=vBxW}tJw?~e^_4k#J}Cm8F`C3V<1<}nf%4&IO52<~pan$jSv*wKp^ zb;0h&4lAO{Ni@p+E)Rj?|L87@0r)?}+wYNxyYc%dF=Cq;BwP~VWG3|?twBKy zg)n4SVNZb38$>`FjGw~@a}WnM9C~~9?0&yJP+0=${U^W@wa!q|bSvLj+Q;FpA#e~Q zkrT^7!PJfANLUB+#8`=tjkX@mUPD%dR;cy^O@uBxN8RMuKc<%uzQiVRIDYf2MpSBZ-49r@4&J1H{vWLC?TFsRZq&Lo?OBhJ!aK>i?(M`t zR@FgM$z8mT(c&QVDmUqBiDbys8o@)t#^nV6!+Zo_$1cT$g~zX(Bf#f=ZQL)0FJ?u) z$S|LS*oHNSAym(+awF+KR{UXgPXM|aWDBV0JuK*X#JIW_U+6$NCtyL}<>%!Ks@7p4 zy&;|x)-kXz<%R3OKe>-e9EVk9_3HyCluiv|siM^lP^G1*T^h_rI(SFFud=zVCS3UJ zi5Xm=6_-Z{v|&+}J`TsO5gp;;^?M1^pyv*m?$;$Y1%KFq>NXz=?76!xf<8FEIDOBu6$_pW#N`PLk9d;N?ivvB`B0;~6qnmYT|IugdG8QyS z$s_k+iky$r=EMnp+lbogyk{9a>=Fcxk5{p_FgV^Pn+mltp(QK+MVV^FeA}^H;}*8S zxUrL#{j2?Pkb$+|KD3cQ7jBvI{L3HAVU4j8@cMsh8ekff{}C#~FOdI3sJ#Oh{&*EP zvHP?7xECo{oIL{i8(k3ElA77U`H>iq>MmPBX1!aF*#0(#Bok2{r2bXT|AE0_q{{q? z*DXB?XTkvFdmuElmAjl=aT&{A7JDiXhNDhUjn06DPK59s0IJ*`G;~B=M@fSkM1wV8 z3V|d3pg-=f>N2PS^3V|IVk=?JE*Kk5*X}2CswAv0TBZBJ9*;pRL;Ji&Xc}tsM8eR7 zPysH2vvM1stK;~o`{wQAD6YGVMNc!`W}93{cM5V=XIx#-&(`=+0eW=hWvHrD(@c=B73tS!s2<#0tGcUtM!fS`*sGe) zbG&eO4G?m}4Ub8izuBsX#tF6mIe9F9eHFA9cqHW=Xr8s*bk8Gbm1ug(Wc)atJu|2_ z-G5`pK_m%@jnZfTC8zwbFSR1YE2+qalD*m^XF~s#VP1}gTkJ5xx!c-ji~rf9naMw! z@3nGrodKSot{5F=xxx%#nO`5%epu;)UraG_OXy_dBjHwww^aJ^M#E3{DhmuEWCg)GQU4?-k%bU#dGcpI3fh)bfwws5Bc8H|RDQDu~u zkT~-IC(u)ZINVVt6v}yZiuqCRXj@Dbxz=9BlYGtg2hH5My(c&M6qttg_FffHO(WW9 zsk@%4t9niEFjuGO4suIy(pCV3wu!jm*?4rKMv{YNXCf1(&xm2OaAbNKo3NF8i(mu9 ziyZzD((9}@u08Kc?)UAO0$R#ZS1X}K(&KBrUTtPbd=uC6paK-Tm;(zW=%az|&ak>TU$eoI0(Em9DKwDvEN77O2+C!b7 zPES6di5^8e=M2L!pvV1RcPIr23b}({31%<4s$7UqCnY?-vOP+Y^JhY%2kyNA6eLKqrH0mty z|9aux503=N>4Ut8iW-f{#^Anaqyj1EYi5i7w%Rb559GTgYESG+ur}nIhzj?5sQyGP z%KL=z-9rtAx&9t35PA5f5zo=RHB5xCck*T}ryq+(8+2N>VZtewv2?+~oYpROrU@Bv zfTvNqQwav)a~B2~5~cZCG`nii91TLF`2(9Q6XI{8EH$int>0w3V`JjtEwLkThuTYX zt*9n#n9dn>$l>dcE}czSUb5>qrU>OTcTTS&oWke76rKDG1zlE5xz-+d0LyM~-1P4p zVz!->j^_{VD1XVxV)Up$Mt2u4KK2S;ym|Zc2Kf&A0_k$aY>pDPE!gX|#~Z#dLu>vZ z$gvf6OZ@WTPikwAS%nkvE)BT|eumzqhy?qD?9VW-+vANovyjg@KYTqD|Ls^+Sib=m zp4Y!4^8%hoaWVKoOJ)g6IwGmxYgcCnO2NO`0l5T1-T=RZg3*S$lr+|6lN3tc;IxRc z+v$-6?%C*<1TKT2c!d?iMGgyjIMG|uV7q8Ku>4}B9pp)fg3-RmYAkKE+b|Jiw+^t1 zJXvp@06E|8kZx(S+c7tKv+3mw1s3~b2 zdu}XLOmm?kgw1u?yNbM_}8sJT%2rqZ_V#)l6WS(*!3=DD^>(5lTq zHFjNv7q`=KlK_;U4v>d54gZ^7gj|M5ZQHhzSi6GpJ|1agDhcZ(1S_g!P8sK+6u`?! z2S#HdbC3R?eVG{VODZ~J=zi|nWuZ`WSMo*Eq_@@UR+$(iN1WPUmH!RHQ|qU*78>e_ z>3lP1Eh=V*U_VK!&!doFQ~4V#n)uOd5528Y&je%sh^= zEV#M(H`WxjCQpyvU8d@?*o}zybWM*}w53DmxRV9!Jm3c%y>D^YiMGz|KKRFXvJiuf z`-89d?T&x_ybV7D^u3=3U{KUK=TnJo6@ir+bNtN|F=UWQQ*(gYsUP4^u!~582{vl% z6lbaK^)$|2C6P9HvhB8Q5xMEPGGZDM zWnI_Z5JV|#sy3(x27DWTpI^Uj3fjtIo2&A*ow8$Sax*6^ek@yl6YlPQ@4sd*=)S;( z_>Eru9OmEro$#w=;wP1-EpsSAnWwllB|jh^Xr$}W9HdR`mpx-pYM(1+4)x}LshyDr zy}dcXU>jyQ;)rUG9l!3bI|oJ(IK>0T^){4rrUkcFamLN`(MwMq1Jq50#n}!!;-+ju z#c)7*eA6rBsoRt&Pv1T?O-J$6$3by~=hL&xO*7h)RX#DRFqxKk&T7)ST@_KIEBbh6 z^iIDfHgAavA}l3fLK!nK0L}Op+g-i40DA(4vJklWO_wePrTEJLtgw|syuXhV3*rpV zD~%4K_;XpgpCcubaC_@=8lVI^N$Yef30mdGoUtGaktu3*|jb3DwqkNRcoA3wyUvs?M0l%oKmMbeal zu`fzxIKygt^6In0W`Z%V6BjFC&7Sy`L2DS8Y@1gulxa~G#!arHCN`gv0TSMD67ysw z_PcH647eM=(tRr@?p#en-iX<3Rzz*_wR5GDkTAu@Nyut1*Hu`S{E9=?fxq6vDqd6} zZa^CnM0u{tm3Xx#Yw;5i(~rQ1og{x(uP`+~Wc|3301Q6H5vfEQHTg+pM@``9Fc{ac zDRl^Zelr?07!Q8_QHK~B+_QdRVzh+II`03e-R8!0TE~Wq|5?6i9??<9_@inR3d*VF zIm(GEcVyPq@g5c>(Ye=b6gnj6T_SjMJuy(l zXtM^m)X=q=Y?SGLSK?TH&TghznuYjUgy0V;4v0qra5b=!?C~p1`Z=BpiI|XF?N2@N zXG`l5tWPgAc)Ps>3!*LEo|^MmOV@UQ@8^})--q zXnhfw;?VA8oD_}J9Vknj#ujoh2ldEur!EJIc$&xOV$HW8{P|+)__i8h{C`ak*vu8>fV1oq(c^(>ZRMRsv2tN&Ss`=4-2Iu~m{gK)>SM;+EQ#Y>sn{O3{?9u?6co8d>U zuH;jW1M6Q_FNLkaZV@}pYS5nTi6`~se!G0^v;MWOdur$VdVi{GZ0vI`pMdk8p`9hN z_~_*=kx)y=gq>D@Dl1LX%)Mpk|EjIhrT%}^Rz7@|(^KKWnYm@OHc-#;e+-Z1rLd~O z8o#ic)XTx3vB)YeA02F3oS+=sqw0>r;}q=uj@IOi*~)q`V0R#=q8pP?=}rBHz6|@p zf8A52Eq5riFs_XYgEonw3H%+8t3f7}EdYOr8JsN<jS|#mi;kLXahJ{vkcPB zoZckbwK$>+RtY7HPaP2Db8pHfoDmD0lIfaSqUl0LxHa=p=Bb(;iDZgy9>-!**mG`G zY3sY0=!FutbeUCVPwu9MZeQQ3iEQwTOGy#OW#w@JFzGF{(jy>4*|oI1pZWb3?|1x{ zirtU3;3K}Kd7=%nka%;Z0qL)PpY&3IhSm6Qw62dol1xx8*YoiPs($-E%Jf(gkfg-@ zi*0&vkesUs-*4nr8&RWZCJ#(1Ut%R&$#Sl?B;#z1I#u~km379mc})McX?Ruu>-|>( zeXFHZZU*nm6&0Nl74*jh-?ci^L+Y+&OrwwcLIcdP%qT)4zILxmZYM>}vCxZ2RtF3_ zLH}<)gq;XbS&VZ-vNtVD|G0gmlMN%FpM+O@D`P4NMAi|-qX1dmhJSW4{SGk1yxxP| zvL(*+OS1y*TMa}hHM-Q1i+0mBZr({tev5?DF+?)!gkz)8{d`Ul&O{3o^ z6%UhBzIY@|LB-0G$tE$}bb(JymC)&KQZJ*E{vpc%?p6#xSMv28DEy0u!Tg{?&O4p2 z>SIlByLwqwdwNng77oCnL0&)>&L92bPx5V6qqW17fRnwMZP9&z-Isoo)}D}s^1`$7 z0!n>YHM4mAFWku&g_fKIx11QF&1N*5-F!dZJ>_*!i|XgK4-OOc=NPZp?3A&1OReos zTPM8-2b#((16Y?U)O|wH^<&}ncVa9$>wSA>oZA!i`j~Taewh2_3;DU9&mwkC*s2ZJ z2VK0cX&0XMZJoou5&BS@;}A$PFQWnGgJ z`r$J-Fkfst!~av(J4Q$H_21j!#1q@r#I`lDZQItwNym0Fv2B|Z+nQjKbZpMk^Syun zSI?{J)$8=>Q&neGo%-y3?E>$jSv8B(&ahP)G&sKQxj=L!5iqT$Dmi^hB^;9C^#&GU z5M$B@3pF*3&HiQz*(0#}I%CS`#92A|vJ&pr#JB7u+Cz*bsW$x#^O&9cGEx?dn(?u0 zd&Lvucq4*swzaVF7uutAVQRNhO2f;e;7{1s!$@rgp$4sai97O>0>ZWR$GAy3 zkdmf&(a$(#!fhdX0buYuergLQuQqvK9Lk>71PM-ht78|chKZ%sOuFs%Ryex{cl$$Q zv{AeEE4n|f3Uj!Quy*`G@F|RI_K=?j)0#sj<*jF#p?P8MqSZ5sy3gr>EyZkm1}A!_ zP~mhWSMnX$xOrgEbuq3l3-5lVGfIDcJSy}+`vNBJPTtf{tVo9>k>zohtcEkRGV{}m z2}EmDzTn0*fMk@?e@_LdygGur2j%jbnhHw6Yw@p1iRr;^?N|bPm%orEaOvIfnMT|| z25O3gUdOjW1{sVuzH6VMo^MfB3TqJPgK@=;Ri8V+gu=2jNKRvCO}K-92_z0>+_Jp!94EO!hO3GT6UgA8d^+5J*dOuJ#_ak zC(GA)8oVm|9%w*2L2B`-C2N(){@=4nOTHKtLY_qW)&XcAY=RQ!i?av+TQ_x~qfd@0 z6^*NN>DolLQjd9%-~!!MMsfo{-3A>pRh5-tc7KeIK07iZMGTOvbP|wNi{HjlV+l*Y@#cZO}=2 zH8;eXx#TZKv8uEl%_Ese9~Fni89pm4>wi)UZGgjeZ5!($AONhm}6n7AqBYHJB{pd#&w`JBwXcv*wrng2+!?T*50 zxQtAv0g7W8n+_~wk>&yUH^}@AX&1RK8LCO-8OfKtVUr%`+KnNAXQ&7o)S~Fj;35EV z$UNwARK#NCTeJqxr5#(F=K`pYvL5`~9qj2}vx45ftftNV5p!ykTdSb!`@vF*eQ#BA z>J;d-|0H9X2)7WxRS;+)`Fy52MWxq9dx3{xoGeD(Fohkg?+Wk)QZqJv4Y-LqP`rr_2$-4a6dZ z9a`wGahpt(pK~~do2K9GJRkh3HLbE+DRdtteaEfCzU5xt!buwMOpps92^{`WE$4Lt zNPTX~%r$Hg)$*hXyL=$;;7Dx${;Gr}`%eL&kj zyZ4cEm2XN91=g+T%`;9}f-W#~-19h{CDCR6iR^!LEhwTo^v9LFnD`Fwe$50}S%wkr zZY0Ez1?z&m&%qYi{+EEqrBDQu8)h^m{`KBEeq?*<%|D86D~0npMRA*5y@c|E%4Y-y7$&b7l0!ax(dJK{?b5po-6@rXUjXlpyvdS$6uso>FIu&rmC zI{Fk6pJ=l>TlxN85zZ^t4p;b(t%(@h-u$>0be8OGAFcNG0%|B(E8 zf4bwdL8LtVcC@0dKLhA4)1FF9h3f$xDZ)woFNFnjnixvQ)8BlU`il?vAF)m35$k?K zg!I23A<}`N_tU>KE|Uv)yWz?v;ePa#%?ThS^OO!5E8V)A&bR%z99hj;cMMwD)o5;v zeZFim@ZQixkaJQl4!vUxPf;>K@bQ@3n>dJS<`m6(yn12b8#!2$bf(Gw9K^nPC%<}Q z@IF1`MDcW`aP|GXfBZ0f#{2m<`^au*nuim7xpnz+om0B|Uf2Lv&nr0b3x1|>@Er=| z0Yqp6hpC{122pn-e8iC@Yd7t-#|v{pZ{nEl)nzQYA?y#w4H_f^nUKHFWqi114_$%1 zkX3;$(RZVCOKMKC&(Q2J^o8@{VYb7A1B+=bf7W2gd8vRwp$BR4+nYOQLztO%2 zLZxn_&I&=1fyts9RQ{7Zc{7YXEY-}oH1~y{Trtt~+RakMpPXQ1G^EF6zXoZv1tmn$ zMepA#5I6`jk(1H!zptuZBFq=K&>TN4Dq^=jR|xWn!viKx2@L5wUz_W)7-9%DP+(`< zHlyhVj-UD$IqOo{u^CFIRZp2O@*sAHylHQPfSbLd27-$x2swjXiw)6$B)0voj8&ji zY!RzJNG3go6k4g+5a6o_I#$?-OcNpalPX-i-I?H6ikZAACgIawiH(uHe6!umeOJaZ zEi)AWGn+G6w$>EnnTKJ$r4^%&c9T_@bq;pD zL-7?M-kw(ms+5d6?scy?HOr(C{U3EO+I;~SMXZj~ZwZ0>DQ}1ggVQR#dN0=U_WkqG zLA3F#3D39%kh)u+?k#E1Ep{ZBi9dqWWs}1!JtTj2@;s%t?brf!EP3ZtX_H zE{&|vn{ibJ6UwA!ULIdQ)_Pu}4x?AxV6cc4bT;$hKjpgL#bnz>Z3LNP3?C@<;_R9m zTeF^G4V^0mcLOtxfG2jwAS~f`E`9L;ScU#VN=T|GUWO?J5s9(@Bcj3_RGrHQxzKgJ zqTf_>m#6<5Q}3eBW8V7N48#!cEk8uBB{%;JWn%rseOyXVr- z=9433q<(H9h=1+|=ksxZ@P!`tL}PWu8R2U)6OMtg^?TR*anSfICxy>Z@SkfF$iRR$Dg50e+}~tY z(OF2kOG|~YmNjqN+SoFRdb@xJ;&nVx{a4%(sv5yrUEeUM5ol$>;Wvlj^aF!>G&vqs zZlQ7M87ZII3@3U1|2)Hwu8$l!5YQkdSpEFx4))T6R`sjFWQoB8#c>m-ev9VB5Immr zMi=;#E`>z>&V_=aV${`+A*QFMLQG1b1Feh(8Hf*I;T?WTHzO?q!3*EN`xi#IQ4WI6 zS5Z;nOTzO5@P7!zpl6NZe~rBe$7*LHFpztf9YI z8N#_k;zMx#2<6g#iaxu5=o;+!VdpvMa4x>@nXCs1jPj5-CtV{*0u%9@d6E8GJ&S4_ z0@jhdb-RgTb?yhe9p1cKrYDX;UKTGsaj| z_;Hz*ZwTaa;?_`EUnT>)l;q6^QANx>hi?}h?G0aLDdof~o*fBOsXLTXjqpLvDB^gN zNIM7D$T*hMUHxM97Z?nLwT3{4jH^WEUABxX0cI_p-H^O1|KK@5J4Jk{5LwXYxYOsK z@E3HnV@1ScMTZO_a^ue_qfcP?3j*3P6XG$GLq?#;;5$Od3pUr3VIp&&Idh=<&^tZa zu_5kMU#IaW65O35;_ z)GCQ$fMa-_>?1}ts1FB0Xc#+rM!Y6F&C^F~d9}`+=?Tim)<-0PLPwf47gR=}&N^^r z(m6LX#*TBKjE;^`XlJrAuM*5l;ajv)F%gtSe`HslMo8}t(RICkIEC}?qjmf}CQ*|8 zu)mwpmej>qH;%#_=f2h%Mu=sX+LR4FDD?dMQ}oMiSKK-+Pyq^!V~|_hzXePEUjvYk zXcJYx64C14EBR1wG`dcWRT80YzsfKH!8*xbL$Js?9|K67vnvlj-)eXGL($fJi{xiK z7C3OX37xYSO0TV)+&%ks`BSMWP^PY57S@qdMRPMpX4X@|KZs{oOa*%ofYvAs50nv1 znCiY!74HO<`M4YE_sN({g84^Q^Wu_8u*GinvoOWPJu-g6sT5@h@*yo1|IropYWnR~ z(H4aTZX@Iz!x1 zJ~GX^S{c^~@8yzaDha8qf){B9b&>)`ip=5mr$^6TV{`B5{d4bvNRgZ?jge$+77L#@ z78B7Fq&(6^N*)~iFXxTH{sF7cgL+<&IFNYMk&Q;rcg_oYLXRFQKF8Kw90Son>{H-) zq&liWPHoxC~dP@Lx1`njQK4mSCzGiV4UbBoEcAOl6Z#Jd8own zqs7O!5Qqd8R^#i3DTNBg9{Y{u!)m zK#-D<60k4Jl9`+po=AW(2k_o*#(PZ<)zwN(QKTYMj02G^PRFxGs~H4RTlH+ z-~eH#vI_f#pb#t|4D#~Uv`CB-F8e_mUgrW|qvj}%fw`b#hN&1?le6qM`Rp3M9Bwu; zznG;XOr!0l<=-Awyc<3X{sqMxxo-DD-?Ba%#1**uFH28WfUF86d&K#+sRjc+aIq2s?3#!p! z?xenaey4-R7_G~QNlmY5rD25>DLOXdf|{u_f93Qy4T-&<_CsQp1(z&Y(lX!0h*;H(`@Cx6@SDx}Yb&A3xTT@y zR~0CztU?(yNkw1Y@K4Ik2WCy{YASY}aOi=2;xuTcDSj(d0&_)w->E&%8{pfc_3Hm) z`_TW7?Su4PpiZI(F@h>F(tNm{(Hq>p;Z!W08RwmiCygJE4 zTPCT-8%TD~oi2l9akDa>{UD$Zv1!n(Bs5vDOB;=)x*4>jqK~!U+7`$(=4h^}S{sW1 ziI*s5GO1e{L-WggE&fey_NW)2EF8A$MSvYIUy~c*r;$M};^D)!#?=iTswXd-m!?;B zwXXPOmjCgb{^NY(43=IweTW_c%u_;2@t^PR-LN7JPW`z&K>oBuDhnc6P2^A8soNI` zqFGsiwRgwc^e!>=!NKRso2eGOeL3Hcx#=HDyttEnjLebOA1(v?v8{KC)HY(E$jl)s zWNxz&1EG7?W+rFE1<(f;f;Hbwma93$qMm?1=0>Yjl_<#}&Oq{)nwl)`wDlpm>l^-b z3V?a@Dl*6y?m-4Habb@0r_eVTQQw{z;C@V;gD4dpy(t&`MZxqh0+nF((3r~0yZ7jW zCC>7e8QqT`#l6#}FcKqO0+4Lu6%-CTMrwbO556RZ2oxC*@Cw?*=4Wim4SZGFmo@j8 zf?>ZuG$MGDmR1%lfNO8K-9$iit~agy{oj{)m7Rh`xS=gRdqZ(PUuhp-3*v*AOeKCJ z*go_}eCYZP>{b9kdtqv%_?4Y^ZAQqy{JL6r$i?)i4f$F6mWrN^{n4t9_zNzM9|1Hs z&R9TFqlw1y?i*~@gn8mY(V6R+?t3`<(ntP%kwwRi!bQ$x%6wg`BDrOFeumA10HNW>R)KSZmpFS zR8|#`Y2B~q{r<~Oq=UPbY>gmK0pZ8_5hSo^+yTVzLkI%B*mAhyzxRPaY2 znEXa0F5H1I@jbeA8>5-4k&39%GeNBtrhxIp&H@~QK`Ya>>d;~4*I`iQB$Luw+>2^? z7DjO_VPk8nXo!u_V^5<1fZLTD<+B3OCRN^hn8DTI81EVO>);`bTBL@WSRyGJHK3ws z{ZI1gbxgJ3SlYfDe12_!9H=-%GyV_m>O@@bpZ3BSAR=bOxnU!;UALl1fzM;P<6D(p+5ZUE zM??F!?!Ifr4Gy>LNaf?G5|n7z+JXRa(aeG+w5++ZWP@l5L{lHdmHBA*2cr>@y;Kdn zo3@RcaW6L1s5XWB5&9zW|9AE6zW6ahpQ#lVg@Gx4b3#3SR~sS;P+b+?bp0Jls2vZ@ z38w9TCinBFOx8^5iBbd{jyN5Km?5THY&+^eE;hA{q^ZqYj1-k_kv&`(Ge8vqve1^| zd!Xi514Lwx?z8YYlr3+Tq{r3HEDxGcRD%naC%^T(D)ibk@mzi23h+2#lhttz`Qvl} z=x8r}Og`BJw-{;fEYdVBn9(3;T4p~4@&Fwm#$Ic~#?JT9LW_m{LE^zl?;&L)pAr&p z{K~tEV$vV8uO0dAx2KLxB&WsUjOZ0^OVjb_FOitl0yl=Svv&)b?_x!6S|y{fxx3#) zXf5o%mMya~VzbK4N8=`n!MDbYLNlOKkdN&<6<(M+!ETE0x6gBRdz_Es&+s=uIh#5> zCwYx+9&Dk>h7(y2VNY^QhCfQve0TCgqTVIYz0;u_AC9ZsU*eTqVjhLt5Hq#ro*w1S znx!e97YeqRFN)8Lg(J;t&MRz5x4I%#d6eTm-tmO7Cc};zaI8^e`sW!Kl?}R=QsN<) ze+Q+<7MM8W8`MfU8$pO=p=ZKq-bqPo@?f~ajy$q)l%-Y8q2L?Q-_m^5zw`Q^(RShn zWVEdUPUp?Onbx(0I9BP$PF=nR$Q|856H8Pk69pGxx+~DOhE_rjtN4-!@WEkWMj9Gp zq;4+@kV}_b+{WEAhjB*82LERBBiciu+PM|uO3qklv48X5QTuy6`>^z4mxt`KvIg?u zPQ>QE6wi-N`KwGEI=U+;FCE=KQ*S?C!-iW~pM^t6Q*zEqC6-@E|8z}0SkfFC+0BcU zEG$Tq@)T%hL`=YU%s>gD&j1e&mqjf;mKR9>z%W2vJ zRN*qEO^X<5%(YDc@wedT7}y;YnSdTf<`nHvivZ(Mv0ea!@^$?3^`i9?4e~BraXpd& z-R_($mW$PDjxN2*+GxTgdES=|G-L8tN!A}{x+={FHD{@Kybmj30ZqTG)kA%x;ggTA zA>UgclGGqHd|L^D^*Y{fGI$Y}caY-EJ~+s^a;)w4U3Uu8E0J#LT=_yheSe+rGKqPt zCvPwuH)n)Qb&7O4r&rHh+j5v{RERblH*MBH@Tnz5_VJDCo4u=$T|gKpF=|=3LZ&0^ zXJB>uZ(Y})%IgGI=6L6nvDOMEcR`29G}X$R`U3jGVXXp4+tzDonAJJ9ZwTkk_hrIN zB1ezUfydg}ZKhbjBe%u}91D)yCy!dnj6aiEBtqhPko(A&(&koDl`z`HF!%uP#IK}U z(PBT!!X#({Mh3;pkNe!k^A1Hhpy5DO&LPwZp~Da%@!EQnX`%NeQqqy2^6K3mmV6S- z-}H`;hz$4FMAXn4LPXrdiF))#LJnNLdO-$Ya}h?5-}iT}p+8$Yyf;!ZFF|JDF@9t0 zsDEx?-1X^|XnPywsQ?fl=X+-{X(2Rb7eTkK5H&+x`5qo&H@y=r1|z%LNc~vAaE&>6 z?UfL*a~2vm0ux|eH@Y?n zypFMB-otB19c0`g;_5lQaCBc5{I;fQ zKfSTS&A~^M57o<#4tKikli%4ey%A7Cwo>POY8@bzxu(3V_%h5f4vVG1pD9)%| zznqNX(bD3~vk8fw6>0MD1NoIUGsm0G!lZkYdkJrieXSLBcSG^?BaUzB`PSYoeK+2% z{GbnZZM&adqT5H-k;U$R)gW0bR~dl3SLw|7e$o&0Cs?9P+q5#PGrIFmBZyH<}cNMo-q2_lg zIdn*W)Yg>{G0W&c+IIhq+@lMAgXt<~F?a542aM=oPhI=c6zbClw(4OGWxrU!4T_aSjcMU1~( zjdy7Q zT5I8v;A}Cl`nX)P+|{%S%%ASyAQl`)pmK`p5>>42102maj(?|sd{A<5N~g?h5Ex!X z$B|Vr`whIEd`Iv{Yb{@q!K(aZ>l(xyh%eM(8-{S`^ryJPMN4wy_)10}Li23&!sc00 z@LnZA!AIyN+vX^@%WOS7q6aZyO|q$a8j6bACsAa0Mc!Y;@TjT;A3jlYX_nD(7MRsJ z{$|P56?%vMOE&PY7_MzzP2?{!W>5_qs-(L*xyIRM``4-kXSjD`x*QZ=pxVMVP+hAp z@dO*js#}nb`Ksf?1IjGYzMANha7@`l1(|N>UO-B#dQ)HAF)pHYr0Vo*GWCtS!~aV~ zm;~nsS*_L<2?cq>(&UXFGM%gzDK7k254=CLbAwPMWxjjz^aRTVfxJCvTFujYgnGi! zIf?%aSs|OKg(F$n=&v`lLN&H|s1$Y_+#9tL}F+cI`8M^7f3Znyqd6W`jIN!>tCUZO!-5?@-qC zI^MB6^P{@bQsL;3k6_9I17MV|a#)tqpw$;7-_VCUpxCW#bE1l8%>2ch;V zW(NBz5sa<}l)Zy@O3A2Rcs};dx2F~7HiB_^PwB%j2Sos5Z#u?X^pctYLB>!o;w13% zCDCFb#`Iv|tXvr=L}Iw?L?z+~)rRZ4dgp<0C&qzSVJ9ezqR#6F!w7eti32FVVq&(b z1mj$6`d@y9jwOz}$7+r?!x3E)(lE|>6$V*|qtGf-RA{V+48tO3-j%F(P=wzaxF+6v z3PjZ|E0Prcjk%s@3Oco26wB29wJIrGbieB37LBsWUXIzF*Y{3-d@PW^=oZixYN!u# zlTkF->Mj`efX)of#lIIFER4i`UUt*)@ZVc4tWFprfhk&~6gs}_Wj5k3k#FZ}Gcp{M z@oq8{+Pm_O%_4{7qcE5UR<0f0JN$H@W8V5d|9ezZ`L?SGY5c5x2(IO?Oo4?5Dxp;M zbLa%By8XXlzKNbQQa~tXydKoRbP{*Wj6QZT>(bA{)I%T)WJud#w-ZLefKA_>)qT-( z7g$ABfg|Zz?cdvSkEg|1=q#q^2`F=MZtY<1bnj`DJD=LHE>EP<(0VNkmfy`lI`=&D z^5mfMHWa*zSh>dFap?RY#8;!cLaVn#_0P+Hu!kK6L{ST-UJ}4M~j+ z-j3S6%1V7Ir8{a`8G^-IKDFO>wgR8LgDpx5u_qmfPd-?5ukjDJy{sboR~QI68eL9f z7E!~kIKN^R+h{eZtzLF*39kUJQXydi(y?bz3Mc*|vP!2ZAd`*UiYImD^D+T5W|`=L zG97Ew>LTqEzDd5VeQE=0o2$UGhW!!%V3S-EGJc(0v&bepsN`1K#gb?VV*1amA33WR zPN$()cm#2WRNW{+n^fH-r-Q~XiL19t@p^5)(HaMD)WA>*dR?PM-Pn=7(;5K0r0%Xo zA6~5mVfD;Dk~@dfRCp(zpOdT(AyETm&6oI%B#pAjwWL;?@3RL=iS$F-8io_Qr6t%t zu3QE62Iu{|Oc~(;PQ#(O%Gk$308lLR=Lj#!A?iD0px8^gSPd9pYJMu4r&Y-se2oN(DSG2u$m{>}@7B5(I)F693hpCS-fKveKv8*BTKH8DJi9 zsoEy5T1YqFh0V&xL67hAkLgYXX75#xr;wyOXcx{ai8$GDzep2}siE|*T!^MB z!-&Hfq2CqL^@CqU>9^oocq@AjS6Syr_`kOH7c!kZ$4qoO;YC>Q4B@fiR0Zw(>|Ffz zs_ufZQY~x`yH_71BVzvxNYpG{O<@V&Ail`Kk&y4@Q6iBY+HZ9z_IBk$z?xl}5A8v( z+v2I8%ncs`ZsC}Q6*5*&2#@7_Y^|yHUfmTTXdRxFFAPD_!aUh~jTrr4(d9zB&=YQ6 zbj~P2w@}1`LHspu)V}~{>es1NIQ<2${NQBNK|iA=Zn=}iMo{IvA2ky%O?m-k<0Akl zuS+6c8%HXTQ;4@(;dsxs>!t9Hk#8Oap^f*o&7C}zF-Jv;Rsg5v{I!XIu;fwCx!1Q2 z(rO1nYx8^+sWbpachDN&&#TQvDL19Q9ZQ;nv6YLx{)`>Qy@jN5-ju_aYv+D{27+tM z{$UtrnINakky&ATkH>yvwVyJLD0_~0N5NTDaD|CwIg&wV;mYWqY_WGy#*ty@QD2#G zDMj#d-fP8XM)7Y27fWdzIXm#=3M)7CNNM};)8F^LMQV0jEMx7(n=E3zzoU%dl@VD0B7KWpjINcyn=M;5^4l{H z4Cd!T>bu6v+^TS%!#5bskZi_g_26ELP|> zyDA8U3V18SR9_Q`Lmo5*Eo&`)8EBh6<&RpHMoAjuGSi!8-0JacR|R`5GAUshdQ2IL z3gNq@1ZcEbyn@ab*W1vMMGWSm-Kx@Gn|R;Y5z~G`sCfixN01sm)vBF5s%>m*kHUg+ z@Lq-${Q|{@9#=wZWJy1xEt=zgbq9nMNgDguKy=KcB$4F9lq$70f_hYO{dv<3r=W%B z#jgy$rCo3stx_?@N$&|LdVsdhr2nxqvx2vmQVo%R5qYa7)*Dxl2Ry1uO{9E~=0lP$ zt}qJwXq0zU+Y%k4S*nt#iO)HeIJ@{Aaw(rG^%WOBn@tvLCZUeE$#mp}KQ=o1lV3^{ zmL4gLdRlnYHz(;ENr2f)rO+>>9C{n<0XC=~_46bo641Cnlp$DVoXbf}Ew_MX#G34z z7r9pu)=%5p>N#tExi*klt_5&$n>KB}z z9ibxwY<i@XCJRXSz)Jv)7i$PlCmif` z&|VEEuOc|Iz=|(!99=27B#sIVQ`onO*#WofH1_zXW;TR*mBtWp2Whp5L)-$6cBFt7 zHL|;uC^~}$%<#H3%buwjsi#PGcQsdtrD4&88H+;k2~-jO83TEJ)vTRupUDmb zt0euVQ$l9MMwy9+PlM@;$-bh7YPZ)SA!wez z;?muO835h>mCQsrzST6x0&Y>PMJ1VaT%H3Xrmlf78%Gy z<#ThHCJuxGO-JM~b84$2I2&Ya+%cuz-y|2(IwA+yN341BTE`K;R#+27E4P@}5`f<# zRaYpCu4N@25gIJo(NhB)6Xe<0N7tvim7`6|?%o16BQMma|)cV_Q+jR=x#9$gvaq0kRN5)6Ki|hJsI{xKK5fCEsq~geN-Qt zCAuNK6N51o(tx~$p$ZPv*L^0ALx-SnF8T3?1V#E_5@O)SS!g&2_8{d)uxMPn(L+z( z*n<+We;h$RhWs!Ba>09M9iQ+Q4_H-rVt5|1$PrCalVr)b$fiqK);aMUpROWlJr_F3 z@Tlr9{HSuF7+tMOBdjw<%HycI;`ssr7K4#BUDfI?R8~|O_uu1XC%BIvGyvl)$dAo!6e-T_ zJ8Qd)C?23y-nKrLLZC7lmsyzerY;tr1FL!Wl~;`{T%C?}Q4PvI{$t6f5; + + + + + Python Module Index — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    +
      +
    • + +
    • +
    • +
    +
    +
    +
    +
    + + +

    Python Module Index

    + +
    + s +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     
    + s
    + scitex +
        + scitex.ai +
        + scitex.app +
        + scitex.audio +
        + scitex.audit +
        + scitex.benchmark +
        + scitex.bridge +
        + scitex.browser +
        + scitex.canvas +
        + scitex.capture +
        + scitex.clew +
        + scitex.cli +
        + scitex.cloud +
        + scitex.compat +
        + scitex.config +
        + scitex.container +
        + scitex.context +
        + scitex.cv +
        + scitex.dataset +
        + scitex.datetime +
        + scitex.db +
        + scitex.decorators +
        + scitex.dev +
        + scitex.diagram +
        + scitex.dict +
        + scitex.dsp +
        + scitex.etc +
        + scitex.events +
        + scitex.gen +
        + scitex.gists +
        + scitex.git +
        + scitex.introspect +
        + scitex.io +
        + scitex.linalg +
        + scitex.logging +
        + scitex.media +
        + scitex.module +
        + scitex.msword +
        + scitex.nn +
        + scitex.notebook +
        + scitex.notification +
        + scitex.os +
        + scitex.parallel +
        + scitex.path +
        + scitex.pd +
        + scitex.plt +
        + scitex.project +
        + scitex.repro +
        + scitex.resource +
        + scitex.rng +
        + scitex.schema +
        + scitex.scholar +
        + scitex.security +
        + scitex.session +
        + scitex.sh +
        + scitex.social +
        + scitex.stats +
        + scitex.str +
        + scitex.template +
        + scitex.tex +
        + scitex.torch +
        + scitex.tunnel +
        + scitex.types +
        + scitex.ui +
        + scitex.web +
        + scitex.writer +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/quickstart.html b/src/scitex/_sphinx_html/quickstart.html new file mode 100644 index 000000000..d2948cf8e --- /dev/null +++ b/src/scitex/_sphinx_html/quickstart.html @@ -0,0 +1,907 @@ + + + + + + + + + Quick Start — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Quick Start

    +
    +

    Three Interfaces

    +

    SciTeX exposes the same capabilities through three interfaces: +Python API, CLI commands, and MCP tools for AI agents.

    +
    +

    Python API

    +

    @stx.session – Reproducible Experiment Tracking

    +
    import scitex as stx
    +
    +@stx.session
    +def main(filename="demo.jpg"):
    +    fig, ax = stx.plt.subplots()
    +    ax.plot_line(t, signal)
    +    ax.set_xyt("Time (s)", "Amplitude", "Title")
    +    stx.io.save(fig, filename)
    +    return 0
    +
    +
    +

    Output:

    +
    script_out/FINISHED_SUCCESS/2025-01-08_12-30-00_AbC1/
    +|-- demo.jpg                    # Figure with embedded metadata
    +|-- demo.csv                    # Auto-exported plot data
    +|-- CONFIGS/CONFIG.yaml         # Reproducible parameters
    ++-- logs/{stdout,stderr}.log    # Execution logs
    +
    +
    +

    stx.io – Universal File I/O (30+ formats)

    +
    stx.io.save(df, "output.csv")
    +stx.io.save(fig, "output.jpg")
    +df = stx.io.load("output.csv")
    +
    +
    +

    stx.stats – Publication-Ready Statistics (23 tests)

    +
    result = stx.stats.test_ttest_ind(group1, group2, return_as="dataframe")
    +# Includes: p-value, effect size, CI, normality check, power
    +
    +
    +

    stx.plt – Publication-Ready Figures

    +
    fig, ax = stx.plt.subplots()
    +ax.plot_line(x, y, label="signal")
    +ax.set_xyt("Time (s)", "Amplitude", "Sine Wave")
    +stx.io.save(fig, "plot.png")
    +# Creates: plot.png + plot.csv + plot.yaml (recipe for reproduction)
    +
    +
    +

    stx.scholar – Literature Management

    +
    # Enrich BibTeX with abstracts, DOIs, citation counts
    +stx.scholar.enrich_bibtex("refs.bib", add_abstracts=True)
    +
    +
    +
    +
    +

    CLI Commands

    +
    scitex --help-recursive              # Show all commands
    +scitex scholar fetch "10.1038/..."   # Download paper by DOI
    +scitex scholar bibtex refs.bib       # Enrich BibTeX
    +scitex stats recommend               # Suggest statistical tests
    +scitex audio speak "Done"            # Text-to-speech
    +scitex capture snap                  # Screenshot
    +
    +
    +
    +
    +

    MCP Tools (120+ tools for AI agents)

    +

    Turn AI agents into autonomous scientific researchers.

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Category

    Tools

    Description

    writer

    28

    LaTeX manuscript compilation

    scholar

    23

    PDF download, metadata enrichment

    capture

    12

    Screen monitoring and capture

    introspect

    12

    Python code introspection

    audio

    10

    Text-to-speech, audio playback

    stats

    10

    Automated statistical testing

    plt

    9

    Matplotlib figure creation

    diagram

    9

    Mermaid and Graphviz diagrams

    dataset

    8

    Neuroimaging/physiology datasets

    social

    7

    Social media posting

    canvas

    7

    Figure composition

    template

    6

    Project scaffolding

    verify

    6

    Reproducibility verification

    dev

    6

    Version checking

    ui

    5

    Notifications

    linter

    3

    Code pattern checking

    +

    Claude Code Setup — add .mcp.json to your project root. Use SCITEX_ENV_SRC +to load all configuration from a .src file — this keeps .mcp.json static +across environments:

    +
    {
    +  "mcpServers": {
    +    "scitex": {
    +      "command": "scitex",
    +      "args": ["mcp", "start"],
    +      "env": {
    +        "SCITEX_ENV_SRC": "${SCITEX_ENV_SRC}"
    +      }
    +    }
    +  }
    +}
    +
    +
    +

    Switch environments via your shell profile:

    +
    # Local machine
    +export SCITEX_ENV_SRC=~/.scitex/scitex/local.src
    +
    +# Remote server
    +export SCITEX_ENV_SRC=~/.scitex/scitex/remote.src
    +
    +
    +

    Generate a template .src file:

    +
    scitex env-template -o ~/.scitex/scitex/local.src
    +
    +
    +

    Or install globally:

    +
    scitex mcp install
    +
    +
    +
    +
    +
    +

    Complete Example

    +

    A typical research script combining session, I/O, plotting, and statistics:

    +
    import scitex as stx
    +
    +@stx.session
    +def main(
    +    n=200,
    +    noise=0.1,
    +    CONFIG=stx.INJECTED,
    +    plt=stx.INJECTED,
    +    logger=stx.INJECTED,
    +):
    +    """Analyze noisy sine wave."""
    +    import numpy as np
    +
    +    # Generate data
    +    x = np.linspace(0, 4 * np.pi, n)
    +    y_clean = np.sin(x)
    +    y_noisy = y_clean + np.random.normal(0, noise, n)
    +
    +    # Save raw data
    +    stx.io.save({"x": x, "y_clean": y_clean, "y_noisy": y_noisy}, "data.npz")
    +
    +    # Visualize
    +    fig, ax = plt.subplots()
    +    ax.plot_scatter(x, y_noisy, alpha=0.3, label="Noisy")
    +    ax.plot_line(x, y_clean, color="red", label="True")
    +    ax.set_xyt("x", "y", f"Sine Wave (noise={noise})")
    +    stx.io.save(fig, "sine.png")
    +
    +    # Correlation between noisy and clean
    +    result = stx.stats.test_pearson(y_clean, y_noisy)
    +    logger.info(f"Pearson r={result['effect_size']:.3f}, p={result['pvalue']:.1e}")
    +
    +    # Save summary
    +    stx.io.save({"r": result["effect_size"], "p": result["pvalue"]}, "stats.yaml")
    +
    +    return 0
    +
    +
    +
    +
    +

    Next Steps

    + +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/search.html b/src/scitex/_sphinx_html/search.html new file mode 100644 index 000000000..4786d7652 --- /dev/null +++ b/src/scitex/_sphinx_html/search.html @@ -0,0 +1,690 @@ + + + + + + + + Search — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    +
      +
    • + +
    • +
    • +
    +
    +
    +
    +
    + + + + +
    + +
    + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/searchindex.js b/src/scitex/_sphinx_html/searchindex.js new file mode 100644 index 000000000..5a6437809 --- /dev/null +++ b/src/scitex/_sphinx_html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles":{"AI Module (stx.ai)":[[30,null],[99,null]],"API Reference":[[0,null],[30,"api-reference"],[39,"api-reference"],[43,"api-reference"],[50,"api-reference"],[52,"api-reference"],[54,"api-reference"],[57,"api-reference"],[61,"api-reference"],[62,"api-reference"],[64,"api-reference"],[65,"api-reference"],[69,"api-reference"],[75,"api-reference"],[76,"api-reference"],[78,"api-reference"],[82,"api-reference"],[84,"api-reference"],[87,"api-reference"],[89,"api-reference"],[97,"api-reference"],[99,"module-scitex.ai"],[100,"module-scitex.app"],[101,"module-scitex.audio"],[107,"module-scitex.capture"],[108,"module-scitex.clew"],[110,"module-scitex.cloud"],[112,"module-scitex.config"],[116,"module-scitex.dataset"],[119,"module-scitex.decorators"],[120,"module-scitex.dev"],[121,"module-scitex.diagram"],[123,"module-scitex.dsp"],[126,"module-scitex.gen"],[129,null],[130,"module-scitex.introspect"],[131,"module-scitex.io"],[133,"api-reference"],[134,"module-scitex.logging"],[138,"module-scitex.nn"],[140,"module-scitex.notification"],[144,"module-scitex.pd"],[147,"module-scitex.repro"],[151,"module-scitex.scholar"],[153,"module-scitex.session"],[156,"module-scitex.stats"],[158,"module-scitex.template"],[166,"module-scitex.writer"]],"API Tree":[[61,"api-tree"],[130,"api-tree"]],"App Module (stx.app)":[[100,null]],"Architecture":[[26,"architecture"]],"Architectures":[[69,"architectures"],[138,"architectures"]],"Area Plots":[[27,"area-plots"],[170,"area-plots"]],"Attention & Shape":[[69,"attention-shape"],[138,"attention-shape"]],"Audio":[[167,"audio"]],"Audio Module (stx.audio)":[[101,null]],"Auto-Ordering":[[50,"auto-ordering"],[119,"auto-ordering"]],"Available Functions":[[54,"available-functions"],[75,"available-functions"],[78,"available-functions"],[123,"available-functions"],[144,"available-functions"],[147,"available-functions"]],"Available Tests":[[87,"available-tests"],[156,"available-tests"]],"Available profiles:":[[137,"available-profiles"]],"Axis Helpers":[[76,"axis-helpers"]],"Axis Methods":[[145,"axis-methods"]],"Axis Utilities":[[145,"axis-utilities"]],"Backends":[[52,"backends"],[121,"backends"]],"Bar Plots":[[145,"bar-plots"]],"Basic Usage":[[84,"basic-usage"],[153,"basic-usage"]],"Batch Processing":[[50,"batch-processing"],[119,"batch-processing"]],"Best Practices":[[26,"best-practices"],[84,"best-practices"],[153,"best-practices"]],"Bulk Rename":[[120,"bulk-rename"]],"CLI Access":[[110,"cli-access"],[116,"cli-access"],[140,"cli-access"]],"CLI Commands":[[39,"cli-commands"],[98,"cli-commands"],[108,"cli-commands"]],"CLI Reference":[[167,null]],"CLI Usage":[[82,"cli-usage"],[97,"cli-usage"],[151,"cli-usage"],[166,"cli-usage"],[174,"cli-usage"]],"CONFIG Object":[[84,"config-object"],[153,"config-object"]],"Caching":[[50,"caching"],[119,"caching"],[131,"caching"]],"Capture":[[167,"capture"]],"Capture Module (stx.capture)":[[107,null]],"Categorical Plots":[[27,"categorical-plots"],[145,"categorical-plots"],[170,"categorical-plots"]],"Channel Manipulation":[[69,"channel-manipulation"],[138,"channel-manipulation"]],"Classification":[[30,"classification"],[99,"classification"]],"Clew Module (stx.clew)":[[39,null],[108,null]],"Cloud Module (stx.cloud)":[[110,null]],"Code Analysis":[[61,"code-analysis"],[130,"code-analysis"]],"Code Templates":[[89,"code-templates"],[158,"code-templates"]],"Compilation Options":[[97,"compilation-options"],[166,"compilation-options"]],"Complete Example":[[98,"complete-example"]],"Config Module (stx.config)":[[43,null],[112,null]],"Configuration":[[26,"configuration"],[64,"configuration"],[133,"configuration"],[168,"configuration"]],"Contour and Vector Plots":[[27,"contour-and-vector-plots"],[170,"contour-and-vector-plots"]],"Core":[[60,null],[129,null]],"Core Concepts":[[26,null],[168,null]],"Core Install":[[29,"core-install"],[172,"core-install"]],"Creating an Application":[[100,"creating-an-application"]],"DSP Module (stx.dsp)":[[54,null],[123,null]],"Data & I/O":[[60,null],[129,null]],"Data API":[[110,"data-api"]],"Data Sources":[[82,"data-sources"],[151,"data-sources"]],"Dataset Module (stx.dataset)":[[116,null]],"Decorator Options":[[84,"decorator-options"],[153,"decorator-options"]],"Decorators Module (stx.decorators)":[[50,null],[119,null]],"Delegation Pattern":[[168,"delegation-pattern"],[169,"delegation-pattern"]],"Dependency Chains":[[39,"dependency-chains"],[108,"dependency-chains"]],"Descriptive Statistics":[[87,"descriptive-statistics"],[156,"descriptive-statistics"]],"Dev":[[167,"dev"]],"Dev Module (stx.dev)":[[120,null]],"Development":[[129,null]],"Development Install":[[29,"development-install"],[172,"development-install"]],"Diagram Module (stx.diagram)":[[52,null],[121,null]],"Diagram Types":[[52,"diagram-types"],[121,"diagram-types"]],"Distribution Plots":[[27,"distribution-plots"],[145,"distribution-plots"],[170,"distribution-plots"]],"Document Management":[[97,"document-management"],[166,"document-management"]],"Documentation":[[61,"documentation"],[120,"documentation"],[130,"documentation"]],"Ecosystem":[[169,null]],"Ecosystem Management":[[120,"ecosystem-management"]],"Ecosystem Packages":[[120,"id1"]],"Example":[[13,null],[15,null],[15,null],[15,null],[15,null],[15,null],[114,null],[114,null],[115,null],[124,null],[124,null],[134,null],[143,null],[143,null],[143,null],[143,null],[143,null],[148,null],[148,null]],"Example Output":[[133,"example-output"]],"Example Workflow":[[173,"example-workflow"]],"Examples":[[2,null],[2,null],[2,null],[2,null],[3,null],[3,null],[3,null],[13,null],[13,null],[15,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[18,null],[25,null],[25,null],[25,null],[108,null],[108,null],[108,null],[108,null],[112,null],[112,null],[112,null],[114,null],[114,null],[114,null],[114,null],[120,null],[120,null],[120,null],[134,null],[134,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[137,null],[139,null],[142,null],[143,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[147,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[149,null],[166,null],[166,null],[166,null]],"Exception Hierarchy":[[65,"exception-hierarchy"],[134,"exception-hierarchy"]],"Figure Composition":[[76,"figure-composition"]],"Figure Saving":[[62,"figure-saving"]],"Figure and Axis Creation":[[145,"figure-and-axis-creation"]],"File Storage":[[110,"file-storage"]],"Filtering and Sorting":[[82,"filtering-and-sorting"],[151,"filtering-and-sorting"]],"Format Registry":[[131,"format-registry"]],"Four Freedoms for Research":[[28,"four-freedoms-for-research"]],"Gallery":[[145,"gallery"]],"Gen Module (stx.gen)":[[57,null],[126,null]],"General":[[167,"general"]],"Getting Started":[[28,null],[171,"getting-started"],[171,null]],"Git Strategies":[[89,"git-strategies"],[158,"git-strategies"]],"Guides":[[171,null]],"HDF5 and Zarr Exploration":[[131,"hdf5-and-zarr-exploration"]],"HPC Testing":[[120,"hpc-testing"]],"Heatmaps":[[145,"heatmaps"]],"Heatmaps and Grids":[[27,"heatmaps-and-grids"],[170,"heatmaps-and-grids"]],"Hot Reload":[[120,"hot-reload"]],"How It Works":[[39,"how-it-works"],[84,"how-it-works"],[108,"how-it-works"],[153,"how-it-works"]],"I/O Module (stx.io)":[[131,null]],"IO Module (stx.io)":[[62,null]],"IPython-Style Shortcuts":[[61,"ipython-style-shortcuts"],[130,"ipython-style-shortcuts"]],"Implementations":[[100,"implementations"]],"Indices and tables":[[171,"indices-and-tables"]],"Infrastructure":[[60,null],[129,null]],"Injected Parameters":[[84,"injected-parameters"],[153,"injected-parameters"]],"Installation":[[29,null],[169,"installation"],[172,null]],"Integration with @stx.session":[[140,"integration-with-stx-session"]],"Interfaces":[[64,"interfaces"],[133,"interfaces"],[171,null]],"Introspect":[[167,"introspect"]],"Introspect Module (stx.introspect)":[[61,null],[130,null]],"Job Management":[[110,"job-management"]],"Key Classes":[[43,"key-classes"],[82,"key-classes"],[97,"key-classes"],[112,"key-classes"],[151,"key-classes"],[166,"key-classes"]],"Key Features":[[100,"key-features"],[110,"key-features"],[171,"key-features"]],"Key Functions":[[39,"key-functions"],[101,"key-functions"],[107,"key-functions"],[108,"key-functions"],[116,"key-functions"],[131,"key-functions"],[140,"key-functions"]],"LLM-friendly Types":[[120,"llm-friendly-types"]],"Line Plots":[[27,"line-plots"],[145,"line-plots"],[170,"line-plots"]],"Linter Module (stx.linter)":[[64,null],[133,null]],"Literature & Writing":[[60,null],[129,null]],"Literature Management":[[174,"literature-management"]],"Local Database":[[116,"local-database"]],"Log Levels":[[65,"log-levels"],[134,"log-levels"]],"Logging Module (stx.logging)":[[65,null],[134,null]],"MCP Interface":[[158,"mcp-interface"]],"MCP Server":[[173,null]],"MCP Tools (120+ tools for AI agents)":[[98,"mcp-tools-120-tools-for-ai-agents"]],"MCP and CLI Wrappers":[[120,"mcp-and-cli-wrappers"]],"MM-Based Layout":[[76,"mm-based-layout"]],"Machine Learning":[[60,null],[129,null]],"Metrics":[[30,"metrics"],[99,"metrics"]],"Modular Architecture":[[168,"modular-architecture"]],"Module Overview":[[60,null]],"Multiple Comparison Correction":[[87,"multiple-comparison-correction"],[156,"multiple-comparison-correction"]],"NN Module (stx.nn)":[[69,null],[138,null]],"Next Steps":[[98,"next-steps"]],"Node Emphasis":[[52,"node-emphasis"],[121,"node-emphasis"]],"Node Shapes":[[52,"node-shapes"],[121,"node-shapes"]],"Notes":[[137,null]],"Notification Module (stx.notification)":[[140,null]],"Other":[[30,"other"],[60,null],[99,"other"],[129,null]],"Other Functions":[[62,"other-functions"]],"Output Directory Structure":[[84,"output-directory-structure"],[153,"output-directory-structure"]],"Output Formats":[[87,"output-formats"],[156,"output-formats"]],"Overview":[[100,"overview"],[110,"overview"],[120,"overview"]],"PD Module (stx.pd)":[[75,null],[144,null]],"PLT Module (stx.plt)":[[76,null]],"Package Reference":[[169,"package-reference"]],"Paper Metadata":[[82,"paper-metadata"],[151,"paper-metadata"]],"Paper Modes":[[52,"paper-modes"],[121,"paper-modes"]],"Path Management":[[43,"path-management"],[112,"path-management"]],"Per-Module Extras":[[29,"per-module-extras"],[172,"per-module-extras"]],"Plot Gallery":[[27,null],[170,null]],"Plot Types (47)":[[76,"plot-types-47"]],"Plugin Architecture":[[133,"plugin-architecture"]],"Post-hoc Tests":[[87,"post-hoc-tests"],[156,"post-hoc-tests"]],"Priority Resolution":[[43,"priority-resolution"],[112,"priority-resolution"]],"Project Organization":[[82,"project-organization"],[151,"project-organization"]],"Project Structure":[[97,"project-structure"],[166,"project-structure"]],"Project Templates":[[89,"project-templates"],[158,"project-templates"]],"Provenance Tracking":[[62,"provenance-tracking"]],"Provenance Tracking (Clew)":[[26,"provenance-tracking-clew"]],"Publication-Ready Figures":[[174,"publication-ready-figures"]],"Python API":[[89,"python-api"],[98,"python-api"],[158,"python-api"]],"Quick Reference":[[30,"quick-reference"],[43,"quick-reference"],[50,"quick-reference"],[52,"quick-reference"],[54,"quick-reference"],[57,"quick-reference"],[61,"quick-reference"],[62,"quick-reference"],[64,"quick-reference"],[65,"quick-reference"],[69,"quick-reference"],[75,"quick-reference"],[76,"quick-reference"],[78,"quick-reference"],[82,"quick-reference"],[87,"quick-reference"],[97,"quick-reference"],[99,"quick-reference"],[112,"quick-reference"],[119,"quick-reference"],[121,"quick-reference"],[123,"quick-reference"],[126,"quick-reference"],[130,"quick-reference"],[134,"quick-reference"],[138,"quick-reference"],[144,"quick-reference"],[147,"quick-reference"],[151,"quick-reference"],[156,"quick-reference"],[166,"quick-reference"]],"Quick Start":[[98,null],[100,"quick-start"],[101,"quick-start"],[107,"quick-start"],[110,"quick-start"],[116,"quick-start"],[131,"quick-start"],[133,"quick-start"],[140,"quick-start"]],"Quickstart":[[174,null]],"RandomStateManager":[[78,"randomstatemanager"],[147,"randomstatemanager"]],"Recommended: Install Everything":[[29,"recommended-install-everything"],[172,"recommended-install-everything"]],"Reference":[[171,null]],"Repository Operations":[[110,"repository-operations"]],"Repro Module (stx.repro)":[[78,null],[147,null]],"Reproducible Figures":[[76,"reproducible-figures"]],"Requirements":[[29,"requirements"],[172,"requirements"]],"Research Workflow":[[26,"research-workflow"],[29,"research-workflow"],[172,"research-workflow"]],"Role in SciTeX Ecosystem":[[28,"role-in-scitex-ecosystem"]],"Rule Categories":[[64,"rule-categories"],[133,"rule-categories"]],"Scatter Plots":[[27,"scatter-plots"],[145,"scatter-plots"],[170,"scatter-plots"]],"Scholar":[[167,"scholar"]],"Scholar Module (stx.scholar)":[[82,null],[151,null]],"SciTeX Documentation":[[171,null]],"SciTeX \u2013 Modular Python Toolkit for Researchers and AI Agents":[[28,null]],"Science & Analysis":[[60,null],[129,null]],"Seaborn Wrappers":[[145,"seaborn-wrappers"]],"Seaborn-Style Data Parameter":[[87,"seaborn-style-data-parameter"],[156,"seaborn-style-data-parameter"]],"Session Decorator":[[168,"session-decorator"],[174,"session-decorator"]],"Session Decorator (@stx.session)":[[84,null],[153,null]],"Setup":[[173,"setup"]],"Severity Levels":[[64,"severity-levels"],[133,"severity-levels"]],"Signal Processing Layers":[[69,"signal-processing-layers"],[138,"signal-processing-layers"]],"Special Plots":[[27,"special-plots"],[145,"special-plots"],[170,"special-plots"]],"Statistical Analysis":[[174,"statistical-analysis"]],"Statistical Annotations":[[76,"statistical-annotations"]],"Statistical Plots":[[27,"statistical-plots"],[145,"statistical-plots"],[170,"statistical-plots"]],"Stats":[[167,"stats"]],"Stats Module (stx.stats)":[[87,null],[156,null]],"Storage Architecture":[[82,"storage-architecture"],[151,"storage-architecture"]],"Strategy:":[[137,"strategy"]],"Stream Redirection":[[65,"stream-redirection"],[134,"stream-redirection"]],"Style Presets":[[76,"style-presets"]],"Supported Backends":[[140,"supported-backends"]],"Supported Formats":[[62,"supported-formats"],[131,"supported-formats"]],"Supported Sources":[[116,"supported-sources"]],"Template":[[167,"template"]],"Template Module (stx.template)":[[89,null],[158,null]],"Test Recommendation":[[87,"test-recommendation"],[156,"test-recommendation"]],"The Session Model":[[26,"the-session-model"]],"Three Interfaces":[[98,"three-interfaces"],[168,"three-interfaces"]],"Tool Categories":[[173,"tool-categories"]],"Training":[[30,"training"],[99,"training"]],"Type Analysis":[[61,"type-analysis"],[130,"type-analysis"]],"Type Conversion":[[50,"type-conversion"],[119,"type-conversion"]],"Typical usage:":[[137,"typical-usage"]],"Unified File I/O":[[174,"unified-file-i-o"]],"Unified I/O":[[168,"unified-i-o"]],"Universal I/O":[[26,"universal-i-o"]],"Use Cases":[[101,"use-cases"],[107,"use-cases"]],"Using uv (recommended)":[[29,"using-uv-recommended"],[172,"using-uv-recommended"]],"Utilities":[[50,"utilities"],[60,null],[119,"utilities"],[129,null]],"Utility Functions":[[43,"utility-functions"],[112,"utility-functions"]],"Verification Levels":[[39,"verification-levels"],[108,"verification-levels"]],"Verification Statuses":[[39,"verification-statuses"],[108,"verification-statuses"]],"Verifying the Installation":[[29,"verifying-the-installation"],[172,"verifying-the-installation"]],"Visualization":[[30,"visualization"],[99,"visualization"]],"Warning Categories":[[65,"warning-categories"],[134,"warning-categories"]],"What You Get":[[158,"what-you-get"]],"What is MCP?":[[173,"what-is-mcp"]],"Writer Module (stx.writer)":[[97,null],[166,null]],"Writing Guidelines":[[97,"writing-guidelines"],[166,"writing-guidelines"]],"YAML Configuration":[[43,"yaml-configuration"],[112,"yaml-configuration"]],"YAML Specification":[[52,"yaml-specification"],[121,"yaml-specification"]],"app Module (stx.app)":[[31,null]],"audio Module (stx.audio)":[[32,null]],"audit Module (stx.audit)":[[33,null],[102,null]],"benchmark Module (stx.benchmark)":[[34,null],[103,null]],"bridge Module (stx.bridge)":[[35,null],[104,null]],"browser Module (stx.browser)":[[36,null],[105,null]],"canvas Module (stx.canvas)":[[37,null],[106,null]],"capture Module (stx.capture)":[[38,null]],"cli Module (stx.cli)":[[40,null],[109,null]],"cloud Module (stx.cloud)":[[41,null]],"compat Module (stx.compat)":[[42,null],[111,null]],"config(**kwargs)":[[140,"config-kwargs"]],"container Module (stx.container)":[[44,null],[113,null]],"context Module (stx.context)":[[45,null],[114,null]],"crop(image, region)":[[107,"crop-image-region"]],"cv Module (stx.cv)":[[46,null],[115,null]],"dataset Module (stx.dataset)":[[47,null]],"datetime Module (stx.datetime)":[[48,null],[117,null]],"db Module (stx.db)":[[49,null],[118,null]],"dev Module (stx.dev)":[[51,null]],"dict Module (stx.dict)":[[53,null],[122,null]],"etc Module (stx.etc)":[[55,null],[124,null]],"events Module (stx.events)":[[56,null],[125,null]],"fetch(source, **kwargs)":[[116,"fetch-source-kwargs"]],"gists Module (stx.gists)":[[58,null],[127,null]],"git Module (stx.git)":[[59,null],[128,null]],"linalg Module (stx.linalg)":[[63,null],[132,null]],"list_backends()":[[101,"list-backends"],[140,"list-backends"]],"list_formats()":[[131,"list-formats"]],"list_sources()":[[116,"list-sources"]],"load(path)":[[131,"load-path"]],"load_configs(pattern=\"./config/*.yaml\")":[[131,"load-configs-pattern-config-yaml"]],"media Module (stx.media)":[[66,null],[135,null]],"module Module (stx.module)":[[67,null],[136,null]],"monitor(interval=1.0, duration=None, output_dir=\".\")":[[107,"monitor-interval-1-0-duration-none-output-dir"]],"msword Module (stx.msword)":[[68,null],[137,null]],"notebook Module (stx.notebook)":[[70,null],[139,null]],"notify Module (stx.notify)":[[71,null]],"os Module (stx.os)":[[72,null],[141,null]],"parallel Module (stx.parallel)":[[73,null],[142,null]],"path Module (stx.path)":[[74,null],[143,null]],"play(path)":[[101,"play-path"]],"project Module (stx.project)":[[77,null],[146,null]],"resource Module (stx.resource)":[[79,null],[148,null]],"rng Module (stx.rng)":[[80,null],[149,null]],"save(obj, path, **kwargs)":[[131,"save-obj-path-kwargs"]],"schema Module (stx.schema)":[[81,null],[150,null]],"scitex.ai API Reference":[[1,null]],"scitex.clew API Reference":[[2,null]],"scitex.config API Reference":[[3,null]],"scitex.db API Reference":[[4,null]],"scitex.decorators API Reference":[[5,null]],"scitex.diagram API Reference":[[6,null]],"scitex.dict API Reference":[[7,null]],"scitex.dsp API Reference":[[8,null]],"scitex.gen API Reference":[[9,null]],"scitex.introspect API Reference":[[10,null]],"scitex.io API Reference":[[11,null]],"scitex.linter":[[12,null]],"scitex.logging API Reference":[[13,null]],"scitex.nn API Reference":[[14,null]],"scitex.path API Reference":[[15,null]],"scitex.pd API Reference":[[16,null]],"scitex.plt":[[145,null]],"scitex.plt API Reference":[[17,null]],"scitex.repro API Reference":[[18,null]],"scitex.scholar API Reference":[[19,null]],"scitex.session API Reference":[[20,null]],"scitex.social API Reference":[[21,null]],"scitex.stats API Reference":[[22,null]],"scitex.str API Reference":[[23,null]],"scitex.template API Reference":[[24,null]],"scitex.writer":[[25,null]],"search(query, source=None)":[[116,"search-query-source-none"]],"security Module (stx.security)":[[83,null],[152,null]],"send(message, backend=None, **kwargs)":[[140,"send-message-backend-none-kwargs"]],"sh Module (stx.sh)":[[85,null],[154,null]],"snap(region=None)":[[107,"snap-region-none"]],"social Module (stx.social)":[[86,null],[155,null]],"speak(text, backend=None, **kwargs)":[[101,"speak-text-backend-none-kwargs"]],"str Module (stx.str)":[[88,null],[157,null]],"tex Module (stx.tex)":[[90,null],[159,null]],"torch Module (stx.torch)":[[91,null],[160,null]],"tunnel Module (stx.tunnel)":[[92,null],[161,null]],"types Module (stx.types)":[[93,null],[162,null]],"ui Module (stx.ui)":[[94,null],[163,null]],"utils Module (stx.utils)":[[95,null],[164,null]],"web Module (stx.web)":[[96,null],[165,null]]},"docnames":["api/index","api/scitex.ai","api/scitex.clew","api/scitex.config","api/scitex.db","api/scitex.decorators","api/scitex.diagram","api/scitex.dict","api/scitex.dsp","api/scitex.gen","api/scitex.introspect","api/scitex.io","api/scitex.linter","api/scitex.logging","api/scitex.nn","api/scitex.path","api/scitex.pd","api/scitex.plt","api/scitex.repro","api/scitex.scholar","api/scitex.session","api/scitex.social","api/scitex.stats","api/scitex.str","api/scitex.template","api/scitex.writer","core_concepts","gallery","index","installation","modules/ai","modules/app","modules/audio","modules/audit","modules/benchmark","modules/bridge","modules/browser","modules/canvas","modules/capture","modules/clew","modules/cli","modules/cloud","modules/compat","modules/config","modules/container","modules/context","modules/cv","modules/dataset","modules/datetime","modules/db","modules/decorators","modules/dev","modules/diagram","modules/dict","modules/dsp","modules/etc","modules/events","modules/gen","modules/gists","modules/git","modules/index","modules/introspect","modules/io","modules/linalg","modules/linter","modules/logging","modules/media","modules/module","modules/msword","modules/nn","modules/notebook","modules/notify","modules/os","modules/parallel","modules/path","modules/pd","modules/plt","modules/project","modules/repro","modules/resource","modules/rng","modules/schema","modules/scholar","modules/security","modules/session","modules/sh","modules/social","modules/stats","modules/str","modules/template","modules/tex","modules/torch","modules/tunnel","modules/types","modules/ui","modules/utils","modules/web","modules/writer","quickstart","source/api/ai","source/api/app","source/api/audio","source/api/audit","source/api/benchmark","source/api/bridge","source/api/browser","source/api/canvas","source/api/capture","source/api/clew","source/api/cli","source/api/cloud","source/api/compat","source/api/config","source/api/container","source/api/context","source/api/cv","source/api/dataset","source/api/datetime","source/api/db","source/api/decorators","source/api/dev","source/api/diagram","source/api/dict","source/api/dsp","source/api/etc","source/api/events","source/api/gen","source/api/gists","source/api/git","source/api/index","source/api/introspect","source/api/io","source/api/linalg","source/api/linter","source/api/logging","source/api/media","source/api/module","source/api/msword","source/api/nn","source/api/notebook","source/api/notification","source/api/os","source/api/parallel","source/api/path","source/api/pd","source/api/plt","source/api/project","source/api/repro","source/api/resource","source/api/rng","source/api/schema","source/api/scholar","source/api/security","source/api/session","source/api/sh","source/api/social","source/api/stats","source/api/str","source/api/template","source/api/tex","source/api/torch","source/api/tunnel","source/api/types","source/api/ui","source/api/utils","source/api/web","source/api/writer","source/cli","source/concepts","source/ecosystem","source/gallery","source/index","source/installation","source/mcp","source/quickstart"],"envversion":{"nbsphinx":4,"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1},"filenames":["api/index.rst","api/scitex.ai.rst","api/scitex.clew.rst","api/scitex.config.rst","api/scitex.db.rst","api/scitex.decorators.rst","api/scitex.diagram.rst","api/scitex.dict.rst","api/scitex.dsp.rst","api/scitex.gen.rst","api/scitex.introspect.rst","api/scitex.io.rst","api/scitex.linter.rst","api/scitex.logging.rst","api/scitex.nn.rst","api/scitex.path.rst","api/scitex.pd.rst","api/scitex.plt.rst","api/scitex.repro.rst","api/scitex.scholar.rst","api/scitex.session.rst","api/scitex.social.rst","api/scitex.stats.rst","api/scitex.str.rst","api/scitex.template.rst","api/scitex.writer.rst","core_concepts.rst","gallery.rst","index.rst","installation.rst","modules/ai.rst","modules/app.rst","modules/audio.rst","modules/audit.rst","modules/benchmark.rst","modules/bridge.rst","modules/browser.rst","modules/canvas.rst","modules/capture.rst","modules/clew.rst","modules/cli.rst","modules/cloud.rst","modules/compat.rst","modules/config.rst","modules/container.rst","modules/context.rst","modules/cv.rst","modules/dataset.rst","modules/datetime.rst","modules/db.rst","modules/decorators.rst","modules/dev.rst","modules/diagram.rst","modules/dict.rst","modules/dsp.rst","modules/etc.rst","modules/events.rst","modules/gen.rst","modules/gists.rst","modules/git.rst","modules/index.rst","modules/introspect.rst","modules/io.rst","modules/linalg.rst","modules/linter.rst","modules/logging.rst","modules/media.rst","modules/module.rst","modules/msword.rst","modules/nn.rst","modules/notebook.rst","modules/notify.rst","modules/os.rst","modules/parallel.rst","modules/path.rst","modules/pd.rst","modules/plt.rst","modules/project.rst","modules/repro.rst","modules/resource.rst","modules/rng.rst","modules/schema.rst","modules/scholar.rst","modules/security.rst","modules/session.rst","modules/sh.rst","modules/social.rst","modules/stats.rst","modules/str.rst","modules/template.rst","modules/tex.rst","modules/torch.rst","modules/tunnel.rst","modules/types.rst","modules/ui.rst","modules/utils.rst","modules/web.rst","modules/writer.rst","quickstart.rst","source/api/ai.rst","source/api/app.rst","source/api/audio.rst","source/api/audit.rst","source/api/benchmark.rst","source/api/bridge.rst","source/api/browser.rst","source/api/canvas.rst","source/api/capture.rst","source/api/clew.rst","source/api/cli.rst","source/api/cloud.rst","source/api/compat.rst","source/api/config.rst","source/api/container.rst","source/api/context.rst","source/api/cv.rst","source/api/dataset.rst","source/api/datetime.rst","source/api/db.rst","source/api/decorators.rst","source/api/dev.rst","source/api/diagram.rst","source/api/dict.rst","source/api/dsp.rst","source/api/etc.rst","source/api/events.rst","source/api/gen.rst","source/api/gists.rst","source/api/git.rst","source/api/index.rst","source/api/introspect.rst","source/api/io.rst","source/api/linalg.rst","source/api/linter.rst","source/api/logging.rst","source/api/media.rst","source/api/module.rst","source/api/msword.rst","source/api/nn.rst","source/api/notebook.rst","source/api/notification.rst","source/api/os.rst","source/api/parallel.rst","source/api/path.rst","source/api/pd.rst","source/api/plt.rst","source/api/project.rst","source/api/repro.rst","source/api/resource.rst","source/api/rng.rst","source/api/schema.rst","source/api/scholar.rst","source/api/security.rst","source/api/session.rst","source/api/sh.rst","source/api/social.rst","source/api/stats.rst","source/api/str.rst","source/api/template.rst","source/api/tex.rst","source/api/torch.rst","source/api/tunnel.rst","source/api/types.rst","source/api/ui.rst","source/api/utils.rst","source/api/web.rst","source/api/writer.rst","source/cli.rst","source/concepts.rst","source/ecosystem.rst","source/gallery.rst","source/index.rst","source/installation.rst","source/mcp.rst","source/quickstart.rst"],"indexentries":{"__call__() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.__call__",false],[147,"scitex.repro.RandomStateManager.__call__",false]],"__call__() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.__call__",false]],"__init__() (scitex.config.priorityconfig method)":[[3,"scitex.config.PriorityConfig.__init__",false],[112,"scitex.config.PriorityConfig.__init__",false]],"__init__() (scitex.config.scitexconfig method)":[[3,"scitex.config.ScitexConfig.__init__",false],[112,"scitex.config.ScitexConfig.__init__",false]],"__init__() (scitex.config.scitexpaths method)":[[3,"scitex.config.ScitexPaths.__init__",false],[112,"scitex.config.ScitexPaths.__init__",false]],"__init__() (scitex.logging.scitexerror method)":[[13,"scitex.logging.SciTeXError.__init__",false],[134,"scitex.logging.SciTeXError.__init__",false]],"__init__() (scitex.msword.wordreader method)":[[137,"scitex.msword.WordReader.__init__",false]],"__init__() (scitex.msword.wordwriter method)":[[137,"scitex.msword.WordWriter.__init__",false]],"__init__() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.__init__",false],[147,"scitex.repro.RandomStateManager.__init__",false]],"__init__() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.__init__",false]],"__init__() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.__init__",false],[166,"scitex.writer.Writer.__init__",false]],"__post_init__() (scitex.dev.result method)":[[120,"scitex.dev.Result.__post_init__",false]],"__post_init__() (scitex.writer.manuscripttree method)":[[25,"scitex.writer.ManuscriptTree.__post_init__",false],[166,"scitex.writer.ManuscriptTree.__post_init__",false]],"__post_init__() (scitex.writer.revisiontree method)":[[25,"scitex.writer.RevisionTree.__post_init__",false],[166,"scitex.writer.RevisionTree.__post_init__",false]],"__post_init__() (scitex.writer.supplementarytree method)":[[25,"scitex.writer.SupplementaryTree.__post_init__",false],[166,"scitex.writer.SupplementaryTree.__post_init__",false]],"__str__() (scitex.writer.compilationresult method)":[[25,"scitex.writer.CompilationResult.__str__",false],[166,"scitex.writer.CompilationResult.__str__",false]],"accept_all_tracked_changes() (in module scitex.msword)":[[137,"scitex.msword.accept_all_tracked_changes",false]],"add_claim() (in module scitex.clew)":[[2,"scitex.clew.add_claim",false],[108,"scitex.clew.add_claim",false]],"add_dry_run_argument() (in module scitex.dev)":[[120,"scitex.dev.add_dry_run_argument",false]],"add_json_argument() (in module scitex.dev)":[[120,"scitex.dev.add_json_argument",false]],"apply_comments_as_edits() (in module scitex.msword)":[[137,"scitex.msword.apply_comments_as_edits",false]],"archive (scitex.writer.manuscripttree attribute)":[[25,"scitex.writer.ManuscriptTree.archive",false],[166,"scitex.writer.ManuscriptTree.archive",false]],"archive (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.archive",false],[166,"scitex.writer.RevisionTree.archive",false]],"archive (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.archive",false],[166,"scitex.writer.SupplementaryTree.archive",false]],"arrow() (in module scitex.cv)":[[115,"scitex.cv.arrow",false]],"async_wrap_as_mcp() (in module scitex.dev)":[[120,"scitex.dev.async_wrap_as_mcp",false]],"audit() (in module scitex.audit)":[[102,"scitex.audit.audit",false]],"authenticationerror":[[13,"scitex.logging.AuthenticationError",false],[134,"scitex.logging.AuthenticationError",false]],"axiserror":[[13,"scitex.logging.AxisError",false],[134,"scitex.logging.AxisError",false]],"base (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.base",false],[112,"scitex.config.ScitexPaths.base",false]],"base (scitex.writer.manuscripttree attribute)":[[25,"scitex.writer.ManuscriptTree.base",false],[166,"scitex.writer.ManuscriptTree.base",false]],"base (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.base",false],[166,"scitex.writer.RevisionTree.base",false]],"base (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.base",false],[166,"scitex.writer.SupplementaryTree.base",false]],"basewordprofile (class in scitex.msword)":[[137,"scitex.msword.BaseWordProfile",false]],"bibtexenrichmenterror":[[13,"scitex.logging.BibTeXEnrichmentError",false],[134,"scitex.logging.BibTeXEnrichmentError",false]],"blur() (in module scitex.cv)":[[115,"scitex.cv.blur",false]],"body_font (scitex.msword.basewordprofile attribute)":[[137,"scitex.msword.BaseWordProfile.body_font",false]],"body_font_size_pt (scitex.msword.basewordprofile attribute)":[[137,"scitex.msword.BaseWordProfile.body_font_size_pt",false]],"browser (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.browser",false],[112,"scitex.config.ScitexPaths.browser",false]],"browser_persistent (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.browser_persistent",false],[112,"scitex.config.ScitexPaths.browser_persistent",false]],"browser_screenshots (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.browser_screenshots",false],[112,"scitex.config.ScitexPaths.browser_screenshots",false]],"browser_sessions (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.browser_sessions",false],[112,"scitex.config.ScitexPaths.browser_sessions",false]],"buffer (scitex.logging.tee property)":[[13,"scitex.logging.Tee.buffer",false],[134,"scitex.logging.Tee.buffer",false]],"build_docs() (in module scitex.dev)":[[120,"scitex.dev.build_docs",false]],"build_tree() (in module scitex.app)":[[100,"scitex.app.build_tree",false]],"cache (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.cache",false],[112,"scitex.config.ScitexPaths.cache",false]],"caption_style (scitex.msword.basewordprofile attribute)":[[137,"id3",false],[137,"scitex.msword.BaseWordProfile.caption_style",false]],"capture (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.capture",false],[112,"scitex.config.ScitexPaths.capture",false]],"chain() (in module scitex.clew)":[[2,"scitex.clew.chain",false],[108,"scitex.clew.chain",false]],"check_file_exists() (in module scitex.logging)":[[13,"scitex.logging.check_file_exists",false],[134,"scitex.logging.check_file_exists",false]],"check_github_alerts() (in module scitex.security)":[[152,"scitex.security.check_github_alerts",false]],"check_host() (in module scitex.os)":[[141,"scitex.os.check_host",false]],"check_notebook() (in module scitex.notebook)":[[139,"scitex.notebook.check_notebook",false]],"check_path() (in module scitex.logging)":[[13,"scitex.logging.check_path",false],[134,"scitex.logging.check_path",false]],"check_shape_compatibility() (in module scitex.logging)":[[13,"scitex.logging.check_shape_compatibility",false],[134,"scitex.logging.check_shape_compatibility",false]],"check_stamp() (in module scitex.clew)":[[2,"scitex.clew.check_stamp",false],[108,"scitex.clew.check_stamp",false]],"check_versions() (in module scitex.dev)":[[120,"scitex.dev.check_versions",false]],"checkpoint() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.checkpoint",false],[147,"scitex.repro.RandomStateManager.checkpoint",false]],"checkpoint() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.checkpoint",false]],"circle() (in module scitex.cv)":[[115,"scitex.cv.circle",false]],"classify_exception() (in module scitex.dev)":[[120,"scitex.dev.classify_exception",false]],"clean() (in module scitex.path)":[[15,"scitex.path.clean",false],[143,"scitex.path.clean",false]],"clear_cache() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.clear_cache",false],[147,"scitex.repro.RandomStateManager.clear_cache",false]],"clear_cache() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.clear_cache",false]],"clear_highlights() (in module scitex.msword)":[[137,"scitex.msword.clear_highlights",false]],"clear_log() (scitex.config.priorityconfig method)":[[3,"scitex.config.PriorityConfig.clear_log",false],[112,"scitex.config.PriorityConfig.clear_log",false]],"close() (scitex.logging.tee method)":[[13,"scitex.logging.Tee.close",false],[134,"scitex.logging.Tee.close",false]],"columns (scitex.msword.basewordprofile attribute)":[[137,"id10",false],[137,"scitex.msword.BaseWordProfile.columns",false]],"compilationresult (class in scitex.writer)":[[25,"scitex.writer.CompilationResult",false],[166,"scitex.writer.CompilationResult",false]],"compile_manuscript() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.compile_manuscript",false],[166,"scitex.writer.Writer.compile_manuscript",false]],"compile_notebook() (in module scitex.notebook)":[[139,"scitex.notebook.compile_notebook",false]],"compile_revision() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.compile_revision",false],[166,"scitex.writer.Writer.compile_revision",false]],"compile_supplementary() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.compile_supplementary",false],[166,"scitex.writer.Writer.compile_supplementary",false]],"compilednotebook (class in scitex.notebook)":[[139,"scitex.notebook.CompiledNotebook",false]],"config_path (scitex.config.scitexconfig property)":[[3,"scitex.config.ScitexConfig.config_path",false],[112,"scitex.config.ScitexConfig.config_path",false]],"configfilenotfounderror":[[13,"scitex.logging.ConfigFileNotFoundError",false],[134,"scitex.logging.ConfigFileNotFoundError",false]],"configkeyerror":[[13,"scitex.logging.ConfigKeyError",false],[134,"scitex.logging.ConfigKeyError",false]],"configurationerror":[[13,"scitex.logging.ConfigurationError",false],[134,"scitex.logging.ConfigurationError",false]],"configure() (in module scitex.logging)":[[13,"scitex.logging.configure",false],[134,"scitex.logging.configure",false]],"contents (scitex.writer.manuscripttree attribute)":[[25,"scitex.writer.ManuscriptTree.contents",false],[166,"scitex.writer.ManuscriptTree.contents",false]],"contents (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.contents",false],[166,"scitex.writer.RevisionTree.contents",false]],"contents (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.contents",false],[166,"scitex.writer.SupplementaryTree.contents",false]],"context (scitex.dev.result attribute)":[[120,"scitex.dev.Result.context",false]],"convert_docx_to_tex() (in module scitex.msword)":[[137,"scitex.msword.convert_docx_to_tex",false]],"convert_notebook() (in module scitex.notebook)":[[139,"scitex.notebook.convert_notebook",false]],"copy() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.copy",false]],"copy_file() (in module scitex.app)":[[100,"scitex.app.copy_file",false]],"count() (in module scitex.etc)":[[124,"scitex.etc.count",false]],"count_grids() (in module scitex.etc)":[[124,"scitex.etc.count_grids",false]],"create_post_import_hook() (in module scitex.msword)":[[137,"scitex.msword.create_post_import_hook",false]],"create_relative_symlink() (in module scitex.path)":[[15,"scitex.path.create_relative_symlink",false],[143,"scitex.path.create_relative_symlink",false]],"crop() (in module scitex.cv)":[[115,"scitex.cv.crop",false]],"dag (scitex.notebook.compilednotebook attribute)":[[139,"id2",false],[139,"scitex.notebook.CompiledNotebook.dag",false]],"dag() (in module scitex.clew)":[[2,"scitex.clew.dag",false],[108,"scitex.clew.dag",false]],"data (scitex.dev.result attribute)":[[120,"scitex.dev.Result.data",false]],"dataerror":[[13,"scitex.logging.DataError",false],[134,"scitex.logging.DataError",false]],"datalosswarning":[[13,"scitex.logging.DataLossWarning",false],[134,"scitex.logging.DataLossWarning",false]],"delete() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.delete",false]],"delete() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.delete",false],[166,"scitex.writer.Writer.delete",false]],"delete_file() (in module scitex.app)":[[100,"scitex.app.delete_file",false]],"denoise() (in module scitex.cv)":[[115,"scitex.cv.denoise",false]],"deprecated() (in module scitex.compat)":[[111,"scitex.compat.deprecated",false]],"description (scitex.msword.basewordprofile attribute)":[[137,"id1",false],[137,"scitex.msword.BaseWordProfile.description",false]],"detect_environment() (in module scitex.context)":[[114,"scitex.context.detect_environment",false]],"diff_docx() (in module scitex.msword)":[[137,"scitex.msword.diff_docx",false]],"diff_pdf (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.diff_pdf",false],[166,"scitex.writer.CompilationResult.diff_pdf",false]],"docs (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.docs",false],[166,"scitex.writer.RevisionTree.docs",false]],"doiresolutionerror":[[13,"scitex.logging.DOIResolutionError",false],[134,"scitex.logging.DOIResolutionError",false]],"double_anonymous (scitex.msword.basewordprofile attribute)":[[137,"id11",false],[137,"scitex.msword.BaseWordProfile.double_anonymous",false]],"dry_run_option() (in module scitex.dev)":[[120,"scitex.dev.dry_run_option",false]],"dtypeerror":[[13,"scitex.logging.DTypeError",false],[134,"scitex.logging.DTypeError",false]],"duration (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.duration",false],[166,"scitex.writer.CompilationResult.duration",false]],"edge_detect() (in module scitex.cv)":[[115,"scitex.cv.edge_detect",false]],"enable_file_logging() (in module scitex.logging)":[[13,"scitex.logging.enable_file_logging",false],[134,"scitex.logging.enable_file_logging",false]],"enable_track_changes() (in module scitex.msword)":[[137,"scitex.msword.enable_track_changes",false]],"enrichmenterror":[[13,"scitex.logging.EnrichmentError",false],[134,"scitex.logging.EnrichmentError",false]],"ensure_all() (scitex.config.scitexpaths method)":[[3,"scitex.config.ScitexPaths.ensure_all",false],[112,"scitex.config.ScitexPaths.ensure_all",false]],"ensure_dir() (scitex.config.scitexpaths method)":[[3,"scitex.config.ScitexPaths.ensure_dir",false],[112,"scitex.config.ScitexPaths.ensure_dir",false]],"equation_style (scitex.msword.basewordprofile attribute)":[[137,"id9",false],[137,"scitex.msword.BaseWordProfile.equation_style",false]],"error (scitex.dev.result attribute)":[[120,"scitex.dev.Result.error",false]],"error_code (scitex.dev.result attribute)":[[120,"scitex.dev.Result.error_code",false]],"errorcode (class in scitex.dev)":[[120,"scitex.dev.ErrorCode",false]],"errors (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.errors",false],[166,"scitex.writer.CompilationResult.errors",false]],"execution_order (scitex.notebook.compilednotebook attribute)":[[139,"id1",false],[139,"scitex.notebook.CompiledNotebook.execution_order",false]],"exists() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.exists",false]],"exit_code (scitex.dev.errorcode property)":[[120,"scitex.dev.ErrorCode.exit_code",false]],"exit_code (scitex.dev.result property)":[[120,"scitex.dev.Result.exit_code",false]],"exit_code (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.exit_code",false],[166,"scitex.writer.CompilationResult.exit_code",false]],"export_claims_json() (in module scitex.clew)":[[2,"scitex.clew.export_claims_json",false],[108,"scitex.clew.export_claims_json",false]],"extract_comments() (in module scitex.msword)":[[137,"scitex.msword.extract_comments",false]],"extract_highlights() (in module scitex.msword)":[[137,"scitex.msword.extract_highlights",false]],"extract_tracked_changes() (in module scitex.msword)":[[137,"scitex.msword.extract_tracked_changes",false]],"figure_caption_prefixes (scitex.msword.basewordprofile attribute)":[[137,"id6",false],[137,"scitex.msword.BaseWordProfile.figure_caption_prefixes",false]],"figurenotfounderror":[[13,"scitex.logging.FigureNotFoundError",false],[134,"scitex.logging.FigureNotFoundError",false]],"file_exists() (in module scitex.app)":[[100,"scitex.app.file_exists",false]],"fileformaterror":[[13,"scitex.logging.FileFormatError",false],[134,"scitex.logging.FileFormatError",false]],"fileno() (scitex.logging.tee method)":[[13,"scitex.logging.Tee.fileno",false],[134,"scitex.logging.Tee.fileno",false]],"filesbackend (class in scitex.app)":[[100,"scitex.app.FilesBackend",false]],"filterwarnings() (in module scitex.logging)":[[13,"scitex.logging.filterwarnings",false],[134,"scitex.logging.filterwarnings",false]],"find_dir() (in module scitex.path)":[[15,"scitex.path.find_dir",false],[143,"scitex.path.find_dir",false]],"find_file() (in module scitex.path)":[[15,"scitex.path.find_file",false],[143,"scitex.path.find_file",false]],"find_git_root() (in module scitex.path)":[[15,"scitex.path.find_git_root",false],[143,"scitex.path.find_git_root",false]],"find_latest() (in module scitex.path)":[[15,"scitex.path.find_latest",false],[143,"scitex.path.find_latest",false]],"fix_broken_symlinks() (in module scitex.path)":[[15,"scitex.path.fix_broken_symlinks",false],[143,"scitex.path.fix_broken_symlinks",false]],"fix_mismatches() (in module scitex.dev)":[[120,"scitex.dev.fix_mismatches",false]],"fix_seeds() (in module scitex.repro)":[[18,"scitex.repro.fix_seeds",false],[147,"scitex.repro.fix_seeds",false]],"fix_seeds() (in module scitex.rng)":[[149,"scitex.rng.fix_seeds",false]],"flat (scitex.config.scitexconfig property)":[[3,"scitex.config.ScitexConfig.flat",false],[112,"scitex.config.ScitexConfig.flat",false]],"flip() (in module scitex.cv)":[[115,"scitex.cv.flip",false]],"flush() (scitex.logging.tee method)":[[13,"scitex.logging.Tee.flush",false],[134,"scitex.logging.Tee.flush",false]],"format_alerts_report() (in module scitex.security)":[[152,"scitex.security.format_alerts_report",false]],"format_python_signature() (in module scitex.cli)":[[109,"scitex.cli.format_python_signature",false]],"function_cache (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.function_cache",false],[112,"scitex.config.ScitexPaths.function_cache",false]],"gen_id() (in module scitex.repro)":[[18,"scitex.repro.gen_ID",false],[18,"scitex.repro.gen_id",false],[147,"scitex.repro.gen_ID",false],[147,"scitex.repro.gen_id",false]],"gen_id() (in module scitex.rng)":[[149,"scitex.rng.gen_ID",false],[149,"scitex.rng.gen_id",false]],"gen_timestamp() (in module scitex.repro)":[[18,"scitex.repro.gen_timestamp",false],[147,"scitex.repro.gen_timestamp",false]],"gen_timestamp() (in module scitex.rng)":[[149,"scitex.rng.gen_timestamp",false]],"get() (in module scitex.repro)":[[18,"scitex.repro.get",false],[147,"scitex.repro.get",false]],"get() (in module scitex.rng)":[[149,"scitex.rng.get",false]],"get() (scitex.config.priorityconfig method)":[[3,"scitex.config.PriorityConfig.get",false],[112,"scitex.config.PriorityConfig.get",false]],"get() (scitex.config.scitexconfig method)":[[3,"scitex.config.ScitexConfig.get",false],[112,"scitex.config.ScitexConfig.get",false]],"get_code_cells() (in module scitex.notebook)":[[139,"scitex.notebook.get_code_cells",false]],"get_component() (in module scitex.ui)":[[163,"scitex.ui.get_component",false]],"get_config() (in module scitex.config)":[[3,"scitex.config.get_config",false],[112,"scitex.config.get_config",false]],"get_data_path_from_a_package() (in module scitex.path)":[[15,"scitex.path.get_data_path_from_a_package",false],[143,"scitex.path.get_data_path_from_a_package",false]],"get_docs() (in module scitex.dev)":[[120,"scitex.dev.get_docs",false]],"get_docs_path() (in module scitex.ui)":[[163,"scitex.ui.get_docs_path",false]],"get_ecosystem_versions() (in module scitex.dev)":[[120,"scitex.dev.get_ecosystem_versions",false]],"get_files() (in module scitex.app)":[[100,"scitex.app.get_files",false]],"get_generator() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.get_generator",false],[147,"scitex.repro.RandomStateManager.get_generator",false]],"get_generator() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.get_generator",false]],"get_host_config() (in module scitex.resource)":[[148,"scitex.resource.get_host_config",false]],"get_host_name() (in module scitex.resource)":[[148,"scitex.resource.get_host_name",false]],"get_latest_alerts_file() (in module scitex.security)":[[152,"scitex.security.get_latest_alerts_file",false]],"get_level() (in module scitex.logging)":[[13,"scitex.logging.get_level",false],[134,"scitex.logging.get_level",false]],"get_log_path() (in module scitex.logging)":[[13,"scitex.logging.get_log_path",false],[134,"scitex.logging.get_log_path",false]],"get_machine_config() (in module scitex.resource)":[[148,"scitex.resource.get_machine_config",false]],"get_machine_name() (in module scitex.resource)":[[148,"scitex.resource.get_machine_name",false]],"get_metrics() (in module scitex.resource)":[[148,"scitex.resource.get_metrics",false]],"get_mismatches() (in module scitex.dev)":[[120,"scitex.dev.get_mismatches",false]],"get_nested() (scitex.config.scitexconfig method)":[[3,"scitex.config.ScitexConfig.get_nested",false],[112,"scitex.config.ScitexConfig.get_nested",false]],"get_notebook_directory() (in module scitex.context)":[[114,"scitex.context.get_notebook_directory",false]],"get_notebook_info_simple() (in module scitex.context)":[[114,"scitex.context.get_notebook_info_simple",false]],"get_notebook_name() (in module scitex.context)":[[114,"scitex.context.get_notebook_name",false]],"get_notebook_name() (in module scitex.notebook)":[[139,"scitex.notebook.get_notebook_name",false]],"get_notebook_path() (in module scitex.context)":[[114,"scitex.context.get_notebook_path",false]],"get_np_generator() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.get_np_generator",false],[147,"scitex.repro.RandomStateManager.get_np_generator",false]],"get_np_generator() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.get_np_generator",false]],"get_output_directory() (in module scitex.context)":[[114,"scitex.context.get_output_directory",false]],"get_paths() (in module scitex.config)":[[3,"scitex.config.get_paths",false],[112,"scitex.config.get_paths",false]],"get_pdf() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.get_pdf",false],[166,"scitex.writer.Writer.get_pdf",false]],"get_processor_usages() (in module scitex.resource)":[[148,"scitex.resource.get_processor_usages",false]],"get_profile() (in module scitex.msword)":[[137,"scitex.msword.get_profile",false]],"get_scitex_dir() (in module scitex.config)":[[3,"scitex.config.get_scitex_dir",false],[112,"scitex.config.get_scitex_dir",false]],"get_sklearn_random_state() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.get_sklearn_random_state",false],[147,"scitex.repro.RandomStateManager.get_sklearn_random_state",false]],"get_sklearn_random_state() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.get_sklearn_random_state",false]],"get_spath() (in module scitex.path)":[[15,"scitex.path.get_spath",false],[143,"scitex.path.get_spath",false]],"get_specs() (in module scitex.resource)":[[148,"scitex.resource.get_specs",false]],"get_static_dir() (in module scitex.ui)":[[163,"scitex.ui.get_static_dir",false]],"get_this_path() (in module scitex.path)":[[15,"scitex.path.get_this_path",false],[143,"scitex.path.get_this_path",false]],"get_torch_generator() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.get_torch_generator",false],[147,"scitex.repro.RandomStateManager.get_torch_generator",false]],"get_torch_generator() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.get_torch_generator",false]],"getlogger() (in module scitex.logging)":[[13,"scitex.logging.getLogger",false],[134,"scitex.logging.getLogger",false]],"getsize() (in module scitex.path)":[[15,"scitex.path.getsize",false],[143,"scitex.path.getsize",false]],"git_root (scitex.writer.manuscripttree attribute)":[[25,"scitex.writer.ManuscriptTree.git_root",false],[166,"scitex.writer.ManuscriptTree.git_root",false]],"git_root (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.git_root",false],[166,"scitex.writer.RevisionTree.git_root",false]],"git_root (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.git_root",false],[166,"scitex.writer.SupplementaryTree.git_root",false]],"githubsecurityerror":[[152,"scitex.security.GitHubSecurityError",false]],"group_to_json() (in module scitex.cli)":[[109,"scitex.cli.group_to_json",false]],"handle_result() (in module scitex.dev)":[[120,"scitex.dev.handle_result",false]],"hash_array() (in module scitex.repro)":[[18,"scitex.repro.hash_array",false],[147,"scitex.repro.hash_array",false]],"hash_array() (in module scitex.rng)":[[149,"scitex.rng.hash_array",false]],"hash_directory() (in module scitex.clew)":[[2,"scitex.clew.hash_directory",false],[108,"scitex.clew.hash_directory",false]],"hash_file() (in module scitex.clew)":[[2,"scitex.clew.hash_file",false],[108,"scitex.clew.hash_file",false]],"heading_background_hex (scitex.msword.basewordprofile attribute)":[[137,"scitex.msword.BaseWordProfile.heading_background_hex",false]],"heading_styles (scitex.msword.basewordprofile attribute)":[[137,"id2",false],[137,"scitex.msword.BaseWordProfile.heading_styles",false]],"help_recursive_to_json() (in module scitex.cli)":[[109,"scitex.cli.help_recursive_to_json",false]],"hide_spines() (ax method)":[[145,"ax.hide_spines",false]],"hints_on_error (scitex.dev.result attribute)":[[120,"scitex.dev.Result.hints_on_error",false]],"hints_on_success (scitex.dev.result attribute)":[[120,"scitex.dev.Result.hints_on_success",false]],"hints_on_warning (scitex.dev.result attribute)":[[120,"scitex.dev.Result.hints_on_warning",false]],"hist() (ax method)":[[145,"ax.hist",false]],"idempotent (scitex.dev.result attribute)":[[120,"scitex.dev.Result.idempotent",false]],"impact_factor_cache (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.impact_factor_cache",false],[112,"scitex.config.ScitexPaths.impact_factor_cache",false]],"increment_version() (in module scitex.path)":[[15,"scitex.path.increment_version",false],[143,"scitex.path.increment_version",false]],"init_examples() (in module scitex.clew)":[[2,"scitex.clew.init_examples",false],[108,"scitex.clew.init_examples",false]],"installhint (class in scitex.dev)":[[120,"scitex.dev.InstallHint",false]],"invalidpatherror":[[13,"scitex.logging.InvalidPathError",false],[134,"scitex.logging.InvalidPathError",false]],"ioerror":[[13,"scitex.logging.IOError",false],[134,"scitex.logging.IOError",false]],"is_file_logging_enabled() (in module scitex.logging)":[[13,"scitex.logging.is_file_logging_enabled",false],[134,"scitex.logging.is_file_logging_enabled",false]],"is_host() (in module scitex.os)":[[141,"scitex.os.is_host",false]],"is_ipython() (in module scitex.context)":[[114,"scitex.context.is_ipython",false]],"is_notebook() (in module scitex.context)":[[114,"scitex.context.is_notebook",false]],"is_script() (in module scitex.context)":[[114,"scitex.context.is_script",false]],"is_symlink() (in module scitex.path)":[[15,"scitex.path.is_symlink",false],[143,"scitex.path.is_symlink",false]],"is_track_changes_enabled() (in module scitex.msword)":[[137,"scitex.msword.is_track_changes_enabled",false]],"isatty() (scitex.logging.tee method)":[[13,"scitex.logging.Tee.isatty",false],[134,"scitex.logging.Tee.isatty",false]],"json_option() (in module scitex.dev)":[[120,"scitex.dev.json_option",false]],"json_schema() (scitex.dev.result class method)":[[120,"scitex.dev.Result.json_schema",false]],"last_install_hint() (in module scitex.dev)":[[120,"scitex.dev.last_install_hint",false]],"line() (in module scitex.cv)":[[115,"scitex.cv.line",false]],"line_spacing (scitex.msword.basewordprofile attribute)":[[137,"scitex.msword.BaseWordProfile.line_spacing",false]],"link_captions_to_images() (in module scitex.msword)":[[137,"scitex.msword.link_captions_to_images",false]],"link_captions_to_images_by_proximity() (in module scitex.msword)":[[137,"scitex.msword.link_captions_to_images_by_proximity",false]],"list() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.list",false]],"list_all() (scitex.config.scitexpaths method)":[[3,"scitex.config.ScitexPaths.list_all",false],[112,"scitex.config.ScitexPaths.list_all",false]],"list_claims() (in module scitex.clew)":[[2,"scitex.clew.list_claims",false],[108,"scitex.clew.list_claims",false]],"list_components() (in module scitex.ui)":[[163,"scitex.ui.list_components",false]],"list_files() (in module scitex.app)":[[100,"scitex.app.list_files",false]],"list_profiles() (in module scitex.msword)":[[137,"scitex.msword.list_profiles",false]],"list_runs() (in module scitex.clew)":[[2,"scitex.clew.list_runs",false],[108,"scitex.clew.list_runs",false]],"list_stamps() (in module scitex.clew)":[[2,"scitex.clew.list_stamps",false],[108,"scitex.clew.list_stamps",false]],"list_styles (scitex.msword.basewordprofile attribute)":[[137,"id8",false],[137,"scitex.msword.BaseWordProfile.list_styles",false]],"list_symlinks() (in module scitex.path)":[[15,"scitex.path.list_symlinks",false],[143,"scitex.path.list_symlinks",false]],"list_versions() (in module scitex.dev)":[[120,"scitex.dev.list_versions",false]],"load() (in module scitex.cv)":[[115,"scitex.cv.load",false]],"load_config() (in module scitex.resource)":[[148,"scitex.resource.load_config",false]],"load_docx() (in module scitex.msword)":[[137,"scitex.msword.load_docx",false]],"load_dotenv() (in module scitex.config)":[[3,"scitex.config.load_dotenv",false],[112,"scitex.config.load_dotenv",false]],"load_env_from_path() (in module scitex.config)":[[3,"scitex.config.load_env_from_path",false],[112,"scitex.config.load_env_from_path",false]],"load_scitex_env() (in module scitex.config)":[[3,"scitex.config.load_scitex_env",false],[112,"scitex.config.load_scitex_env",false]],"load_yaml() (in module scitex.config)":[[3,"scitex.config.load_yaml",false],[112,"scitex.config.load_yaml",false]],"loaderror":[[13,"scitex.logging.LoadError",false],[134,"scitex.logging.LoadError",false]],"log_file (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.log_file",false],[166,"scitex.writer.CompilationResult.log_file",false]],"log_processor_usages() (in module scitex.resource)":[[148,"scitex.resource.log_processor_usages",false]],"log_to_file() (in module scitex.logging)":[[13,"scitex.logging.log_to_file",false],[134,"scitex.logging.log_to_file",false]],"logs (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.logs",false],[112,"scitex.config.ScitexPaths.logs",false]],"main() (in module scitex.resource)":[[148,"scitex.resource.main",false]],"manuscripttree (class in scitex.writer)":[[25,"scitex.writer.ManuscriptTree",false],[166,"scitex.writer.ManuscriptTree",false]],"mark_additions() (in module scitex.msword)":[[137,"scitex.msword.mark_additions",false]],"mark_modifications() (in module scitex.msword)":[[137,"scitex.msword.mark_modifications",false]],"mermaid() (in module scitex.clew)":[[2,"scitex.clew.mermaid",false],[108,"scitex.clew.mermaid",false]],"mk_spath() (in module scitex.path)":[[15,"scitex.path.mk_spath",false],[143,"scitex.path.mk_spath",false]],"modelerror":[[13,"scitex.logging.ModelError",false],[134,"scitex.logging.ModelError",false]],"module":[[1,"module-scitex.ai",false],[2,"module-scitex.clew",false],[3,"module-scitex.config",false],[4,"module-scitex.db",false],[5,"module-scitex.decorators",false],[6,"module-scitex.diagram",false],[7,"module-scitex.dict",false],[8,"module-scitex.dsp",false],[9,"module-scitex.gen",false],[10,"module-scitex.introspect",false],[11,"module-scitex.io",false],[13,"module-scitex.logging",false],[14,"module-scitex.nn",false],[15,"module-scitex.path",false],[16,"module-scitex.pd",false],[17,"module-scitex.plt",false],[18,"module-scitex.repro",false],[19,"module-scitex.scholar",false],[20,"module-scitex.session",false],[21,"module-scitex.social",false],[22,"module-scitex.stats",false],[23,"module-scitex.str",false],[24,"module-scitex.template",false],[25,"module-scitex.writer",false],[99,"module-scitex.ai",false],[100,"module-scitex.app",false],[101,"module-scitex.audio",false],[102,"module-scitex.audit",false],[103,"module-scitex.benchmark",false],[104,"module-scitex.bridge",false],[105,"module-scitex.browser",false],[106,"module-scitex.canvas",false],[107,"module-scitex.capture",false],[108,"module-scitex.clew",false],[109,"module-scitex.cli",false],[110,"module-scitex.cloud",false],[111,"module-scitex.compat",false],[112,"module-scitex.config",false],[113,"module-scitex.container",false],[114,"module-scitex.context",false],[115,"module-scitex.cv",false],[116,"module-scitex.dataset",false],[117,"module-scitex.datetime",false],[118,"module-scitex.db",false],[119,"module-scitex.decorators",false],[120,"module-scitex.dev",false],[121,"module-scitex.diagram",false],[122,"module-scitex.dict",false],[123,"module-scitex.dsp",false],[124,"module-scitex.etc",false],[125,"module-scitex.events",false],[126,"module-scitex.gen",false],[127,"module-scitex.gists",false],[128,"module-scitex.git",false],[130,"module-scitex.introspect",false],[131,"module-scitex.io",false],[132,"module-scitex.linalg",false],[134,"module-scitex.logging",false],[135,"module-scitex.media",false],[136,"module-scitex.module",false],[137,"module-scitex.msword",false],[138,"module-scitex.nn",false],[139,"module-scitex.notebook",false],[140,"module-scitex.notification",false],[141,"module-scitex.os",false],[142,"module-scitex.parallel",false],[143,"module-scitex.path",false],[144,"module-scitex.pd",false],[146,"module-scitex.project",false],[147,"module-scitex.repro",false],[148,"module-scitex.resource",false],[149,"module-scitex.rng",false],[150,"module-scitex.schema",false],[151,"module-scitex.scholar",false],[152,"module-scitex.security",false],[153,"module-scitex.session",false],[154,"module-scitex.sh",false],[155,"module-scitex.social",false],[156,"module-scitex.stats",false],[157,"module-scitex.str",false],[158,"module-scitex.template",false],[159,"module-scitex.tex",false],[160,"module-scitex.torch",false],[161,"module-scitex.tunnel",false],[162,"module-scitex.types",false],[163,"module-scitex.ui",false],[165,"module-scitex.web",false],[166,"module-scitex.writer",false]],"mv() (in module scitex.os)":[[141,"scitex.os.mv",false]],"name (scitex.msword.basewordprofile attribute)":[[137,"id0",false],[137,"scitex.msword.BaseWordProfile.name",false]],"nnerror":[[13,"scitex.logging.NNError",false],[134,"scitex.logging.NNError",false]],"normal_style (scitex.msword.basewordprofile attribute)":[[137,"id4",false],[137,"scitex.msword.BaseWordProfile.normal_style",false]],"normalize_section_headings() (in module scitex.msword)":[[137,"scitex.msword.normalize_section_headings",false]],"notebook_path (scitex.notebook.compilednotebook attribute)":[[139,"id0",false],[139,"scitex.notebook.CompiledNotebook.notebook_path",false]],"notify() (in module scitex.compat)":[[111,"scitex.compat.notify",false]],"notify_async() (in module scitex.compat)":[[111,"scitex.compat.notify_async",false]],"on_session_close() (in module scitex.clew)":[[2,"scitex.clew.on_session_close",false],[108,"scitex.clew.on_session_close",false]],"on_session_start() (in module scitex.clew)":[[2,"scitex.clew.on_session_start",false],[108,"scitex.clew.on_session_start",false]],"openathens_cache (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.openathens_cache",false],[112,"scitex.config.ScitexPaths.openathens_cache",false]],"output_pdf (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.output_pdf",false],[166,"scitex.writer.CompilationResult.output_pdf",false]],"pad() (in module scitex.cv)":[[115,"scitex.cv.pad",false]],"parse_notebook() (in module scitex.notebook)":[[139,"scitex.notebook.parse_notebook",false]],"parse_src_file() (in module scitex.config)":[[3,"scitex.config.parse_src_file",false],[112,"scitex.config.parse_src_file",false]],"patherror":[[13,"scitex.logging.PathError",false],[134,"scitex.logging.PathError",false]],"pathnotfounderror":[[13,"scitex.logging.PathNotFoundError",false],[134,"scitex.logging.PathNotFoundError",false]],"pdfdownloaderror":[[13,"scitex.logging.PDFDownloadError",false],[134,"scitex.logging.PDFDownloadError",false]],"pdfextractionerror":[[13,"scitex.logging.PDFExtractionError",false],[134,"scitex.logging.PDFExtractionError",false]],"performancewarning":[[13,"scitex.logging.PerformanceWarning",false],[134,"scitex.logging.PerformanceWarning",false]],"plottingerror":[[13,"scitex.logging.PlottingError",false],[134,"scitex.logging.PlottingError",false]],"polylines() (in module scitex.cv)":[[115,"scitex.cv.polylines",false]],"post_import_hooks (scitex.msword.basewordprofile attribute)":[[137,"scitex.msword.BaseWordProfile.post_import_hooks",false]],"pre_export_hooks (scitex.msword.basewordprofile attribute)":[[137,"scitex.msword.BaseWordProfile.pre_export_hooks",false]],"preserve_bold_tokens() (in module scitex.msword)":[[137,"scitex.msword.preserve_bold_tokens",false]],"print() (scitex.config.scitexconfig method)":[[3,"scitex.config.ScitexConfig.print",false],[112,"scitex.config.ScitexConfig.print",false]],"print_help_recursive() (in module scitex.cli)":[[109,"scitex.cli.print_help_recursive",false]],"print_resolutions() (scitex.config.priorityconfig method)":[[3,"scitex.config.PriorityConfig.print_resolutions",false],[112,"scitex.config.PriorityConfig.print_resolutions",false]],"priorityconfig (class in scitex.config)":[[3,"scitex.config.PriorityConfig",false],[112,"scitex.config.PriorityConfig",false]],"pull_local() (in module scitex.dev)":[[120,"scitex.dev.pull_local",false]],"quiet() (in module scitex.context)":[[114,"scitex.context.quiet",false]],"randomstatemanager (class in scitex.repro)":[[18,"scitex.repro.RandomStateManager",false],[147,"scitex.repro.RandomStateManager",false]],"randomstatemanager (class in scitex.rng)":[[149,"scitex.rng.RandomStateManager",false]],"raw (scitex.config.scitexconfig property)":[[3,"scitex.config.ScitexConfig.raw",false],[112,"scitex.config.ScitexConfig.raw",false]],"read() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.read",false]],"read() (scitex.msword.wordreader method)":[[137,"scitex.msword.WordReader.read",false]],"read_file() (in module scitex.app)":[[100,"scitex.app.read_file",false]],"readlink() (in module scitex.path)":[[15,"scitex.path.readlink",false],[143,"scitex.path.readlink",false]],"readme (scitex.writer.manuscripttree attribute)":[[25,"scitex.writer.ManuscriptTree.readme",false],[166,"scitex.writer.ManuscriptTree.readme",false]],"readme (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.readme",false],[166,"scitex.writer.RevisionTree.readme",false]],"readme (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.readme",false],[166,"scitex.writer.SupplementaryTree.readme",false]],"rectangle() (in module scitex.cv)":[[115,"scitex.cv.rectangle",false]],"reference_section_titles (scitex.msword.basewordprofile attribute)":[[137,"id5",false],[137,"scitex.msword.BaseWordProfile.reference_section_titles",false]],"register_backend() (in module scitex.app)":[[100,"scitex.app.register_backend",false]],"register_intermediate() (in module scitex.clew)":[[2,"scitex.clew.register_intermediate",false],[108,"scitex.clew.register_intermediate",false]],"register_profile() (in module scitex.msword)":[[137,"scitex.msword.register_profile",false]],"reject_all_tracked_changes() (in module scitex.msword)":[[137,"scitex.msword.reject_all_tracked_changes",false]],"remote_commit() (in module scitex.dev)":[[120,"scitex.dev.remote_commit",false]],"remote_diff() (in module scitex.dev)":[[120,"scitex.dev.remote_diff",false]],"rename() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.rename",false]],"rename_file() (in module scitex.app)":[[100,"scitex.app.rename_file",false]],"rerun() (in module scitex.clew)":[[2,"scitex.clew.rerun",false],[108,"scitex.clew.rerun",false]],"rerun_claims() (in module scitex.clew)":[[2,"scitex.clew.rerun_claims",false],[108,"scitex.clew.rerun_claims",false]],"rerun_dag() (in module scitex.clew)":[[2,"scitex.clew.rerun_dag",false],[108,"scitex.clew.rerun_dag",false]],"reset() (in module scitex.repro)":[[18,"scitex.repro.reset",false],[147,"scitex.repro.reset",false]],"reset() (in module scitex.rng)":[[149,"scitex.rng.reset",false]],"resetwarnings() (in module scitex.logging)":[[13,"scitex.logging.resetwarnings",false],[134,"scitex.logging.resetwarnings",false]],"resize() (in module scitex.cv)":[[115,"scitex.cv.resize",false]],"resolution_log (scitex.config.priorityconfig attribute)":[[112,"scitex.config.PriorityConfig.resolution_log",false]],"resolve() (scitex.config.priorityconfig method)":[[3,"scitex.config.PriorityConfig.resolve",false],[112,"scitex.config.PriorityConfig.resolve",false]],"resolve() (scitex.config.scitexconfig method)":[[3,"scitex.config.ScitexConfig.resolve",false],[112,"scitex.config.ScitexConfig.resolve",false]],"resolve() (scitex.config.scitexpaths method)":[[3,"scitex.config.ScitexPaths.resolve",false],[112,"scitex.config.ScitexPaths.resolve",false]],"resolve_symlinks() (in module scitex.path)":[[15,"scitex.path.resolve_symlinks",false],[143,"scitex.path.resolve_symlinks",false]],"restore() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.restore",false],[147,"scitex.repro.RandomStateManager.restore",false]],"restore() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.restore",false]],"result (class in scitex.dev)":[[120,"scitex.dev.Result",false]],"result_to_mcp() (in module scitex.dev)":[[120,"scitex.dev.result_to_mcp",false]],"revision (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.revision",false],[166,"scitex.writer.RevisionTree.revision",false]],"revisiontree (class in scitex.writer)":[[25,"scitex.writer.RevisionTree",false],[166,"scitex.writer.RevisionTree",false]],"rng (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.rng",false],[112,"scitex.config.ScitexPaths.rng",false]],"root (scitex.writer.manuscripttree attribute)":[[25,"scitex.writer.ManuscriptTree.root",false],[166,"scitex.writer.ManuscriptTree.root",false]],"root (scitex.writer.revisiontree attribute)":[[25,"scitex.writer.RevisionTree.root",false],[166,"scitex.writer.RevisionTree.root",false]],"root (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.root",false],[166,"scitex.writer.SupplementaryTree.root",false]],"rotate() (in module scitex.cv)":[[115,"scitex.cv.rotate",false]],"run() (in module scitex.clew)":[[2,"scitex.clew.run",false],[108,"scitex.clew.run",false]],"run() (in module scitex.parallel)":[[142,"scitex.parallel.run",false]],"run_as_cli() (in module scitex.dev)":[[120,"scitex.dev.run_as_cli",false]],"run_as_mcp() (in module scitex.dev)":[[120,"scitex.dev.run_as_mcp",false]],"runs (scitex.notebook.compilednotebook attribute)":[[139,"id3",false],[139,"scitex.notebook.CompiledNotebook.runs",false]],"save() (in module scitex.cv)":[[115,"scitex.cv.save",false]],"save_alerts_to_file() (in module scitex.security)":[[152,"scitex.security.save_alerts_to_file",false]],"save_docx() (in module scitex.msword)":[[137,"scitex.msword.save_docx",false]],"saveerror":[[13,"scitex.logging.SaveError",false],[134,"scitex.logging.SaveError",false]],"scaffold() (in module scitex.app)":[[100,"scitex.app.scaffold",false]],"scholar (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.scholar",false],[112,"scitex.config.ScitexPaths.scholar",false]],"scholar_cache (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.scholar_cache",false],[112,"scitex.config.ScitexPaths.scholar_cache",false]],"scholar_library (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.scholar_library",false],[112,"scitex.config.ScitexPaths.scholar_library",false]],"scholarerror":[[13,"scitex.logging.ScholarError",false],[134,"scitex.logging.ScholarError",false]],"scitex.ai":[[1,"module-scitex.ai",false],[99,"module-scitex.ai",false]],"scitex.app":[[100,"module-scitex.app",false]],"scitex.audio":[[101,"module-scitex.audio",false]],"scitex.audit":[[102,"module-scitex.audit",false]],"scitex.benchmark":[[103,"module-scitex.benchmark",false]],"scitex.bridge":[[104,"module-scitex.bridge",false]],"scitex.browser":[[105,"module-scitex.browser",false]],"scitex.canvas":[[106,"module-scitex.canvas",false]],"scitex.capture":[[107,"module-scitex.capture",false]],"scitex.clew":[[2,"module-scitex.clew",false],[108,"module-scitex.clew",false]],"scitex.cli":[[109,"module-scitex.cli",false]],"scitex.cloud":[[110,"module-scitex.cloud",false]],"scitex.compat":[[111,"module-scitex.compat",false]],"scitex.config":[[3,"module-scitex.config",false],[112,"module-scitex.config",false]],"scitex.container":[[113,"module-scitex.container",false]],"scitex.context":[[114,"module-scitex.context",false]],"scitex.cv":[[115,"module-scitex.cv",false]],"scitex.dataset":[[116,"module-scitex.dataset",false]],"scitex.datetime":[[117,"module-scitex.datetime",false]],"scitex.db":[[4,"module-scitex.db",false],[118,"module-scitex.db",false]],"scitex.decorators":[[5,"module-scitex.decorators",false],[119,"module-scitex.decorators",false]],"scitex.dev":[[120,"module-scitex.dev",false]],"scitex.diagram":[[6,"module-scitex.diagram",false],[121,"module-scitex.diagram",false]],"scitex.dict":[[7,"module-scitex.dict",false],[122,"module-scitex.dict",false]],"scitex.dsp":[[8,"module-scitex.dsp",false],[123,"module-scitex.dsp",false]],"scitex.etc":[[124,"module-scitex.etc",false]],"scitex.events":[[125,"module-scitex.events",false]],"scitex.gen":[[9,"module-scitex.gen",false],[126,"module-scitex.gen",false]],"scitex.gists":[[127,"module-scitex.gists",false]],"scitex.git":[[128,"module-scitex.git",false]],"scitex.introspect":[[10,"module-scitex.introspect",false],[130,"module-scitex.introspect",false]],"scitex.io":[[11,"module-scitex.io",false],[131,"module-scitex.io",false]],"scitex.linalg":[[132,"module-scitex.linalg",false]],"scitex.logging":[[13,"module-scitex.logging",false],[134,"module-scitex.logging",false]],"scitex.media":[[135,"module-scitex.media",false]],"scitex.module":[[136,"module-scitex.module",false]],"scitex.msword":[[137,"module-scitex.msword",false]],"scitex.nn":[[14,"module-scitex.nn",false],[138,"module-scitex.nn",false]],"scitex.notebook":[[139,"module-scitex.notebook",false]],"scitex.notification":[[140,"module-scitex.notification",false]],"scitex.os":[[141,"module-scitex.os",false]],"scitex.parallel":[[142,"module-scitex.parallel",false]],"scitex.path":[[15,"module-scitex.path",false],[143,"module-scitex.path",false]],"scitex.pd":[[16,"module-scitex.pd",false],[144,"module-scitex.pd",false]],"scitex.plt":[[17,"module-scitex.plt",false]],"scitex.project":[[146,"module-scitex.project",false]],"scitex.repro":[[18,"module-scitex.repro",false],[147,"module-scitex.repro",false]],"scitex.resource":[[148,"module-scitex.resource",false]],"scitex.rng":[[149,"module-scitex.rng",false]],"scitex.schema":[[150,"module-scitex.schema",false]],"scitex.scholar":[[19,"module-scitex.scholar",false],[151,"module-scitex.scholar",false]],"scitex.security":[[152,"module-scitex.security",false]],"scitex.session":[[20,"module-scitex.session",false],[153,"module-scitex.session",false]],"scitex.sh":[[154,"module-scitex.sh",false]],"scitex.social":[[21,"module-scitex.social",false],[155,"module-scitex.social",false]],"scitex.stats":[[22,"module-scitex.stats",false],[156,"module-scitex.stats",false]],"scitex.str":[[23,"module-scitex.str",false],[157,"module-scitex.str",false]],"scitex.template":[[24,"module-scitex.template",false],[158,"module-scitex.template",false]],"scitex.tex":[[159,"module-scitex.tex",false]],"scitex.torch":[[160,"module-scitex.torch",false]],"scitex.tunnel":[[161,"module-scitex.tunnel",false]],"scitex.types":[[162,"module-scitex.types",false]],"scitex.ui":[[163,"module-scitex.ui",false]],"scitex.web":[[165,"module-scitex.web",false]],"scitex.writer":[[25,"module-scitex.writer",false],[166,"module-scitex.writer",false]],"scitexconfig (class in scitex.config)":[[3,"scitex.config.ScitexConfig",false],[112,"scitex.config.ScitexConfig",false]],"scitexdeprecationwarning":[[13,"scitex.logging.SciTeXDeprecationWarning",false],[134,"scitex.logging.SciTeXDeprecationWarning",false]],"scitexerror":[[13,"scitex.logging.SciTeXError",false],[120,"scitex.dev.ScitexError",false],[134,"scitex.logging.SciTeXError",false]],"scitexpaths (class in scitex.config)":[[3,"scitex.config.ScitexPaths",false],[112,"scitex.config.ScitexPaths",false]],"scitexwarning":[[13,"scitex.logging.SciTeXWarning",false],[134,"scitex.logging.SciTeXWarning",false]],"screenshots (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.screenshots",false],[112,"scitex.config.ScitexPaths.screenshots",false]],"search() (in module scitex.dev)":[[120,"scitex.dev.search",false]],"search() (in module scitex.etc)":[[124,"scitex.etc.search",false]],"search_docs() (in module scitex.dev)":[[120,"scitex.dev.search_docs",false]],"searcherror":[[13,"scitex.logging.SearchError",false],[134,"scitex.logging.SearchError",false]],"sensitive_expressions (scitex.config.priorityconfig attribute)":[[3,"scitex.config.PriorityConfig.SENSITIVE_EXPRESSIONS",false],[112,"scitex.config.PriorityConfig.SENSITIVE_EXPRESSIONS",false]],"set_level() (in module scitex.logging)":[[13,"scitex.logging.set_level",false],[134,"scitex.logging.set_level",false]],"set_xyt() (ax method)":[[145,"ax.set_xyt",false]],"shapeerror":[[13,"scitex.logging.ShapeError",false],[134,"scitex.logging.ShapeError",false]],"sharpen() (in module scitex.cv)":[[115,"scitex.cv.sharpen",false]],"side_effects (scitex.dev.result attribute)":[[120,"scitex.dev.Result.side_effects",false]],"sideeffect (class in scitex.dev)":[[120,"scitex.dev.SideEffect",false]],"sigmacro_process_figure_s() (in module scitex.gists)":[[127,"scitex.gists.sigmacro_process_figure_s",false]],"sigmacro_processfigure_s() (in module scitex.gists)":[[127,"scitex.gists.SigMacro_processFigure_S",false]],"sigmacro_to_blue() (in module scitex.gists)":[[127,"scitex.gists.sigmacro_to_blue",false]],"sigmacro_toblue() (in module scitex.gists)":[[127,"scitex.gists.SigMacro_toBlue",false]],"sns_barplot() (ax method)":[[145,"ax.sns_barplot",false]],"sns_boxplot() (ax method)":[[145,"ax.sns_boxplot",false]],"sns_heatmap() (ax method)":[[145,"ax.sns_heatmap",false]],"sns_histplot() (ax method)":[[145,"ax.sns_histplot",false]],"sns_jointplot() (ax method)":[[145,"ax.sns_jointplot",false]],"sns_kdeplot() (ax method)":[[145,"ax.sns_kdeplot",false]],"sns_lineplot() (ax method)":[[145,"ax.sns_lineplot",false]],"sns_pairplot() (ax method)":[[145,"ax.sns_pairplot",false]],"sns_scatterplot() (ax method)":[[145,"ax.sns_scatterplot",false]],"sns_stripplot() (ax method)":[[145,"ax.sns_stripplot",false]],"sns_swarmplot() (ax method)":[[145,"ax.sns_swarmplot",false]],"sns_violinplot() (ax method)":[[145,"ax.sns_violinplot",false]],"split() (in module scitex.path)":[[15,"scitex.path.split",false],[143,"scitex.path.split",false]],"stamp() (in module scitex.clew)":[[2,"scitex.clew.stamp",false],[108,"scitex.clew.stamp",false]],"stats() (in module scitex.clew)":[[2,"scitex.clew.stats",false],[108,"scitex.clew.stats",false]],"statserror":[[13,"scitex.logging.StatsError",false],[134,"scitex.logging.StatsError",false]],"status() (in module scitex.clew)":[[2,"scitex.clew.status",false],[108,"scitex.clew.status",false]],"stderr (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.stderr",false],[166,"scitex.writer.CompilationResult.stderr",false]],"stdout (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.stdout",false],[166,"scitex.writer.CompilationResult.stdout",false]],"stx_bar() (ax method)":[[145,"ax.stx_bar",false]],"stx_barh() (ax method)":[[145,"ax.stx_barh",false]],"stx_box() (ax method)":[[145,"ax.stx_box",false]],"stx_conf_mat() (ax method)":[[145,"ax.stx_conf_mat",false]],"stx_ecdf() (ax method)":[[145,"ax.stx_ecdf",false]],"stx_errorbar() (ax method)":[[145,"ax.stx_errorbar",false]],"stx_fillv() (ax method)":[[145,"ax.stx_fillv",false]],"stx_heatmap() (ax method)":[[145,"ax.stx_heatmap",false]],"stx_image() (ax method)":[[145,"ax.stx_image",false]],"stx_joyplot() (ax method)":[[145,"ax.stx_joyplot",false]],"stx_kde() (ax method)":[[145,"ax.stx_kde",false]],"stx_line() (ax method)":[[145,"ax.stx_line",false]],"stx_mean_ci() (ax method)":[[145,"ax.stx_mean_ci",false]],"stx_mean_std() (ax method)":[[145,"ax.stx_mean_std",false]],"stx_median_iqr() (ax method)":[[145,"ax.stx_median_iqr",false]],"stx_raster() (ax method)":[[145,"ax.stx_raster",false]],"stx_rectangle() (ax method)":[[145,"ax.stx_rectangle",false]],"stx_scatter() (ax method)":[[145,"ax.stx_scatter",false]],"stx_scatter_hist() (ax method)":[[145,"ax.stx_scatter_hist",false]],"stx_shaded_line() (ax method)":[[145,"ax.stx_shaded_line",false]],"stx_violin() (ax method)":[[145,"ax.stx_violin",false]],"stylewarning":[[13,"scitex.logging.StyleWarning",false],[134,"scitex.logging.StyleWarning",false]],"success (scitex.dev.result attribute)":[[120,"scitex.dev.Result.success",false]],"success (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.success",false],[166,"scitex.writer.CompilationResult.success",false]],"summarize_diff() (in module scitex.msword)":[[137,"scitex.msword.summarize_diff",false]],"supplementary (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.supplementary",false],[166,"scitex.writer.SupplementaryTree.supplementary",false]],"supplementary_diff (scitex.writer.supplementarytree attribute)":[[25,"scitex.writer.SupplementaryTree.supplementary_diff",false],[166,"scitex.writer.SupplementaryTree.supplementary_diff",false]],"supplementarytree (class in scitex.writer)":[[25,"scitex.writer.SupplementaryTree",false],[166,"scitex.writer.SupplementaryTree",false]],"supports_return_as() (in module scitex.dev)":[[120,"scitex.dev.supports_return_as",false]],"suppress_output() (in module scitex.context)":[[114,"scitex.context.suppress_output",false]],"symlink() (in module scitex.path)":[[15,"scitex.path.symlink",false],[143,"scitex.path.symlink",false]],"sync_all() (in module scitex.dev)":[[120,"scitex.dev.sync_all",false]],"sync_host() (in module scitex.dev)":[[120,"scitex.dev.sync_host",false]],"sync_local() (in module scitex.dev)":[[120,"scitex.dev.sync_local",false]],"sync_tags() (in module scitex.dev)":[[120,"scitex.dev.sync_tags",false]],"table_caption_prefixes (scitex.msword.basewordprofile attribute)":[[137,"id7",false],[137,"scitex.msword.BaseWordProfile.table_caption_prefixes",false]],"target (scitex.dev.sideeffect attribute)":[[120,"scitex.dev.SideEffect.target",false]],"tee (class in scitex.logging)":[[13,"scitex.logging.Tee",false],[134,"scitex.logging.Tee",false]],"tee() (in module scitex.logging)":[[13,"scitex.logging.tee",false],[134,"scitex.logging.tee",false]],"templateerror":[[13,"scitex.logging.TemplateError",false],[134,"scitex.logging.TemplateError",false]],"templateviolationerror":[[13,"scitex.logging.TemplateViolationError",false],[134,"scitex.logging.TemplateViolationError",false]],"temporary_seed() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.temporary_seed",false],[147,"scitex.repro.RandomStateManager.temporary_seed",false]],"temporary_seed() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.temporary_seed",false]],"test_monitor (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.test_monitor",false],[112,"scitex.config.ScitexPaths.test_monitor",false]],"testerror":[[13,"scitex.logging.TestError",false],[134,"scitex.logging.TestError",false]],"text() (in module scitex.cv)":[[115,"scitex.cv.text",false]],"this_path() (in module scitex.path)":[[15,"scitex.path.this_path",false],[143,"scitex.path.this_path",false]],"threshold() (in module scitex.cv)":[[115,"scitex.cv.threshold",false]],"timestamp() (in module scitex.repro)":[[18,"scitex.repro.timestamp",false],[147,"scitex.repro.timestamp",false]],"timestamp() (in module scitex.rng)":[[149,"scitex.rng.timestamp",false]],"to_bgr() (in module scitex.cv)":[[115,"scitex.cv.to_bgr",false]],"to_dict() (scitex.dev.result method)":[[120,"scitex.dev.Result.to_dict",false]],"to_dict() (scitex.dev.scitexerror method)":[[120,"scitex.dev.ScitexError.to_dict",false]],"to_gray() (in module scitex.cv)":[[115,"scitex.cv.to_gray",false]],"to_json() (scitex.dev.result method)":[[120,"scitex.dev.Result.to_json",false]],"to_mermaid() (scitex.notebook.compilednotebook method)":[[139,"scitex.notebook.CompiledNotebook.to_mermaid",false]],"to_rgb() (in module scitex.cv)":[[115,"scitex.cv.to_rgb",false]],"to_script() (scitex.notebook.compilednotebook method)":[[139,"scitex.notebook.CompiledNotebook.to_script",false]],"translatorerror":[[13,"scitex.logging.TranslatorError",false],[134,"scitex.logging.TranslatorError",false]],"try_import_optional() (in module scitex.dev)":[[120,"scitex.dev.try_import_optional",false]],"type (scitex.dev.sideeffect attribute)":[[120,"scitex.dev.SideEffect.type",false]],"undoable (scitex.dev.sideeffect attribute)":[[120,"scitex.dev.SideEffect.undoable",false]],"unitwarning":[[13,"scitex.logging.UnitWarning",false],[134,"scitex.logging.UnitWarning",false]],"unlink_symlink() (in module scitex.path)":[[15,"scitex.path.unlink_symlink",false],[143,"scitex.path.unlink_symlink",false]],"usage() (in module scitex.writer)":[[25,"scitex.writer.usage",false],[166,"scitex.writer.usage",false]],"validate() (in module scitex.app)":[[100,"scitex.app.validate",false]],"validate_document() (in module scitex.msword)":[[137,"scitex.msword.validate_document",false]],"verify() (scitex.repro.randomstatemanager method)":[[18,"scitex.repro.RandomStateManager.verify",false],[147,"scitex.repro.RandomStateManager.verify",false]],"verify() (scitex.rng.randomstatemanager method)":[[149,"scitex.rng.RandomStateManager.verify",false]],"verify_claim() (in module scitex.clew)":[[2,"scitex.clew.verify_claim",false],[108,"scitex.clew.verify_claim",false]],"verify_host() (in module scitex.os)":[[141,"scitex.os.verify_host",false]],"verify_notebook() (in module scitex.notebook)":[[139,"scitex.notebook.verify_notebook",false]],"verify_structure() (scitex.writer.manuscripttree method)":[[25,"scitex.writer.ManuscriptTree.verify_structure",false],[166,"scitex.writer.ManuscriptTree.verify_structure",false]],"verify_structure() (scitex.writer.revisiontree method)":[[25,"scitex.writer.RevisionTree.verify_structure",false],[166,"scitex.writer.RevisionTree.verify_structure",false]],"verify_structure() (scitex.writer.supplementarytree method)":[[25,"scitex.writer.SupplementaryTree.verify_structure",false],[166,"scitex.writer.SupplementaryTree.verify_structure",false]],"version (scitex.dev.result attribute)":[[120,"scitex.dev.Result.version",false]],"warn() (in module scitex.logging)":[[13,"scitex.logging.warn",false],[134,"scitex.logging.warn",false]],"warn_data_loss() (in module scitex.logging)":[[13,"scitex.logging.warn_data_loss",false],[134,"scitex.logging.warn_data_loss",false]],"warn_deprecated() (in module scitex.logging)":[[13,"scitex.logging.warn_deprecated",false],[134,"scitex.logging.warn_deprecated",false]],"warn_performance() (in module scitex.logging)":[[13,"scitex.logging.warn_performance",false],[134,"scitex.logging.warn_performance",false]],"warnings (scitex.writer.compilationresult attribute)":[[25,"scitex.writer.CompilationResult.warnings",false],[166,"scitex.writer.CompilationResult.warnings",false]],"watch() (scitex.writer.writer method)":[[25,"scitex.writer.Writer.watch",false],[166,"scitex.writer.Writer.watch",false]],"wordreader (class in scitex.msword)":[[137,"scitex.msword.WordReader",false]],"wordwriter (class in scitex.msword)":[[137,"scitex.msword.WordWriter",false]],"wrap_as_cli() (in module scitex.dev)":[[120,"scitex.dev.wrap_as_cli",false]],"wrap_as_mcp() (in module scitex.dev)":[[120,"scitex.dev.wrap_as_mcp",false]],"wrap_as_tracked_deletion() (in module scitex.msword)":[[137,"scitex.msword.wrap_as_tracked_deletion",false]],"wrap_as_tracked_insertion() (in module scitex.msword)":[[137,"scitex.msword.wrap_as_tracked_insertion",false]],"write() (scitex.app.filesbackend method)":[[100,"scitex.app.FilesBackend.write",false]],"write() (scitex.logging.tee method)":[[13,"scitex.logging.Tee.write",false],[134,"scitex.logging.Tee.write",false]],"write() (scitex.msword.wordwriter method)":[[137,"scitex.msword.WordWriter.write",false]],"write_file() (in module scitex.app)":[[100,"scitex.app.write_file",false]],"writer (class in scitex.writer)":[[25,"scitex.writer.Writer",false],[166,"scitex.writer.Writer",false]],"writer (scitex.config.scitexpaths property)":[[3,"scitex.config.ScitexPaths.writer",false],[112,"scitex.config.ScitexPaths.writer",false]],"yield_grids() (in module scitex.etc)":[[124,"scitex.etc.yield_grids",false]]},"objects":{"ax":[[145,0,1,"","hide_spines"],[145,0,1,"","hist"],[145,0,1,"","set_xyt"],[145,0,1,"","sns_barplot"],[145,0,1,"","sns_boxplot"],[145,0,1,"","sns_heatmap"],[145,0,1,"","sns_histplot"],[145,0,1,"","sns_jointplot"],[145,0,1,"","sns_kdeplot"],[145,0,1,"","sns_lineplot"],[145,0,1,"","sns_pairplot"],[145,0,1,"","sns_scatterplot"],[145,0,1,"","sns_stripplot"],[145,0,1,"","sns_swarmplot"],[145,0,1,"","sns_violinplot"],[145,0,1,"","stx_bar"],[145,0,1,"","stx_barh"],[145,0,1,"","stx_box"],[145,0,1,"","stx_conf_mat"],[145,0,1,"","stx_ecdf"],[145,0,1,"","stx_errorbar"],[145,0,1,"","stx_fillv"],[145,0,1,"","stx_heatmap"],[145,0,1,"","stx_image"],[145,0,1,"","stx_joyplot"],[145,0,1,"","stx_kde"],[145,0,1,"","stx_line"],[145,0,1,"","stx_mean_ci"],[145,0,1,"","stx_mean_std"],[145,0,1,"","stx_median_iqr"],[145,0,1,"","stx_raster"],[145,0,1,"","stx_rectangle"],[145,0,1,"","stx_scatter"],[145,0,1,"","stx_scatter_hist"],[145,0,1,"","stx_shaded_line"],[145,0,1,"","stx_violin"]],"scitex":[[99,1,0,"-","ai"],[100,1,0,"-","app"],[101,1,0,"-","audio"],[102,1,0,"-","audit"],[103,1,0,"-","benchmark"],[104,1,0,"-","bridge"],[105,1,0,"-","browser"],[106,1,0,"-","canvas"],[107,1,0,"-","capture"],[108,1,0,"-","clew"],[109,1,0,"-","cli"],[110,1,0,"-","cloud"],[111,1,0,"-","compat"],[112,1,0,"-","config"],[113,1,0,"-","container"],[114,1,0,"-","context"],[115,1,0,"-","cv"],[116,1,0,"-","dataset"],[117,1,0,"-","datetime"],[118,1,0,"-","db"],[119,1,0,"-","decorators"],[120,1,0,"-","dev"],[121,1,0,"-","diagram"],[122,1,0,"-","dict"],[123,1,0,"-","dsp"],[124,1,0,"-","etc"],[125,1,0,"-","events"],[126,1,0,"-","gen"],[127,1,0,"-","gists"],[128,1,0,"-","git"],[130,1,0,"-","introspect"],[131,1,0,"-","io"],[132,1,0,"-","linalg"],[134,1,0,"-","logging"],[135,1,0,"-","media"],[136,1,0,"-","module"],[137,1,0,"-","msword"],[138,1,0,"-","nn"],[139,1,0,"-","notebook"],[140,1,0,"-","notification"],[141,1,0,"-","os"],[142,1,0,"-","parallel"],[143,1,0,"-","path"],[144,1,0,"-","pd"],[17,1,0,"-","plt"],[146,1,0,"-","project"],[147,1,0,"-","repro"],[148,1,0,"-","resource"],[149,1,0,"-","rng"],[150,1,0,"-","schema"],[151,1,0,"-","scholar"],[152,1,0,"-","security"],[153,1,0,"-","session"],[154,1,0,"-","sh"],[155,1,0,"-","social"],[156,1,0,"-","stats"],[157,1,0,"-","str"],[158,1,0,"-","template"],[159,1,0,"-","tex"],[160,1,0,"-","torch"],[161,1,0,"-","tunnel"],[162,1,0,"-","types"],[163,1,0,"-","ui"],[165,1,0,"-","web"],[166,1,0,"-","writer"]],"scitex.app":[[100,2,1,"","FilesBackend"],[100,3,1,"","build_tree"],[100,3,1,"","copy_file"],[100,3,1,"","delete_file"],[100,3,1,"","file_exists"],[100,3,1,"","get_files"],[100,3,1,"","list_files"],[100,3,1,"","read_file"],[100,3,1,"","register_backend"],[100,3,1,"","rename_file"],[100,3,1,"","scaffold"],[100,3,1,"","validate"],[100,3,1,"","write_file"]],"scitex.app.FilesBackend":[[100,0,1,"","copy"],[100,0,1,"","delete"],[100,0,1,"","exists"],[100,0,1,"","list"],[100,0,1,"","read"],[100,0,1,"","rename"],[100,0,1,"","write"]],"scitex.audit":[[102,3,1,"","audit"]],"scitex.clew":[[108,3,1,"","add_claim"],[108,3,1,"","chain"],[108,3,1,"","check_stamp"],[108,3,1,"","dag"],[108,3,1,"","export_claims_json"],[108,3,1,"","hash_directory"],[108,3,1,"","hash_file"],[108,3,1,"","init_examples"],[108,3,1,"","list_claims"],[108,3,1,"","list_runs"],[108,3,1,"","list_stamps"],[108,3,1,"","mermaid"],[108,3,1,"","on_session_close"],[108,3,1,"","on_session_start"],[108,3,1,"","register_intermediate"],[108,3,1,"","rerun"],[108,3,1,"","rerun_claims"],[108,3,1,"","rerun_dag"],[108,3,1,"","run"],[108,3,1,"","stamp"],[108,3,1,"","stats"],[108,3,1,"","status"],[108,3,1,"","verify_claim"]],"scitex.cli":[[109,3,1,"","format_python_signature"],[109,3,1,"","group_to_json"],[109,3,1,"","help_recursive_to_json"],[109,3,1,"","print_help_recursive"]],"scitex.compat":[[111,3,1,"","deprecated"],[111,3,1,"","notify"],[111,3,1,"","notify_async"]],"scitex.config":[[112,2,1,"","PriorityConfig"],[112,2,1,"","ScitexConfig"],[112,2,1,"","ScitexPaths"],[112,3,1,"","get_config"],[112,3,1,"","get_paths"],[112,3,1,"","get_scitex_dir"],[112,3,1,"","load_dotenv"],[112,3,1,"","load_env_from_path"],[112,3,1,"","load_scitex_env"],[112,3,1,"","load_yaml"],[112,3,1,"","parse_src_file"]],"scitex.config.PriorityConfig":[[112,4,1,"","SENSITIVE_EXPRESSIONS"],[112,0,1,"","__init__"],[112,0,1,"","clear_log"],[112,0,1,"","get"],[112,0,1,"","print_resolutions"],[112,4,1,"","resolution_log"],[112,0,1,"","resolve"]],"scitex.config.ScitexConfig":[[112,0,1,"","__init__"],[112,5,1,"","config_path"],[112,5,1,"","flat"],[112,0,1,"","get"],[112,0,1,"","get_nested"],[112,0,1,"","print"],[112,5,1,"","raw"],[112,0,1,"","resolve"]],"scitex.config.ScitexPaths":[[112,0,1,"","__init__"],[112,5,1,"","base"],[112,5,1,"","browser"],[112,5,1,"","browser_persistent"],[112,5,1,"","browser_screenshots"],[112,5,1,"","browser_sessions"],[112,5,1,"","cache"],[112,5,1,"","capture"],[112,0,1,"","ensure_all"],[112,0,1,"","ensure_dir"],[112,5,1,"","function_cache"],[112,5,1,"","impact_factor_cache"],[112,0,1,"","list_all"],[112,5,1,"","logs"],[112,5,1,"","openathens_cache"],[112,0,1,"","resolve"],[112,5,1,"","rng"],[112,5,1,"","scholar"],[112,5,1,"","scholar_cache"],[112,5,1,"","scholar_library"],[112,5,1,"","screenshots"],[112,5,1,"","test_monitor"],[112,5,1,"","writer"]],"scitex.context":[[114,3,1,"","detect_environment"],[114,3,1,"","get_notebook_directory"],[114,3,1,"","get_notebook_info_simple"],[114,3,1,"","get_notebook_name"],[114,3,1,"","get_notebook_path"],[114,3,1,"","get_output_directory"],[114,3,1,"","is_ipython"],[114,3,1,"","is_notebook"],[114,3,1,"","is_script"],[114,3,1,"","quiet"],[114,3,1,"","suppress_output"]],"scitex.cv":[[115,3,1,"","arrow"],[115,3,1,"","blur"],[115,3,1,"","circle"],[115,3,1,"","crop"],[115,3,1,"","denoise"],[115,3,1,"","edge_detect"],[115,3,1,"","flip"],[115,3,1,"","line"],[115,3,1,"","load"],[115,3,1,"","pad"],[115,3,1,"","polylines"],[115,3,1,"","rectangle"],[115,3,1,"","resize"],[115,3,1,"","rotate"],[115,3,1,"","save"],[115,3,1,"","sharpen"],[115,3,1,"","text"],[115,3,1,"","threshold"],[115,3,1,"","to_bgr"],[115,3,1,"","to_gray"],[115,3,1,"","to_rgb"]],"scitex.dev":[[120,2,1,"","ErrorCode"],[120,2,1,"","InstallHint"],[120,2,1,"","Result"],[120,6,1,"","ScitexError"],[120,2,1,"","SideEffect"],[120,3,1,"","add_dry_run_argument"],[120,3,1,"","add_json_argument"],[120,3,1,"","async_wrap_as_mcp"],[120,3,1,"","build_docs"],[120,3,1,"","check_versions"],[120,3,1,"","classify_exception"],[120,3,1,"","dry_run_option"],[120,3,1,"","fix_mismatches"],[120,3,1,"","get_docs"],[120,3,1,"","get_ecosystem_versions"],[120,3,1,"","get_mismatches"],[120,3,1,"","handle_result"],[120,3,1,"","json_option"],[120,3,1,"","last_install_hint"],[120,3,1,"","list_versions"],[120,3,1,"","pull_local"],[120,3,1,"","remote_commit"],[120,3,1,"","remote_diff"],[120,3,1,"","result_to_mcp"],[120,3,1,"","run_as_cli"],[120,3,1,"","run_as_mcp"],[120,3,1,"","search"],[120,3,1,"","search_docs"],[120,3,1,"","supports_return_as"],[120,3,1,"","sync_all"],[120,3,1,"","sync_host"],[120,3,1,"","sync_local"],[120,3,1,"","sync_tags"],[120,3,1,"","try_import_optional"],[120,3,1,"","wrap_as_cli"],[120,3,1,"","wrap_as_mcp"]],"scitex.dev.ErrorCode":[[120,5,1,"","exit_code"]],"scitex.dev.Result":[[120,0,1,"","__post_init__"],[120,4,1,"","context"],[120,4,1,"","data"],[120,4,1,"","error"],[120,4,1,"","error_code"],[120,5,1,"","exit_code"],[120,4,1,"","hints_on_error"],[120,4,1,"","hints_on_success"],[120,4,1,"","hints_on_warning"],[120,4,1,"","idempotent"],[120,0,1,"","json_schema"],[120,4,1,"","side_effects"],[120,4,1,"","success"],[120,0,1,"","to_dict"],[120,0,1,"","to_json"],[120,4,1,"","version"]],"scitex.dev.ScitexError":[[120,0,1,"","to_dict"]],"scitex.dev.SideEffect":[[120,4,1,"","target"],[120,4,1,"","type"],[120,4,1,"","undoable"]],"scitex.etc":[[124,3,1,"","count"],[124,3,1,"","count_grids"],[124,3,1,"","search"],[124,3,1,"","yield_grids"]],"scitex.gists":[[127,3,1,"","SigMacro_processFigure_S"],[127,3,1,"","SigMacro_toBlue"],[127,3,1,"","sigmacro_process_figure_s"],[127,3,1,"","sigmacro_to_blue"]],"scitex.logging":[[134,6,1,"","AuthenticationError"],[134,6,1,"","AxisError"],[134,6,1,"","BibTeXEnrichmentError"],[134,6,1,"","ConfigFileNotFoundError"],[134,6,1,"","ConfigKeyError"],[134,6,1,"","ConfigurationError"],[134,6,1,"","DOIResolutionError"],[134,6,1,"","DTypeError"],[134,6,1,"","DataError"],[134,6,1,"","DataLossWarning"],[134,6,1,"","EnrichmentError"],[134,6,1,"","FigureNotFoundError"],[134,6,1,"","FileFormatError"],[134,6,1,"","IOError"],[134,6,1,"","InvalidPathError"],[134,6,1,"","LoadError"],[134,6,1,"","ModelError"],[134,6,1,"","NNError"],[134,6,1,"","PDFDownloadError"],[134,6,1,"","PDFExtractionError"],[134,6,1,"","PathError"],[134,6,1,"","PathNotFoundError"],[134,6,1,"","PerformanceWarning"],[134,6,1,"","PlottingError"],[134,6,1,"","SaveError"],[134,6,1,"","ScholarError"],[134,6,1,"","SciTeXDeprecationWarning"],[134,6,1,"","SciTeXError"],[134,6,1,"","SciTeXWarning"],[134,6,1,"","SearchError"],[134,6,1,"","ShapeError"],[134,6,1,"","StatsError"],[134,6,1,"","StyleWarning"],[134,2,1,"","Tee"],[134,6,1,"","TemplateError"],[134,6,1,"","TemplateViolationError"],[134,6,1,"","TestError"],[134,6,1,"","TranslatorError"],[134,6,1,"","UnitWarning"],[134,3,1,"","check_file_exists"],[134,3,1,"","check_path"],[134,3,1,"","check_shape_compatibility"],[134,3,1,"","configure"],[134,3,1,"","enable_file_logging"],[134,3,1,"","filterwarnings"],[134,3,1,"","getLogger"],[134,3,1,"","get_level"],[134,3,1,"","get_log_path"],[134,3,1,"","is_file_logging_enabled"],[134,3,1,"","log_to_file"],[134,3,1,"","resetwarnings"],[134,3,1,"","set_level"],[134,3,1,"","tee"],[134,3,1,"","warn"],[134,3,1,"","warn_data_loss"],[134,3,1,"","warn_deprecated"],[134,3,1,"","warn_performance"]],"scitex.logging.SciTeXError":[[134,0,1,"","__init__"]],"scitex.logging.Tee":[[134,5,1,"","buffer"],[134,0,1,"","close"],[134,0,1,"","fileno"],[134,0,1,"","flush"],[134,0,1,"","isatty"],[134,0,1,"","write"]],"scitex.msword":[[137,2,1,"","BaseWordProfile"],[137,2,1,"","WordReader"],[137,2,1,"","WordWriter"],[137,3,1,"","accept_all_tracked_changes"],[137,3,1,"","apply_comments_as_edits"],[137,3,1,"","clear_highlights"],[137,3,1,"","convert_docx_to_tex"],[137,3,1,"","create_post_import_hook"],[137,3,1,"","diff_docx"],[137,3,1,"","enable_track_changes"],[137,3,1,"","extract_comments"],[137,3,1,"","extract_highlights"],[137,3,1,"","extract_tracked_changes"],[137,3,1,"","get_profile"],[137,3,1,"","is_track_changes_enabled"],[137,3,1,"","link_captions_to_images"],[137,3,1,"","link_captions_to_images_by_proximity"],[137,3,1,"","list_profiles"],[137,3,1,"","load_docx"],[137,3,1,"","mark_additions"],[137,3,1,"","mark_modifications"],[137,3,1,"","normalize_section_headings"],[137,3,1,"","preserve_bold_tokens"],[137,3,1,"","register_profile"],[137,3,1,"","reject_all_tracked_changes"],[137,3,1,"","save_docx"],[137,3,1,"","summarize_diff"],[137,3,1,"","validate_document"],[137,3,1,"","wrap_as_tracked_deletion"],[137,3,1,"","wrap_as_tracked_insertion"]],"scitex.msword.BaseWordProfile":[[137,4,1,"","body_font"],[137,4,1,"","body_font_size_pt"],[137,4,1,"id3","caption_style"],[137,4,1,"id10","columns"],[137,4,1,"id1","description"],[137,4,1,"id11","double_anonymous"],[137,4,1,"id9","equation_style"],[137,4,1,"id6","figure_caption_prefixes"],[137,4,1,"","heading_background_hex"],[137,4,1,"id2","heading_styles"],[137,4,1,"","line_spacing"],[137,4,1,"id8","list_styles"],[137,4,1,"id0","name"],[137,4,1,"id4","normal_style"],[137,4,1,"","post_import_hooks"],[137,4,1,"","pre_export_hooks"],[137,4,1,"id5","reference_section_titles"],[137,4,1,"id7","table_caption_prefixes"]],"scitex.msword.WordReader":[[137,0,1,"","__init__"],[137,0,1,"","read"]],"scitex.msword.WordWriter":[[137,0,1,"","__init__"],[137,0,1,"","write"]],"scitex.notebook":[[139,2,1,"","CompiledNotebook"],[139,3,1,"","check_notebook"],[139,3,1,"","compile_notebook"],[139,3,1,"","convert_notebook"],[139,3,1,"","get_code_cells"],[139,3,1,"","get_notebook_name"],[139,3,1,"","parse_notebook"],[139,3,1,"","verify_notebook"]],"scitex.notebook.CompiledNotebook":[[139,4,1,"id2","dag"],[139,4,1,"id1","execution_order"],[139,4,1,"id0","notebook_path"],[139,4,1,"id3","runs"],[139,0,1,"","to_mermaid"],[139,0,1,"","to_script"]],"scitex.os":[[141,3,1,"","check_host"],[141,3,1,"","is_host"],[141,3,1,"","mv"],[141,3,1,"","verify_host"]],"scitex.parallel":[[142,3,1,"","run"]],"scitex.path":[[143,3,1,"","clean"],[143,3,1,"","create_relative_symlink"],[143,3,1,"","find_dir"],[143,3,1,"","find_file"],[143,3,1,"","find_git_root"],[143,3,1,"","find_latest"],[143,3,1,"","fix_broken_symlinks"],[143,3,1,"","get_data_path_from_a_package"],[143,3,1,"","get_spath"],[143,3,1,"","get_this_path"],[143,3,1,"","getsize"],[143,3,1,"","increment_version"],[143,3,1,"","is_symlink"],[143,3,1,"","list_symlinks"],[143,3,1,"","mk_spath"],[143,3,1,"","readlink"],[143,3,1,"","resolve_symlinks"],[143,3,1,"","split"],[143,3,1,"","symlink"],[143,3,1,"","this_path"],[143,3,1,"","unlink_symlink"]],"scitex.repro":[[147,2,1,"","RandomStateManager"],[147,3,1,"","fix_seeds"],[147,3,1,"","gen_ID"],[147,3,1,"","gen_id"],[147,3,1,"","gen_timestamp"],[147,3,1,"","get"],[147,3,1,"","hash_array"],[147,3,1,"","reset"],[147,3,1,"","timestamp"]],"scitex.repro.RandomStateManager":[[147,0,1,"","__call__"],[147,0,1,"","__init__"],[147,0,1,"","checkpoint"],[147,0,1,"","clear_cache"],[147,0,1,"","get_generator"],[147,0,1,"","get_np_generator"],[147,0,1,"","get_sklearn_random_state"],[147,0,1,"","get_torch_generator"],[147,0,1,"","restore"],[147,0,1,"","temporary_seed"],[147,0,1,"","verify"]],"scitex.resource":[[148,3,1,"","get_host_config"],[148,3,1,"","get_host_name"],[148,3,1,"","get_machine_config"],[148,3,1,"","get_machine_name"],[148,3,1,"","get_metrics"],[148,3,1,"","get_processor_usages"],[148,3,1,"","get_specs"],[148,3,1,"","load_config"],[148,3,1,"","log_processor_usages"],[148,3,1,"","main"]],"scitex.rng":[[149,2,1,"","RandomStateManager"],[149,3,1,"","fix_seeds"],[149,3,1,"","gen_ID"],[149,3,1,"","gen_id"],[149,3,1,"","gen_timestamp"],[149,3,1,"","get"],[149,3,1,"","hash_array"],[149,3,1,"","reset"],[149,3,1,"","timestamp"]],"scitex.rng.RandomStateManager":[[149,0,1,"","__call__"],[149,0,1,"","__init__"],[149,0,1,"","checkpoint"],[149,0,1,"","clear_cache"],[149,0,1,"","get_generator"],[149,0,1,"","get_np_generator"],[149,0,1,"","get_sklearn_random_state"],[149,0,1,"","get_torch_generator"],[149,0,1,"","restore"],[149,0,1,"","temporary_seed"],[149,0,1,"","verify"]],"scitex.security":[[152,6,1,"","GitHubSecurityError"],[152,3,1,"","check_github_alerts"],[152,3,1,"","format_alerts_report"],[152,3,1,"","get_latest_alerts_file"],[152,3,1,"","save_alerts_to_file"]],"scitex.ui":[[163,3,1,"","get_component"],[163,3,1,"","get_docs_path"],[163,3,1,"","get_static_dir"],[163,3,1,"","list_components"]],"scitex.writer":[[166,2,1,"","CompilationResult"],[166,2,1,"","ManuscriptTree"],[166,2,1,"","RevisionTree"],[166,2,1,"","SupplementaryTree"],[166,2,1,"","Writer"],[166,3,1,"","usage"]],"scitex.writer.CompilationResult":[[166,0,1,"","__str__"],[166,4,1,"","diff_pdf"],[166,4,1,"","duration"],[166,4,1,"","errors"],[166,4,1,"","exit_code"],[166,4,1,"","log_file"],[166,4,1,"","output_pdf"],[166,4,1,"","stderr"],[166,4,1,"","stdout"],[166,4,1,"","success"],[166,4,1,"","warnings"]],"scitex.writer.ManuscriptTree":[[166,0,1,"","__post_init__"],[166,4,1,"","archive"],[166,4,1,"","base"],[166,4,1,"","contents"],[166,4,1,"","git_root"],[166,4,1,"","readme"],[166,4,1,"","root"],[166,0,1,"","verify_structure"]],"scitex.writer.RevisionTree":[[166,0,1,"","__post_init__"],[166,4,1,"","archive"],[166,4,1,"","base"],[166,4,1,"","contents"],[166,4,1,"","docs"],[166,4,1,"","git_root"],[166,4,1,"","readme"],[166,4,1,"","revision"],[166,4,1,"","root"],[166,0,1,"","verify_structure"]],"scitex.writer.SupplementaryTree":[[166,0,1,"","__post_init__"],[166,4,1,"","archive"],[166,4,1,"","base"],[166,4,1,"","contents"],[166,4,1,"","git_root"],[166,4,1,"","readme"],[166,4,1,"","root"],[166,4,1,"","supplementary"],[166,4,1,"","supplementary_diff"],[166,0,1,"","verify_structure"]],"scitex.writer.Writer":[[166,0,1,"","__init__"],[166,0,1,"","compile_manuscript"],[166,0,1,"","compile_revision"],[166,0,1,"","compile_supplementary"],[166,0,1,"","delete"],[166,0,1,"","get_pdf"],[166,0,1,"","watch"]]},"objnames":{"0":["py","method","Python method"],"1":["py","module","Python module"],"2":["py","class","Python class"],"3":["py","function","Python function"],"4":["py","attribute","Python attribute"],"5":["py","property","Python property"],"6":["py","exception","Python exception"]},"objtypes":{"0":"py:method","1":"py:module","2":"py:class","3":"py:function","4":"py:attribute","5":"py:property","6":"py:exception"},"terms":{"00_abc1":[98,168,174],"00_run_al":[2,108],"00_scitex":168,"00_share":[97,166],"01_audio":168,"01_manuscript":[25,97,166],"01_python":120,"01_scholar":168,"02_supplementari":[25,97,166],"02m":[78,84,147,153],"03_interfac":120,"03_revis":[25,97,166],"05m":[18,147,149],"08_12":98,"09_error":120,"0o444":[2,108],"100ms":148,"10mb":[13,134],"12h30m45s":[18,147,149],"12h30m45s_a3bc9xy2":[18,147,149],"13d":[78,84,147,153],"14h30m15s_a3bc9xy2":[78,147],"14h30m15s_z5mr":[84,153],"167m":[82,151,169],"16g":110,"18_14":[168,174],"1d":[69,138,145],"1e":98,"1s":124,"20250531_xy9a":[18,147,149],"2025i":[18,147,149],"20260213_143022":[57,126],"20260213_143022_ab12":26,"2026i":[78,84,147,153],"250m":169,"284m":[82,151],"2d":[69,76,138,145],"2s":148,"30s":[50,119],"31d":[18,147,149],"3f":98,"8digit01":[82,151],"A":[26,28,75,76,87,97,98,100,114,120,124,131,137,144,156,158,166,168,173,174],"AND":174,"After":[2,108],"All":[3,26,27,43,60,61,65,76,87,110,112,129,130,134,137,139,156,167,168,170,173],"An":[3,112],"Both":169,"By":148,"Each":[2,26,29,82,84,108,133,137,139,151,153,158,168,169,172],"For":[3,18,29,112,120,131,147,149,168,172,174],"From":168,"How":[60,120,129],"I":[28,29,62,64,65,89,98,115,120,133,134,158,169,171,172],"IS":[2,108],"If":[2,3,13,15,18,25,26,29,100,101,102,108,112,115,120,124,134,137,139,143,147,148,149,152,166,168,172],"In":[50,76,111,119,133,168],"It":[3,26,28,60,112,120,129,137,148,168,169,171,174],"My":[57,126,137],"No":[39,84,89,108,153,158,168],"Not":[87,156,174],"On":[15,143],"Or":[52,98,121,173],"Other":137,"Out":137,"Same":[78,147],"Should":[64,133],"The":[2,3,13,15,17,28,29,57,64,65,76,84,100,108,109,110,111,112,114,120,124,126,131,133,134,137,139,143,145,148,153,163,168,169,172,173,174],"Then":173,"These":[100,169],"They":26,"This":[3,13,15,18,26,65,100,111,112,114,124,134,137,143,147,148,149,163,168,169,174],"To":[29,140,172],"What":[120,168,171],"When":[2,26,62,76,84,100,108,148,153,168,169,174],"Which":102,"With":[3,25,112,140,166],"You":[168,174],"Your":[84,153],"_":[3,18,75,112,144,147,149],"__all__":[61,130],"__call__":[18,147,149],"__file__":[15,143],"__getattr__":148,"__init__":[3,13,18,25,112,134,137,147,149,166,168],"__main__":[84,140,153,168,174],"__name__":[13,64,65,84,133,134,140,153,168,174],"__post_init__":[25,120,166],"__str__":[25,166],"__version__":[29,172],"_app":100,"_build":120,"_core":[2,108],"_db":[2,108],"_default_db_path":[2,108],"_discover_fn":120,"_doc":163,"_ecosystem":[3,112],"_figur":137,"_find_examples_dir":[2,108],"_get_one_fn":120,"_linter_plugin":133,"_out":131,"_root_fn":120,"_rule":133,"_skill":[3,112],"_sphinx_fn":120,"_sphinx_html":120,"_v":[15,143],"_warn":[13,134],"a1b2":[2,108],"a1b2c3d4e5f6":[2,108],"ab":[54,123],"abc":[13,134],"abl":137,"abov":[29,171,172],"absolut":[2,15,64,108,133,143,163],"abstract":[26,82,97,98,100,151,166,174],"academ":[89,137,158],"acc":[30,99],"accept":[3,87,112,120,137,156,173],"accept_all_tracked_chang":[129,137],"access":[15,26,29,43,60,82,84,100,112,120,129,131,143,148,151,153,168,169,172,173],"accident":[2,108],"accord":[13,134],"accumul":168,"accuraci":[30,99,101,110,120,140],"achiev":140,"acorr":76,"across":[30,64,78,82,98,99,102,116,120,133,140,147,151,167,168,171,173],"act":169,"action":[13,134],"activ":[84,100,153],"actual":[111,137,139,148],"actual_dtyp":[13,134],"actual_format":[13,134],"actual_shap":[13,134],"acute_n_sig_pathway":[2,108],"adaboost":[30,99],"adapt":[69,138],"adaptive_gaussian":115,"adaptive_mean":115,"add":[25,76,82,97,98,120,131,137,142,151,163,166,173],"add_abstract":98,"add_bibentri":[97,166],"add_claim":[2,108],"add_dry_run_argu":120,"add_edg":[52,121],"add_figur":[97,166],"add_json_argu":120,"add_nod":[52,121],"add_tabl":[97,166],"addit":[2,13,108,120,134,148,174],"adjac":139,"affect":[120,148],"afterward":139,"agent":[2,25,29,64,108,120,133,137,158,166,168,171,172,173],"agg":[84,153],"aggreg":[120,133,168,174],"agpl":28,"ahead":120,"ai":[0,25,29,60,64,120,129,133,158,166,168,171,172,173],"ai2":[25,166],"alert":[101,102,111,140,152],"alert_async":111,"algorithm":[2,108],"alia":[18,147,148,149],"alias":[69,111,138],"align":145,"align_bin":145,"allow":137,"alongsid":[131,168,171,174],"alpha":[54,69,76,98,115,123,138,145],"alphabet":26,"alphanumer":[18,147,149],"alreadi":[84,100,137,153],"also":[26,29,76,87,120,131,137,156,158,172,174],"altern":115,"alway":[13,100,120,134,148],"amplitud":[54,69,76,98,123,138,174],"analysi":[26,29,39,52,54,65,69,89,101,108,121,123,134,138,158,171,172],"analyt":[54,69,123,138],"analyz":[52,84,89,98,120,121,153,158,173],"ancestor":[2,108],"anchor":[120,137],"anchor_text":137,"angl":[54,115,123],"angle_spectrum":76,"ani":[2,3,13,18,25,26,28,62,75,76,84,100,108,112,120,131,134,137,139,140,142,144,147,148,149,153,163,166,168,171,173,174],"annot":[60,61,130,145],"anonym":137,"anova":[87,156],"anthrop":[29,172],"anti":[69,138],"anywher":28,"apa":171,"api":[25,29,31,32,33,34,35,36,37,38,40,41,42,44,45,46,47,48,49,51,53,55,56,58,59,60,63,66,67,68,70,71,72,73,74,77,79,80,81,83,85,86,88,90,91,92,93,94,95,96,109,111,148,149,163,167,168,171,172,174],"app":[28,29,60,120,129,158,167,169,171,172],"app_copy_fil":100,"app_delete_fil":100,"app_developer_guid":163,"app_dir":100,"app_file_exist":100,"app_list_fil":100,"app_read_fil":100,"app_rename_fil":100,"app_scaffold":100,"app_valid":100,"app_write_fil":100,"appdirectoriesfind":163,"appear":[120,137],"append":[13,18,84,100,134,147,149,153],"appl":124,"apple_juic":124,"appli":[25,50,115,119,137,166],"applic":[69,120,129,137,138,158],"apply_comments_as_edit":[129,137],"approach":120,"appropri":[114,131,167],"apptain":158,"arang":[54,123],"arbitrari":174,"architectur":[28,60,98,129,171],"archiv":[25,166],"area":[28,115,145,171],"arg":[84,98,100,111,124,145,153,173],"argpars":[84,120,153,168],"args_list":142,"argument":[2,18,43,84,108,112,120,142,147,148,149,153,168,174],"ariadn":[39,108],"around":[15,26,143],"arr":[62,131,174],"arr_2d":145,"arr_load":131,"array":[18,26,50,78,115,119,124,131,145,147,149,168,174],"array_data":[18,78,147,149],"arrow":[52,115,121,129],"articl":[97,166],"artifact":[2,108],"arxiv":[25,82,151,166],"as_bool":124,"as_json":120,"asian":137,"assert":[2,108,124],"asset":163,"assign":137,"assist":[28,171],"associ":139,"ast":[61,64,120,130,133,169],"asta":[25,166],"astral":[29,172],"async":[50,111,119,120],"async_wrap_as_mcp":120,"attempt":[13,134],"attent":[60,129,174],"attr":120,"attribut":[2,108,120],"auc":[30,99],"audibl":101,"audio":[28,29,60,98,129,131,168,169,171,172,173,174],"audit":[28,60,100,129,171],"augment":[18,69,138,147,149],"auth":[3,82,112,151],"auth_check":152,"authent":[3,13,82,112,134,151,152],"authenticationerror":[13,134],"author":[3,82,112,137,151],"auto":[0,2,15,18,25,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,100,108,120,129,131,137,143,147,149,153,166,174],"auto_uppercas":[3,112],"autom":[29,98,107,127,168,171,172,173],"automat":[2,3,18,26,27,39,62,65,76,78,84,100,101,108,112,131,133,134,140,147,149,153,167,168,170,171,174],"autonom":[98,173],"avail":[29,60,64,89,100,101,102,109,110,116,120,129,133,140,145,148,158,167,168,171,172,174],"available_key":[13,134],"avoid":[2,108],"ax":[27,28,62,76,98,131,145,170,174],"axe":[13,17,26,27,62,76,133,134,170,174],"axes_height_mm":76,"axes_hint":133,"axes_width_mm":76,"axi":[13,60,69,129,134,138],"axis1":[69,138],"axis2":[69,138],"axis_info":[13,134],"axiserror":[13,65,134],"axiswisedropout":[69,138],"axiswrapp":76,"b":[26,75,76,87,120,124,137,144,156,174],"back":[2,3,39,50,108,112,119,120,137,148,168,174],"backend":[2,26,60,84,100,108,120,129,153,168,169],"background":148,"backup":[13,134],"backup_count":[13,134],"backward":[3,18,111,112,120,147,149],"balanc":[30,99],"banana":124,"band":[54,69,123,138,173],"band_pow":[54,123],"bandit":102,"bandpass":[54,69,123,138],"bandpassfilt":[69,138],"bandstopfilt":[69,138],"bar":[30,50,76,99,119,142],"barb":76,"bare":[64,133],"barh":76,"base":[2,3,13,15,18,25,26,29,39,43,50,60,61,64,65,69,82,84,100,108,112,114,115,119,120,130,133,134,137,138,139,143,148,149,151,152,153,166,168,169,171,172],"base_dir":[3,43,112],"basewordprofil":[129,137],"bash":[3,112],"bashrc":168,"basic":[18,60,82,129,137,147,149,151,174],"batch":[60,69,129,138],"batch_fn":[50,119],"batch_numpy_fn":[50,119],"batch_pandas_fn":[50,119],"batch_siz":[50,84,119,153,168],"batch_torch_fn":[50,119],"bci":116,"becaus":[28,29,172],"becom":[2,26,84,108,139,153,168],"befor":[13,15,87,120,134,137,143,156],"before_train":[78,147],"behavior":[3,13,15,89,109,112,134,143,158,168],"behaviour":100,"behind":168,"belong":[2,108],"benchmark":[28,60,129,171],"best":[28,60,64,129,133],"beta":[54,69,123,138],"beyond":131,"bgr":115,"bgra":115,"bib":[25,82,97,98,131,151,166,174],"bibliographi":[97,131,166],"bibtex":[13,29,82,89,97,98,134,151,158,166,167,171,172,174],"bibtex_fil":[13,134],"bibtexenrichmenterror":[13,134],"bid":116,"big_fil":131,"bilater":115,"bin":145,"binari":[100,115],"binary_inv":115,"biomed":[82,116,151],"block":[137,148],"blue":[26,52,121],"blur":[115,129],"bnet":[69,138],"bnet_r":[69,138],"bodi":[137,168],"body_font":137,"body_font_size_pt":137,"boilerpl":168,"bold":137,"bonferroni":174,"bool":[2,3,13,15,18,25,84,100,108,112,114,115,120,124,134,137,143,147,148,149,152,153,166],"boolean":124,"boost":137,"boot":148,"boot_tim":148,"bot":140,"bottom":[52,115,121,145],"bound":[124,145],"boundari":[120,137],"box":[52,115,121,145],"boxplot":[76,145],"bpf":[69,138],"bracket":[13,76,134],"brain":116,"branch":[25,166],"brand":[25,166],"break":[30,64,99,133],"breakdown":[82,151],"bridg":[28,60,100,129,158,167,171],"broken":[15,18,143,147,149],"brows":116,"browser":[3,28,29,60,112,129,171,172],"browser_persist":[3,112],"browser_screenshot":[3,112],"browser_sess":[3,112],"brunner":[87,156],"bucket":137,"buffer":[13,134],"bug":168,"build":[2,29,39,97,100,108,116,120,131,139,163,166,168,172],"build_doc":120,"build_tre":100,"builder":120,"built":[120,124,131,163,167,168,171],"builtin":124,"bulk":129,"bulk_renam":120,"bullet":137,"bundl":[2,108,163,168],"by_color":137,"bypass":[84,153],"byte":[15,100,143],"c":[76,137,174],"c3d4":[2,108],"cach":[3,18,39,43,60,78,82,108,112,129,139,147,148,149,151],"cache_dir":[3,112],"cache_disk":[50,119],"cache_disk_async":[50,119],"cache_mem":[50,119],"cache_writ":120,"calc_":[30,99],"calc_bacc":[30,99],"calc_conf_mat":[30,99],"calc_feature_import":[30,99],"calc_mcc":[30,99],"calc_pre_rec_auc":[30,99],"calc_roc_auc":[30,99],"calcium":116,"calcul":174,"calculate_metr":[30,99],"call":[2,3,15,18,25,26,61,76,84,108,112,120,130,131,133,139,142,143,145,147,149,153,166,168,169,171,173],"call_rul":133,"callabl":[2,18,25,100,108,120,124,137,142,147,149,152,166],"callback":[25,120,166],"caller":[2,3,13,15,100,108,112,120,134,143],"can":[2,3,13,39,76,100,108,112,120,124,134,137,139,148,168,169,171,173,174],"cancel":110,"candid":124,"canni":115,"canon":[2,3,108,112,120,148],"canva":[28,60,98,129,171,173],"capabl":[29,98,171,172],"caption":[97,137,166],"caption_styl":137,"captur":[3,13,15,26,28,29,43,60,84,98,112,129,134,137,143,153,168,171,172,173,174],"capture_print":[13,134],"cascad":[3,112,148],"cascadeconfig":[3,112],"case":[3,112,120,129,137],"case_sensit":137,"catch":[39,108],"categor":[2,28,61,76,87,108,130,156,171],"categori":[13,60,76,98,120,124,129,131,171],"cbar_label":145,"cd":[29,172],"cell":139,"cell_id":139,"cell_index":[2,108],"cell_typ":139,"center":115,"central":[3,43,78,82,112,147,151],"cert":[3,112],"certain":148,"cfg":131,"chain":[2,60,82,120,129,151,173],"chainabl":137,"chang":[15,18,25,39,78,97,108,120,127,137,143,147,149,166,168],"channel":[60,115,129],"channelgainchang":[69,138],"char":[78,147],"charact":[2,18,84,108,147,149,153],"chat":135,"check":[2,13,15,26,29,39,43,64,87,98,100,102,108,110,112,114,120,133,134,137,139,140,141,143,152,156,169,172,173],"check_dep":100,"check_fil":[64,133],"check_file_exist":[13,134],"check_gh_auth":152,"check_github_alert":[129,152],"check_host":[129,141],"check_notebook":[129,139],"check_path":[13,134],"check_shape_compat":[13,134],"check_sourc":[64,133],"check_stamp":[2,108],"check_vers":120,"checker":[120,133],"checkpoint":[18,78,147,149],"chi":[87,156],"child":[25,26,89,158,166],"children":[100,137],"chmod":[2,108],"choic":168,"choos":171,"chronic_r2_min_pv":[2,108],"chronic_r2_n_sig_pathway":[2,108],"chunk":[2,108],"chunk_siz":[2,108],"ci":[28,98,158],"ci_low":174,"ci_upp":174,"circl":[52,115,121,129],"citat":[82,98,151,171],"citation_count":[82,151],"claim":[2,108,120,131],"claim_id":[2,108],"claim_id_or_loc":[2,108],"claim_typ":[2,108],"claim_valu":[2,108],"clariti":[18,120,147,149],"class":[3,13,18,25,60,61,65,78,100,120,129,130,133,134,137,139,145,147,149],"classif":[60,129],"classifi":[30,69,99,120,135,138],"classificationreport":[30,99],"classify_except":120,"classmethod":120,"claud":[98,173],"clean":[15,98,129,143],"cleanup":[2,108,171],"clear":[3,18,112,137,147,148,149],"clear_cach":[18,147,149],"clear_highlight":[129,137],"clear_load_cach":131,"clear_log":[3,112],"clew":[0,28,60,120,129,131,139,169,171],"clew_chain":[2,108],"clew_dag":[2,108],"clf":[30,99],"cli":[25,26,28,60,64,84,129,133,148,152,153,168,171],"cli_cmd":120,"click":[109,120,148],"client":173,"clinic":116,"clipboard":[57,126],"clobber":120,"clockwis":115,"clone":[25,29,89,97,100,120,158,166,167,172],"clone_templ":[89,158],"close":[2,13,39,57,108,115,126,134],"closer":[3,112],"closest":[3,112],"cloud":[28,29,60,100,109,129,169,171,172],"cloudfilesbackend":100,"cluster":[30,99,120],"cm":[27,170],"cmap":145,"cnn":[69,138],"cochran":[87,156],"code":[2,25,26,50,60,64,84,98,108,109,119,120,129,133,139,148,153,166,167,168,169,173,174],"code_scan":152,"code_scanning_fn":152,"codebas":120,"codeblock":[52,121],"codifi":[15,143],"coeff":[54,123],"coeffici":[30,99],"coerc":[2,108],"cohen":[87,156],"cohens_d":[87,156,174],"coher":76,"col":[75,144],"col1":[87,156],"col2":[87,156],"cold":148,"collabor":110,"collect":[2,82,108,110,148,151],"color":[84,97,98,109,115,127,137,145,153,166,168,174],"color_nam":137,"column":[52,75,87,121,137,144,145,148,156,174],"com":[29,43,112,140,172],"combin":[2,18,29,39,76,98,108,120,124,147,149,172],"command":[25,29,57,60,84,109,120,126,129,153,158,166,167,168,172,173,174],"comment":[137,139,148],"commit":120,"common":[3,75,112,137,139,144,158,174],"communiti":28,"compar":[2,39,108,137],"comparison":[39,52,60,108,121,129,133,171,174],"compat":[3,13,18,28,60,112,120,129,134,147,149,171,173],"compil":[25,29,60,98,129,139,168,169,171,172,173],"compilationresult":[25,97,166],"compile_manuscript":[25,97,166],"compile_notebook":[129,139],"compile_revis":[25,97,166],"compile_supplementari":[25,97,166],"compilednotebook":[129,139],"complet":[26,28,61,65,69,84,101,130,134,138,140,148,153,158,174],"complex":[115,137,174],"compon":[25,28,163,166],"compos":[76,169],"composit":[60,98,137],"compress":115,"compris":120,"comput":[2,18,29,39,108,110,137,147,149,172],"concept":[28,57,98,126,139,171,174],"concurr":120,"condit":[75,144],"conduct":173,"conf":131,"conf_mat_2d":145,"confid":[87,145,156,174],"config":[0,2,26,28,60,62,65,89,98,100,101,107,108,120,129,134,148,158,168,171,174],"config_dict":[3,112],"config_dir":62,"config_path":[3,112],"configfilenotfounderror":[13,65,134],"configkeyerror":[13,65,134],"configur":[3,13,25,28,60,65,82,84,98,100,120,129,131,134,137,140,148,151,153,166,171],"configurationerror":[13,65,134],"configure_cach":131,"confirm":120,"confus":[30,99,145],"connect":110,"consid":[3,18,112,124,147,149],"consist":[84,120,137,153,174],"consol":[13,65,114,134],"constant":[13,115,120,134],"consum":[2,108,120],"consumpt":120,"contain":[3,13,15,28,29,60,82,84,100,112,114,129,134,137,139,141,142,143,148,151,152,153,163,167,168,169,171,172,174],"container":[89,158],"content":[25,100,120,137,139,166],"context":[13,18,28,60,109,120,129,134,147,149,168,171,173],"continu":[54,65,69,87,123,134,138,156],"contour":[28,76,171],"contourf":76,"contract":148,"contribut":133,"contributor":120,"control":[13,76,87,134,137,156,158,173],"conveni":[3,15,112,131,137,143],"convent":[3,13,64,65,112,120,133,134],"convers":[3,60,97,112,115,127,129,137,139,166],"convert":[25,50,75,97,101,115,119,120,137,139,144,166,167,168,174],"convert_docx_to_tex":[129,137],"convert_figur":[97,166],"convert_notebook":[129,139],"coordin":[115,120,145],"copi":[2,57,97,100,108,120,126,166],"copy_fil":100,"core":[28,57,98,126,131,171,174],"corner":115,"coro_fn":120,"coroutin":120,"correct":[60,64,129,133,171,174],"correct_pvalu":[87,156,174],"correl":[30,87,98,99,156],"correspond":[137,148,174],"count":[82,98,124,129,137,151],"count_grid":[124,129],"counter":[115,124],"coupl":[54,69,123,138],"cover":[26,173,174],"cpu":148,"cpus":120,"creat":[2,3,13,15,18,25,52,62,76,78,84,97,98,108,110,112,120,121,129,131,134,137,143,147,149,152,153,158,166,168,171,173,174],"create_post_import_hook":[129,137],"create_relative_symlink":[15,129,143],"create_symlink":152,"creation":[15,26,98,129,131,143,168,173],"credenti":[3,112,168],"criteria":[82,151],"critic":[65,134],"crop":[54,115,123,129],"cross":[26,30,99,120],"crossref":[29,82,151,169,171,172],"crossref_email":[43,112],"crossvalidationexperi":[30,99],"crud":110,"csd":76,"css":163,"csv":[2,18,26,27,28,39,62,76,84,87,97,98,100,108,114,120,131,145,147,148,149,153,156,166,168,169,170,171,174],"csv_content":[97,166],"csv_text":100,"csv_to_latex":[25,97,166],"ctrl":[75,144],"ctx":109,"cubic":115,"cuda":[78,147],"cumul":145,"curl":[29,172],"current":[2,3,13,15,18,84,100,101,102,108,112,114,120,134,137,141,143,147,148,149,152,153],"current_root_hash":[2,108],"cursor":173,"curv":[30,76,99,145],"custom":[3,13,65,82,100,112,131,134,137,151,173],"cutoff":[54,123],"cutoffs_hz":[69,138],"cv":[28,29,60,129,171,172],"cv2":115,"cwd":[2,3,100,108,112],"cycl":168,"d":[18,52,62,87,121,147,149,156,168,174],"dag":[2,26,39,108,139],"dagverif":[2,108],"dandi":[29,116,169,172],"dandiset":116,"dandiset_id":116,"dark":[52,97,100,121,166],"dark_mod":[97,166],"dashboard":120,"data":[2,3,13,15,17,18,26,27,28,39,50,52,61,62,65,75,76,78,84,89,97,98,100,108,112,114,116,119,120,121,130,131,134,137,143,144,145,147,148,149,153,158,166,167,168,169,170,171,173,174],"data_dir":26,"data_gen":[78,147],"data_path":[84,153],"databas":[2,26,29,39,62,108,129,169,171,172],"dataclass":[43,112],"dataerror":[13,65,134],"datafram":[18,26,61,62,75,82,87,98,130,131,144,145,147,148,149,151,156,168,174],"datalosswarn":[13,65,134],"dataset":[28,29,60,65,98,129,131,134,168,169,171,172,173],"dataset_id":116,"date":137,"datetim":[18,28,60,129,147,148,149,171],"db":[0,2,28,29,60,76,108,116,129,139,171,172],"db_build":116,"db_dir":[2,108],"db_search":116,"db_stat":116,"dd":[13,18,84,134,147,149,153],"debug":[3,13,65,112,134],"decis":[52,121],"declar":[76,120,148],"decomposit":[54,123],"decor":[0,26,28,29,60,65,111,120,129,133,134,171,172],"deep":[82,151,174],"def":[3,26,28,39,50,62,84,98,101,107,108,112,119,120,131,133,140,142,153,168,174],"default":[2,3,13,15,18,25,26,43,52,76,84,87,89,100,101,102,108,112,115,120,121,124,134,137,139,140,143,145,147,148,149,152,153,156,158,166,168],"default_format":100,"defin":[133,173],"definit":[43,100,112,158,167],"degre":115,"del":137,"delay":124,"deleg":[2,3,28,100,108,111,112,120,140,171,174],"delet":[25,100,137,166],"delete_fil":100,"deliber":168,"delta":[54,123,137],"deltext":137,"demand":[2,108],"demo":[54,98,123],"demo_sig":[54,123],"demograph":[97,166],"denois":[115,129],"densiti":[54,69,123,138,145],"dep":102,"depend":[2,26,29,60,61,100,120,129,130,139,148,168,172],"dependabot":152,"dependabot_fn":152,"dependent_session_id":139,"deploy":168,"deprec":[13,18,50,57,65,111,119,120,126,127,129,134,147,148,149],"deprecationwarn":148,"depth":[100,137],"deriv":[2,3,43,108,112],"desc":142,"descend":120,"describ":[87,120,156],"descript":[2,29,60,65,84,89,98,100,108,116,120,129,134,137,140,142,153,158,169,172,173],"deserv":28,"design":[98,120,168,174],"desktop":140,"dest":[2,108],"dest_path":100,"destin":[2,15,108,143],"detail":[2,13,65,87,98,108,120,134,137,148,156,174],"detect":[15,18,54,100,114,115,120,123,131,135,137,143,147,149],"detect_environ":[114,129],"detect_rippl":[54,123],"detector":115,"determin":[2,26,62,108,131,168],"determinist":[18,78,147,149],"dev":[28,29,60,98,129,163,169,171,172,173],"devconfig":120,"develop":[28,120,167,169,171],"deviat":145,"df":[61,75,87,98,130,131,144,148,156,174],"df_load":131,"di":[2,108],"diagnost":[65,134],"diagram":[0,2,26,28,29,60,98,108,129,139,171,172,173,174],"diamond":[52,121],"dict":[0,2,3,13,15,18,26,28,43,60,62,84,87,100,102,108,112,120,124,129,131,134,137,139,143,147,148,149,152,153,156,168,171],"dictionari":[3,15,84,112,120,133,143,148,152,153,174],"didn":[3,112],"diff":[25,120,137,166],"diff_docx":[129,137],"diff_pdf":[25,166],"diff_stat":120,"differ":[18,39,108,137,147,149],"differenti":[69,138],"differentiablebandpassfilt":[69,138],"difflib":120,"digit":[29,54,123,172],"dim":[69,138],"dimens":[69,76,115,138],"dir":[2,3,15,26,61,84,100,108,112,130,143,153],"direct":[3,18,30,43,64,76,84,99,111,112,115,120,133,137,147,149,153],"direct_v":[3,112],"directori":[2,3,13,15,25,26,43,57,60,100,102,108,112,114,120,126,129,131,134,137,143,152,158,163,166,168,171,174],"dirnam":[15,143],"dirti":120,"disabl":[13,25,134,166],"discov":[120,133,168],"discover":163,"discoveri":[29,172,174],"discuss":[97,166],"disk":[50,119,120,131,148],"dispatch":26,"display":[107,120,135,145],"distant":[3,112],"distinct":[3,112],"distribut":[28,76,89,120,158,171],"diverg":[65,120,134],"divis":[13,134],"django":[109,120,163],"doc":[25,28,89,120,137,158,163,166],"doc_typ":[25,166],"docker":120,"docstr":[26,50,61,64,119,120,130,133,137,148,171],"document":[0,17,25,26,60,98,107,127,129,137,158,163,168],"documentsect":[25,166],"docx":137,"doe":[2,15,28,100,108,143,168],"doesn":[13,15,25,134,143,166],"doi":[13,82,98,134,151,167,173,174],"doiresolutionerror":[13,65,134],"domain":168,"don":[15,124,137,143],"done":[98,101],"dot":[3,15,52,84,100,112,121,143,153],"dotdict":[84,131,153],"dotenv":[3,112],"dotenv_path":[3,112],"dotted_path":[61,130],"dotx":137,"doubl":[52,121,137],"double_anonym":137,"download":[13,28,82,98,110,116,134,151,167,168,171,173,174],"download_pdf":[82,151],"downstream":133,"dpi":[97,166],"draft":[52,97,121,166],"draft_text":[97,166],"draw":[115,145],"dri":120,"driven":173,"drop":[69,138],"dropout":[26,69,138],"dropout_prob":[69,138],"dropoutchannel":[69,138],"dry_run":120,"dry_run_opt":120,"ds000117":116,"dsp":[0,28,29,60,129,171,172],"dst":[15,143],"dtypeerror":[13,65,134],"due":[15,143],"dump":[2,108,168],"dunder":[61,130],"duplex":115,"duplic":137,"durat":[25,54,123,148,166],"dure":[39,108,120],"e":[2,3,13,15,18,29,84,100,101,108,112,120,134,137,143,147,149,153,163,172],"e001":120,"earli":[3,112],"earlystop":[30,99],"easili":137,"east":137,"ecdf":76,"ecg":116,"ecosystem":[3,110,112,129,163,167,171,173],"ecosystem_commit":120,"ecosystem_sync":120,"edg":[52,115,121,145],"edge_detect":[115,129],"edit":[2,29,97,108,120,137,163,166,172],"edu":140,"educ":[13,134],"eeg":[69,76,82,116,138,151,174],"effect":[28,29,87,98,120,156,168,171,172,174],"effect_s":[87,98,156,174],"either":[2,108],"elaps":120,"electrophysiolog":116,"element":137,"elit":[82,151],"els":124,"elsewher":[3,112],"email":140,"email_from":140,"email_to":140,"emb":[3,112,135],"embed":[98,137,174],"emit":[2,13,108,111,134,148],"emphas":137,"emphasi":[60,69,129,138],"empir":145,"empti":[100,120,137,148],"enabl":[3,13,25,26,84,110,112,120,134,137,140,153,166,168],"enable_auto_ord":[50,119],"enable_consol":[13,134],"enable_fil":[13,134],"enable_file_log":[13,134],"enable_track_chang":[129,137],"enabled_hosts_fn":120,"end":[54,115,120,123,137,145],"endpoint":120,"ends_1d":145,"enforc":[26,50,64,119,133],"enhanc":[61,130],"enrich":[13,28,82,98,134,151,167,173,174],"enrich_bibtex":[98,174],"enrich_pap":[82,151],"enrichmenterror":[13,134],"ensur":[3,26,112,148,168,174],"ensure_al":[3,112],"ensure_dir":[3,112],"ensure_on":124,"entir":[2,69,107,108,109,120,138,171],"entri":[82,84,97,133,137,151,153,158,166,168,174],"enum":120,"env":[2,3,26,43,98,100,108,112,114,168,173],"env_prefix":[3,112],"env_registri":[3,112],"env_typ":114,"envelop":120,"environ":[2,3,43,89,98,100,108,112,114,137,158,168,173],"envvar":[43,112],"epilepsi":116,"epoch":[26,30,99,168,174],"equal":137,"equat":137,"equation_styl":137,"equival":[84,100,137,139,153,169],"error":[2,13,15,25,39,64,65,84,100,108,120,133,134,140,143,145,153,166,168,171,174],"error_cod":120,"errorbar":76,"errorcod":120,"escap":[2,108],"espeak":101,"especi":148,"essenti":[89,158],"estim":145,"etc":[18,28,60,62,76,87,101,120,129,131,137,139,147,149,156,171],"event":[28,60,129,171],"eventbus":[100,158],"eventplot":76,"everi":[2,26,28,29,62,87,107,108,124,137,156,167,168,171,172,174],"everyth":[28,168,171],"evid":120,"evolut":120,"exact":[76,87,120,124,156],"exampl":[28,29,43,61,64,76,84,129,130,153,168,171,172,174],"exc":120,"exceed":[50,119],"excel":[29,172],"except":[13,60,120,129,152],"exclud":[97,120,166],"exclus":[2,25,108,166],"execut":[2,28,39,50,84,98,108,110,114,119,120,139,142,153,168,169],"execution_ord":139,"exist":[2,3,13,15,25,39,100,108,112,120,134,137,143,148,166,168],"exit":[2,25,26,84,108,109,120,153,166],"exit_cod":[2,25,108,120,166],"exit_status":[84,153],"exp":[15,75,143,144],"exp_id":[18,147,149],"expans":[3,112,137],"expect":[29,39,108,120,172],"expected_dtyp":[13,134],"expected_format":[13,134],"expected_shap":[13,134],"expensive_comput":[50,119],"experi":[18,26,29,57,78,84,87,98,101,107,110,126,131,139,140,147,149,153,156,158,168,171,172,174],"experiment":[84,153,173],"experiment_":[18,147,149],"experiment_2025":[18,147,149],"explain":168,"explicit":[2,3,13,100,108,112,134,137],"explor":[61,129,130,167],"explore_h5":131,"explore_zarr":131,"expon":[13,134],"export":[2,25,26,27,28,29,52,61,62,76,82,84,98,108,120,121,130,131,137,145,151,153,166,168,169,170,171,172,173,174],"export_claims_json":[2,108],"expos":[98,171,173],"express":124,"ext":[15,143],"extend":168,"extens":[15,26,62,100,131,139,143,168,174],"extern":[2,108,120,173],"external_api":[50,119],"extra":[28,120,169,171],"extract":[3,13,26,61,62,112,130,134,137,139],"extract_com":[129,137],"extract_highlight":[129,137],"extract_imag":137,"extract_tracked_chang":[129,137],"extractor":[69,138],"f":[18,25,26,84,97,98,100,101,114,116,120,131,147,149,152,153,166,168],"f2":[2,108],"fa":100,"face":137,"factor":[3,82,112,115,151],"factor1":[87,156],"factor2":[87,156],"factori":[25,30,99,100,120,137,139,166],"fail":[2,13,15,65,108,120,134,143,152],"failed_nod":[2,108],"failur":[2,108,120],"fake":[2,15,18,108,143,147,149],"fall":[2,3,108,112,120,148],"fallback":[101,148],"fals":[2,3,15,18,25,84,87,97,100,108,112,114,115,120,124,137,140,143,145,147,148,149,153,156,166],"famili":120,"faq":120,"fas":100,"fast":[2,39,97,108,116,148,166,168],"faster":[29,116,172],"fastest":120,"fastnl":115,"fatal":[65,134],"fdr_bh":[87,156],"feather":131,"featur":[13,30,65,69,99,129,131,134,138,168],"fed":137,"festiv":101,"fetch":[98,167,174],"fft":[69,138],"field":[2,108,120,137],"fig":[28,62,76,98,131,137,145,168,174],"fig1":[97,166],"fig_a":76,"fig_b":76,"fig_c":76,"fig_id":[13,134],"figrecip":[17,28,29,76,120,133,168,169,171,172,174],"figur":[2,13,25,26,28,29,60,84,89,97,98,108,120,129,131,134,135,137,153,158,166,168,169,171,172,173],"figure_caption_prefix":137,"figurenotfounderror":[13,65,134],"figwrapp":76,"file":[2,3,13,15,18,25,26,28,29,39,43,62,64,65,78,84,97,98,100,101,108,112,114,115,120,131,133,134,137,139,141,143,147,148,149,152,153,158,163,166,167,168,169,171,172,173],"file_count":[2,108],"file_cr":120,"file_delet":120,"file_exist":100,"file_modifi":120,"file_path":[2,13,108,134],"file_path_filt":[2,108],"fileexistserror":[15,100,137,143],"fileformaterror":[13,65,134],"filenam":[15,18,98,114,143,147,149],"fileno":[13,134],"filenotfounderror":[2,15,100,108,120,143],"filepath":[3,13,64,89,112,133,134,158],"filesbackend":100,"filesystem":[3,100,112],"filesystembackend":100,"fill":[76,115,145],"fill_between":76,"fill_betweenx":76,"filt":[54,123],"filter":[2,13,54,60,61,64,69,100,108,115,123,129,130,133,134,138],"filterwarn":[13,65,134],"final":[2,28,39,108],"final_figur":[39,108],"final_st":107,"find":[15,61,62,75,102,130,137,139,143,144],"find_dir":[15,129,143],"find_exampl":[61,130],"find_examples_dir":[2,108],"find_fil":[15,129,143],"find_git_root":[15,129,143],"find_indi":[75,144],"find_latest":[15,129,143],"find_pval":[75,144],"finer":137,"finish":[120,140],"finished_error":[26,84,153],"finished_success":[26,84,98,140,153,168,174],"first":[2,3,13,18,78,101,108,112,120,131,134,137,147,149,168],"fisher":[87,156],"fit":124,"five":171,"fix":[13,15,18,26,64,78,84,120,133,134,143,147,149,153,168],"fix_broken_symlink":[15,129,143],"fix_loc":120,"fix_mismatch":120,"fix_remot":120,"fix_se":[18,26,78,84,129,147,149,153],"flac":131,"flag":[26,120,124,148],"flake8":[64,133],"flat":[3,87,112,120,148,156],"flatten":[3,112],"flip":[115,129],"float":[3,15,25,112,115,120,137,143,148,166],"flow":[76,139],"flush":[13,131,134],"fm":[64,133],"fm001":[64,133],"fmri":116,"fmts":131,"fn":120,"fname":[15,143],"focus":[60,89,129,137,158],"folder":[15,143],"follow":[3,13,43,60,97,112,129,134,145,166,167,173],"font":[115,137],"font_nam":137,"forc":[75,144],"force_df":[75,144],"forev":124,"form":[29,172],"format":[13,18,25,28,29,60,61,64,65,75,76,82,84,97,98,109,115,116,120,127,129,130,133,134,135,137,144,147,148,149,151,152,153,166,168,169,171,172,174],"format_alerts_report":[129,152],"format_python_signatur":[109,129],"format_result":174,"formatt":[13,134],"forward_to":[50,119],"found":[2,3,13,15,101,108,112,120,124,133,134,143,152],"four":133,"fpath":[15,143],"fr":76,"fraction":115,"framework":[28,30,50,99,119],"free":[3,112],"freq":[54,69,123,138],"freq_scal":[69,138],"freqgainchang":[69,138],"frequenc":[54,69,76,123,138,148],"fresh":[2,89,108,158],"friedman":[87,156],"friend":129,"from_scratch":[2,39,108],"from_yaml":[52,121],"frontend":[100,163],"frozen":[84,153],"fs":[54,69,123,138],"full":[2,15,26,27,29,52,61,82,89,107,108,114,120,121,130,143,148,151,158,168,169,170,171,172,173,174],"fulli":[15,143,158],"func":[61,109,130,142],"function":[2,3,15,18,26,30,50,60,61,84,99,100,109,111,119,120,124,129,130,133,137,139,142,143,145,148,149,153,167,168,169,171,174],"function_cach":[3,112],"futur":[2,108,120,137],"fuzzi":120,"g":[2,3,13,15,18,84,100,101,108,112,120,134,137,143,147,149,153,163],"g1":[87,156],"g2":[87,156],"g3":[87,156],"galleri":[28,76,98,129,171],"gamma":173,"gather":148,"gaussian":[69,115,138],"gaussianfilt":[69,138],"gen":[0,18,28,60,64,129,133,147,149,171],"gen_id":[18,78,129,147,149],"gen_timestamp":[18,78,129,147,149],"genai":[30,99],"general":[3,57,65,112,120,126,134,171],"generat":[0,2,3,15,18,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,108,112,120,121,123,130,137,139,143,147,149,153,166,168,170,171,172,173,174],"generate_data":[18,147,149],"generic":[2,3,108,112,120,137,140],"get":[2,3,13,15,18,25,43,61,65,76,78,87,89,97,100,108,112,114,116,120,129,130,134,137,143,147,148,149,152,156,163,166,168],"get_cache_info":131,"get_call_graph":[61,130],"get_class_annot":[61,130],"get_class_hierarchi":[61,130],"get_code_cel":[129,139],"get_code_scanning_alert":152,"get_code_templ":[89,158],"get_compon":[129,163],"get_config":[3,43,112],"get_curr":100,"get_data_path_from_a_packag":[15,129,143],"get_depend":[61,130],"get_dependabot_alert":152,"get_doc":120,"get_docs_path":[129,163],"get_docstr":[61,130],"get_ecosystem_vers":120,"get_export":[61,130],"get_fil":100,"get_gener":[18,147,149],"get_host_config":[129,148],"get_host_nam":[129,148],"get_import":[61,130],"get_info":100,"get_latest_alerts_fil":[129,152],"get_level":[13,134],"get_log_path":[13,134],"get_machine_config":[129,148],"get_machine_nam":[129,148],"get_metr":[129,148],"get_mismatch":120,"get_nest":[3,43,112],"get_notebook_directori":[114,129],"get_notebook_info_simpl":[114,129],"get_notebook_nam":[114,129,139],"get_notebook_path":[114,129],"get_np_gener":[18,78,147,149],"get_optim":[30,99],"get_output_directori":[114,129],"get_path":[3,43,112],"get_pdf":[25,166],"get_plugin":133,"get_pref":100,"get_proccessor_usag":148,"get_processor_usag":[129,148],"get_profil":[129,137],"get_scitex_dir":[3,43,112],"get_secret_alert":152,"get_sklearn_random_st":[18,147,149],"get_spath":[15,129,143],"get_spec":[129,148],"get_static_dir":[129,163],"get_this_path":[15,129,143],"get_torch_gener":[18,78,147,149],"get_type_hints_detail":[61,130],"getattr":120,"getlogg":[13,65,134],"getsiz":[15,129,143],"gib":148,"gist":[28,60,129,171],"git":[2,3,15,25,28,29,39,60,108,110,112,120,129,143,166,171,172],"git_root":[25,166],"git_strategi":[25,89,158,166],"gitea":109,"github":[29,102,152,172],"githubsecurityerror":[129,152],"give":[29,172],"given":[3,102,112,120,137,141],"glob":[2,62,108],"global":[13,18,43,65,78,84,98,112,134,147,148,149,153,173],"glue":169,"go":[84,153],"goe":[13,65,134],"googl":[29,171,172],"gothic":137,"gpu":[110,148],"gpus":148,"grain":137,"grammar":137,"graph":[61,76,130],"graphviz":[29,52,98,121,172,173],"gray":[52,121],"grayscal":115,"green":[52,121],"grid":[28,124,171],"groq":[29,172],"group":[2,26,27,52,61,76,87,108,109,121,130,131,137,156,170,173,174],"group1":[98,168,174],"group2":[98,168,174],"group_a":174,"group_b":174,"group_col":[87,156],"group_nam":[87,156],"group_to_json":[109,129],"grouper":[2,108],"gt":110,"guarante":[3,112],"guard":[64,133],"gui":107,"guid":[25,97,166,174],"guidanc":120,"guidelin":[25,60,129],"h":[27,87,156,170],"h5":[26,62,110,120,131],"h5pi":[26,120],"half":145,"hand":[2,108],"handl":[2,65,97,108,120,124,131,134,135,137,166,168,171,174],"handle_result":120,"handler":[13,120,131,134],"hardcod":[64,84,133,153],"has_doi":[82,151],"has_h5_key":131,"has_load":139,"has_sav":139,"has_sess":139,"has_zarr_key":131,"hash":[2,18,26,39,62,78,82,108,131,147,149,151,169],"hash1":[18,147,149],"hash2":[18,147,149],"hash_array":[18,78,129,147,149],"hash_directori":[2,108],"hash_fil":[2,108],"hatch":[2,108],"hdf5":[26,29,62,129,171,172],"head":[69,120,137,138],"heading_background_hex":137,"heading_styl":137,"health":120,"healthcheck":120,"heartbeat":148,"heatmap":[28,30,99,171,174],"heavy_comput":[50,119],"height":[107,115,145],"hello":101,"help":[26,84,98,109,120,153,167,168,174],"help_recursive_to_json":[109,129],"helper":[3,29,60,75,112,137,144,172],"hexadecim":[2,108],"hexbin":76,"hh":[18,84,147,149,153],"hhmm":[18,147,149],"hidden":26,"hidden_s":[26,84,131,153,168],"hide":145,"hide_spin":145,"hierarch":131,"hierarchi":[3,52,60,112,121,129,168],"high":[54,69,115,123,137,138],"high_pass":[54,123],"higher":[3,112],"highest":[3,26,112],"highlight":137,"highpass":[54,123],"highpassfilt":[69,138],"hilbert":[54,69,123,138],"hint":[84,120,133,153],"hints_on_error":120,"hints_on_success":120,"hints_on_warn":120,"hist":[27,76,145,170],"hist2d":76,"hist_bin":145,"histogram":145,"histor":[15,143],"histori":[25,29,89,139,158,166,172],"hit":[131,137],"hoc":[60,129],"hoist":139,"home":[3,15,26,112,135,143],"hood":169,"hook":[2,108,137,140],"hope":173,"horizont":[76,115,145],"host":[120,141,148,168],"host_nam":120,"host_packages_fn":120,"hostconfig":120,"hostnam":[141,148],"hot":[129,148],"hour":101,"hpc":129,"html":[100,120,163],"http":[100,120,140],"https":[29,140,172],"hub":120,"hue":145,"human":[2,25,52,108,120,121,137,166,168],"hypothesi":[29,171,172],"hz":[54,76,123],"i001":133,"icon":100,"id":[2,18,52,78,82,84,108,116,120,121,131,137,139,145,147,149,151,153],"id1":[18,147,149],"id2":[18,147,149],"id_var":[75,144],"idempot":[2,108,120,137],"ident":[100,120,168],"identifi":[2,18,75,78,100,108,137,144,145,147,149],"idx":120,"iff":137,"ignor":[3,13,64,65,112,133,134,137],"ijerph":137,"imag":[29,62,76,97,115,116,131,137,145,166,168,171,172,174],"image_dir":137,"image_hash":137,"imageri":116,"img":[27,107,115,170],"impact":[3,82,112,151],"impact_factor_cach":[3,112],"implement":[13,50,111,119,134,137,148,168,173],"import":[2,3,13,15,18,25,26,27,28,29,30,39,43,50,52,54,57,60,61,62,64,65,69,75,76,78,82,84,87,89,97,98,99,100,101,102,107,108,110,111,112,115,116,119,120,121,123,126,129,130,131,133,134,135,137,138,139,140,143,144,147,148,149,151,152,153,156,158,166,168,169,170,172,174],"import_modul":120,"importerror":[15,120,143],"importlib":120,"improv":[28,30,64,99,133],"imrad":[25,97,166],"imshow":76,"includ":[15,29,98,100,120,137,143,148,172,174],"include_run_diff":137,"includegraph":137,"inclus":[3,112],"incompat":[13,134],"incorrect":[13,134],"increment":124,"increment_vers":[15,129,143],"indent":[109,120],"independ":[18,87,147,149,156,168,169,171,174],"index":[116,137,139,171],"indic":[124,137],"individu":[75,120,144,169],"infer":174,"influenc":[82,151],"info":[3,13,25,26,43,64,65,98,100,112,114,133,134,137,148,166,168,174],"inform":[13,65,120,134,137,148],"infrastructur":[26,28],"inherit":[61,65,100,130,134],"ini":131,"init":[100,148,158],"init_exampl":[2,108],"initi":[3,13,18,25,89,112,134,147,149,158,166],"inject":[2,18,26,28,60,62,98,101,107,108,124,129,140,147,149,168,174],"input":[2,13,26,39,50,52,62,76,100,108,115,119,121,124,134,137,139,145,173],"input_path":137,"ins":137,"insensit":[120,137],"insert":137,"insid":[2,26,62,108,120,137],"inspect":[15,61,130,143],"inspector":[2,108],"instal":[28,64,76,97,98,100,111,120,124,133,140,148,152,163,166,167,168,171,173],"installed_app":163,"installed_vers":120,"installhint":120,"instanc":[3,18,25,43,78,100,112,137,147,149,166],"instead":[2,13,15,18,29,64,78,84,108,111,120,124,127,133,134,143,147,148,149,153,172,173],"institut":[82,151],"int":[2,3,13,15,18,25,100,108,112,115,120,124,134,137,142,143,147,149,166],"integ":[18,147,149],"integr":[2,13,18,25,29,100,108,109,110,129,131,134,147,149,158,166,167,169,172],"intent":168,"interact":[84,100,114,120,124,153],"interfac":[25,28,100,109,129,131,148,166,167,169,173,174],"intermedi":[2,39,108,137],"internal":[3,112,120,131,137],"interpol":115,"interpret":137,"interquartil":145,"interval":[87,145,148,156,174],"interval_":148,"intervent":168,"intro":137,"introduct":[97,137,166],"introspect":[0,28,60,98,120,129,171,173,174],"invalid":[13,134],"invalidated_claim":[2,108],"invalidpatherror":[13,65,134],"invis":[52,121,168],"invok":[2,108,120,173],"io":[0,2,26,28,29,39,60,64,76,84,89,98,107,108,120,129,133,139,153,158,168,169,171,172,174],"io003":133,"ioerror":[13,65,134],"iop":137,"ipynb":139,"ipython":[60,114,129],"ipython_fake_path":[15,143],"iqr":[87,156],"is_file_logging_en":[13,134],"is_host":[129,141],"is_ipython":[114,129],"is_notebook":[114,129],"is_script":[114,129],"is_symlink":[15,129,143],"is_track_changes_en":[129,137],"is_valid":[25,166],"isatti":[13,134],"isn":148,"iso":137,"isol":[25,89,158,166],"issu":[13,52,65,82,120,121,133,134,137,151],"ital":137,"item":[39,108,167],"iter":137,"iv":116,"japanes":137,"jax":[18,29,78,147,149,172],"job":[120,140,142],"job_id":110,"joblib":[3,112,131],"journal":[82,137,151,171],"joyplot":145,"jpeg":[115,131],"jpg":[26,62,98,131],"json":[2,26,62,82,98,102,108,109,120,131,137,151,168,173,174],"json_opt":120,"json_schema":120,"jst":137,"jupyt":[114,139],"just":[28,39,100,108,114,120,137],"keep":[13,26,98,134,137,168],"kendal":[87,156],"kept":120,"kernel":[69,115,138,145],"key":[2,3,13,52,60,102,120,121,129,134,137,139,148,168],"keyboard":124,"keyerror":[100,137],"keyword":[82,120,141,151],"kind":[61,130],"knn":[30,99],"know":148,"kolmogorov":[87,156],"kruskal":[87,156],"ksize":115,"kw":[26,62],"kwarg":[2,18,100,108,111,120,145,147,149],"l1":139,"l42":[2,108],"la":[57,126],"lab":140,"label":[13,27,52,62,76,98,100,121,134,145,170],"lack":148,"lambda":[82,151],"lanczo":115,"laplacian":115,"larg":[29,65,134,172],"last":148,"last_install_hint":120,"later":[18,39,78,108,139,147,149],"latest":[2,15,108,120,143,152],"latex":[25,29,87,89,97,98,137,156,158,166,167,168,169,171,172,173],"latex_to_csv":[97,166],"latin":137,"layer":[2,26,60,108,129,137,168],"layout":[3,52,60,97,112,121,137,166,171],"lazi":[30,99,120,168,169],"lazili":148,"lead":120,"learn":[18,29,30,82,99,116,147,149,151,172,174],"learnabl":[69,138],"learning_r":[84,153,168,174],"learningcurvelogg":[30,99],"least":[3,112,137],"left":[52,115,121,137,145],"left_to_right":[52,121],"legaci":[15,78,143,147,148],"len":152,"length":[115,124],"let":[87,156,173,174],"level":[3,13,43,60,109,112,129,137,148,168],"lib":163,"librari":[3,28,78,82,112,120,131,147,148,151],"licens":[82,151],"lifecycl":[2,100,108],"light":120,"lightweight":[29,89,158,172],"like":[2,13,18,39,61,87,108,120,130,134,147,149,156],"limit":[2,39,50,108,119,120,148,174],"limit_min":148,"linalg":[28,60,129,171],"line":[2,3,25,28,29,61,76,84,108,109,112,115,129,130,153,166,167,168,171,172,174],"line_numb":[2,108],"line_spac":137,"linear":115,"link":[2,15,26,39,108,137,143],"link_captions_to_imag":[129,137],"link_captions_to_images_by_proxim":[129,137],"link_imag":137,"link_mod":137,"linkedin":169,"linspac":[28,98,174],"linter":[0,98,120,129,169,171,173],"linter_check":[64,133],"linter_check_sourc":[64,133],"linter_list_rul":[64,133],"linux":140,"list":[2,3,15,18,25,26,29,39,61,62,64,89,97,100,101,102,108,109,110,112,116,120,124,130,131,133,137,139,140,142,143,145,147,148,149,152,158,163,166,167,172,174],"list_al":[3,112],"list_api":[61,130],"list_claim":[2,108],"list_compon":[129,163],"list_figur":[97,166],"list_fil":100,"list_of_missing_items_with_path":[25,166],"list_profil":[129,137],"list_project":[82,151],"list_rul":[64,133],"list_run":[2,39,108],"list_stamp":[2,108],"list_styl":137,"list_symlink":[15,129,143],"list_vers":120,"liter":[114,120],"literatur":[26,29,82,89,98,151,158,167,168,169,171,172,173],"live":[25,166,168],"llm":[29,52,121,129,171,172],"load":[3,13,26,28,30,39,43,52,62,82,84,98,99,108,112,115,120,121,129,133,134,137,139,148,151,153,168,169,171,174],"load_bibtex":[82,151],"load_config":[62,120,129,133,148],"load_custom":131,"load_docx":[129,137],"load_dotenv":[3,43,112],"load_env_from_path":[3,112],"load_project":[82,151],"load_scitex_env":[3,112],"load_styl":76,"load_yaml":[3,43,112],"loader":[131,168],"loaderror":[13,65,134],"local":[26,27,29,61,62,82,98,100,110,120,129,130,151,168,169,170,171,172,173],"local_data":110,"local_st":[3,112],"locat":[2,3,13,15,100,108,112,134,137,143],"log":[0,2,3,25,26,28,29,43,60,84,97,98,108,112,129,131,148,152,153,166,168,171,172,174],"log_callback":[25,166],"log_fil":[13,25,65,134,166],"log_level":[3,43,112],"log_path":[13,134],"log_processor_usag":[129,148],"log_to_fil":[13,65,134],"logger":[13,26,30,62,65,84,98,99,134,153,168,174],"logic":[28,39,100,108,168,169],"logist":[30,99],"loglog":76,"long":[75,101,107,140,144],"longer":[39,108,137],"look":[3,112],"lookup":[3,112],"lookuperror":120,"loop":[2,30,99,108,124],"loss":[13,30,65,99,134],"loud":[2,108],"low":[54,115,123],"low_pass":[54,123],"lower":[97,145,166],"lowest":[3,26,112],"lowpass":[54,123],"lowpassfilt":[69,138],"lr":[26,131,168],"ls":[57,126],"lssf":[29,172],"lxml":137,"m":[13,18,134,147,149],"machin":[2,28,30,98,99,108,120,148,168,173],"maco":140,"macro":127,"made":148,"magenta":137,"magic":[64,133],"magnitud":[69,138],"magnitude_spectrum":76,"main":[26,28,39,62,82,84,97,98,101,107,108,129,133,139,140,148,151,153,158,166,168,169,174],"maintain":[18,120,147,149,171],"major":116,"makedir":[15,131,143],"makefil":158,"manag":[3,13,18,26,29,30,57,60,78,82,84,89,98,99,100,114,126,129,134,147,149,151,153,158,167,168,169,171,172,173],"manifest":120,"manipul":[60,129,137],"mann":[87,156],"mann_whitney_u":173,"manuscript":[2,25,28,29,97,98,108,137,166,167,168,169,171,172,173],"manuscriptcont":[25,166],"manuscripttre":[25,97,166],"map":[2,26,29,108,120,124,137,172],"margin":145,"mark":[50,111,119,168,174],"mark_addit":[129,137],"mark_modif":[129,137],"markdown":[52,121,135,139],"mask":[3,112,124],"master":[82,151],"mat":[26,62,131],"match":[2,3,13,15,18,39,62,78,100,108,109,112,120,124,134,137,143,147,149],"match_typ":120,"matched_str":124,"materi":[25,97,166],"math":[15,143],"matplotlib":[17,26,27,29,62,76,84,98,133,148,153,168,169,170,172,173,174],"matric":[30,99],"matrix":[27,30,76,99,145,170,174],"matshow":76,"matter":[2,108],"matthew":[30,99],"max":[97,137,166],"max_depth":[61,100,130],"max_file_s":[13,134],"max_result":120,"maximum":[2,13,25,100,108,115,120,134,166],"maxsiz":131,"maxval":115,"may":[65,120,134,137],"mcc":[30,99],"mcnemar":[87,156],"mcp":[2,3,25,28,64,100,108,109,110,112,129,133,166,167,168,171,174],"mcp_tool":120,"mcpserver":[98,173],"md":[120,131,163],"mdpi":137,"mean":[2,87,102,108,120,142,145,156,168,169,174],"measur":[87,156],"mechan":174,"media":[28,29,60,98,129,169,171,172,173],"median":[87,115,145,156],"medium":[52,121],"meg":116,"melt":[75,144],"melt_col":[75,144],"member":[61,130],"memori":[3,50,110,112,119],"merg":[25,26,62,75,84,97,131,139,144,148,153,166],"merge_bibfil":[97,166],"merge_col":[75,144],"mermaid":[2,26,29,39,52,98,108,121,139,172,173],"messag":[2,13,18,65,108,120,134,147,149],"meta":174,"metadata":[2,60,98,108,120,129,137,139,158,163,167,173,174],"method":[3,18,27,76,82,87,97,100,112,114,115,129,137,147,149,151,156,166,170,174],"metric":[60,69,129,138,148],"middl":145,"might":[120,148],"migrat":17,"millimet":76,"millimetr":171,"mimic":116,"min":[29,172],"min_cit":[82,151],"min_impact_factor":[82,151],"minim":[30,84,89,99,137,153,158],"minut":[29,107,148,171,172],"mirror":[2,100,108,120,174],"miscellan":124,"mismatch":[39,108,120],"miss":[13,39,64,100,108,120,131,133,134,137,174],"missing_ok":[15,143],"mit":[82,151],"mk_spath":[15,57,64,126,129,133,143],"ml":[29,172],"mm":[13,18,60,84,134,147,149,153],"mmd":[52,121],"mmdd":[18,147,149],"mnet1000":[69,138],"mngs":[64,133],"mock":[18,147,149],"mode":[13,29,60,84,97,111,115,129,134,139,153,166,172],"model":[13,18,28,30,50,65,78,82,84,99,119,131,134,137,147,149,151,153,168,171,173],"model_nam":[13,134],"model_path":[30,99],"model_select":[18,147,149],"modelerror":[13,65,134],"modifi":[26,28,115,120,137,148],"modul":[0,3,13,15,17,18,25,26,28,84,98,129,153,167,168,169,171,174],"modular":[169,171],"modulationindex":[69,138],"module_path":120,"monitor":[3,30,98,99,110,112,148,167,173],"monolith":168,"motor":116,"mountpoint":[100,158],"move":[26,57,84,100,126,153],"mp3":[101,131],"mro":[61,130],"ms":[137,148],"mss":[29,172],"msword":[28,60,129,171],"multi":[2,30,69,76,87,99,108,120,138,140,156,169,174],"multi_par":[2,108],"multilin":109,"multipl":[2,60,64,75,76,82,97,101,102,108,120,129,131,133,137,144,151,166,171,174],"multitaskloss":[30,99],"munzel":[87,156],"must":[64,100,115,120,133],"mutat":[2,108,120,137],"mute":[52,121],"mutual":[2,25,108,166],"mv":[76,129,141],"my_app":158,"my_contain":158,"my_data":[18,131,147,149],"my_experi":[89,158],"my_experiment_1":[57,126],"my_func":133,"my_packag":[89,133,158],"my_pap":[25,89,97,158,166,173],"my_project":[89,158],"my_research":[82,151],"my_s3_factori":100,"my_script":[64,84,133,153],"my_script_out":[84,153],"my_tool":[100,120],"myfil":[15,143],"myfile_v001":[15,143],"mymodul":[3,112],"mypi":[29,172],"myresearch":[82,151],"myrule001":133,"myrule002":133,"n":[18,64,78,84,98,115,133,137,147,149,153,168,174],"n_band":[69,138],"n_bin":[69,138],"n_blks":[69,138],"n_chs":[69,138],"n_chs_in":[69,138],"n_epoch":168,"n_fft":[69,138],"n_group":[87,156],"n_job":142,"n_layer":168,"n_out":[69,138],"n_sampl":[28,174],"n_sig":[2,108],"name":[2,3,13,15,18,25,26,61,64,78,84,87,100,102,108,109,111,112,114,120,124,130,133,134,137,139,140,143,147,148,149,153,156,158,163,166,167],"name_color":109,"namespac":[100,168,169],"nan":[15,143],"narrow":137,"nativ":140,"nature12373":[82,151],"ncol":76,"ndarray":[18,26,62,115,131,147,149],"nearest":[2,108,115,137],"necessari":[3,13,112,134,148],"need":[2,29,84,100,108,120,131,137,153,163,168,171,172],"negat":[13,120,134],"neither":120,"nest":[3,43,100,109,112],"network":[13,69,120,134,138,148],"neural":[13,69,82,134,138,151,173],"neuroimag":98,"neuron":145,"neurophysiolog":116,"neurosci":[29,69,116,138,172],"never":[3,13,112,120,131,134,168,174],"new":[3,18,25,78,97,100,111,112,120,131,137,147,149,166],"new_func":[65,134],"new_function_nam":120,"new_nam":[13,111,134],"new_path":100,"new_sourc":[15,143],"new_target":[15,143],"newli":137,"next":[15,18,28,137,143,147,149,173],"nn":[0,28,60,65,129,134,171],"nnerror":[13,65,134],"no_fig":[97,166],"no_tabl":[97,166],"node":[60,129,148],"nois":[78,98,147],"noisi":98,"non":[2,13,64,65,84,87,108,120,133,134,148,153,156],"none":[2,3,13,15,18,25,84,89,100,102,108,109,112,114,115,120,134,137,139,143,145,147,148,149,152,153,158,166],"normal":[15,28,52,87,98,120,121,137,143,156],"normal_styl":137,"normalize_head":137,"normalize_section_head":[129,137],"not_found":120,"not_impl":[50,119],"notat":[3,84,100,112,153],"notch":[54,123],"note":[3,112],"notebook":[28,60,84,114,129,153,168,171],"notebook_directori":114,"notebook_nam":114,"notebook_path":[2,108,139],"noth":[39,108],"notif":[84,98,101,111,120,129,153,169,171,173,174],"notifi":[28,60,84,111,129,140,153,169],"notify_async":[111,129],"now":[2,18,50,108,119,137,147,149],"now_fn":[18,147,149],"np":[18,28,54,64,87,98,123,131,133,147,149,156,168,174],"np_gen":[78,147],"npi":[26,62,131,168,174],"npz":[26,62,98,131],"npzfile":62,"nrow":76,"num":[82,151],"number":[2,3,13,15,18,61,64,108,112,120,124,130,133,134,137,142,143,145,147,149,174],"numpi":[18,26,28,29,50,54,62,64,78,87,98,119,123,124,131,133,147,149,156,172,174],"numpy_fn":[50,119],"nvidia":148,"nwb":116,"o":[28,29,62,64,65,89,98,115,120,133,134,137,158,169,171,172,173],"obj":[18,62,147,149,174],"object":[2,3,13,15,18,25,26,50,60,62,108,112,119,120,127,129,131,134,137,139,143,145,147,148,149,166,168,174],"observ":[87,156],"occur":140,"occurr":[13,134],"odd":115,"offici":127,"offlin":116,"often":120,"ok":120,"old":[18,111,120,147,149],"old_func":[65,134],"old_function_nam":120,"old_nam":[13,134],"old_path":100,"on_compil":[25,166],"on_progress":120,"on_session_clos":[2,108],"on_session_start":[2,108],"onc":[13,29,100,134,148,172],"one":[2,3,13,26,75,76,84,87,108,112,114,116,120,124,134,137,140,142,144,145,148,153,156,173,174],"onli":[2,3,13,29,39,84,89,108,111,112,120,124,134,137,139,148,153,158,168,172],"only_perfect_match":124,"op":137,"open":[2,64,82,108,131,133,137,151,173],"openai":[29,172],"openalex":[29,82,151,169,171,172],"openathen":[3,82,112,151,168],"openathens_cach":[3,112],"opencv":[29,172],"openneuro":[29,116,169,172],"oper":[13,57,65,89,109,120,126,134,137,152,158],"opt":[3,112],"optim":[30,50,52,99,119,121],"option":[2,3,13,15,18,25,29,60,87,100,102,108,109,112,114,115,120,124,129,134,137,143,145,147,148,149,152,156,163,167,172],"orang":[26,124],"orange_juic":124,"orchestr":[28,102,168,169,173],"order":[2,3,60,108,112,124,129,137,139],"org":140,"organiz":[26,60,129,139,168,174],"origin":[2,3,25,39,50,62,89,108,112,119,120,137,158,166],"os":[2,18,28,60,108,129,131,147,148,149,171],"oscil":[82,151,173],"oserror":[15,143],"otherwis":[3,15,100,112,143,148],"otsu":115,"outcom":[52,97,121,166],"outcome_typ":[87,156],"output":[2,13,15,25,26,39,50,57,60,62,65,82,97,98,100,101,108,109,114,115,119,120,124,126,129,131,134,137,139,143,148,151,158,166,168,171,173,174],"output_dir":[2,26,27,30,82,99,108,114,120,151,152,170],"output_directori":114,"output_fil":[97,102,166],"output_path":[76,137],"output_pdf":[25,97,166],"overal":120,"overlap":137,"overlay":135,"overleaf":[29,171,172],"overrid":[2,3,108,112,114,120,148,152,168],"overridden":[3,112],"overview":[2,26,28,98,108,129],"overwrit":[13,15,100,134,137,143],"overwritten":[2,108],"owner":152,"owning":120,"owns":[137,168],"p":[2,64,75,82,87,98,108,133,144,151,156,174],"p_to_star":[87,156],"p_valu":[76,174],"pa":[2,64,108,133],"pac":[54,69,123,138],"packag":[2,3,15,28,29,61,64,76,89,97,100,108,112,130,131,133,140,143,158,163,166,167,168,171,172],"package_nam":120,"package_str":[15,143],"pad":[115,129],"padj":[2,108],"page":[29,120,168,171,172],"pair":[87,137,156],"palett":[84,137,153,168,174],"panda":[18,26,29,50,75,82,87,119,131,144,147,149,151,156,172,174],"pandas_fn":[50,119],"pane":135,"panel":[76,127,174],"panel_label":76,"paper":[2,13,28,29,60,89,97,98,108,129,134,137,158,166,167,169,171,172,173,174],"paper_directori":89,"paper_titl":[13,134],"paragraph":137,"paragraph_idx":137,"paragraph_rang":137,"parallel":[28,29,60,120,129,171,172],"param":[26,50,119,168,174],"paramet":[2,3,13,15,18,25,26,60,61,69,98,100,102,108,109,112,114,115,120,124,129,130,134,137,138,139,142,143,145,147,148,149,152,158,166,168,173,174],"parametr":[87,156],"params_grid":124,"parent":[2,3,25,26,89,100,108,112,158,166],"parent_sess":[2,39,108],"parenthes":[13,134],"parquet":[26,62,131],"pars":[3,25,61,84,112,130,137,139,153,166,168,171,174],"parse_bibtex":174,"parse_custom":131,"parse_notebook":[129,139],"parse_src_fil":[3,112],"parser":[3,112,120],"part":[2,108],"parti":[61,130],"partial":120,"partit":148,"pass":[2,3,18,25,108,112,120,147,149,166,168,173,174],"password":[3,112],"paste":[57,126],"path":[0,2,3,13,25,26,28,29,57,60,61,64,65,84,87,97,100,102,108,114,115,120,126,129,130,133,134,137,139,148,152,153,156,163,166,168,169,171,172],"path_nam":[3,112],"path_str":[15,143],"path_with_spac":[15,143],"patherror":[13,65,134],"pathlib":[97,100,166],"pathnotfounderror":[13,65,134],"pathway":[2,108],"patienc":[30,99],"pattern":[2,3,13,15,18,57,62,89,98,108,112,124,126,133,134,139,143,147,149,158,167,171,173],"payload":137,"pca":[30,99],"pcolor":76,"pcolormesh":76,"pd":[0,28,60,87,129,131,133,139,156,168,171,174],"pdf":[3,13,25,26,29,62,82,97,98,100,112,131,134,151,166,167,168,172,173,174],"pdfdownloaderror":[13,65,134],"pdfextractionerror":[13,134],"pdflatex":[25,166],"pdfs":[82,151,171],"pearson":[87,98,156],"pep":148,"per":[2,13,26,28,69,84,108,120,134,137,138,139,145,148,153,171],"per_cel":139,"perc":145,"percentag":145,"perform":[13,65,120,134],"performancewarn":[13,65,134],"perm":[18,147,149],"permiss":[15,143,148],"permissionerror":[15,143,148],"permut":[18,69,138,147,149],"persist":[3,50,112,119,140],"perspect":168,"pet":116,"phase":[54,69,123,138],"phase_spectrum":76,"phrase":120,"physiolog":[98,116],"physionet":[29,116,169,172],"pi":[28,54,98,123,174],"pick":137,"pickl":[26,62,84,131,153,174],"pid":[84,153],"pie":76,"piec":[100,148],"pillow":[29,172],"pip":[29,64,76,97,100,102,120,133,140,163,166,167,168,169,172],"pip_project":[89,158],"pipelin":[2,26,52,69,82,108,120,121,138,151,168],"pivot":[75,144],"pkg":[3,112,120],"pkg_name":120,"pkl":[18,26,62,78,84,131,147,149,153,174],"place":[115,120,137,168],"plain":[87,115,120,137,156,168],"plateaus":[30,99],"platform":[100,109,110,148,169],"play":167,"playback":[98,101,167,173],"playwright":[29,172],"pleas":[127,137],"plot":[13,17,26,28,29,30,60,62,64,65,84,89,97,98,99,120,131,133,134,153,158,166,168,171,172,174],"plot_":[27,76,170],"plot_bar":[27,76,170],"plot_barh":[27,170],"plot_box":[27,76,170],"plot_conf_mat":[27,170],"plot_contour":[27,170],"plot_ecdf":[27,170],"plot_errorbar":[27,170],"plot_feature_import":[30,99],"plot_fill_between":[27,170],"plot_fillv":[27,170],"plot_heatmap":[27,76,170],"plot_imag":[27,170],"plot_imshow":[27,170],"plot_joyplot":[27,170],"plot_kd":[27,76,170],"plot_learning_curv":[30,99],"plot_lin":[27,28,62,76,98,170,174],"plot_mean_ci":[27,170],"plot_mean_std":[27,170],"plot_median_iqr":[27,170],"plot_pre_rec_curv":[30,99],"plot_rast":[27,170],"plot_rectangl":[27,170],"plot_roc_curv":[30,99],"plot_scatt":[27,76,98,170],"plot_shaded_lin":[27,170],"plot_violin":[27,76,170],"plottingerror":[13,65,134],"plt":[0,26,27,28,29,60,61,62,64,84,89,98,129,130,131,133,139,153,158,168,169,170,171,172,173,174],"plt_bar":173,"plugin":[64,129],"plus":[84,120,153],"pmid":[82,151],"png":[26,28,30,39,62,76,84,97,98,99,100,107,108,115,131,135,153,166,168,174],"point":[15,18,76,82,84,97,115,133,143,147,149,151,153,158,166,168,174],"poll":[110,120],"polylin":[115,129],"pool":142,"pop":120,"popmean":[87,156],"popul":[2,108,137],"port":[3,112],"portion":[18,147,149],"posit":[52,115,121,124,137,145],"posix":120,"posixpath":[2,108,137],"post":[29,60,98,129,140,169,172,173],"post_import_hook":137,"postgresql":[29,172],"posthoc_test":[87,156],"potenti":[13,15,65,134,143],"power":[29,54,69,76,98,123,138,168,171,172,174],"pprint":148,"practic":[28,60,64,129,133],"pre":[26,84,100,120,137,153],"pre_export_hook":137,"preced":[3,43,112,137],"precis":[30,76,99],"predict":[50,119,145],"pref":100,"prefer":[13,100,120,134],"prefix":[3,15,29,64,112,133,137,143,172],"preprint":[82,151],"preprocess":[52,121],"present":[2,108,137],"preserv":[25,50,89,115,119,137,158,166],"preserve_bold_token":[129,137],"preserve_doc":[50,119],"preset":[60,171],"press":148,"prevent":100,"preview":120,"primari":[52,84,121,153],"primarili":120,"primit":[3,112],"principl":[26,98],"print":[3,13,18,25,29,84,87,97,100,109,112,114,116,120,124,127,131,134,137,139,147,148,149,152,153,156,158,166,168,172,174],"print_help_recurs":[109,129],"print_resolut":[3,112],"printer":124,"prior":[39,108],"prioriti":[3,26,60,129],"priorityconfig":[3,43,112],"privat":[3,61,112,130],"prob":[69,138],"probe":148,"problem":[65,134],"proc":[52,121],"proceed":120,"process":[3,13,25,29,39,52,54,60,65,84,107,108,112,115,121,123,129,134,142,148,153,166,172],"processor":142,"processor_usag":148,"produc":[2,18,26,84,108,147,149,153,171],"product":[2,108,120,124],"profil":[3,98,112,129,168,173],"program":[65,124,134,148],"programmat":[43,110,112,171],"progress":[25,50,107,119,142,166],"progress_callback":[25,166],"proj":135,"project":[2,3,15,25,28,29,43,60,98,100,108,109,110,112,129,133,143,148,167,168,171,172,173],"project_dir":[25,166],"project_nam":[82,151],"project_root":[2,108],"prompt":[25,97,166],"proof":[2,108],"proper":[120,137,148],"properti":[3,13,112,120,134],"protect":[61,130],"protocol":[100,168,171,173],"proven":[28,39,60,84,108,131,153],"provid":[3,13,15,18,26,84,100,109,110,111,112,115,120,124,131,134,137,139,143,147,148,149,153,163,167,168,169,171,174],"proxim":137,"psd":[54,69,76,123,138],"psutil":148,"pt":[26,62],"pt1":115,"pt2":115,"pth":[26,62],"public":[2,3,26,28,29,52,61,76,82,87,98,100,108,112,116,120,121,130,148,151,156,168,169,171,172,173],"publish":[82,151],"pubm":[82,151],"pull":[29,120,148,168,172],"pull_loc":120,"pure":[2,100,108,141],"purpl":26,"purpos":120,"push":[110,120],"put":[26,84,153],"puzzl":100,"pvalu":[87,98,156],"py":[2,3,15,26,39,64,84,89,108,110,112,133,139,143,153,158,174],"pyarrow":26,"pydant":[82,151],"pypi":[89,120,158,169],"pyplot":[84,153],"pyproject":[2,64,108,120,133,158],"pytest":[29,172],"python":[3,25,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,96,97,100,102,109,110,112,120,121,129,130,131,133,139,148,153,163,166,167,168,171,172,173,174],"python3":163,"pytorch":[18,30,50,62,69,99,119,138,147,149],"pyttsx3":101,"pyyaml":[26,148],"q":[61,87,130,156],"qq":[61,130],"qualiti":[97,115,120,166,174],"queri":[2,13,100,108,110,120,134,139,167,173,174],"quick":[28,60,89,129,158],"quickstart":171,"quiet":[97,114,129,166],"quiver":[27,76,170],"r":[2,98,108,116,137],"radius":115,"rais":[2,13,15,50,100,108,119,120,134,137,143,148,152],"ram":148,"randn":[18,131,147,149,174],"random":[3,18,26,28,69,78,84,87,98,112,124,131,138,147,149,153,156,168,174],"random_char":[18,147,149],"random_st":[18,147,149],"randomstatemanag":[18,60,84,129,149,153],"rang":[30,54,99,123,137,145,174],"rank":[87,156],"raster":145,"rather":120,"rational":174,"raw":[3,28,61,98,112,130,133,158],"re":[2,28,39,108,120,168,169],"reach":[3,112],"react":28,"reactome_pathways_v2024":[2,108],"read":[2,15,25,43,100,108,112,120,131,137,143,166,168],"read_csv":[87,133,139,156],"read_fil":100,"read_on":[2,108],"readabl":[2,25,52,108,120,121,137,152,166],"reader":[137,168],"readi":[29,76,87,98,100,120,140,156,158,168,169,171,172,173],"reading_direct":[52,121],"readlink":[15,129,143],"readm":[2,25,108,166],"real":124,"reason":[13,50,119,134],"rebuild":137,"recal":[30,99],"receiv":[84,153,173],"recent":[82,120,151],"recip":[26,28,62,76,98,131],"recogn":[2,108],"recognis":137,"recommend":[3,28,60,98,112,129,167,171,174],"recommend_test":[87,156,174],"recompil":[25,166],"reconstruct":[26,139],"record":[2,26,27,39,62,76,101,107,108,110,120,131,137,139,170],"recordingfigur":168,"recoveri":120,"rectangl":[115,129,145],"recurs":[2,15,61,98,100,108,109,130,143,167,174],"red":[52,98,121,145],"redirect":[13,60,84,129,153],"redistribut":28,"ref":[82,98,135,151,174],"refer":[26,28,49,53,60,74,86,88,127,137],"referenc":[2,108],"reference_section_titl":137,"reflect":115,"regardless":[50,119],"regener":[2,108],"regex":[13,134],"region":[115,145],"regist":[2,100,108,120,131,137,163],"register_backend":100,"register_intermedi":[2,108],"register_load":131,"register_profil":[129,137],"register_sav":131,"registr":163,"registri":[2,108,120,129],"regress":[30,87,99,156],"regular":[107,124],"reject":[69,137,138],"reject_all_tracked_chang":[129,137],"relat":[2,13,15,26,100,108,120,131,134,143],"relationship":26,"releas":[25,166,168],"relev":120,"reload":129,"remain":[2,108,137,168],"remedi":120,"rememb":[131,168],"remot":[2,98,108,110,120,168,173],"remote_commit":120,"remote_diff":120,"remov":[2,15,18,25,108,111,120,137,143,147,149,166],"removal_vers":111,"renam":[100,129],"rename_fil":100,"render":[52,121,135,137],"repeat":[87,116,131,156],"rephras":137,"replac":[137,168],"replic":[115,168],"repo":[89,110,120,152,158],"repoint":[15,143],"report":[30,99,102,120,152,174],"repositori":[15,25,29,116,143,152,166,172],"repr":[2,108],"represent":137,"repro":[0,26,28,60,84,129,149,153,171],"reproduc":[2,18,26,28,29,39,60,62,64,78,84,89,98,108,133,139,147,149,153,158,168,169,171,172,173,174],"reproduct":98,"request":[84,100,120,137,153],"requir":[13,25,28,100,111,120,134,137,166,168,171],"rerun":[2,39,108],"rerun_claim":[2,108],"rerun_dag":[2,108],"research":[89,98,140,158,167,168,169,171,173],"research_minim":[89,158],"reserv":[120,137],"reset":[13,18,78,129,134,147,149],"resetwarn":[13,134],"reshap":[75,144],"residu":[69,138],"resiz":[115,129],"resna":137,"resnet1d":[69,138],"resolut":[2,3,13,60,82,87,108,120,129,131,134,148,151,156],"resolution_log":112,"resolv":[2,3,15,26,29,43,100,108,112,131,143,163,168,172],"resolve_spec":[2,108],"resolve_symlink":[15,129,143],"resort":148,"resourc":[15,28,60,110,129,143,171],"respons":[97,120,166,168,173],"rest":[116,174],"restor":[18,78,137,147,149],"result":[2,18,25,26,30,39,50,52,57,62,64,78,82,84,87,97,98,99,100,101,102,107,108,109,110,116,119,120,121,126,131,133,139,140,142,147,149,151,153,156,166,168,173,174],"result_3":[2,108],"result_to_mcp":120,"retag":137,"retri":120,"retriev":[2,108,110],"retrofit":120,"return":[2,3,13,15,18,25,26,28,39,50,52,61,62,64,76,84,87,98,100,101,102,107,108,109,112,114,115,119,120,121,124,130,131,133,134,137,139,140,142,143,145,147,148,149,152,153,156,163,166,168,173,174],"return_a":[87,98,120,156,174],"reus":[50,119],"reusabl":[115,148],"revers":[82,120,151],"review":[26,168,171],"review_pap":[82,151],"revis":[25,97,137,166],"revisioncont":[25,166],"revisiontre":[25,97,166],"rewrit":137,"rfc":[2,108],"rfc3161":[2,108],"rgb":115,"ridgelin":145,"right":[52,115,121,145],"rippl":[54,123],"risky_cal":[50,119],"rng":[3,18,28,43,60,78,112,129,147,171],"rngg":[84,153,174],"robust":[18,87,147,149,156],"roc":[30,99],"roll":[2,108],"root":[2,3,13,15,25,98,100,108,112,120,134,143,166,168,173],"root_caus":[2,108],"root_dir":[15,143],"root_path":135,"rotat":[13,115,129,134],"rough":[29,172],"round":[52,121],"routin":127,"row":145,"rst":131,"ruff":[29,172],"rule":129,"run":[2,18,25,26,28,39,57,65,84,87,100,101,102,107,108,110,114,120,124,126,129,134,137,139,140,142,147,148,149,153,156,166,167,168,171,173,174],"run_as_c":120,"run_as_mcp":120,"run_experiment_gui":107,"run_info":137,"run_test":[168,174],"runaway":100,"runnabl":[2,108,158],"runs_chang":137,"runtim":[2,28,100,108,120,133,168,169,174],"runtimeerror":120,"rust":[29,172],"s":[2,3,13,15,18,25,26,29,39,61,64,76,84,87,89,98,100,108,109,112,116,120,124,130,133,134,137,139,143,147,148,149,153,156,158,163,166,168,172,174],"s001":133,"s002":[64,133],"s01":174,"s3":100,"s41586":[173,174],"safe":[82,120,141,151,171],"safeti":120,"samp_rat":[69,138],"sampl":[87,145,148,156,174],"sample_r":[69,138],"sample_s":[87,156],"sampling_r":[69,138],"sandbox":[2,108],"save":[13,15,18,26,28,39,52,60,64,76,82,84,98,107,108,114,115,120,121,129,133,134,137,139,143,147,148,149,151,152,153,158,168,171,174],"save_alerts_to_fil":[129,152],"save_custom":131,"save_docx":[129,137],"save_papers_as_bibtex":[82,151],"save_papers_to_librari":[82,151],"save_path":[18,147,149],"save_summari":[30,99],"saveerror":[13,65,134],"savefig":168,"saver":131,"scaffold":[2,89,98,100,108,158,167,173],"scalar":[2,108],"scale":[69,115,138],"scan":[102,137],"scatter":[28,76,171],"scatter_alpha":145,"schema":[28,60,120,129,171],"scheme":[97,166],"scholar":[0,3,13,28,29,43,60,65,89,98,109,112,129,134,158,168,169,171,172,173,174],"scholar_cach":[3,112],"scholar_fetch_pap":173,"scholar_librari":[3,112],"scholar_search_pap":173,"scholarconfig":[82,151],"scholarerror":[13,65,134],"scholarlibrari":[82,151],"scienc":[2,39,108],"scientif":[15,18,28,29,64,89,98,100,116,120,131,133,137,143,147,149,158,168,169,171,172,173],"scikit":[18,29,30,99,147,149,172],"scipi":[26,29,64,133,172],"scitex":[0,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,107,108,109,110,111,112,114,115,116,119,120,121,123,124,126,127,129,130,131,133,134,137,138,139,140,141,142,143,144,147,148,149,151,152,153,156,158,163,166,167,168,169,170,172,173,174],"scitex_":[3,112],"scitex_api_token":100,"scitex_app":100,"scitex_audit":102,"scitex_auto_regist":[2,108],"scitex_clew":[2,108],"scitex_clew_claims_json":[2,108],"scitex_cloud":100,"scitex_config":[3,112],"scitex_dev":120,"scitex_dir":[3,43,112],"scitex_env_src":[3,98,112,168,173],"scitex_etc":135,"scitex_io":[168,169],"scitex_lint":[64,133],"scitex_log":[13,134],"scitex_logging_level":[43,112],"scitex_msword":137,"scitex_notebook":139,"scitex_path":[15,143],"scitex_port":[3,112],"scitex_repro":[18,147,149],"scitex_resourc":148,"scitex_secur":152,"scitex_session_id":[2,108],"scitex_stat":168,"scitex_ui":163,"scitex_writ":[25,166],"scitexconfig":[3,43,112],"scitexdeprecationwarn":[13,65,134],"scitexerror":[13,65,120,134],"scitexfileformatt":[13,134],"scitexpath":[3,43,112],"scitexwarn":[13,65,134],"scope":[3,112,120,133,148],"score":[30,75,82,87,99,120,144,151,156],"screen":[3,98,107,112,167,173],"screenshot":[3,29,98,107,112,167,172,174],"screenshots_dir":[3,112],"script":[2,3,15,25,26,39,64,84,89,98,108,110,112,114,120,133,137,139,143,153,158,166,168,174],"script_nam":131,"script_out":[26,84,98,114,153,168,174],"script_path":[2,108],"sd":[145,174],"sdir":[13,65,134],"sdir_out":[84,153],"sdir_run":[84,153],"sdir_suffix":[84,153],"sdk":[28,29,100,120,169,172],"seaborn":[29,60,129,172],"seam":[2,108,124],"search":[2,3,13,15,28,29,82,108,110,112,120,124,129,134,143,151,167,168,169,171,172,173,174],"search_doc":120,"search_librari":[82,151],"searcherror":[13,65,134],"second":[2,25,50,97,107,108,119,131,137,148,166],"secondari":[52,121],"secret":[3,112,152],"secrets_fn":152,"section":[82,97,127,137,151,166],"secur":[28,60,102,129,171],"security_dir":152,"see":[2,17,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,100,108,120,126,137,148,167,172,174],"seed":[18,26,78,84,147,149,153,168,174],"select":[64,127,133],"self":[3,26,29,84,100,112,153,172,174],"semant":[29,52,82,121,137,151,172],"semilog":76,"semilogx":76,"sen":[87,156],"send":[84,153],"sensit":[3,112],"sensitive_express":[3,112],"sentinel":168,"sep":[75,144],"separ":[26,139,148],"seq_len":[69,138],"sequenc":[124,137],"sequenti":[2,52,108,121,137],"serial":[29,120,131,168,172],"serialize_custom":131,"serious":[65,134],"serv":120,"server":[3,25,28,98,112,166,168,171],"servic":140,"service_url":[2,108],"session":[0,2,3,28,29,39,57,60,62,64,65,89,98,101,107,108,112,126,129,131,133,134,139,158,167,171,172],"session_id":[2,26,39,84,108,139,153],"set":[2,3,13,25,29,76,84,100,108,112,134,137,140,145,148,153,166,172,173],"set_level":[13,65,134],"set_optim":[30,99],"set_pref":100,"set_xyt":[64,76,98,133,145,174],"setup":[98,168,169,171],"sever":[120,129],"sfname":[15,143],"sh":[2,25,28,29,60,108,129,166,171,172],"sha":26,"sha256":[2,78,108,147],"shade":145,"shape":[13,60,115,120,129,134,137,152],"shape1":[13,134],"shape2":[13,134],"shapeerror":[13,65,134],"shapiro":[87,156],"share":[3,28,110,112,120,139,163,168],"sharp":[54,123],"sharpen":[115,129],"shell":[25,29,57,98,102,126,166,168,172,173],"shellcheck":102,"shellout":148,"shibboleth":[82,151],"ship":[100,163],"short":[3,109,112,131,148],"shortcut":[60,129],"should_use_temp":114,"show":[13,18,39,64,84,98,108,120,133,134,135,139,145,147,149,153,167,174],"show_annot":145,"shuffl":124,"si":[13,65,134],"side":[52,120,121],"side_effect":120,"sideeffect":120,"sigma":[69,138],"sigmacro_process_figure_":[127,129],"sigmacro_processfigure_":[127,129],"sigmacro_to_blu":[127,129],"sigmacro_toblu":[127,129],"sigmaplot":127,"sign":[87,156],"signal":[29,54,60,62,76,98,116,123,129,168,172],"signatur":[61,84,109,120,130,153,174],"signature_color":109,"signific":[76,87,101,156],"silent":137,"simpl":[18,26,114,120,131,140,145,147,149],"simplex":115,"simpli":169,"sin":[28,54,98,123,174],"sinc":[2,26,108],"sine":[28,84,98,153,174],"singl":[2,28,30,52,99,100,108,120,121,124,131,137,139,158,168,171,174],"singleton":[43,78,112,147],"singular":[89,158,167],"sink":124,"sit":137,"size":[2,13,15,28,29,87,98,108,115,131,134,137,143,156,171,172,174],"skeleton":100,"skip":[100,120,137,148],"skip_hidden":100,"skipped_ahead":120,"skipped_diverg":120,"sklearn":[18,147,149],"slack":140,"slack_webhook":140,"slash":[15,143],"sleep":[116,124],"sleeper":124,"slot":137,"slow":[2,108,148],"slower":[29,172],"small":115,"smi":148,"smirnov":[87,156],"smooth":[69,138],"smtp":140,"smtp_host":140,"snake_cas":[64,133],"snap":[98,167,174],"snippet":[89,158],"sns_barplot":145,"sns_boxplot":145,"sns_heatmap":145,"sns_histplot":145,"sns_jointplot":145,"sns_kdeplot":145,"sns_lineplot":145,"sns_pairplot":145,"sns_scatterplot":145,"sns_stripplot":145,"sns_swarmplot":145,"sns_violinplot":145,"sobel":115,"social":[0,28,29,60,98,129,169,171,172,173],"socialia":[29,169,172],"softwar":28,"someth":[65,134],"sort":[60,120,129,139],"sort_bi":[82,151],"sourc":[2,3,13,15,18,25,39,60,61,64,76,100,102,108,109,111,112,114,115,120,124,127,129,130,133,134,137,139,141,142,143,147,148,149,152,163,166,167,168,173],"source_fil":[2,108],"source_sess":[2,108],"space":[15,52,76,121,143],"spare":[2,108],"spath":[15,30,99,143],"spatialattent":[69,138],"speak":[98,167,174],"spearman":[87,156],"spec":[2,52,76,108,121,148],"specgram":76,"special":[28,76,171],"specif":[2,3,13,18,25,26,39,60,64,82,107,108,112,116,120,129,133,134,137,140,147,148,149,151,158,166,167,168,174],"specifi":[13,15,100,101,114,134,137,143,145],"specified_path":114,"spectral":[54,69,76,123,138],"spectrogram":[69,138],"spectrum":76,"speech":[29,98,101,167,169,172,173,174],"sphinx":[29,120,163,172],"spi":76,"spike":145,"spike_tim":[27,170],"spike_times_list":145,"spine":145,"split":[15,18,50,119,129,137,143,147,149],"sqlalchemi":[29,172],"sqlite":[2,26,62,108],"sqlite3":[2,108],"squar":[87,156],"src":[3,15,98,112,120,141,143,168,173],"src_path":100,"ss":[18,147,149],"ss_xxxx":[84,153],"ssh":[29,120,172],"st":[64,133],"stabl":[3,112],"stack":[13,15,134,143],"stacklevel":[13,134],"stackplot":76,"stadium":[52,121],"stage":[26,52,116,121],"stair":76,"stamp":[2,108],"stamp_id":[2,108],"standalon":[2,3,29,64,76,97,100,108,111,112,115,120,131,133,140,141,148,152,166,168,169,172],"standard":[3,25,27,30,76,99,100,112,120,137,145,148,166,170,173,174],"star":[76,87,156],"start":[2,3,39,54,57,84,89,108,112,115,123,126,129,137,145,148,153,158,167,173],"start_datetim":[84,153],"starts_1d":145,"startup":[3,112,168],"stash":120,"stat":[0,2,28,29,39,60,61,64,65,89,98,108,120,129,130,133,134,158,168,169,171,172,173,174],"stat_annot":76,"state":[2,3,18,78,107,108,112,116,147,149],"state_chang":120,"state_dict":[26,62],"statement":[13,134],"static":[98,163,168],"statist":[2,13,28,29,39,52,60,64,89,98,108,116,120,121,129,131,133,134,148,158,167,168,169,171,172,173],"stats_plot":174,"stats_recommend_test":173,"stats_run_test":[168,173],"statserror":[13,65,134],"statsmodel":[29,172],"status":[2,18,25,26,60,82,84,102,110,116,120,129,140,147,149,151,153,166],"stay":[120,148],"std":[87,156],"stderr":[13,25,26,65,84,98,114,120,134,153,166,168,174],"stdin":[64,133],"stdlib":[2,61,100,108,120,130,141],"stdout":[13,25,26,65,84,98,114,120,134,153,158,166,168,174],"stem":[76,139],"step":[26,27,28,30,76,99,120,170,173],"stft":[69,138],"still_valid_claim":[2,108],"stop":[3,30,99,112],"stop_at":[3,112],"stopper":[30,99],"storag":[2,29,60,100,108,129,172],"store":[2,39,100,108,110,137],"str":[0,2,3,13,15,18,25,28,60,62,84,100,102,108,112,114,115,120,124,129,134,137,139,142,143,147,148,149,152,153,163,166,171],"strategi":[2,25,60,108,129,166],"stream":[13,60,116,120,129],"streamplot":76,"strength":115,"strftime":[18,147,149],"strict":[2,108],"strike":137,"string":[2,13,15,18,25,29,57,78,108,120,124,126,134,137,139,143,147,148,149,158,166,172],"strip":[120,145],"strong":[29,172],"structur":[3,15,25,52,60,82,89,100,109,110,112,120,121,129,131,137,143,151,158,173,174],"studi":28,"stx":[2,17,26,27,28,29,60,98,129,145,168,170,171,172,174],"stx_bar":145,"stx_barh":145,"stx_box":145,"stx_conf_mat":[30,99,145],"stx_ecdf":145,"stx_errorbar":145,"stx_fillv":145,"stx_heatmap":[145,174],"stx_imag":145,"stx_joyplot":145,"stx_kde":145,"stx_line":[131,145],"stx_mean_ci":145,"stx_mean_std":[145,174],"stx_median_iqr":145,"stx_raster":145,"stx_rectangl":145,"stx_scatter":145,"stx_scatter_hist":145,"stx_shaded_lin":145,"stx_violin":[145,174],"style":[3,13,60,84,112,120,127,129,134,137,145,153,171],"stylewarn":[13,65,134],"sub":[28,168,169],"subclass":[61,130],"subcommand":109,"subdir":100,"subdirectori":163,"subject":[75,144,174],"submiss":[25,100,166],"submission_resna_2025":137,"submit":[110,120],"submodul":135,"subplot":[28,62,76,98,131,145,168,174],"substitut":[3,26,43,112],"subtitl":137,"subtyp":100,"succeed":[25,120,166],"success":[2,13,25,26,52,65,84,97,108,120,121,131,134,140,153,166],"suffix":[84,153],"suggest":[13,64,98,133,134,167,174],"suit":[120,158,168],"suitabl":[18,120,147,148,149],"sum":[2,108],"summari":[2,25,61,98,102,108,120,130,137,166],"summarize_diff":[129,137],"supplementari":[25,97,166],"supplementary_diff":[25,166],"supplementarycont":[25,166],"supplementarytre":[25,97,166],"support":[2,3,13,18,43,60,84,87,101,108,112,120,129,134,137,145,147,149,153,156],"supports_return_a":120,"suppress":[97,114,166],"suppress_output":[114,129],"sure":[87,156,174],"surfac":[3,76,112,120,137,171],"surround":137,"svc":[30,99],"svg":[26,62,131],"sw":[25,166],"swapchannel":[69,138],"switch":[98,137],"symbol":[15,120,143],"symlink":[15,82,129,131,143,151,152],"symlink_from_cwd":131,"sync":120,"sync_al":120,"sync_host":120,"sync_host_fn":120,"sync_loc":120,"sync_tag":120,"synchron":120,"syntax":[3,43,112,120],"synthesi":101,"sys":[13,65,120,134],"sys_modul":[13,134],"system":[13,15,25,26,29,57,101,126,134,139,140,143,148,166,168,172],"t":[3,13,15,25,54,87,98,112,120,123,124,134,137,143,145,148,156,166,174],"tab":148,"tab1":[97,166],"tabl":[2,25,28,87,97,108,137,156,166],"table_caption_prefix":137,"tabular":131,"tag":[25,120,166],"take":[3,29,101,107,112,137,167,172,174],"target":[2,15,108,115,120,135,137,143],"target_dir":100,"target_fil":[2,39,108],"target_is_directori":[15,143],"task":[30,99,124,127,140,158,174],"tau":[87,156],"tea":109,"tee":[13,65,134],"temp":114,"templat":[0,13,25,28,60,65,97,98,100,129,134,137,166,171,173],"template_clone_templ":158,"template_get_code_templ":158,"template_list_code_templ":158,"template_path":137,"template_typ":158,"templateerror":[13,65,134],"templateviolationerror":[13,65,134],"tempor":[2,108],"temporari":[18,65,78,134,147,149],"temporarili":[13,134],"temporary_se":[18,78,147,149],"tend":168,"tensor":[18,50,119,147,149],"tensorflow":[78,147],"tensorpac":[29,172],"term":[28,120],"termin":[120,135],"test":[2,3,13,15,18,28,29,30,52,54,60,61,84,98,99,107,108,112,121,123,124,129,130,134,143,147,149,152,153,158,167,168,169,171,172,173,174],"test_anova":[87,156],"test_anova_2way":[87,156],"test_anova_rm":[87,156],"test_brunner_munzel":[87,156],"test_chi2":[87,156],"test_cochran_q":[87,156],"test_fish":[87,156],"test_friedman":[87,156],"test_kendal":[87,156],"test_krusk":[87,156],"test_ks_1samp":[87,156],"test_ks_2samp":[87,156],"test_mannwhitneyu":[87,156],"test_mcnemar":[87,156],"test_monitor":[3,112],"test_nam":[13,134],"test_norm":[87,156],"test_pearson":[87,98,156],"test_shapiro":[87,156],"test_siz":[18,147,149],"test_spearman":[87,156],"test_theilsen":[87,156],"test_ttest_1samp":[87,156],"test_ttest_ind":[61,87,98,130,156],"test_ttest_rel":[87,156],"test_wilcoxon":[87,156],"testabl":148,"testerror":[13,65,134],"tex":[2,28,60,87,97,108,129,137,156,166,171],"tex_stem":137,"text":[2,13,26,29,57,76,98,100,108,109,115,120,126,129,131,134,135,137,152,167,169,172,173,174],"text_a":137,"text_b":137,"tf":[18,147,149],"tgt":141,"theil":[87,156],"theme":100,"themselv":[2,108],"theta":[54,69,123,138],"thick":115,"thin":[120,168],"third":[61,130],"this_path":[15,129,143],"thorough":[2,39,108],"thrash":[29,172],"thread":[39,108,142],"threadpoolexecutor":142,"three":[25,26,28,166,171,174],"thresh":115,"threshold":[84,115,120,129,153],"tie":26,"tiff":[62,131],"tight":[52,121],"tighter":[52,121],"time":[2,25,28,50,54,76,97,98,108,119,123,124,139,145,148,163,166,174],"time_format":[18,78,147,149],"timelin":111,"timeout":[2,25,50,61,97,108,119,120,130,166],"timeouterror":[50,119],"timepoint":145,"timestamp":[2,18,57,78,108,126,129,137,139,147,148,149,152,168,174],"tip":[25,115,166],"tip_length":115,"titl":[52,76,82,97,98,116,120,121,137,140,145,151,166,173],"title2path":[57,126],"tmp":[15,120,143,148],"tmp_path":[2,108],"to_bgr":[115,129],"to_csv":168,"to_datafram":[82,151],"to_dict":120,"to_graphviz":[52,121],"to_gray":[115,129],"to_json":120,"to_mermaid":[52,121,139],"to_rgb":[115,129],"to_script":139,"to_xyz":[75,144],"togeth":26,"toggl":137,"token":[3,112,137],"toml":[2,64,108,131,133,158],"tool":[2,18,25,26,28,29,54,64,100,102,108,109,110,120,123,133,139,147,149,158,163,166,167,168,169,171,172,174],"toolkit":[168,169,171],"top":[3,52,112,115,121,145,148],"top_rec":[82,151],"topo":[2,108],"topolog":[2,108],"torch":[18,26,28,29,50,60,69,78,119,129,138,147,149,171,172],"torch_fn":[50,119],"torch_gen":[78,147],"total":[13,82,120,124,134,151],"touch":168,"tozero":115,"tozero_inv":115,"tpng":[52,121],"tqdm":[50,119],"trace":[2,26,39,108],"track":[2,17,18,25,27,28,30,39,60,76,84,97,98,99,108,131,137,145,147,149,153,166,167,168,170],"track_chang":[25,97,166],"trackchang":137,"traffic":148,"trail":[15,137,143],"train":[26,60,69,101,110,129,138,140,168],"train_data":[18,78,147,149],"train_model":[101,140],"train_out":26,"train_test_split":[18,147,149],"transform":[54,69,75,115,123,138,144,174],"transit":[29,172],"translat":[13,134],"translator_nam":[13,134],"translatorerror":[13,134],"transposelay":[69,138],"travers":[3,100,112],"treat":120,"treatment":[87,156,173],"tree":[26,52,60,97,100,109,121,129,131,166,168],"tricontour":76,"tricontourf":76,"trigger":[84,120,153],"tripcolor":76,"triplex":115,"triplot":76,"trivial":[2,108],"true":[2,3,13,15,18,25,39,61,76,82,84,97,98,100,108,109,112,114,115,120,124,130,131,134,137,140,143,145,147,148,149,151,152,153,166],"trunc":115,"truth":[2,108,137],"try_import_opt":120,"ts":[28,163],"tsa":[2,108],"tsv":131,"ttest_ind":[168,174],"tts":[101,168],"tukey":[87,156],"tunnel":[28,29,60,129,171,172],"tupl":[13,15,25,109,114,115,124,134,137,142,143,166],"turn":98,"turquois":137,"twitter":169,"two":[3,13,87,112,134,137,156],"txt":[13,15,62,131,134,143,152],"type":[2,3,13,15,18,25,26,28,60,62,82,84,100,102,108,109,112,114,115,124,129,134,137,139,142,143,147,148,149,151,152,153,163,166,167,168,171,174],"typescript":[28,163],"typic":[29,98,129,169,172,173],"u":[27,87,156,170],"ui":[28,60,98,129,171,173],"umap":[30,99],"underlin":137,"underlying":[120,168,174],"understand":168,"undoabl":120,"unexpect":[65,134],"unifi":[2,28,29,30,65,99,100,102,108,109,116,120,131,134,139,167,169,171,172],"union":[2,3,13,15,100,108,112,115,134,137,139,143],"uniqu":[2,18,75,78,82,84,108,144,147,149,151,153],"unit":[13,26,65,76,134],"unitwarn":[13,65,134],"universal":[3,28,62,98,112],"universiti":140,"unknown":[39,108,114,137],"unlik":120,"unlink":137,"unlink_symlink":[15,129,143],"unmatch":137,"unpush":120,"unset":[2,108],"untouch":137,"untrack":139,"unwrap":[120,137],"updat":[15,25,116,120,143,166],"upload":110,"upper":145,"upper_cas":133,"uppercas":[3,112],"upstream":[2,108,120],"upward":[3,112],"url":[2,13,82,108,120,134,140,151],"usabl":[3,112],"usag":[3,13,17,18,25,29,60,61,102,112,129,130,134,135,147,148,149,152,171,172],"use":[2,3,13,18,25,26,39,43,64,76,78,84,87,89,98,100,108,111,112,114,120,124,127,129,131,133,134,137,139,140,142,147,148,149,152,153,156,158,163,166,168,169,173,174],"use_temp":114,"user":[2,3,15,28,43,108,112,114,120,135,137,143,148,168],"user_provided_path":[3,112],"userwarn":13,"usr":163,"usual":[2,108],"utc":137,"util":[3,15,18,28,29,30,54,57,78,99,107,115,120,123,124,126,127,137,142,143,147,148,149,152,171,172,174],"v":[27,170],"v1":111,"v12":127,"v15":137,"v16":137,"v2":[84,111,153],"val_loss":[30,99],"valid":[13,28,30,57,99,100,126,134,137],"validate_docu":[129,137],"valu":[2,3,13,18,27,43,65,75,76,84,87,98,102,108,112,115,120,124,134,144,145,147,149,153,156,168,170,174],"value_col":[87,156],"valueerror":[2,108,120],"values_1d":145,"values_2d":145,"values_list":145,"var":[2,3,26,43,100,108,112],"variabl":[2,3,13,43,61,108,112,130,134,148,168],"variant":[2,108],"various":[135,148],"vector":[28,76,171],"ver":120,"verbos":[2,13,18,78,84,108,134,147,148,149,153],"verif":[2,18,26,60,62,98,129,131,139,147,149,169,173],"verifi":[2,18,25,26,28,39,78,98,100,108,139,147,149,166,168,171,173,174],"verify_claim":[2,108],"verify_host":[129,141],"verify_notebook":[129,139],"verify_structur":[25,166],"version":[13,15,18,29,65,98,100,116,120,134,143,147,149,167,172,173],"version_prefix":[15,143],"vertic":[115,145],"via":[2,15,29,54,60,64,76,84,98,100,108,120,123,129,133,137,139,140,143,148,153,158,168,169,171,172],"view":[2,108,137,167],"violat":[13,64,133,134],"violin":[145,174],"violinplot":76,"viridi":145,"visibl":[52,121],"vision":[29,172],"visual":[2,26,39,60,76,98,107,108,129,139,174],"vite":163,"viz":109,"volum":[82,151],"vram":148,"vs":[13,26,29,100,114,131,134,172],"w":[13,27,131,134,137,170,174],"w_id":137,"walk":[3,29,109,112,137,172],"walk_up":[3,112],"walkthrough":171,"walli":[87,156],"want":[29,120,139,172],"warn":[13,18,25,29,52,60,64,111,121,129,133,137,147,149,166,172],"warn_data_loss":[13,134],"warn_deprec":[13,65,134],"warn_perform":[13,134],"watch":[25,166],"wav":[101,131],"wave":[54,98,123,174],"waveform":116,"wavelet":[54,69,123,138],"way":[87,156],"web":[28,29,52,60,121,129,171,172],"webhook":140,"webpack":163,"weight":[18,30,69,99,131,138,147,149,168],"well":173,"wherev":137,"whether":[2,3,13,18,25,100,108,112,115,120,134,137,147,148,149,166],"whi":168,"whitney":[87,156],"whose":[2,108,120,137,139],"wide":148,"width":[52,107,115,121,145],"wilcoxon":[87,156],"wildcard":133,"wilk":[87,156],"will":[114,137,148,168],"win":[3,112],"window":[15,140,143],"within":[15,100,120,143,148],"without":[15,84,114,116,120,124,137,139,143,153,168],"word":137,"wordread":[129,137],"wordwrit":[129,137],"work":[3,26,28,29,60,76,82,87,100,111,112,114,120,129,151,156,163,168,172,173,174],"worker":[82,151],"workflow":[28,52,89,109,110,120,121,158,168,171,174],"workspac":[28,100],"wrap":[13,17,26,27,50,64,76,84,97,109,119,120,133,134,137,139,153,166,170,171,174],"wrap_as_c":120,"wrap_as_mcp":120,"wrap_as_tracked_delet":[129,137],"wrap_as_tracked_insert":[129,137],"wrapper":[15,18,30,99,111,129,137,143,147,149],"write":[2,13,25,29,84,100,102,108,131,134,137,153,158,169,171,172],"write_fil":100,"writer":[0,3,28,29,60,98,109,112,129,137,158,168,169,171,172,173],"writer_compile_manuscript":173,"writer_doc":137,"written":[2,108,137],"x":[13,18,27,28,50,62,75,76,84,87,98,107,111,115,119,124,131,134,142,144,145,147,149,153,156,170,174],"x1":76,"x2":76,"x_end":[27,170],"x_label":145,"x_start":[27,170],"x_test":[18,147,149],"x_train":[18,147,149],"xarray":[50,119],"xarray_fn":[50,119],"xcorr":76,"xerr":145,"xlabel":[76,145],"xls":131,"xlsx":131,"xml":137,"xs":145,"xx":145,"xxxx":[84,153],"xy":[27,170],"xyz":145,"y":[18,27,28,62,75,76,87,98,107,115,124,131,142,144,145,147,149,156,170,174],"y1":[27,170],"y2":[27,170],"y_clean":98,"y_label":145,"y_mean":[27,170],"y_noisi":98,"y_pred":[30,99],"y_proba":[30,99],"y_std":[27,170],"y_true":[30,99],"yaml":[2,3,26,28,29,60,62,76,82,84,98,100,108,129,148,151,153,158,168,171,172,174],"year":[82,151],"year_min":[82,151],"yerr":[27,145,170],"yet":[13,50,119,134],"yield":[13,124,134],"yield_grid":[124,129],"ylabel":[76,145,173],"yml":[26,62,131],"ys_lower":145,"ys_middl":145,"ys_upper":145,"ywatanabe1989":[29,172],"yy":[18,145,147,149],"yyyi":[13,18,84,134,147,149,153],"z":[27,75,144,170],"zarr":129,"zenodo":[2,108],"zero":[2,18,84,100,108,120,147,149,153],"zotero":[13,134],"zshrc":168},"titles":["API Reference","scitex.ai API Reference","scitex.clew API Reference","scitex.config API Reference","scitex.db API Reference","scitex.decorators API Reference","scitex.diagram API Reference","scitex.dict API Reference","scitex.dsp API Reference","scitex.gen API Reference","scitex.introspect API Reference","scitex.io API Reference","scitex.linter","scitex.logging API Reference","scitex.nn API Reference","scitex.path API Reference","scitex.pd API Reference","scitex.plt API Reference","scitex.repro API Reference","scitex.scholar API Reference","scitex.session API Reference","scitex.social API Reference","scitex.stats API Reference","scitex.str API Reference","scitex.template API Reference","scitex.writer","Core Concepts","Plot Gallery","SciTeX \u2013 Modular Python Toolkit for Researchers and AI Agents","Installation","AI Module (stx.ai)","app Module (stx.app)","audio Module (stx.audio)","audit Module (stx.audit)","benchmark Module (stx.benchmark)","bridge Module (stx.bridge)","browser Module (stx.browser)","canvas Module (stx.canvas)","capture Module (stx.capture)","Clew Module (stx.clew)","cli Module (stx.cli)","cloud Module (stx.cloud)","compat Module (stx.compat)","Config Module (stx.config)","container Module (stx.container)","context Module (stx.context)","cv Module (stx.cv)","dataset Module (stx.dataset)","datetime Module (stx.datetime)","db Module (stx.db)","Decorators Module (stx.decorators)","dev Module (stx.dev)","Diagram Module (stx.diagram)","dict Module (stx.dict)","DSP Module (stx.dsp)","etc Module (stx.etc)","events Module (stx.events)","Gen Module (stx.gen)","gists Module (stx.gists)","git Module (stx.git)","Module Overview","Introspect Module (stx.introspect)","IO Module (stx.io)","linalg Module (stx.linalg)","Linter Module (stx.linter)","Logging Module (stx.logging)","media Module (stx.media)","module Module (stx.module)","msword Module (stx.msword)","NN Module (stx.nn)","notebook Module (stx.notebook)","notify Module (stx.notify)","os Module (stx.os)","parallel Module (stx.parallel)","path Module (stx.path)","PD Module (stx.pd)","PLT Module (stx.plt)","project Module (stx.project)","Repro Module (stx.repro)","resource Module (stx.resource)","rng Module (stx.rng)","schema Module (stx.schema)","Scholar Module (stx.scholar)","security Module (stx.security)","Session Decorator (@stx.session)","sh Module (stx.sh)","social Module (stx.social)","Stats Module (stx.stats)","str Module (stx.str)","Template Module (stx.template)","tex Module (stx.tex)","torch Module (stx.torch)","tunnel Module (stx.tunnel)","types Module (stx.types)","ui Module (stx.ui)","utils Module (stx.utils)","web Module (stx.web)","Writer Module (stx.writer)","Quick Start","AI Module (stx.ai)","App Module (stx.app)","Audio Module (stx.audio)","audit Module (stx.audit)","benchmark Module (stx.benchmark)","bridge Module (stx.bridge)","browser Module (stx.browser)","canvas Module (stx.canvas)","Capture Module (stx.capture)","Clew Module (stx.clew)","cli Module (stx.cli)","Cloud Module (stx.cloud)","compat Module (stx.compat)","Config Module (stx.config)","container Module (stx.container)","context Module (stx.context)","cv Module (stx.cv)","Dataset Module (stx.dataset)","datetime Module (stx.datetime)","db Module (stx.db)","Decorators Module (stx.decorators)","Dev Module (stx.dev)","Diagram Module (stx.diagram)","dict Module (stx.dict)","DSP Module (stx.dsp)","etc Module (stx.etc)","events Module (stx.events)","Gen Module (stx.gen)","gists Module (stx.gists)","git Module (stx.git)","API Reference","Introspect Module (stx.introspect)","I/O Module (stx.io)","linalg Module (stx.linalg)","Linter Module (stx.linter)","Logging Module (stx.logging)","media Module (stx.media)","module Module (stx.module)","msword Module (stx.msword)","NN Module (stx.nn)","notebook Module (stx.notebook)","Notification Module (stx.notification)","os Module (stx.os)","parallel Module (stx.parallel)","path Module (stx.path)","PD Module (stx.pd)","scitex.plt","project Module (stx.project)","Repro Module (stx.repro)","resource Module (stx.resource)","rng Module (stx.rng)","schema Module (stx.schema)","Scholar Module (stx.scholar)","security Module (stx.security)","Session Decorator (@stx.session)","sh Module (stx.sh)","social Module (stx.social)","Stats Module (stx.stats)","str Module (stx.str)","Template Module (stx.template)","tex Module (stx.tex)","torch Module (stx.torch)","tunnel Module (stx.tunnel)","types Module (stx.types)","ui Module (stx.ui)","utils Module (stx.utils)","web Module (stx.web)","Writer Module (stx.writer)","CLI Reference","Core Concepts","Ecosystem","Plot Gallery","SciTeX Documentation","Installation","MCP Server","Quickstart"],"titleterms":{"How":[39,84,108,153],"I":[26,60,129,131,168,174],"It":[39,84,108,153],"Other":[30,60,62,99,129],"The":26,"What":[158,173],"You":158,"access":[110,116,140],"agent":[28,98],"ai":[1,28,30,98,99],"analysi":[60,61,129,130,174],"annot":76,"api":[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,30,39,43,50,52,54,57,61,62,64,65,69,75,76,78,82,84,87,89,97,98,99,100,101,107,108,110,112,116,119,120,121,123,126,129,130,131,133,134,138,140,144,147,151,153,156,158,166],"app":[31,100],"applic":100,"architectur":[26,69,82,133,138,151,168],"area":[27,170],"attent":[69,138],"audio":[32,101,167],"audit":[33,102],"auto":[50,119],"avail":[54,75,78,87,123,137,144,147,156],"axi":[76,145],"backend":[52,101,121,140],"bar":145,"base":76,"basic":[84,153],"batch":[50,119],"benchmark":[34,103],"best":[26,84,153],"bridg":[35,104],"browser":[36,105],"bulk":120,"cach":[50,119,131],"canva":[37,106],"captur":[38,107,167],"case":[101,107],"categor":[27,145,170],"categori":[64,65,133,134,173],"chain":[39,108],"channel":[69,138],"class":[43,82,97,112,151,166],"classif":[30,99],"clew":[2,26,39,108],"cli":[39,40,82,97,98,108,109,110,116,120,140,151,166,167,174],"cloud":[41,110],"code":[61,89,130,158],"command":[39,98,108],"comparison":[87,156],"compat":[42,111],"compil":[97,166],"complet":98,"composit":76,"concept":[26,168],"config":[3,43,84,112,131,140,153],"configur":[26,43,64,112,133,168],"contain":[44,113],"context":[45,114],"contour":[27,170],"convers":[50,119],"core":[26,29,60,129,168,172],"correct":[87,156],"creat":100,"creation":145,"crop":107,"cv":[46,115],"data":[60,82,87,110,129,151,156],"databas":116,"dataset":[47,116],"datetim":[48,117],"db":[4,49,118],"decor":[5,50,84,119,153,168,174],"deleg":[168,169],"depend":[39,108],"descript":[87,156],"dev":[51,120,167],"develop":[29,129,172],"diagram":[6,52,121],"dict":[7,53,122],"directori":[84,153],"distribut":[27,145,170],"document":[61,97,120,130,166,171],"dsp":[8,54,123],"durat":107,"ecosystem":[28,120,169],"emphasi":[52,121],"etc":[55,124],"event":[56,125],"everyth":[29,172],"exampl":[2,3,13,15,18,25,98,108,112,114,115,120,124,133,134,137,139,142,143,147,148,149,166,173],"except":[65,134],"explor":131,"extra":[29,172],"featur":[100,110,171],"fetch":116,"figur":[62,76,145,174],"file":[110,174],"filter":[82,151],"format":[62,87,131,156],"four":28,"freedom":28,"friend":120,"function":[39,43,54,62,75,78,101,107,108,112,116,123,131,140,144,147],"galleri":[27,145,170],"gen":[9,57,126],"general":167,"get":[28,158,171],"gist":[58,127],"git":[59,89,128,158],"grid":[27,170],"guid":171,"guidelin":[97,166],"hdf5":131,"heatmap":[27,145,170],"helper":76,"hierarchi":[65,134],"hoc":[87,156],"hot":120,"hpc":120,"imag":107,"implement":100,"indic":171,"infrastructur":[60,129],"inject":[84,153],"instal":[29,169,172],"integr":140,"interfac":[64,98,133,158,168,171],"interval":107,"introspect":[10,61,130,167],"io":[11,62,131],"ipython":[61,130],"job":110,"key":[39,43,82,97,100,101,107,108,110,112,116,131,140,151,166,171],"kwarg":[101,116,131,140],"layer":[69,138],"layout":76,"learn":[60,129],"level":[39,64,65,108,133,134],"linalg":[63,132],"line":[27,145,170],"linter":[12,64,133],"list_backend":[101,140],"list_format":131,"list_sourc":116,"literatur":[60,129,174],"llm":120,"load":131,"load_config":131,"local":116,"log":[13,65,134],"machin":[60,129],"manag":[43,97,110,112,120,166,174],"manipul":[69,138],"mcp":[98,120,158,173],"media":[66,135],"messag":140,"metadata":[82,151],"method":145,"metric":[30,99],"mm":76,"mode":[52,121],"model":26,"modul":[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152,154,155,156,157,158,159,160,161,162,163,164,165,166,172],"modular":[28,168],"monitor":107,"msword":[68,137],"multipl":[87,156],"next":98,"nn":[14,69,138],"node":[52,121],"none":[101,107,116,140],"note":137,"notebook":[70,139],"notif":140,"notifi":71,"o":[26,60,129,131,168,174],"obj":131,"object":[84,153],"oper":110,"option":[84,97,153,166],"order":[50,119],"organiz":[82,151],"os":[72,141],"output":[84,87,133,153,156],"output_dir":107,"overview":[60,100,110,120],"packag":[120,169],"paper":[52,82,121,151],"parallel":[73,142],"paramet":[84,87,153,156],"path":[15,43,74,101,112,131,143],"pattern":[131,168,169],"pd":[16,75,144],"per":[29,172],"play":101,"plot":[27,76,145,170],"plt":[17,76,145],"plugin":133,"post":[87,156],"practic":[26,84,153],"preset":76,"prioriti":[43,112],"process":[50,69,119,138],"profil":137,"project":[77,82,89,97,146,151,158,166],"proven":[26,62],"public":174,"python":[28,89,98,158],"queri":116,"quick":[30,43,50,52,54,57,61,62,64,65,69,75,76,78,82,87,97,98,99,100,101,107,110,112,116,119,121,123,126,130,131,133,134,138,140,144,147,151,156,166],"quickstart":174,"randomstatemanag":[78,147],"readi":174,"recommend":[29,87,156,172],"redirect":[65,134],"refer":[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,30,39,43,50,52,54,57,61,62,64,65,69,75,76,78,82,84,87,89,97,99,100,101,107,108,110,112,116,119,120,121,123,126,129,130,131,133,134,138,140,144,147,151,153,156,158,166,167,169,171],"region":107,"registri":131,"reload":120,"renam":120,"repositori":110,"repro":[18,78,147],"reproduc":76,"requir":[29,172],"research":[26,28,29,172],"resolut":[43,112],"resourc":[79,148],"rng":[80,149],"role":28,"rule":[64,133],"save":[62,131],"scatter":[27,145,170],"schema":[81,150],"scholar":[19,82,151,167],"scienc":[60,129],"scitex":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,145,171],"seaborn":[87,145,156],"search":116,"secur":[83,152],"send":140,"server":173,"session":[20,26,84,140,153,168,174],"setup":173,"sever":[64,133],"sh":[85,154],"shape":[52,69,121,138],"shortcut":[61,130],"signal":[69,138],"snap":107,"social":[21,86,155],"sort":[82,151],"sourc":[82,116,151],"speak":101,"special":[27,145,170],"specif":[52,121],"start":[28,98,100,101,107,110,116,131,133,140,171],"stat":[22,87,156,167],"statist":[27,76,87,145,156,170,174],"status":[39,108],"step":98,"storag":[82,110,151],"str":[23,88,157],"strategi":[89,137,158],"stream":[65,134],"structur":[84,97,153,166],"stx":[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166],"style":[61,76,87,130,156],"support":[62,116,131,140],"tabl":171,"templat":[24,89,158,167],"test":[87,120,156],"tex":[90,159],"text":101,"three":[98,168],"tool":[98,173],"toolkit":28,"torch":[91,160],"track":[26,62],"train":[30,99],"tree":[61,130],"tunnel":[92,161],"type":[50,52,61,76,93,119,120,121,130,162],"typic":137,"ui":[94,163],"unifi":[168,174],"universal":26,"usag":[82,84,97,137,151,153,166,174],"use":[29,101,107,172],"util":[43,50,60,95,112,119,129,145,164],"uv":[29,172],"vector":[27,170],"verif":[39,108],"verifi":[29,172],"visual":[30,99],"warn":[65,134],"web":[96,165],"work":[39,84,108,153],"workflow":[26,29,172,173],"wrapper":[120,145],"write":[60,97,129,166],"writer":[25,97,166],"yaml":[43,52,112,121,131],"zarr":131}}) \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/ai.html b/src/scitex/_sphinx_html/source/api/ai.html new file mode 100644 index 000000000..bd9d20579 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/ai.html @@ -0,0 +1,753 @@ + + + + + + + + + AI Module (stx.ai) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    AI Module (stx.ai)

    +

    Machine learning utilities for training, classification, and metrics +with PyTorch and scikit-learn.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Training utilities
    +from scitex.ai import LearningCurveLogger, EarlyStopping
    +
    +logger = LearningCurveLogger()
    +stopper = EarlyStopping(patience=10, direction="minimize")
    +
    +for epoch in range(100):
    +    # ... training loop ...
    +    logger({"loss": loss, "acc": acc}, step="Training")
    +    if stopper(val_loss, {"model": model_path}, epoch):
    +        break
    +
    +logger.plot_learning_curves(spath="curves.png")
    +
    +# Classification
    +from scitex.ai import ClassificationReporter, Classifier
    +
    +clf = Classifier()("SVC")
    +reporter = ClassificationReporter(output_dir="./results")
    +reporter.calculate_metrics(y_true, y_pred, y_proba)
    +reporter.save_summary()
    +
    +
    +
    +
    +

    Training

    +
      +
    • LearningCurveLogger – Track and visualize training/validation/test metrics across epochs

    • +
    • EarlyStopping – Monitor validation metrics and stop when improvement plateaus

    • +
    +
    +
    +

    Classification

    +
      +
    • ClassificationReporter – Unified reporter for single/multi-task classification (balanced accuracy, MCC, ROC-AUC, confusion matrices)

    • +
    • Classifier – Factory for scikit-learn classifiers (SVC, KNN, Logistic Regression, AdaBoost, …)

    • +
    • CrossValidationExperiment – Cross-validation framework

    • +
    +
    +
    +

    Metrics

    +

    Standardized calc_* functions:

    +
      +
    • calc_bacc – Balanced accuracy

    • +
    • calc_mcc – Matthews Correlation Coefficient

    • +
    • calc_conf_mat – Confusion matrix

    • +
    • calc_roc_auc – ROC-AUC score

    • +
    • calc_pre_rec_auc – Precision-Recall AUC

    • +
    • calc_feature_importance – Feature importance scores

    • +
    +
    +
    +

    Visualization

    +
      +
    • plot_learning_curve – Training/validation curves

    • +
    • stx_conf_mat – Confusion matrix heatmap

    • +
    • plot_roc_curve – ROC curve

    • +
    • plot_pre_rec_curve – Precision-Recall curve

    • +
    • plot_feature_importance – Feature importance bar plots

    • +
    +
    +
    +

    Other

    +
      +
    • MultiTaskLoss – Multi-task learning loss weighting

    • +
    • get_optimizer / set_optimizer – Optimizer management

    • +
    • GenAI – Generative AI wrapper (lazy-loaded)

    • +
    • Clustering: pca, umap

    • +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/app.html b/src/scitex/_sphinx_html/source/api/app.html new file mode 100644 index 000000000..af7ae4b3b --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/app.html @@ -0,0 +1,1094 @@ + + + + + + + + + App Module (stx.app) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    App Module (stx.app)

    +

    Runtime SDK for SciTeX applications. Provides a unified interface for +file storage, configuration, and lifecycle management that works +identically in local and cloud environments.

    +
    +

    Note

    +

    stx.app delegates to the standalone +scitex-app package. +Install with: pip install scitex-app.

    +
    +
    +

    Overview

    +

    SciTeX applications are self-contained scientific tools that can run +locally or on the SciTeX cloud platform. The stx.app module +provides the runtime SDK that each application uses to interact with +its environment.

    +
    +
    +

    Quick Start

    +
    import scitex as stx
    +
    +# Get current application info
    +info = stx.app.get_info()
    +
    +# Access application preferences
    +prefs = stx.app.get_prefs()
    +
    +# Check dependencies
    +stx.app.check_deps()
    +
    +
    +
    +
    +

    Key Features

    +
    +
    Unified File Storage

    Read and write files through a single API that abstracts local +filesystem and cloud storage.

    +
    # These work identically locally and in the cloud
    +stx.app.write_file("results/output.csv", data)
    +content = stx.app.read_file("config/settings.yaml")
    +
    +
    +
    +
    Configuration Management

    Application preferences are stored in a standard location and +accessible via dot-notation.

    +
    prefs = stx.app.get_prefs()
    +print(prefs.theme)
    +print(prefs.default_format)
    +
    +stx.app.set_prefs(theme="dark", default_format="pdf")
    +
    +
    +
    +
    Application Lifecycle

    Query and manage the running application.

    +
    info = stx.app.get_info()
    +print(info.name)
    +print(info.version)
    +
    +current = stx.app.get_current()    # Currently active app
    +
    +
    +
    +
    Dependency Checking

    Verify that all required packages are available.

    +
    missing = stx.app.check_deps()
    +if missing:
    +    print(f"Missing: {missing}")
    +
    +
    +
    +
    +
    +
    +

    Creating an Application

    +

    Scaffold a new SciTeX application from a template:

    +
    scitex template clone app my_tool
    +
    +
    +

    This creates a project with bridge-init configuration, MountPoint +definitions, and EventBus integration pre-configured.

    +
    +
    +

    API Reference

    +

    scitex-app — Write-once interface for local + cloud SciTeX apps.

    +

    Standalone package. Zero dependencies (pure stdlib). +When used with scitex, integration is automatic via scitex.app.

    +

    Public API (3 functions):

    +
    from scitex_app.sdk import get_files, register_backend, FilesBackend
    +
    +# Get a file backend (auto-detects local vs cloud)
    +files = get_files("./project")
    +
    +# Read/write files
    +content = files.read("data/config.yaml")
    +files.write("output/result.csv", csv_text)
    +
    +# Register a custom backend
    +register_backend("s3", my_s3_factory)
    +
    +
    +
    +
    +class scitex.app.FilesBackend(*args, **kwargs)[source]
    +

    Bases: Protocol

    +

    File storage backend protocol.

    +

    Implementations must provide these 7 methods. +Uses typing.Protocol for structural subtyping — backends +just implement the methods, no inheritance required.

    +
    +

    Implementations

    +
      +
    • FileSystemBackend — local pathlib (ships with scitex-app)

    • +
    • CloudFilesBackend — HTTP via scitex_cloud (provided at runtime)

    • +
    +
    +
    +read(path, *, binary=False)[source]
    +

    Read file content.

    +
    +
    Parameters:
    +
      +
    • path (str) – Relative path within the backend’s namespace.

    • +
    • binary (bool) – If True, return bytes; otherwise return str.

    • +
    +
    +
    Raises:
    +

    FileNotFoundError – If the file does not exist.

    +
    +
    Return type:
    +

    Union[str, bytes]

    +
    +
    +
    + +
    +
    +write(path, content)[source]
    +

    Write content to a file, creating parent dirs as needed.

    +
    +
    Parameters:
    +
      +
    • path (str) – Relative path within the backend’s namespace.

    • +
    • content (Union[str, bytes]) – Text or binary content.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +list(directory='', *, extensions=None)[source]
    +

    List file paths in a directory.

    +
    +
    Parameters:
    +
      +
    • directory (str) – Relative directory path (”” = root).

    • +
    • extensions (Optional[List[str]]) – Filter by extension, e.g. [“.yaml”, “.png”].

    • +
    +
    +
    Returns:
    +

    Relative file paths.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +exists(path)[source]
    +

    Check if a file exists.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +delete(path)[source]
    +

    Delete a file.

    +
    +
    Raises:
    +

    FileNotFoundError – If the file does not exist.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +rename(old_path, new_path)[source]
    +

    Rename/move a file within the namespace.

    +
    +
    Raises:
    +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +copy(src_path, dest_path)[source]
    +

    Copy a file within the namespace.

    +
    +
    Raises:
    +

    FileNotFoundError – If src_path does not exist.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    + +
    +
    +scitex.app.get_files(root=None, *, backend=None, **kwargs)[source]
    +

    Get a files backend instance.

    +

    Auto-detection logic:

    +
      +
    1. If backend is specified, use that.

    2. +
    3. If SCITEX_API_TOKEN env var is set and “cloud” backend +is registered, use cloud.

    4. +
    5. Otherwise, use filesystem (default).

    6. +
    +
    +
    Parameters:
    +
      +
    • root (Union[str, Path, None]) – Root directory for filesystem backend. Defaults to cwd.

    • +
    • backend (Optional[str]) – Explicit backend name. If None, auto-detected.

    • +
    +
    +
    Returns:
    +

    A backend instance.

    +
    +
    Return type:
    +

    FilesBackend

    +
    +
    Raises:
    +

    KeyError – If the requested backend is not registered.

    +
    +
    +
    + +
    +
    +scitex.app.register_backend(name, factory)[source]
    +

    Register a files backend factory.

    +
    +
    Parameters:
    +
      +
    • name (str) – Backend identifier (e.g., “cloud”, “s3”).

    • +
    • factory (Callable[..., FilesBackend]) – Callable(root, **kwargs) -> FilesBackend instance.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.app.build_tree(backend, directory='', *, extensions=None, skip_hidden=True, max_depth=10)[source]
    +

    Build a nested tree structure from a FilesBackend.

    +
    +
    Parameters:
    +
      +
    • backend (Any) – A file storage backend implementing the FilesBackend protocol.

    • +
    • directory (str) – Starting directory (relative to backend root). Default: root.

    • +
    • extensions (Optional[List[str]]) – Filter files by extension (e.g., [“.yaml”, “.png”]). +Directories are always included for traversal.

    • +
    • skip_hidden (bool) – Skip files/directories starting with “.”. Default: True.

    • +
    • max_depth (int) – Maximum recursion depth to prevent runaway traversal. Default: 10.

    • +
    +
    +
    Returns:
    +

    Nested tree structure:

    +
    [
    +    {"path": "subdir", "name": "subdir", "type": "directory",
    +     "children": [...]},
    +    {"path": "file.yaml", "name": "file.yaml", "type": "file"},
    +]
    +
    +
    +

    +
    +
    Return type:
    +

    List[Dict[str, Any]]

    +
    +
    +
    + +
    +
    +scitex.app.read_file(path, *, root='.', binary=False)[source]
    +

    Read a single file via the resolved FilesBackend.

    +

    Equivalent to get_files(root).read(path, binary=binary); +mirrors the app_read_file MCP tool.

    +
    +
    Return type:
    +

    Union[str, bytes]

    +
    +
    +
    + +
    +
    +scitex.app.write_file(path, content, *, root='.')[source]
    +

    Write a file via the resolved FilesBackend.

    +

    Mirrors the app_write_file MCP tool.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.app.list_files(directory='', *, root='.', extensions=None)[source]
    +

    List file paths under directory.

    +

    Mirrors the app_list_files MCP tool.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +scitex.app.file_exists(path, *, root='.')[source]
    +

    Return whether path exists in the resolved backend.

    +

    Mirrors the app_file_exists MCP tool.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.app.delete_file(path, *, root='.')[source]
    +

    Delete path in the resolved backend.

    +

    Mirrors the app_delete_file MCP tool.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.app.copy_file(src_path, dest_path, *, root='.')[source]
    +

    Copy src_path to dest_path within the resolved backend.

    +

    Mirrors the app_copy_file MCP tool.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.app.rename_file(old_path, new_path, *, root='.')[source]
    +

    Rename old_path to new_path within the resolved backend.

    +

    Mirrors the app_rename_file MCP tool.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.app.scaffold(target_dir='.', *, name=None, label=None, icon='fas fa-puzzle-piece', description='', frontend='html', overwrite=False)[source]
    +

    Generate a new SciTeX workspace app skeleton.

    +

    Mirrors the app_scaffold MCP tool. Auto-appends _app / +-app to name (matching the MCP tool’s behaviour) so +Python and MCP callers see the same result for the same inputs.

    +
    +
    Return type:
    +

    List[Path]

    +
    +
    +
    + +
    +
    +scitex.app.validate(app_dir='.')[source]
    +

    Audit a SciTeX app for cloud-submission readiness.

    +

    Mirrors the app_validate MCP tool. Returns the list of +errors (empty when the app is ready).

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/audio.html b/src/scitex/_sphinx_html/source/api/audio.html new file mode 100644 index 000000000..7c35e7e0b --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/audio.html @@ -0,0 +1,735 @@ + + + + + + + + + Audio Module (stx.audio) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Audio Module (stx.audio)

    +

    Text-to-speech synthesis and audio file playback. Supports multiple +TTS backends with automatic fallback.

    +
    +

    Quick Start

    +
    import scitex as stx
    +
    +# Text-to-speech
    +stx.audio.speak("Analysis complete. 42 significant results found.")
    +
    +# Play an audio file
    +stx.audio.play("notification.wav")
    +
    +
    +
    +
    +

    Key Functions

    +
    +

    speak(text, backend=None, **kwargs)

    +

    Convert text to speech and play it through the default audio output. +If no backend is specified, the first available backend is used.

    +
    # Use default backend
    +stx.audio.speak("Hello from SciTeX")
    +
    +# Specify a backend
    +stx.audio.speak("Hello", backend="espeak")
    +
    +
    +
    +
    +

    play(path)

    +

    Play an audio file (WAV, MP3, etc.).

    +
    stx.audio.play("alert.wav")
    +stx.audio.play("recording.mp3")
    +
    +
    +
    +
    +

    list_backends()

    +

    List available TTS backends on the current system.

    +
    backends = stx.audio.list_backends()
    +# e.g., ['espeak', 'festival', 'pyttsx3']
    +
    +
    +
    +
    +
    +

    Use Cases

    +

    Audible notifications are useful for long-running experiments:

    +
    import scitex as stx
    +
    +@stx.session
    +def main(CONFIG=stx.INJECTED):
    +    result = train_model()  # Takes hours
    +    stx.audio.speak(f"Training done. Accuracy: {result.accuracy:.1%}")
    +    return 0
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/audit.html b/src/scitex/_sphinx_html/source/api/audit.html new file mode 100644 index 000000000..b70a5efc9 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/audit.html @@ -0,0 +1,705 @@ + + + + + + + + + audit Module (stx.audit) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    audit Module (stx.audit)

    +

    SciTeX Audit Module

    +

    Unified security scanning by orchestrating bandit (Python), shellcheck (shell), +pip-audit (deps), and GitHub alerts.

    +
    +
    Usage:

    from scitex_audit import audit

    +

    results = audit(“.”) +results = audit(“.”, checks=[“python”, “shell”])

    +
    +
    +
    +
    +scitex.audit.audit(path='.', checks=None, output_file=None)[source]
    +

    Run security audit across multiple tools.

    +
    +
    Parameters:
    +
      +
    • path (str) – Directory to scan. Defaults to current directory.

    • +
    • checks (Optional[list[str]]) – Which checks to run. Options: “python”, “shell”, “deps”, “github”. +None means run all available checks.

    • +
    • output_file (Optional[str]) – If given, write JSON report to this path.

    • +
    +
    +
    Returns:
    +

    Keys are check names, values have {status, findings, summary}.

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/benchmark.html b/src/scitex/_sphinx_html/source/api/benchmark.html new file mode 100644 index 000000000..1426179c0 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/benchmark.html @@ -0,0 +1,674 @@ + + + + + + + + + benchmark Module (stx.benchmark) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    benchmark Module (stx.benchmark)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/bridge.html b/src/scitex/_sphinx_html/source/api/bridge.html new file mode 100644 index 000000000..4345516bc --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/bridge.html @@ -0,0 +1,674 @@ + + + + + + + + + bridge Module (stx.bridge) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    bridge Module (stx.bridge)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/browser.html b/src/scitex/_sphinx_html/source/api/browser.html new file mode 100644 index 000000000..eff167ff1 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/browser.html @@ -0,0 +1,674 @@ + + + + + + + + + browser Module (stx.browser) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    browser Module (stx.browser)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/canvas.html b/src/scitex/_sphinx_html/source/api/canvas.html new file mode 100644 index 000000000..713e001ff --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/canvas.html @@ -0,0 +1,674 @@ + + + + + + + + + canvas Module (stx.canvas) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    canvas Module (stx.canvas)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/capture.html b/src/scitex/_sphinx_html/source/api/capture.html new file mode 100644 index 000000000..4d6fb384a --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/capture.html @@ -0,0 +1,738 @@ + + + + + + + + + Capture Module (stx.capture) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Capture Module (stx.capture)

    +

    Screenshot capture and screen monitoring utilities. Useful for +documenting GUI states, recording experiment progress, and +automated visual testing.

    +
    +

    Quick Start

    +
    import scitex as stx
    +
    +# Take a screenshot
    +img = stx.capture.snap()
    +
    +# Save it
    +stx.io.save(img, "screenshot.png")
    +
    +
    +
    +
    +

    Key Functions

    +
    +

    snap(region=None)

    +

    Capture a screenshot of the entire screen or a specific region.

    +
    # Full screen
    +img = stx.capture.snap()
    +
    +# Specific region (x, y, width, height)
    +img = stx.capture.snap(region=(0, 0, 800, 600))
    +
    +
    +
    +
    +

    monitor(interval=1.0, duration=None, output_dir=".")

    +

    Capture screenshots at regular intervals. Useful for monitoring +long-running GUI processes.

    +
    # Capture every 5 seconds for 1 minute
    +stx.capture.monitor(interval=5.0, duration=60, output_dir="./captures")
    +
    +
    +
    +
    +

    crop(image, region)

    +

    Crop a captured image to a specific region.

    +
    img = stx.capture.snap()
    +cropped = stx.capture.crop(img, region=(100, 100, 400, 300))
    +stx.io.save(cropped, "cropped.png")
    +
    +
    +
    +
    +
    +

    Use Cases

    +

    Documenting experiment results displayed in a GUI:

    +
    import scitex as stx
    +
    +@stx.session
    +def main(CONFIG=stx.INJECTED):
    +    run_experiment_gui()
    +    img = stx.capture.snap()
    +    stx.io.save(img, "final_state.png")
    +    return 0
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/clew.html b/src/scitex/_sphinx_html/source/api/clew.html new file mode 100644 index 000000000..6ff70ae92 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/clew.html @@ -0,0 +1,1281 @@ + + + + + + + + + Clew Module (stx.clew) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Clew Module (stx.clew)

    +

    Hash-based provenance tracking for reproducible science. Clew (Ariadne’s +thread) records file hashes during @stx.session runs and traces +dependency chains back to source.

    +
    +

    How It Works

    +
      +
    1. @stx.session starts a tracking session

    2. +
    3. stx.io.load() records input file hashes

    4. +
    5. stx.io.save() records output file hashes

    6. +
    7. Session close computes a combined hash of all inputs/outputs

    8. +
    9. Later, stx.clew can verify nothing has changed

    10. +
    +
    import scitex as stx
    +
    +# Automatic -- just use @stx.session + stx.io
    +@stx.session
    +def main():
    +    data = stx.io.load("input.csv")      # Tracked as input
    +    result = process(data)
    +    stx.io.save(result, "output.png")     # Tracked as output
    +    return 0
    +
    +# Verify later
    +stx.clew.status()                         # Like git status
    +stx.clew.run("session_id")                # Verify by hash
    +stx.clew.chain("output.png")              # Trace to source
    +
    +
    +
    +
    +

    CLI Commands

    +
    scitex clew status                  # Show changed files
    +scitex clew list                    # List all tracked runs
    +scitex clew run <session_id>        # Verify a specific run
    +scitex clew chain <file>            # Trace dependency chain
    +scitex clew stats                   # Database statistics
    +
    +
    +
    +
    +

    Verification Levels

    +
      +
    • CACHE – Hash comparison only (fast). Checks if files match stored hashes.

    • +
    • RERUN – Re-execute scripts and compare outputs (thorough). Catches logic errors.

    • +
    +
    # Fast: hash comparison
    +result = stx.clew.run("session_id")
    +
    +# Thorough: re-execute and compare
    +result = stx.clew.run("session_id", from_scratch=True)
    +
    +
    +
    +
    +

    Dependency Chains

    +

    Clew traces parent_session links to build a DAG from final output +back to original source:

    +
    chain = stx.clew.chain("final_figure.png")
    +# Shows: source.py → intermediate.csv → analysis.py → final_figure.png
    +
    +# Visualize as Mermaid DAG
    +stx.clew.mermaid("session_id")
    +
    +
    +
    +
    +

    Verification Statuses

    +
      +
    • VERIFIED – Files match expected hashes

    • +
    • MISMATCH – Files differ from stored hashes

    • +
    • MISSING – Files no longer exist

    • +
    • UNKNOWN – No prior tracking data

    • +
    +
    +
    +

    Key Functions

    +
      +
    • status() – Show changed items (like git status)

    • +
    • run(session_id) – Verify a specific run

    • +
    • chain(target_file) – Trace dependency chain

    • +
    • list_runs(limit, status) – List tracked runs

    • +
    • stats() – Database statistics

    • +
    +
    +
    +

    API Reference

    +

    scitex-clew — Hash-based verification for reproducible science.

    +

    Standalone package. Zero dependencies (pure stdlib + sqlite3). +When used with scitex, integration is automatic via @stx.session + stx.io.

    +

    Public API:

    +
    import scitex_clew as clew
    +
    +# Verification
    +clew.status()                      # git-status-like overview
    +clew.run(session_id)               # verify one run (hash check)
    +clew.chain(target_file)            # trace file → source chain
    +clew.dag(targets)                  # verify full DAG
    +clew.rerun(target)                 # re-execute & compare (sandbox)
    +clew.rerun_dag(targets)            # rerun full DAG in topo order
    +clew.rerun_claims()                # rerun all claim-backing sessions
    +clew.list_runs(limit=100)          # list tracked runs
    +clew.stats()                       # database statistics
    +
    +# Claims
    +clew.add_claim(...)                # register manuscript assertion
    +clew.list_claims(...)              # list registered claims
    +clew.verify_claim(...)             # verify a specific claim
    +
    +# Stamping
    +clew.stamp(...)                    # create temporal proof
    +clew.list_stamps(...)              # list stamps
    +clew.check_stamp(...)              # verify a stamp
    +
    +# Hashing
    +clew.hash_file(path)               # SHA256 of a file
    +clew.hash_directory(path)          # SHA256 of all files in dir
    +
    +# Visualization
    +clew.mermaid(...)                  # generate Mermaid DAG diagram
    +
    +# Examples
    +clew.init_examples(dest)           # scaffold example pipeline
    +
    +# Session lifecycle hooks (invoked by @scitex.session)
    +clew.on_session_start(session_id)  # open a tracked run
    +clew.on_session_close(status=...)  # finalize run + combined hash
    +
    +
    +
    +
    +scitex.clew.status()[source]
    +

    Get verification status summary (like git status).

    +
    + +
    +
    +scitex.clew.run(session_id, from_scratch=False)[source]
    +

    Verify a specific run.

    +
    +
    Parameters:
    +
      +
    • session_id (str) – Session identifier

    • +
    • from_scratch (bool) – If True, re-execute the script and verify outputs (slow but thorough). +If False, only compare hashes (fast).

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.chain(target)[source]
    +

    Verify the dependency chain for a target file.

    +
    + +
    +
    +scitex.clew.dag(targets=None, claims=False, strict=False)[source]
    +

    Verify the DAG for multiple targets or all claims.

    +
    +
    Parameters:
    +
      +
    • targets (list of str or Path, optional) – Target files to verify (mutually exclusive with claims).

    • +
    • claims (bool, optional) – If True, build the DAG from every registered claim.

    • +
    • strict (bool, optional) – If True (F2), return a failure-attribution dict with +failed_node / root_cause / invalidated_claims / +still_valid_claims instead of a DAGVerification.

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.rerun(target, timeout=300, cleanup=True)[source]
    +

    Re-execute a session in a sandbox and compare outputs.

    +
    +
    Parameters:
    +
      +
    • target (str or list[str]) – Session ID, script path, or artifact path.

    • +
    • timeout (int) – Maximum execution time in seconds (default: 300).

    • +
    • cleanup (bool) – Remove sandbox outputs after verification (default: True).

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.rerun_dag(targets=None, timeout=300, cleanup=True)[source]
    +

    Rerun-verify an entire DAG in topological order.

    +

    Each session is re-executed in a sandbox against its ORIGINAL stored +inputs (not freshly rerun outputs from upstream), then compared to +the original outputs.

    +
    +
    Parameters:
    +
      +
    • targets (list[str] | None) – Target output files whose upstream DAG should be rerun. +If None, all runs in the database are used and their output +files become the targets.

    • +
    • timeout (int) – Maximum execution time per session in seconds (default: 300).

    • +
    • cleanup (bool) – Whether to remove sandbox output directories after each rerun.

    • +
    +
    +
    Returns:
    +

    Unified verification result for the entire DAG.

    +
    +
    Return type:
    +

    DAGVerification

    +
    +
    +
    + +
    +
    +scitex.clew.rerun_claims(file_path=None, claim_type=None, timeout=300, cleanup=True)[source]
    +

    Rerun-verify all sessions that produced files referenced by claims.

    +

    Collects unique source files from matching claims, then delegates +to rerun_dag with those files as targets.

    +
    +
    Parameters:
    +
      +
    • file_path (str | None) – Filter claims by manuscript file path.

    • +
    • claim_type (str | None) – Filter claims by type (statistic, figure, table, text, value).

    • +
    • timeout (int) – Maximum execution time per session in seconds (default: 300).

    • +
    • cleanup (bool) – Whether to remove sandbox output directories after each rerun.

    • +
    +
    +
    Returns:
    +

    Unified verification result for the upstream DAG of all +source files referenced by the matching claims.

    +
    +
    Return type:
    +

    DAGVerification

    +
    +
    +
    + +
    +
    +scitex.clew.list_runs(limit=100, status=None)[source]
    +

    List tracked runs.

    +
    + +
    +
    +scitex.clew.stats()[source]
    +

    Get database statistics.

    +
    + +
    +
    +scitex.clew.add_claim(file_path, claim_type, line_number=None, claim_value=None, source_file=None, source_session=None)[source]
    +

    Register a claim linking a manuscript assertion to the verification chain.

    +
    +
    Parameters:
    +
      +
    • file_path (str) – Path to the manuscript file (e.g., paper.tex).

    • +
    • claim_type (str) – One of: statistic, figure, table, text, value.

    • +
    • line_number (Optional[int]) – Line number in the manuscript.

    • +
    • claim_value (Optional[str]) – The asserted value (e.g., “p = 0.003”).

    • +
    • source_file (Optional[str]) – Path to the source file that produced this claim.

    • +
    • source_session (Optional[str]) – Session ID that produced the source.

    • +
    +
    +
    Returns:
    +

    The registered claim object.

    +
    +
    Return type:
    +

    Claim

    +
    +
    +
    + +
    +
    +scitex.clew.list_claims(file_path=None, claim_type=None, status=None, limit=100)[source]
    +

    List registered claims with optional filters.

    +
    +
    Parameters:
    +
      +
    • file_path (Optional[str]) – Filter by manuscript file path.

    • +
    • claim_type (Optional[str]) – Filter by claim type.

    • +
    • status (Optional[str]) – Filter by verification status.

    • +
    • limit (int) – Maximum number of claims to return.

    • +
    +
    +
    Return type:
    +

    List[Claim]

    +
    +
    +
    + +
    +
    +scitex.clew.verify_claim(claim_id_or_location)[source]
    +

    Verify a specific claim by checking its source against the verification chain.

    +
    +
    Parameters:
    +

    claim_id_or_location (str) – Either a claim_id or a location string like “paper.tex:L42”.

    +
    +
    Returns:
    +

    Verification result with claim details and chain status.

    +
    +
    Return type:
    +

    Dict

    +
    +
    +
    + +
    +
    +scitex.clew.export_claims_json(path=None, *, file_path_filter=None, read_only=True)[source]
    +

    Export every registered claim to a canonical JSON artifact.

    +

    The exported file is the single human-readable + machine-consumable +view of the claims table in db.sqlite. The DB remains the +source of truth; this JSON is a regenerable artifact.

    +

    Path resolution (mirrors scitex_clew._db._core._default_db_path()):

    +
    1. Explicit ``path`` argument.
    +2. ``$SCITEX_CLEW_CLAIMS_JSON`` env var (escape hatch).
    +3. ``<project_root>/.scitex/clew/runtime/claims.json``
    +   (project root = nearest ancestor dir with ``.git`` or
    +   ``pyproject.toml``; falls back to cwd if none found).
    +
    +
    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path, None]) – Override the resolved path. Useful for tests / one-off dumps.

    • +
    • file_path_filter (Optional[str]) – When set, only claims registered against this manuscript file +path are exported. Default: every claim in the DB.

    • +
    • read_only (bool) – After writing, chmod 0o444 the file so accidental edits +fail loudly at the OS layer. Default True (the file IS +derived). Set False for tests that need to mutate the file.

    • +
    +
    +
    Returns:
    +

    The path the artifact was written to (absolute).

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    +

    Examples

    +
    >>> import scitex_clew as clew
    +>>> clew.add_claim("paper.tex", "value", 42, "0.94", source_file="r.csv")
    +>>> # claims.json now auto-exported under ./.scitex/clew/runtime/
    +>>> clew.export_claims_json()  # idempotent — re-emit on demand
    +PosixPath('.../.scitex/clew/runtime/claims.json')
    +
    +
    +
    +
    + +
    +
    +scitex.clew.register_intermediate(name, value, supports=None, session_id=None, claim_type='value')[source]
    +

    Register a computed intermediate as a Clew claim.

    +

    Use this from inside a @stx.session script (or from an agent loop) to +record any non-trivial intermediate value with explicit upstream support. +The claim becomes part of the DAG and can be queried via clew.chain, +clew.dag, or the MCP clew_chain / clew_dag tools.

    +
    +
    Parameters:
    +
      +
    • name (str) – Descriptive identifier (e.g. “acute_n_sig_pathways”). Avoid generic +names like “result_3” — the id is the only handle a future inspector +has on the value.

    • +
    • value (Any) – The computed result. Coerced to string for storage; the hash chain +sees repr(value) so types matter.

    • +
    • supports (Optional[List[str]]) – List of upstream claim ids or session ids that this value depends on. +Stored as JSON in the claim’s value field for retrieval. None means +no explicit upstream (use sparingly).

    • +
    • session_id (Optional[str]) – The session this value belongs to. If None, read from the +SCITEX_SESSION_ID env var that @stx.session sets at start.

    • +
    • claim_type (str) – One of statistic, figure, table, text, value. Defaults to +value since intermediates are usually scalar / categorical results.

    • +
    +
    +
    Returns:
    +

    The registered claim object.

    +
    +
    Return type:
    +

    Claim

    +
    +
    Raises:
    +

    ValueError – If no session_id can be determined (env var unset and not passed).

    +
    +
    +
    +

    Examples

    +

    Inside a @stx.session script:

    +
    >>> from scitex_clew import register_intermediate
    +>>> n_sig = sum(1 for p in pathways if p.padj < 0.05)
    +>>> register_intermediate(
    +...     name="chronic_r2_n_sig_pathways",
    +...     value=n_sig,
    +...     supports=["chronic_r2_min_pvals", "reactome_pathways_v2024"],
    +... )
    +
    +
    +
    +
    + +
    +
    +scitex.clew.stamp(backend='file', service_url=None, session_ids=None, output_dir=None)[source]
    +

    Record root hash with external timestamp.

    +
    +
    Parameters:
    +
      +
    • backend (str) – One of: file, rfc3161, zenodo.

    • +
    • service_url (Optional[str]) – URL for RFC 3161 TSA or Zenodo API.

    • +
    • session_ids (Optional[List[str]]) – Specific sessions to stamp. If None, stamps all successful runs.

    • +
    • output_dir (Optional[str]) – Directory for file-based stamps (default: <db_dir>/stamps, i.e. .scitex/clew/runtime/stamps/).

    • +
    +
    +
    Returns:
    +

    The timestamp proof record.

    +
    +
    Return type:
    +

    Stamp

    +
    +
    +
    + +
    +
    +scitex.clew.list_stamps(limit=20)[source]
    +

    List all stamps.

    +
    +
    Return type:
    +

    List[Stamp]

    +
    +
    +
    + +
    +
    +scitex.clew.check_stamp(stamp_id=None)[source]
    +

    Verify a stamp against current verification state.

    +
    +
    Parameters:
    +

    stamp_id (Optional[str]) – Specific stamp to check. If None, checks the latest stamp.

    +
    +
    Returns:
    +

    {stamp, current_root_hash, matches, details}

    +
    +
    Return type:
    +

    Dict

    +
    +
    +
    + +
    +
    +scitex.clew.hash_file(path, algorithm='sha256', chunk_size=8192)[source]
    +

    Compute hash of a file.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Path to the file to hash

    • +
    • algorithm (str) – Hash algorithm (default: sha256)

    • +
    • chunk_size (int) – Size of chunks to read (default: 8192)

    • +
    +
    +
    Returns:
    +

    Hexadecimal hash string (first 32 characters)

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> hash_file("data.csv")
    +'a1b2c3d4e5f6...'
    +
    +
    +
    +
    + +
    +
    +scitex.clew.hash_directory(path, pattern='*', recursive=True, algorithm='sha256')[source]
    +

    Compute hashes for all files in a directory.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Directory path

    • +
    • pattern (str) – Glob pattern for files (default: “*”)

    • +
    • recursive (bool) – Whether to search recursively (default: True)

    • +
    • algorithm (str) – Hash algorithm (default: sha256)

    • +
    +
    +
    Returns:
    +

    Mapping of relative paths to hashes

    +
    +
    Return type:
    +

    Dict[str, str]

    +
    +
    +
    +

    Examples

    +
    >>> hash_directory("./data/")
    +{'input.csv': 'a1b2...', 'config.yaml': 'c3d4...'}
    +
    +
    +
    +
    + +
    +
    +scitex.clew.mermaid(session_id=None, target_file=None, target_files=None, claims=False, grouper=None, **kwargs)[source]
    +

    Generate a Mermaid DAG diagram.

    +
    +
    Parameters:
    +
      +
    • session_id (str, optional) – Start from this session.

    • +
    • target_file (str, optional) – Start from the session that produced this file.

    • +
    • target_files (list of str, optional) – Multiple target files (multi-target DAG).

    • +
    • claims (bool, optional) – If True, build DAG from all registered claims.

    • +
    • grouper (callable | dict | None, optional) – File grouping strategy. Callable or JSON/dict spec (see +scitex_clew.groupers.resolve_spec). If None, falls back to +.scitex/clew/config.yaml (key grouper) if present.

    • +
    +
    +
    +
    + +
    +
    +scitex.clew.init_examples(dest, variant='sequential', *, find_examples_dir=<function _find_examples_dir>)[source]
    +

    Copy Clew example scripts to a destination directory.

    +

    Copies only the runnable scripts (.py, .sh) and README — not +the output directories. Users run 00_run_all.sh themselves +to generate outputs and populate the verification database.

    +
    +
    Parameters:
    +
      +
    • dest (str | Path) – Destination directory. Created if it does not exist. +Existing script files are overwritten.

    • +
    • variant (str) – Example variant: “sequential” (default) or “multi_parent”.

    • +
    • find_examples_dir (callable, optional) – Locator callable (variant: str) -> Optional[Path] used to +resolve the bundled examples source. Production callers should +not pass this; it is the canonical PA-306 §1 DI seam — tests +inject a hand-rolled fake that returns a tmp_path-rooted +directory or None.

    • +
    +
    +
    Returns:
    +

    {"path": str, "files": list[str], "file_count": int, "variant": str}

    +
    +
    Return type:
    +

    dict

    +
    +
    Raises:
    +
    +
    +
    +
    + +
    +
    +scitex.clew.on_session_start(session_id, script_path=None, parent_session=None, verbose=False, metadata=None)[source]
    +

    Hook called when a session starts.

    +
    +
    Parameters:
    +
      +
    • session_id (str) – Unique session identifier

    • +
    • script_path (Optional[str]) – Path to the script being run

    • +
    • parent_session (Optional[str]) – Parent session ID for chain tracking

    • +
    • verbose (bool) – Whether to log status messages

    • +
    • metadata (Optional[dict]) – Additional metadata (e.g. notebook_path, cell_index)

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.clew.on_session_close(status='success', exit_code=0, verbose=False, register=None)[source]
    +

    Hook called when a session closes.

    +
    +
    Parameters:
    +
      +
    • status (str) – Final status (success, failed, error)

    • +
    • exit_code (int) – Exit code of the script

    • +
    • verbose (bool) – Whether to log status messages

    • +
    • register (Optional[bool]) – If True, register session hashes with remote Clew Registry. +If None, checks SCITEX_AUTO_REGISTER environment variable.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/cli.html b/src/scitex/_sphinx_html/source/api/cli.html new file mode 100644 index 000000000..48970167e --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/cli.html @@ -0,0 +1,737 @@ + + + + + + + + + cli Module (stx.cli) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    cli Module (stx.cli)

    +

    SciTeX CLI - Command-line interface for SciTeX platform

    +

    Provides unified interface for: +- Cloud operations (wraps tea for Gitea) +- Scholar operations (Django API) +- Code operations (Django API) +- Viz operations (Django API) +- Writer operations (Django API) +- Project operations (integrated workflows)

    +
    +
    +scitex.cli.print_help_recursive(ctx, group)[source]
    +

    Print help for a group and all its subcommands.

    +
    +
    Parameters:
    +
      +
    • ctx – The click context

    • +
    • group (Group) – The click group to print help for

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.cli.format_python_signature(func, multiline=True, indent='  ')[source]
    +

    Format Python function signature with colors matching mcp list-tools.

    +

    Returns (name_colored, signature_colored)

    +
    +
    Return type:
    +

    tuple

    +
    +
    +
    + +
    +
    +scitex.cli.group_to_json(ctx, group)[source]
    +

    Output a group’s subcommands as Result JSON and exit.

    +

    Provides --json behavior for group-level commands, listing +available subcommands with their short help text.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.cli.help_recursive_to_json(ctx, group)[source]
    +

    Output recursive help for a group and all subcommands as Result JSON.

    +

    Walks the entire command tree and outputs structured JSON with +command names, help text, options, and nested subcommands.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/cloud.html b/src/scitex/_sphinx_html/source/api/cloud.html new file mode 100644 index 000000000..fb755980f --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/cloud.html @@ -0,0 +1,778 @@ + + + + + + + + + Cloud Module (stx.cloud) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Cloud Module (stx.cloud)

    +

    Cloud platform integration for the SciTeX ecosystem. Provides +programmatic access to remote execution, file storage, job management, +and repository operations.

    +
    +

    Overview

    +

    The cloud module connects local SciTeX workflows to the cloud platform, +enabling remote computation, shared storage, and collaborative +features. All operations are available through Python API, CLI, and +MCP tools.

    +
    +
    +

    Quick Start

    +
    import scitex as stx
    +
    +# Check cloud connection
    +status = stx.cloud.status()
    +
    +# Submit a job
    +job_id = stx.cloud.jobs.submit(script="train.py", resources={"gpu": 1})
    +
    +# Check job status
    +stx.cloud.jobs.status(job_id)
    +
    +
    +
    +
    +

    Key Features

    +
    +

    Job Management

    +

    Submit, monitor, and retrieve results from remote compute jobs.

    +
    # Submit a job
    +job_id = stx.cloud.jobs.submit(
    +    script="train.py",
    +    resources={"gpu": 1, "memory": "16G"},
    +)
    +
    +# Poll status
    +status = stx.cloud.jobs.status(job_id)
    +
    +# List all jobs
    +stx.cloud.jobs.list()
    +
    +# Cancel a running job
    +stx.cloud.jobs.cancel(job_id)
    +
    +
    +
    +
    +

    File Storage

    +

    Upload and download files to/from cloud storage.

    +
    # Upload a file
    +stx.cloud.files.upload("local_data.h5", remote="data/experiment.h5")
    +
    +# Download a file
    +stx.cloud.files.download("data/experiment.h5", local="./downloaded.h5")
    +
    +# List remote files
    +stx.cloud.files.list("data/")
    +
    +
    +
    +
    +

    Data API

    +

    CRUD operations on structured data stored in the cloud.

    +
    # Create a record
    +stx.cloud.data.create(collection="results", data={"accuracy": 0.95})
    +
    +# Search records
    +results = stx.cloud.data.search(collection="results", query={"accuracy": {"$gt": 0.9}})
    +
    +# List collections
    +stx.cloud.data.list()
    +
    +
    +
    +
    +

    Repository Operations

    +

    Manage git repositories through the cloud API.

    +
    stx.cloud.repo.list()
    +stx.cloud.repo.status("my-project")
    +stx.cloud.repo.push("my-project")
    +
    +
    +
    +
    +
    +

    CLI Access

    +
    # Job management
    +scitex cloud jobs submit train.py --gpu 1
    +scitex cloud jobs status JOB_ID
    +scitex cloud jobs list
    +
    +# File operations
    +scitex cloud files upload data.h5
    +scitex cloud files list
    +
    +# Status
    +scitex cloud status
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/compat.html b/src/scitex/_sphinx_html/source/api/compat.html new file mode 100644 index 000000000..d4e845049 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/compat.html @@ -0,0 +1,702 @@ + + + + + + + + + compat Module (stx.compat) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    compat Module (stx.compat)

    +

    SciTeX Backward Compatibility Module.

    +

    This module provides aliases and wrappers for deprecated APIs. +Import from here to use old function names that delegate to new implementations.

    +

    Deprecation Timeline: +- v1.x: Old APIs work with deprecation warnings +- v2.x: Old APIs removed, use new APIs directly

    +
    +
    +scitex.compat.deprecated(new_name, removal_version='2.0')[source]
    +

    Decorator to mark functions as deprecated.

    +
    + +
    +
    +scitex.compat.notify(*args, **kwargs)[source]
    +

    Deprecated: Use scitex.notify.alert() instead.

    +

    In standalone mode, this only emits a deprecation warning. +The actual notification requires scitex.notify to be installed.

    +
    + +
    +
    +async scitex.compat.notify_async(*args, **kwargs)[source]
    +

    Deprecated: Use scitex.notify.alert_async() instead.

    +

    In standalone mode, this only emits a deprecation warning. +The actual notification requires scitex.notify to be installed.

    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/config.html b/src/scitex/_sphinx_html/source/api/config.html new file mode 100644 index 000000000..95a16240b --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/config.html @@ -0,0 +1,1403 @@ + + + + + + + + + Config Module (stx.config) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Config Module (stx.config)

    +

    YAML-based configuration with priority resolution and path management.

    +
    +

    Priority Resolution

    +

    All config values follow the same precedence:

    +
    direct argument > config/YAML > environment variable > default
    +
    +
    +
    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Get global config (reads ~/.scitex/config.yaml)
    +config = stx.config.get_config()
    +
    +# Resolve with precedence
    +log_level = config.resolve("logging.level", default="INFO")
    +# Checks: direct → YAML → SCITEX_LOGGING_LEVEL env → "INFO"
    +
    +# Access nested values
    +config.get_nested("scholar", "crossref_email")
    +
    +# Path management
    +paths = stx.config.get_paths()
    +paths.scholar        # ~/.scitex/scholar
    +paths.cache          # ~/.scitex/cache
    +
    +
    +
    +
    +

    YAML Configuration

    +
    # ~/.scitex/config.yaml (or ./config/*.yaml for projects)
    +logging:
    +  level: INFO
    +
    +scholar:
    +  crossref_email: ${CROSSREF_EMAIL:-user@example.com}
    +
    +
    +

    Environment variable substitution with ${VAR:-default} syntax is +supported in YAML files.

    +
    +
    +

    Key Classes

    +
      +
    • ScitexConfig – YAML-based config with env var substitution and precedence resolution

    • +
    • PriorityConfig – Dict-based config resolver for programmatic use

    • +
    • ScitexPaths – Centralized path manager (all paths derive from ~/.scitex/)

    • +
    • EnvVar – Environment variable definition dataclass

    • +
    +
    +
    +

    Path Management

    +

    ScitexPaths manages all SciTeX directories:

    +
    paths = stx.config.get_paths()
    +paths.base       # ~/.scitex (SCITEX_DIR)
    +paths.logs       # ~/.scitex/logs
    +paths.cache      # ~/.scitex/cache
    +paths.scholar    # ~/.scitex/scholar
    +paths.rng        # ~/.scitex/rng
    +paths.capture    # ~/.scitex/capture
    +
    +
    +
    +
    +

    Utility Functions

    +
      +
    • get_config(path) – Get singleton ScitexConfig instance

    • +
    • get_paths(base_dir) – Get singleton ScitexPaths instance

    • +
    • load_yaml(path) – Load YAML with env var substitution

    • +
    • load_dotenv(path) – Load .env file

    • +
    • get_scitex_dir() – Get SCITEX_DIR with precedence

    • +
    +
    +
    +

    API Reference

    +

    scitex-config — configuration helpers (YAML + dotenv) — standalone.

    +

    Two distinct API surfaces:

    +

    Public (top-level scitex_config.*) — convention-free generic +primitives usable by any Python project:

    +
      +
    • PriorityConfig — direct → config_dict → env → default cascade

    • +
    • ScitexConfig, get_config, load_yaml — YAML-based config

    • +
    • ScitexPaths, get_paths — centralized path manager

    • +
    • load_dotenv, get_scitex_dir — utilities

    • +
    • parse_src_file, load_env_from_path, load_scitex_env — bash-style +.src/.env parsing (canonical line/value parser; load_dotenv delegates)

    • +
    +

    SciTeX-ecosystem internals (scitex_config._ecosystem.*) — helpers +that embed SciTeX conventions (pkg-short naming, project-scope walk to +.git/, _skills/<pkg>/ layout, SCITEX_<MODULE>_* env prefix). +For scitex-* package authors only; not a stable public API:

    +
    from scitex_config._ecosystem import local_state, env_registry
    +
    +
    +
    +
    Priority Order (same for PriorityConfig and ScitexConfig):

    direct → config (YAML/dict) → env → default

    +
    +
    Usage:

    from scitex_config import ScitexConfig, ScitexPaths, get_config, get_paths

    +

    # YAML-based configuration (Scholar pattern) +config = get_config() +log_level = config.resolve(“logging.level”, default=”INFO”)

    +

    # Centralized path manager +paths = get_paths() +print(paths.logs) # ~/.scitex/logs +print(paths.cache) # ~/.scitex/cache

    +

    # Use resolve() pattern in modules +cache_dir = paths.resolve(“cache”, user_provided_path)

    +
    +
    +
    +
    +class scitex.config.ScitexConfig(config_path=None, env_prefix='SCITEX_')[source]
    +

    YAML-based configuration manager for SciTeX.

    +

    Loads configuration from YAML files with environment variable substitution. +Values can be resolved with priority: direct → config → env → default.

    +
    +

    Examples

    +
    >>> from scitex.config import ScitexConfig
    +>>> config = ScitexConfig()
    +>>> config.resolve("logging.level", default="INFO")
    +'INFO'
    +>>> config.get("debug.enabled")
    +False
    +
    +
    +
    +
    +
    +__init__(config_path=None, env_prefix='SCITEX_')[source]
    +

    Initialize ScitexConfig.

    +
    +
    Parameters:
    +
      +
    • config_path (Union[str, Path, None]) – Path to custom YAML config file. If None, uses default.yaml.

    • +
    • env_prefix (str) – Prefix for environment variables (default: “SCITEX_”)

    • +
    +
    +
    +
    + +
    +
    +get(key, default=None)[source]
    +

    Get value from config directly (no precedence resolution).

    +

    Supports dot notation for nested keys.

    +
    +
    Parameters:
    +
      +
    • key (str) – Configuration key (e.g., “logging.level” or “debug.enabled”)

    • +
    • default (Any) – Default value if key not found

    • +
    +
    +
    Returns:
    +

    Configuration value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +resolve(key, direct_val=None, default=None, type=<class 'str'>)[source]
    +

    Resolve value with precedence: direct → config → env → default.

    +

    This follows the Scholar module’s CascadeConfig pattern where +YAML config takes higher priority than environment variables.

    +
    +
    Parameters:
    +
      +
    • key (str) – Configuration key (e.g., “logging.level”)

    • +
    • direct_val (Any) – Direct value (highest precedence)

    • +
    • default (Any) – Default value (lowest precedence)

    • +
    • type (Type) – Type conversion (str, int, float, bool, list)

    • +
    +
    +
    Returns:
    +

    Resolved value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +get_nested(*keys, default=None)[source]
    +

    Get nested value from original config structure.

    +
    +
    Parameters:
    +
      +
    • *keys (str) – Keys to traverse (e.g., “browser”, “screenshots_dir”)

    • +
    • default (Any) – Default value if not found

    • +
    +
    +
    Returns:
    +

    Nested value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +property config_path: Path
    +

    Get the path to the loaded config file.

    +
    + +
    +
    +property raw: dict
    +

    Get raw configuration data (original nested structure).

    +
    + +
    +
    +property flat: dict
    +

    Get flattened configuration data.

    +
    + +
    +
    +print()[source]
    +

    Print configuration resolution log.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + +
    +
    +scitex.config.get_config(config_path=None)[source]
    +

    Get ScitexConfig instance.

    +
    +
    Parameters:
    +

    config_path (Union[str, Path, None]) – Path to custom config. If None, returns cached default instance.

    +
    +
    Returns:
    +

    Configuration instance

    +
    +
    Return type:
    +

    ScitexConfig

    +
    +
    +
    + +
    +
    +scitex.config.load_yaml(path)[source]
    +

    Load YAML file with environment variable substitution.

    +

    Supports ${VAR:-default} syntax for environment variable expansion.

    +
    +
    Parameters:
    +

    path (Path) – Path to YAML file

    +
    +
    Returns:
    +

    Parsed YAML with environment variables substituted

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    +
    +class scitex.config.ScitexPaths(base_dir=None)[source]
    +

    Centralized path manager for SciTeX directories.

    +

    All paths are derived from SCITEX_DIR (default: ~/.scitex). +Priority: direct_val → SCITEX_DIR env → .env file → default

    +
    +
    Directory Structure:

    $SCITEX_DIR/ +├── browser/ # Browser profiles and data +│ ├── screenshots/ # Browser debugging screenshots +│ ├── sessions/ # Shared browser sessions +│ └── persistent/ # Persistent browser profiles +├── cache/ # General cache +│ └── functions/ # Function cache (joblib) +├── capture/ # Screen captures +├── impact_factor_cache/ # Impact factor data cache +├── logs/ # Log files +├── openathens_cache/ # OpenAthens auth cache +├── rng/ # Random number generator state +├── scholar/ # Scholar module data +│ ├── cache/ # Scholar-specific cache +│ └── library/ # PDF library +├── screenshots/ # General screenshots +├── test_monitor/ # Test monitoring screenshots +└── writer/ # Writer module data

    +
    +
    +
    +
    +__init__(base_dir=None)[source]
    +

    Initialize ScitexPaths.

    +
    +
    Parameters:
    +

    base_dir (Optional[str]) – Explicit base directory. If None, uses SCITEX_DIR env var +or falls back to ~/.scitex.

    +
    +
    +
    + +
    +
    +property base: Path
    +

    Base SciTeX directory ($SCITEX_DIR or ~/.scitex).

    +
    + +
    +
    +property logs: Path
    +

    Log files directory.

    +
    + +
    +
    +property cache: Path
    +

    General cache directory.

    +
    + +
    +
    +property capture: Path
    +

    Screen capture directory.

    +
    + +
    +
    +property screenshots: Path
    +

    General screenshots directory.

    +
    + +
    +
    +property rng: Path
    +

    Random number generator state directory.

    +
    + +
    +
    +property browser: Path
    +

    Browser module base directory.

    +
    + +
    +
    +property browser_screenshots: Path
    +

    Browser debugging screenshots.

    +
    + +
    +
    +property browser_sessions: Path
    +

    Shared browser sessions.

    +
    + +
    +
    +property browser_persistent: Path
    +

    Persistent browser profiles.

    +
    + +
    +
    +property test_monitor: Path
    +

    Test monitoring screenshots directory.

    +
    + +
    +
    +property function_cache: Path
    +

    Function cache (joblib memory).

    +
    + +
    +
    +property impact_factor_cache: Path
    +

    Impact factor data cache.

    +
    + +
    +
    +property openathens_cache: Path
    +

    OpenAthens authentication cache.

    +
    + +
    +
    +property scholar: Path
    +

    Scholar module base directory.

    +
    + +
    +
    +property scholar_cache: Path
    +

    Scholar-specific cache directory.

    +
    + +
    +
    +property scholar_library: Path
    +

    Scholar PDF library directory.

    +
    + +
    +
    +property writer: Path
    +

    Writer module directory.

    +
    + +
    +
    +resolve(path_name, direct_val=None)[source]
    +

    Resolve a path with priority: direct_val → default from SCITEX_DIR.

    +

    This is the recommended method for modules that accept optional path +parameters. It follows the same pattern as PriorityConfig.resolve().

    +
    +
    Parameters:
    +
      +
    • path_name (str) – Name of the path property (e.g., “cache”, “logs”, “scholar_library”)

    • +
    • direct_val (Union[str, Path, None]) – Direct value (highest precedence). If None, uses default.

    • +
    +
    +
    Returns:
    +

    Resolved path

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    +

    Examples

    +
    >>> paths = ScitexPaths()
    +>>> # User didn't provide path -> use default
    +>>> cache_dir = paths.resolve("cache", None)
    +>>> # User provided custom path -> use it
    +>>> cache_dir = paths.resolve("cache", "/custom/cache")
    +
    +
    +

    Usage in modules: +>>> class MyModule: +… def __init__(self, cache_dir=None): +… self.cache_dir = get_paths().resolve(“cache”, cache_dir)

    +
    +
    + +
    +
    +ensure_dir(path)[source]
    +

    Ensure directory exists, creating if necessary.

    +
    +
    Parameters:
    +

    path (Path) – Directory path to ensure exists.

    +
    +
    Returns:
    +

    The same path, guaranteed to exist.

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    +
    +ensure_all()[source]
    +

    Create all standard directories.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +list_all()[source]
    +

    List all configured paths.

    +
    +
    Returns:
    +

    Dictionary of path names to Path objects.

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    + +
    +
    +scitex.config.get_paths(base_dir=None)[source]
    +

    Get ScitexPaths instance.

    +
    +
    Parameters:
    +

    base_dir (Optional[str]) – Explicit base directory. If None, returns cached default instance.

    +
    +
    Returns:
    +

    Path manager instance.

    +
    +
    Return type:
    +

    ScitexPaths

    +
    +
    +
    + +
    +
    +class scitex.config.PriorityConfig(config_dict=None, env_prefix='', auto_uppercase=True)[source]
    +

    Universal config resolver with precedence: direct → config_dict → env → default

    +

    Config dict (from YAML or passed dict) takes priority over env variables. +This follows the Scholar module’s CascadeConfig pattern.

    +
    +

    Examples

    +
    >>> from scitex_config import PriorityConfig
    +>>> config = PriorityConfig(config_dict={"port": 3000}, env_prefix="SCITEX_")
    +>>> port = config.resolve("port", None, default=8000, type=int)
    +3000  # from config_dict (highest after direct)
    +>>> # With env: SCITEX_PORT=5000 python script.py
    +>>> port = config.resolve("port", None, default=8000, type=int)
    +3000  # config_dict takes precedence over env
    +>>> port = config.resolve("port", 9000, default=8000, type=int)
    +9000  # direct value takes highest precedence
    +
    +
    +
    +
    +
    +SENSITIVE_EXPRESSIONS = ['API', 'PASSWORD', 'SECRET', 'TOKEN', 'KEY', 'PASS', 'AUTH', 'CREDENTIAL', 'PRIVATE', 'CERT']
    +
    + +
    +
    +__init__(config_dict=None, env_prefix='', auto_uppercase=True)[source]
    +

    Initialize PriorityConfig.

    +
    +
    Parameters:
    +
      +
    • config_dict (Optional[Dict[str, Any]]) – Dictionary with configuration values

    • +
    • env_prefix (str) – Prefix for environment variables (e.g., “SCITEX_”)

    • +
    • auto_uppercase (bool) – Whether to uppercase keys for env lookup

    • +
    +
    +
    +
    + +
    +
    +resolution_log: List[Dict[str, Any]]
    +
    + +
    +
    +get(key)[source]
    +

    Get value from config dict only.

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +resolve(key, direct_val=None, default=None, type=<class 'str'>, mask=None)[source]
    +

    Get value with precedence hierarchy.

    +

    Precedence: direct → config_dict → env → default

    +

    This follows the Scholar module’s CascadeConfig pattern where +config dict takes higher priority than environment variables.

    +
    +
    Parameters:
    +
      +
    • key (str) – Configuration key to resolve

    • +
    • direct_val (Any) – Direct value (highest precedence)

    • +
    • default (Any) – Default value if not found elsewhere

    • +
    • type (Type) – Type conversion (str, int, float, bool, list)

    • +
    • mask (Optional[bool]) – Override automatic masking of sensitive values

    • +
    +
    +
    Returns:
    +

    Resolved configuration value

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +print_resolutions()[source]
    +

    Print how each config was resolved.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +clear_log()[source]
    +

    Clear resolution log.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + +
    +
    +scitex.config.get_scitex_dir(direct_val=None)[source]
    +

    Get SCITEX_DIR with priority: direct → env → default.

    +

    This is a convenience function for the most common use case.

    +
    +
    Parameters:
    +

    direct_val (Optional[str]) – Direct value (highest precedence)

    +
    +
    Returns:
    +

    Resolved SCITEX_DIR path

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    +
    +scitex.config.load_dotenv(dotenv_path=None, *, walk_up=False, stop_at=None)[source]
    +

    Load environment variables from .env file(s).

    +
    +
    Default behavior (walk_up=False, backward compatible):

    Searches for .env file in the following order, loading the first match: +1. Explicit dotenv_path if provided +2. Current working directory (cwd/.env) +3. User home directory ($HOME/.env)

    +
    +
    Parent-walking behavior (walk_up=True, opt-in):

    Walks parent directories starting from cwd, looking for .env +at each level. Stops when reaching stop_at (or $HOME if not +given) or the filesystem root. All .env files found are loaded, +with the most-distant parent loaded first so that closer-to-cwd values +take precedence (closer .env wins). An existing process env var is +never overridden by any .env (process env > closest .env > … > root .env).

    +

    Note: walk_up=True is ignored if dotenv_path is explicitly given.

    +
    +
    +
    +
    Parameters:
    +
      +
    • dotenv_path (Optional[str]) – Path to .env file. If None, searches default locations.

    • +
    • walk_up (bool) – If True (and dotenv_path not given), walk parent dirs from cwd. +Default False for backward compatibility — new callers should pass True.

    • +
    • stop_at (Union[str, Path, None]) – Directory at which to stop the upward walk (inclusive — its .env +is considered). If None, stops at $HOME (or filesystem root if +$HOME is not a parent of cwd). Only used when walk_up=True.

    • +
    +
    +
    Returns:
    +

    True if at least one .env file was found and loaded, False otherwise.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.config.parse_src_file(filepath)[source]
    +

    Parse a bash-compatible .src/.env file and extract env variables.

    +
    +
    Parameters:
    +

    filepath (Path) – Path to the file.

    +
    +
    Returns:
    +

    Dictionary of variable names to values.

    +
    +
    Return type:
    +

    Dict[str, str]

    +
    +
    +
    + +
    +
    +scitex.config.load_env_from_path(path)[source]
    +

    Load environment variables from a file or directory.

    +
    +
    Parameters:
    +

    path (str) – Path to a .src file or directory containing *.src files.

    +
    +
    Returns:
    +

    All loaded environment variables.

    +
    +
    Return type:
    +

    Dict[str, str]

    +
    +
    +
    + +
    +
    +scitex.config.load_scitex_env()[source]
    +

    Load environment variables from $SCITEX_ENV_SRC if set.

    +

    This function should be called early in the MCP server startup.

    +
    +
    Returns:
    +

    Number of environment variables loaded.

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/container.html b/src/scitex/_sphinx_html/source/api/container.html new file mode 100644 index 000000000..01987d762 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/container.html @@ -0,0 +1,674 @@ + + + + + + + + + container Module (stx.container) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    container Module (stx.container)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/context.html b/src/scitex/_sphinx_html/source/api/context.html new file mode 100644 index 000000000..e2a2b5c1b --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/context.html @@ -0,0 +1,856 @@ + + + + + + + + + context Module (stx.context) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    context Module (stx.context)

    +

    scitex-context — execution-context detection (script vs notebook vs IPython) + output suppression.

    +
    +
    +scitex.context.detect_environment()[source]
    +

    Detect the current execution environment.

    +
    +
    Returns:
    +

    One of: ‘script’, ‘jupyter’, ‘ipython’, ‘interactive’, ‘unknown’

    +
    +
    Return type:
    +

    Literal['script', 'jupyter', 'ipython', 'interactive', 'unknown']

    +
    +
    +
    +

    Examples

    +
    >>> env = detect_environment()
    +>>> print(f"Running in: {env}")
    +Running in: script
    +
    +
    +
    +
    + +
    +
    +scitex.context.get_notebook_directory()[source]
    +

    Get the directory containing the current notebook.

    +
    +
    Returns:
    +

    Directory path, or None if not in a notebook

    +
    +
    Return type:
    +

    Optional[str]

    +
    +
    +
    + +
    +
    +scitex.context.get_notebook_info_simple()[source]
    +

    Simple method to get notebook info using current working directory.

    +
    +
    Returns:
    +

    (notebook_name, notebook_directory)

    +
    +
    Return type:
    +

    tuple[Optional[str], Optional[str]]

    +
    +
    +
    + +
    +
    +scitex.context.get_notebook_name()[source]
    +

    Get just the name of the current notebook (without path).

    +
    +
    Returns:
    +

    Notebook filename, or None if not in a notebook

    +
    +
    Return type:
    +

    Optional[str]

    +
    +
    +
    +

    Examples

    +
    >>> name = get_notebook_name()
    +>>> if name:
    +...     print(f"Notebook: {name}")
    +
    +
    +
    +
    + +
    +
    +scitex.context.get_notebook_path()[source]
    +

    Get the full path of the current Jupyter notebook.

    +
    +
    Returns:
    +

    Full path to the notebook file, or None if not in a notebook

    +
    +
    Return type:
    +

    Optional[str]

    +
    +
    +
    +

    Examples

    +
    >>> path = get_notebook_path()
    +>>> if path:
    +...     print(f"Running in notebook: {path}")
    +
    +
    +
    +
    + +
    +
    +scitex.context.get_output_directory(specified_path, env_type=None)[source]
    +

    Get the appropriate output directory based on environment.

    +
    +
    Parameters:
    +
      +
    • specified_path (str) – The path specified by the user

    • +
    • env_type (Literal['script', 'jupyter', 'ipython', 'interactive', 'unknown']) – Override environment detection

    • +
    +
    +
    Returns:
    +

    (output_directory, should_use_temp)

    +
    +
    Return type:
    +

    Tuple[str, bool]

    +
    +
    +
    +

    Examples

    +
    >>> output_dir, use_temp = get_output_directory("data.csv")
    +>>> print(f"Save to: {output_dir}, Temp: {use_temp}")
    +Save to: ./script_out/data.csv, Temp: False
    +
    +
    +
    +
    + +
    +
    +scitex.context.is_ipython()[source]
    +

    Check if running in IPython (console or notebook).

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.context.is_notebook()[source]
    +

    Check if running in Jupyter notebook.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.context.is_script()[source]
    +

    Check if running as a script.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.context.quiet(suppress=True)
    +

    A context manager that suppresses stdout and stderr.

    +
    +

    Example

    +
    +
    with suppress_output():

    print(“This will not be printed to the console.”)

    +
    +
    +
    +
    + +
    +
    +scitex.context.suppress_output(suppress=True)[source]
    +

    A context manager that suppresses stdout and stderr.

    +
    +

    Example

    +
    +
    with suppress_output():

    print(“This will not be printed to the console.”)

    +
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/cv.html b/src/scitex/_sphinx_html/source/api/cv.html new file mode 100644 index 000000000..27dda161c --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/cv.html @@ -0,0 +1,1147 @@ + + + + + + + + + cv Module (stx.cv) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    cv Module (stx.cv)

    +

    scitex-cv — small cv2-based image utilities (standalone).

    +

    Provides reusable cv2-based utilities for image processing: +- I/O: load, save, color conversions +- Transform: resize, rotate, flip, crop, pad +- Filters: blur, sharpen, edge detection, threshold, denoise +- Draw: rectangle, circle, line, text, polylines, arrow

    +
    +

    Example

    +
    >>> import scitex.cv as cv
    +>>> # Load and process an image
    +>>> img = cv.load("input.png")
    +>>> img = cv.resize(img, scale=0.5)
    +>>> img = cv.blur(img, ksize=5)
    +>>> edges = cv.edge_detect(img, method="canny")
    +>>> cv.save(edges, "edges.png")
    +
    +
    +
    +
    +
    +scitex.cv.load(path, color=True, alpha=False)[source]
    +

    Load an image from file.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Image file path.

    • +
    • color (bool) – If True, load as color (BGR). If False, load as grayscale.

    • +
    • alpha (bool) – If True, preserve alpha channel (BGRA).

    • +
    +
    +
    Returns:
    +

    Image array in BGR or grayscale format.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.save(img, path, quality=95)[source]
    +

    Save an image to file.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Image array (BGR or grayscale).

    • +
    • path (Union[str, Path]) – Output file path.

    • +
    • quality (int) – JPEG quality (0-100) or PNG compression (0-9).

    • +
    +
    +
    Returns:
    +

    Path to saved file.

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    +
    +scitex.cv.to_rgb(img)[source]
    +

    Convert BGR image to RGB.

    +
    +
    Parameters:
    +

    img (ndarray) – BGR image.

    +
    +
    Returns:
    +

    RGB image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.to_bgr(img)[source]
    +

    Convert RGB image to BGR.

    +
    +
    Parameters:
    +

    img (ndarray) – RGB image.

    +
    +
    Returns:
    +

    BGR image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.to_gray(img)[source]
    +

    Convert image to grayscale.

    +
    +
    Parameters:
    +

    img (ndarray) – Color image (BGR or RGB).

    +
    +
    Returns:
    +

    Grayscale image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.resize(img, size=None, scale=None, interpolation='linear')[source]
    +

    Resize an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • size (Optional[Tuple[int, int]]) – Target size as (width, height).

    • +
    • scale (Optional[float]) – Scale factor (alternative to size).

    • +
    • interpolation (str) – Interpolation method: ‘nearest’, ‘linear’, ‘cubic’, ‘area’, ‘lanczos’.

    • +
    +
    +
    Returns:
    +

    Resized image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.rotate(img, angle, center=None, scale=1.0)[source]
    +

    Rotate an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • angle (float) – Rotation angle in degrees (counter-clockwise).

    • +
    • center (Optional[Tuple[int, int]]) – Rotation center. Defaults to image center.

    • +
    • scale (float) – Scale factor.

    • +
    +
    +
    Returns:
    +

    Rotated image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.flip(img, direction='horizontal')[source]
    +

    Flip an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • direction (str) – Flip direction: ‘horizontal’, ‘vertical’, or ‘both’.

    • +
    +
    +
    Returns:
    +

    Flipped image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.crop(img, x, y, width, height)[source]
    +

    Crop a region from an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • x (int) – Top-left corner coordinates.

    • +
    • y (int) – Top-left corner coordinates.

    • +
    • width (int) – Crop dimensions.

    • +
    • height (int) – Crop dimensions.

    • +
    +
    +
    Returns:
    +

    Cropped image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.pad(img, top=0, bottom=0, left=0, right=0, color=0, mode='constant')[source]
    +

    Pad an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • top (int) – Padding sizes.

    • +
    • bottom (int) – Padding sizes.

    • +
    • left (int) – Padding sizes.

    • +
    • right (int) – Padding sizes.

    • +
    • color (Union[int, Tuple[int, ...]]) – Padding color for constant mode.

    • +
    • mode (str) – Padding mode: ‘constant’, ‘reflect’, ‘replicate’.

    • +
    +
    +
    Returns:
    +

    Padded image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.blur(img, ksize=5, method='gaussian')[source]
    +

    Apply blur to an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • ksize (int) – Kernel size (must be odd).

    • +
    • method (str) – Blur method: ‘gaussian’, ‘median’, ‘box’, ‘bilateral’.

    • +
    +
    +
    Returns:
    +

    Blurred image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.sharpen(img, strength=1.0)[source]
    +

    Sharpen an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • strength (float) – Sharpening strength.

    • +
    +
    +
    Returns:
    +

    Sharpened image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.edge_detect(img, method='canny', low=50, high=150)[source]
    +

    Detect edges in an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • method (str) – Edge detection method: ‘canny’, ‘sobel’, ‘laplacian’.

    • +
    • low (int) – Thresholds for Canny detector.

    • +
    • high (int) – Thresholds for Canny detector.

    • +
    +
    +
    Returns:
    +

    Edge image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.threshold(img, thresh=127, maxval=255, method='binary')[source]
    +

    Apply thresholding to an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • thresh (int) – Threshold value.

    • +
    • maxval (int) – Maximum value.

    • +
    • method (str) – Threshold method: ‘binary’, ‘binary_inv’, ‘trunc’, ‘tozero’, +‘tozero_inv’, ‘otsu’, ‘adaptive_mean’, ‘adaptive_gaussian’.

    • +
    +
    +
    Returns:
    +

    Thresholded image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.denoise(img, strength=10, method='fastNl')[source]
    +

    Denoise an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image.

    • +
    • strength (int) – Denoising strength.

    • +
    • method (str) – Denoising method: ‘fastNl’, ‘bilateral’.

    • +
    +
    +
    Returns:
    +

    Denoised image.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.rectangle(img, pt1, pt2, color=(0, 255, 0), thickness=2, filled=False)[source]
    +

    Draw a rectangle on an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image (modified in place).

    • +
    • pt1 (Tuple[int, int]) – Top-left corner (x, y).

    • +
    • pt2 (Tuple[int, int]) – Bottom-right corner (x, y).

    • +
    • color (Tuple[int, int, int]) – BGR color.

    • +
    • thickness (int) – Line thickness (-1 for filled).

    • +
    • filled (bool) – If True, fill the rectangle.

    • +
    +
    +
    Returns:
    +

    Image with rectangle.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.circle(img, center, radius, color=(0, 255, 0), thickness=2, filled=False)[source]
    +

    Draw a circle on an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image (modified in place).

    • +
    • center (Tuple[int, int]) – Center coordinates (x, y).

    • +
    • radius (int) – Circle radius.

    • +
    • color (Tuple[int, int, int]) – BGR color.

    • +
    • thickness (int) – Line thickness.

    • +
    • filled (bool) – If True, fill the circle.

    • +
    +
    +
    Returns:
    +

    Image with circle.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.line(img, pt1, pt2, color=(0, 255, 0), thickness=2)[source]
    +

    Draw a line on an image.

    +
    +
    Parameters:
    +
    +
    +
    Returns:
    +

    Image with line.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.text(img, text, position, color=(255, 255, 255), scale=1.0, thickness=2, font='simplex')[source]
    +

    Draw text on an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image (modified in place).

    • +
    • text (str) – Text to draw.

    • +
    • position (Tuple[int, int]) – Bottom-left corner of text (x, y).

    • +
    • color (Tuple[int, int, int]) – BGR color.

    • +
    • scale (float) – Font scale.

    • +
    • thickness (int) – Text thickness.

    • +
    • font (str) – Font type: ‘simplex’, ‘plain’, ‘duplex’, ‘complex’, ‘triplex’.

    • +
    +
    +
    Returns:
    +

    Image with text.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.polylines(img, points, closed=True, color=(0, 255, 0), thickness=2)[source]
    +

    Draw polylines on an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image (modified in place).

    • +
    • points (ndarray) – Array of points with shape (N, 1, 2) or (N, 2).

    • +
    • closed (bool) – Whether to close the polyline.

    • +
    • color (Tuple[int, int, int]) – BGR color.

    • +
    • thickness (int) – Line thickness.

    • +
    +
    +
    Returns:
    +

    Image with polylines.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    +
    +scitex.cv.arrow(img, pt1, pt2, color=(0, 255, 0), thickness=2, tip_length=0.1)[source]
    +

    Draw an arrowed line on an image.

    +
    +
    Parameters:
    +
      +
    • img (ndarray) – Input image (modified in place).

    • +
    • pt1 (Tuple[int, int]) – Start point (x, y).

    • +
    • pt2 (Tuple[int, int]) – End point (arrow tip) (x, y).

    • +
    • color (Tuple[int, int, int]) – BGR color.

    • +
    • thickness (int) – Line thickness.

    • +
    • tip_length (float) – Arrow tip length as fraction of line length.

    • +
    +
    +
    Returns:
    +

    Image with arrow.

    +
    +
    Return type:
    +

    ndarray

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/dataset.html b/src/scitex/_sphinx_html/source/api/dataset.html new file mode 100644 index 000000000..375d1a358 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/dataset.html @@ -0,0 +1,790 @@ + + + + + + + + + Dataset Module (stx.dataset) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Dataset Module (stx.dataset)

    +

    Unified access to public scientific datasets from major neuroscience +and biomedical repositories. Search, browse, and fetch datasets +without learning each repository’s API.

    +
    +

    Supported Sources

    + ++++ + + + + + + + + + + + + + + + + +

    Source

    Description

    DANDI

    Neurophysiology data (NWB format) – electrophysiology, calcium imaging

    OpenNeuro

    Brain imaging data (BIDS format) – fMRI, EEG, MEG, PET

    PhysioNet

    Physiological signal data – ECG, EEG, clinical waveforms

    +
    +
    +

    Quick Start

    +
    import scitex as stx
    +
    +# Search across all sources
    +results = stx.dataset.search("epilepsy EEG")
    +
    +# Fetch a specific dataset
    +data = stx.dataset.fetch("dandi", dandiset_id="000003")
    +
    +# List available sources
    +sources = stx.dataset.list_sources()
    +# ['dandi', 'openneuro', 'physionet']
    +
    +
    +
    +
    +

    Key Functions

    +
    +

    search(query, source=None)

    +

    Search for datasets across one or all supported repositories.

    +
    # Search all sources
    +results = stx.dataset.search("motor imagery BCI")
    +
    +# Search a specific source
    +results = stx.dataset.search("sleep staging", source="physionet")
    +
    +for r in results:
    +    print(f"{r.source}: {r.title} ({r.id})")
    +
    +
    +
    +
    +

    fetch(source, **kwargs)

    +

    Download or stream a dataset from a specific source.

    +
    # Fetch from DANDI
    +data = stx.dataset.fetch("dandi", dandiset_id="000003")
    +
    +# Fetch from OpenNeuro
    +data = stx.dataset.fetch("openneuro", dataset_id="ds000117")
    +
    +# Fetch from PhysioNet
    +data = stx.dataset.fetch("physionet", database="mimic-iv", version="2.0")
    +
    +
    +
    +
    +

    list_sources()

    +

    List all available dataset sources and their status.

    +
    sources = stx.dataset.list_sources()
    +# ['dandi', 'openneuro', 'physionet']
    +
    +
    +
    +
    +
    +

    Local Database

    +

    Build a local search index for faster repeated queries:

    +
    # Build/update the local database
    +stx.dataset.db_build(sources=["dandi", "openneuro"])
    +
    +# Search the local index (fast, offline)
    +results = stx.dataset.db_search("resting state fMRI")
    +
    +# Get database statistics
    +stx.dataset.db_stats()
    +
    +
    +
    +
    +

    CLI Access

    +
    # Search datasets
    +scitex dataset search "epilepsy EEG"
    +
    +# Fetch a dataset
    +scitex dataset fetch dandi --dandiset-id 000003
    +
    +# List sources
    +scitex dataset list-sources
    +
    +# Build local database
    +scitex dataset db-build
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/datetime.html b/src/scitex/_sphinx_html/source/api/datetime.html new file mode 100644 index 000000000..4594c7642 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/datetime.html @@ -0,0 +1,674 @@ + + + + + + + + + datetime Module (stx.datetime) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    datetime Module (stx.datetime)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/db.html b/src/scitex/_sphinx_html/source/api/db.html new file mode 100644 index 000000000..9e92db375 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/db.html @@ -0,0 +1,674 @@ + + + + + + + + + db Module (stx.db) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    db Module (stx.db)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/decorators.html b/src/scitex/_sphinx_html/source/api/decorators.html new file mode 100644 index 000000000..10405d4df --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/decorators.html @@ -0,0 +1,749 @@ + + + + + + + + + Decorators Module (stx.decorators) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Decorators Module (stx.decorators)

    +

    Function decorators for type conversion, batching, caching, and more.

    +
    +

    Quick Reference

    +
    from scitex.decorators import torch_fn, batch_fn, cache_disk, timeout
    +
    +@torch_fn
    +def process(x):
    +    """Auto-converts inputs to torch tensors, outputs back."""
    +    return x * 2
    +
    +@batch_fn
    +def predict(data, batch_size=32):
    +    """Process data in batches with progress bar."""
    +    return model(data)
    +
    +@cache_disk
    +def expensive_computation(params):
    +    """Results cached to disk for reuse."""
    +    return heavy_compute(params)
    +
    +@timeout(seconds=30)
    +def risky_call():
    +    """Raises TimeoutError if exceeds 30s."""
    +    return external_api()
    +
    +
    +
    +
    +

    Type Conversion

    +

    Auto-convert between data frameworks:

    +
      +
    • @torch_fn – Inputs to PyTorch tensors, outputs back to original type

    • +
    • @numpy_fn – Inputs to NumPy arrays

    • +
    • @pandas_fn – Inputs to pandas objects

    • +
    • @xarray_fn – Inputs to xarray objects

    • +
    +
    +
    +

    Batch Processing

    +
      +
    • @batch_fn – Split input into batches with tqdm progress

    • +
    • @batch_numpy_fn – NumPy conversion + batching

    • +
    • @batch_torch_fn – PyTorch conversion + batching

    • +
    • @batch_pandas_fn – Pandas conversion + batching

    • +
    +
    +
    +

    Caching

    +
      +
    • @cache_mem – In-memory function result caching

    • +
    • @cache_disk – Persistent disk-based caching

    • +
    • @cache_disk_async – Async disk caching

    • +
    +
    +
    +

    Utilities

    +
      +
    • @deprecated(reason, forward_to) – Mark functions as deprecated

    • +
    • @not_implemented – Mark as not yet implemented

    • +
    • @timeout(seconds) – Enforce execution time limits

    • +
    • @preserve_doc – Preserve docstrings when wrapping

    • +
    +
    +
    +

    Auto-Ordering

    +
    from scitex.decorators import enable_auto_order
    +
    +enable_auto_order()
    +# Now decorators are applied in optimal order regardless of code order
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/dev.html b/src/scitex/_sphinx_html/source/api/dev.html new file mode 100644 index 000000000..ae4244ce6 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/dev.html @@ -0,0 +1,1800 @@ + + + + + + + + + Dev Module (stx.dev) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Dev Module (stx.dev)

    +

    Development tools and ecosystem management for the SciTeX package family.

    +
    +

    Note

    +

    stx.dev delegates to the standalone +scitex-dev package. +Install with: pip install scitex-dev.

    +
    +
    +

    Overview

    +

    The dev module provides utilities for maintaining the SciTeX ecosystem of +packages, building documentation, managing versions, and creating +MCP/CLI wrappers for scientific tools. It is primarily used by package +maintainers and contributors rather than end users.

    +
    +
    +

    Ecosystem Management

    +

    The SciTeX ecosystem comprises 14+ packages. stx.dev provides a +unified registry and coordination tools.

    +
    import scitex as stx
    +
    +# List all ecosystem packages
    +stx.dev.list_versions()
    +
    +# Check version consistency across the ecosystem
    +stx.dev.check_versions()
    +
    +# Synchronize local clones
    +stx.dev.ecosystem_sync()
    +
    +# Commit across multiple packages
    +stx.dev.ecosystem_commit("fix: update shared constants")
    +
    +
    + + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Ecosystem Packages

    Package

    Purpose

    scitex

    Hub package (re-exports all modules)

    scitex-io

    File I/O for 30+ formats

    scitex-stats

    Statistical testing with auto-reporting

    scitex-linter

    AST-based convention checker

    scitex-clew

    Claim-evidence-workflow pipeline

    figrecipe

    Publication-quality plotting

    scitex-dev

    Development and ecosystem tools

    scitex-notification

    Multi-backend notifications

    scitex-app

    Runtime SDK for SciTeX applications

    +
    +
    +

    LLM-friendly Types

    +

    stx.dev provides structured return types designed for consumption +by both humans and AI agents:

    +
    from scitex.dev import Result, ErrorCode
    +
    +# Wrap function results for consistent handling
    +result = Result(ok=True, data={"accuracy": 0.95})
    +result = Result(ok=False, error=ErrorCode.NOT_FOUND, message="File missing")
    +
    +# Decorator to add return_as= parameter
    +@stx.dev.supports_return_as
    +def analyze(data):
    +    return {"mean": data.mean()}
    +
    +analyze(data, return_as="json")    # JSON string
    +analyze(data, return_as="dict")    # Python dict
    +
    +
    +
    +
    +

    MCP and CLI Wrappers

    +

    Convert Python functions into MCP tools or CLI commands:

    +
    from scitex.dev import wrap_as_mcp, wrap_as_cli
    +
    +def my_tool(path: str, threshold: float = 0.5) -> dict:
    +    """Analyze a data file."""
    +    ...
    +
    +# Register as MCP tool (for AI agent access)
    +mcp_tool = wrap_as_mcp(my_tool)
    +
    +# Register as CLI command (for terminal access)
    +cli_cmd = wrap_as_cli(my_tool)
    +
    +
    +
    +
    +

    Documentation

    +

    Build and search unified documentation across the ecosystem:

    +
    # Build Sphinx docs for a package
    +stx.dev.build_docs("scitex-io")
    +
    +# Get docstring for any public function
    +stx.dev.get_docs("stx.io.save")
    +
    +# Full-text search across all packages
    +results = stx.dev.search("load_configs")
    +
    +
    +
    +
    +

    Hot Reload

    +

    Reload modules during interactive development:

    +
    stx.dev.reload("scitex.io")    # Re-import scitex.io from disk
    +
    +
    +
    +
    +

    HPC Testing

    +

    Submit test suites to HPC clusters and poll results:

    +
    scitex dev test-hpc --package scitex-io
    +scitex dev test-hpc-poll --job-id 12345
    +
    +
    +
    +
    +

    Bulk Rename

    +

    Rename symbols across an entire codebase safely:

    +
    stx.dev.bulk_rename(
    +    root="./src",
    +    old="old_function_name",
    +    new="new_function_name",
    +    dry_run=True,    # Preview changes first
    +)
    +
    +
    +
    +
    +

    API Reference

    +

    scitex-dev: Shared developer utilities for the SciTeX ecosystem.

    +

    Zero-dependency package providing: +- Docs aggregation and serving across all scitex packages +- Unified search across APIs, CLI, MCP tools, and documentation +- Version management and ecosystem registry +- Bulk rename with cross-reference updates +- LLM-friendly types (Result, ErrorCode, @supports_return_as)

    +

    Public API (20 functions):

    +
    # Docs
    +get_docs, build_docs, search_docs
    +
    +# Search
    +search
    +
    +# Versions
    +list_versions, check_versions, get_mismatches, fix_mismatches
    +
    +# LLM-friendly types
    +Result, ErrorCode, supports_return_as, SideEffect,
    +classify_exception, handle_result, run_as_cli, run_as_mcp,
    +result_to_mcp, wrap_as_mcp
    +
    +
    +
    +
    +scitex.dev.get_docs(package=None, packages=None, format=None, page=None, *, _discover_fn=None, _root_fn=None, _sphinx_fn=None)[source]
    +

    Get documentation for one, several, or all installed SciTeX packages.

    +
    +
    Resolution chain per package:
      +
    1. Pre-built _sphinx_html/ in installed package → fastest (production)

    2. +
    3. Sphinx _build/ available → use existing build

    4. +
    5. Neither → introspect from docstrings + signatures (always works)

    6. +
    +
    +
    +
    +
    Parameters:
    +
      +
    • package (Optional[str]) – Single package name (returns unwrapped result).

    • +
    • packages (Optional[list[str]]) – List of package names (returns dict keyed by name).

    • +
    • format (Optional[str]) – Output format — None for manifest, “json” for structured, +“html” for path to HTML directory.

    • +
    • page (Optional[str]) – Specific page name (only with format=”html” or “json”).

    • +
    +
    +
    Returns:
    +

    the doc result directly (unwrapped). +- If packages=: dict mapping package name → doc result. +- If neither: dict of all discovered packages → doc result.

    +
    +
    Return type:
    +

    Any

    +
    +
    Raises:
    +
      +
    • ValueError – If both package= and packages= are given.

    • +
    • LookupError – If a requested package is not found.

    • +
    +
    +
    +
    + +
    +
    +scitex.dev.build_docs(package=None, output_dir=None, formats=None, *, _discover_fn=None, _sphinx_fn=None)[source]
    +

    Build docs from Sphinx source for one or all packages.

    +
    +
    Parameters:
    +
      +
    • package (Optional[str]) – Single package name. None = build all discovered.

    • +
    • output_dir (Optional[Path]) – Override output directory. Default: in-place (_build/).

    • +
    • formats (Optional[list[str]]) – List of builders (“html”, “json”). Default: [“html”].

    • +
    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    Returns:
    +

    Dict mapping package name → build result (path or error).

    +
    +
    Raises:
    +
    +
    +
    +
    + +
    +
    +scitex.dev.search_docs(query, package=None, packages=None, max_results=10, *, _discover_fn=None, _get_one_fn=None)[source]
    +

    Search documentation across one, several, or all SciTeX packages.

    +

    Simple keyword search over page titles and introspected content. +Stdlib only — no external search dependencies.

    +
    +
    Parameters:
    +
      +
    • query (str) – Search query string (case-insensitive keyword matching).

    • +
    • package (Optional[str]) – Search within a single package.

    • +
    • packages (Optional[list[str]]) – Search within specific packages.

    • +
    • max_results (int) – Maximum number of results to return.

    • +
    +
    +
    Returns:
    +

    package, name, title, score, match_type. +Sorted by relevance score (descending).

    +
    +
    Return type:
    +

    list[dict[str, Any]]

    +
    +
    +
    + +
    +
    +scitex.dev.search(query, scope='all', package=None, packages=None, max_results=10, fuzzy=True)[source]
    +

    Search across the SciTeX ecosystem.

    +
    +
    Query syntax:

    “save figure” → match any term +‘“exact phrase”’ → match exact phrase +“+required term” → term must appear +“-excluded” → results with this term are removed

    +
    +
    +
    +
    Parameters:
    +
      +
    • query (str) – Search query (supports +required, -excluded, “phrases”).

    • +
    • scope (Literal['all', 'api', 'cli', 'mcp', 'docs']) – What to search — “all”, “api”, “cli”, “mcp”, or “docs”.

    • +
    • package (Optional[str]) – Limit to a single package.

    • +
    • packages (Optional[list[str]]) – Limit to specific packages.

    • +
    • max_results (int) – Maximum results to return.

    • +
    • fuzzy (bool) – Enable fuzzy matching via difflib (default True).

    • +
    +
    +
    Returns:
    +

    package, name, title, score, scope, match_type. +Sorted by relevance (score descending).

    +
    +
    Return type:
    +

    list[dict[str, Any]]

    +
    +
    +
    + +
    +
    +scitex.dev.list_versions(packages=None)[source]
    +

    List versions for all ecosystem packages.

    +
    +
    Parameters:
    +

    packages (list[str] | None) – List of package names to check. If None, checks all ecosystem packages.

    +
    +
    Returns:
    +

    Version information for each package.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.check_versions(packages=None)[source]
    +

    Check version consistency and return detailed status.

    +
    +
    Parameters:
    +

    packages (list[str] | None) – List of package names to check. If None, checks all ecosystem packages.

    +
    +
    Returns:
    +

    Detailed version check results with overall summary.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.get_mismatches(packages=None)[source]
    +

    Return packages with non-ok status and their issues.

    +
    +
    Parameters:
    +

    packages (list[str] | None) – Package names to check. None = all ecosystem packages.

    +
    +
    Returns:
    +

    {package_name: {status, issues, local, git, remote}} for non-ok packages.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.fix_mismatches(hosts=None, packages=None, local=True, remote=True, confirm=False, config=None)[source]
    +

    Detect version mismatches and fix them.

    +

    Combines detect + fix_local + fix_remote. Kept for backward compatibility. +Prefer using the individual functions for clarity.

    +

    Safety: defaults to preview only. Pass confirm=True to execute.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.get_ecosystem_versions(packages=None)[source]
    +

    Return a flat {pkg_name: installed_version} dict for the ecosystem.

    +

    Thin wrapper over list_versions for consumers that just need the +installed-version string (Django health endpoints, Docker HEALTHCHECK +scripts, dashboards). Skips all the git / PyPI / pyproject cross- +check detail.

    +
    +
    Parameters:
    +

    packages (list[str] | None) – Package names to check. None = all ecosystem packages.

    +
    +
    Returns:
    +

    {"scitex": "2.27.3", "figrecipe": "0.28.1", "scitex-io": None}. +None means the package is not installed.

    +
    +
    Return type:
    +

    dict[str, str | None]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_dev import get_ecosystem_versions
    +>>> vers = get_ecosystem_versions()
    +>>> vers["scitex"]
    +'2.27.3'
    +
    +
    +
    +
    + +
    +
    +class scitex.dev.Result(success, data=None, error=None, error_code=None, context=<factory>, side_effects=<factory>, hints_on_success=<factory>, hints_on_warning=<factory>, hints_on_error=<factory>, idempotent=False, version=None)[source]
    +

    Bases: Generic[T]

    +

    Structured result wrapping function output with metadata.

    +
    +
    +success
    +

    Whether the operation succeeded.

    +
    +
    Type:
    +

    bool

    +
    +
    +
    + +
    +
    +data
    +

    The return value on success; None on failure.

    +
    +
    Type:
    +

    T | None

    +
    +
    +
    + +
    +
    +error
    +

    Human-readable error message on failure.

    +
    +
    Type:
    +

    str | None

    +
    +
    +
    + +
    +
    +error_code
    +

    Machine-readable error code (e.g. “E001”).

    +
    +
    Type:
    +

    str | None

    +
    +
    +
    + +
    +
    +context
    +

    Additional context (file paths, parameters, etc.).

    +
    +
    Type:
    +

    dict

    +
    +
    +
    + +
    +
    +side_effects
    +

    Description of mutations performed.

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +hints_on_success
    +

    Related tools the consumer might want (light, “see also” style). +Reserved for future use — currently empty.

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +hints_on_warning
    +

    Hints for partial success, deprecation, or approaching limits. +Reserved for future use — currently empty.

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +hints_on_error
    +

    Recovery guidance for expected failures (FAQ-style). +Accepts None, “”, a single string, or a list.

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +idempotent
    +

    Whether the operation is safe to retry.

    +
    +
    Type:
    +

    bool

    +
    +
    +
    + +
    +
    +version
    +

    API version for response schema evolution.

    +
    +
    Type:
    +

    str | None

    +
    +
    +
    + +
    +
    +__post_init__()[source]
    +

    Normalize hint fields (accept None, “”, single string, or list).

    +
    + +
    +
    +to_dict()[source]
    +

    Convert to a plain dictionary, stripping None values.

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    +
    +to_json(indent=2)[source]
    +

    Serialize to a JSON string.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +property exit_code: int
    +

    Map error_code to a CLI exit code.

    +
    + +
    +
    +classmethod json_schema()[source]
    +

    Return JSON Schema describing the Result envelope.

    +
    +
    Return type:
    +

    dict

    +
    +
    +
    + +
    + +
    +
    +class scitex.dev.ErrorCode(*values)[source]
    +

    Bases: str, Enum

    +

    Machine-readable error codes for structured error responses.

    +
    +
    +property exit_code: int
    +

    POSIX-style exit code for this error category.

    +
    + +
    + +
    +
    +exception scitex.dev.ScitexError(message, *, code=ErrorCode.INTERNAL, remediation=None)[source]
    +

    Bases: Exception

    +

    Canonical SciTeX exception for structured failures.

    +

    Use when the failure crosses an MCP / CLI / HTTP boundary and the caller +(often an LLM agent) needs a machine-readable category plus a human +remediation hint. For plain Python errors raised inside a script, +prefer the standard library exceptions (ValueError, FileNotFoundError, +etc.) — see general/03_interface/01_python-api/09_error-handling.md.

    +
    +
    Parameters:
    +
      +
    • message (str) – Human-readable description of the failure.

    • +
    • code (ErrorCode) – Machine-readable category. Defaults to ErrorCode.INTERNAL.

    • +
    • remediation (str | None) – How to fix it (e.g. "pip install scitex-io[h5]").

    • +
    +
    +
    +
    +

    Examples

    +
    >>> raise ScitexError(
    +...     "h5py not installed",
    +...     code=ErrorCode.DEPENDENCY,
    +...     remediation="pip install scitex-io[h5]",
    +... )
    +
    +
    +
    +
    +
    +to_dict()[source]
    +

    Serialize to the structured shape consumed by MCP tools and –json.

    +
    +
    Return type:
    +

    dict[str, str]

    +
    +
    +
    + +
    + +
    +
    +scitex.dev.classify_exception(exc)[source]
    +

    Classify an exception into an ErrorCode.

    +

    Checks for a .error_code attribute first (SciTeXError convention), +then falls back to built-in exception type mapping.

    +
    +
    Return type:
    +

    ErrorCode

    +
    +
    +
    + +
    +
    +scitex.dev.try_import_optional(module_path, attr=None, *, extra=None, pkg=None, package=None)[source]
    +

    Import module_path; return None on ImportError.

    +
    +
    Parameters:
    +
      +
    • module_path (str) – Module to import. Leading . triggers relative resolution against +package (mirrors importlib.import_module()).

    • +
    • attr (str | None) – If given, return getattr(module, attr) instead of the module. +A missing attribute is treated identically to a failed import.

    • +
    • extra (str | None) – Name of the pip extra that pulls this dependency (used for the +install hint surfaced via last_install_hint()).

    • +
    • pkg (str | None) – Distribution name owning the extra (e.g. "scitex-io").

    • +
    • package (str | None) – Anchor for relative imports.

    • +
    +
    +
    Returns:
    +

    The imported module/attribute, or None on failure.

    +
    +
    Return type:
    +

    Any

    +
    +
    +
    + +
    +
    +scitex.dev.last_install_hint(name)[source]
    +

    Return the most recently recorded install hint for name (or None).

    +
    +
    Return type:
    +

    InstallHint | None

    +
    +
    +
    + +
    +
    +class scitex.dev.InstallHint(module, extra, pkg)[source]
    +

    Bases: object

    +

    Metadata to help a caller surface a useful install message.

    +
    + +
    +
    +scitex.dev.supports_return_as(fn)[source]
    +

    Add return_as="result" support to a function.

    +
      +
    • return_as=None (default): data returned, exceptions raised.

    • +
    • return_as="result": wrapped in Result.

    • +
    • Any other value: passed through to the original function.

    • +
    +
    +

    Examples

    +
    >>> @supports_return_as
    +... def add(a: int, b: int) -> int:
    +...     return a + b
    +>>> add(1, 2)
    +3
    +>>> result = add(1, 2, return_as="result")
    +>>> result.success
    +True
    +>>> result.data
    +3
    +
    +
    +
    +
    +
    Return type:
    +

    Callable

    +
    +
    +
    + +
    +
    +class scitex.dev.SideEffect(type, target, undoable=False)[source]
    +

    Bases: object

    +

    A declared side effect of a function.

    +
    +
    +type
    +

    Category (file_create, file_modify, file_delete, network, +state_change, cache_write).

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +target
    +

    What is affected (file path, URL, description).

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +undoable
    +

    Whether the effect can be reversed.

    +
    +
    Type:
    +

    bool

    +
    +
    +
    + +
    + +
    +
    +scitex.dev.handle_result(result, as_json=False, file=None)[source]
    +

    Format and print a Result, return the exit code.

    +
    +
    Parameters:
    +
      +
    • result (Result) – The structured result to display.

    • +
    • as_json (bool) – If True, output full JSON. If False, human-friendly text.

    • +
    • file (Any) – Output stream. Defaults to stdout/stderr based on success.

    • +
    +
    +
    Returns:
    +

    Exit code suitable for sys.exit().

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    +scitex.dev.run_as_cli(fn, as_json=False, **kwargs)[source]
    +

    Call a @supports_return_as function and exit with proper code.

    +
    +
    Parameters:
    +
      +
    • fn (Callable) – A function decorated with @supports_return_as.

    • +
    • as_json (bool) – If True, output full JSON.

    • +
    • **kwargs (Any) – Arguments to pass to fn.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.dev.wrap_as_cli(fn, as_json=False, **kwargs)[source]
    +

    Call any function and display its result via CLI.

    +

    Like wrap_as_mcp but for terminal output. Wraps any plain +function in Result, formats based on as_json, and exits +with proper exit code.

    +
    +
    Parameters:
    +
      +
    • fn (Callable) – Any callable returning data or raising exceptions.

    • +
    • as_json (bool) – If True, output full JSON Result. If False, human-friendly text.

    • +
    • **kwargs (Any) – Arguments to pass to fn.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.dev.run_as_mcp(fn, **kwargs)[source]
    +

    Call a @supports_return_as function and return MCP-ready JSON.

    +
    +
    Parameters:
    +
      +
    • fn (Callable) – A function decorated with @supports_return_as.

    • +
    • **kwargs (Any) – Arguments to pass to fn.

    • +
    +
    +
    Returns:
    +

    JSON string with the full Result structure.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.dev.wrap_as_mcp(fn, *, side_effects=None, hints_on_error=None, idempotent=False, **kwargs)[source]
    +

    Call any function and wrap its return in Result JSON.

    +

    Unlike run_as_mcp (which requires @supports_return_as), +this wraps any plain function. Use this to retrofit existing +handlers without modifying the underlying function.

    +
    +
    Parameters:
    +
      +
    • fn (Callable) – Any callable returning data or raising exceptions.

    • +
    • side_effects (list[str] | None) – Declared side effects (e.g. ["file_create: /tmp/out.csv"]).

    • +
    • hints_on_error (list[str] | None) – Recovery guidance for expected failures (FAQ-style).

    • +
    • idempotent (bool) – Whether the operation is safe to retry.

    • +
    • **kwargs (Any) – Arguments to pass to fn.

    • +
    +
    +
    Returns:
    +

    JSON string with Result structure.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +async scitex.dev.async_wrap_as_mcp(coro_fn, *, side_effects=None, hints_on_error=None, idempotent=False, **kwargs)[source]
    +

    Async version of wrap_as_mcp for async handlers.

    +
    +
    Parameters:
    +
      +
    • coro_fn (Callable) – Any async callable (coroutine function) returning data +or raising exceptions.

    • +
    • side_effects (list[str] | None) – Declared side effects.

    • +
    • hints_on_error (list[str] | None) – Recovery guidance for expected failures (FAQ-style).

    • +
    • idempotent (bool) – Whether the operation is safe to retry.

    • +
    • **kwargs (Any) – Arguments to pass to coro_fn.

    • +
    +
    +
    Returns:
    +

    JSON string with Result structure.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.dev.result_to_mcp(result)[source]
    +

    Convert an existing Result to MCP-ready JSON.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.dev.json_option(fn)[source]
    +

    Click decorator: adds --json flag as as_json parameter.

    +

    Uses lazy import click so scitex-dev stays stdlib-only.

    +
    +
    Return type:
    +

    Callable

    +
    +
    +
    + +
    +
    +scitex.dev.dry_run_option(fn)[source]
    +

    Click decorator: adds --dry-run flag.

    +

    Uses lazy import click so scitex-dev stays stdlib-only.

    +
    +
    Return type:
    +

    Callable

    +
    +
    +
    + +
    +
    +scitex.dev.add_json_argument(parser)[source]
    +

    Add --json flag to an argparse parser.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.dev.add_dry_run_argument(parser)[source]
    +

    Add --dry-run flag to an argparse parser.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.dev.sync_all(hosts=None, packages=None, stash=True, install=True, safe=True, confirm=False, config=None, *, sync_host_fn=None, enabled_hosts_fn=None)[source]
    +

    Sync packages across all enabled hosts.

    +

    Safety: defaults to preview only. Pass confirm=True to execute. +Parallel: hosts are synced concurrently by default.

    +
    +
    Parameters:
    +
      +
    • hosts (list[str] | None) – Host names to sync. None = all enabled hosts.

    • +
    • packages (list[str] | None) – Package names. None = host-specific defaults.

    • +
    • stash (bool) – Git stash before pull.

    • +
    • install (bool) – Pip install after pull.

    • +
    • safe (bool) – If True (default), skip packages whose remote working copy is +ahead of / diverged from upstream (never clobber unpushed work).

    • +
    • confirm (bool) – If False (default), preview only (dry run). +If True, execute the sync operation.

    • +
    • config (DevConfig | None) – Configuration.

    • +
    +
    +
    Returns:
    +

    {host_name: {package: result}}.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.sync_host(host, packages=None, stash=True, install=True, safe=True, confirm=False, config=None, *, host_packages_fn=None)[source]
    +

    Sync packages to a remote host via SSH.

    +

    Safety: defaults to preview only. Pass confirm=True to execute.

    +

    Steps per package: ahead-check (if safe), git stash, git pull, +pip install -e ., git stash pop.

    +
    +
    Parameters:
    +
      +
    • host (HostConfig) – Target host configuration.

    • +
    • packages (list[str] | None) – Package names to sync. None = use host’s configured packages.

    • +
    • stash (bool) – Git stash before pull (default True).

    • +
    • install (bool) – Pip install after pull (default True).

    • +
    • safe (bool) – If True (default), pre-check each remote working copy and skip +packages whose HEAD is ahead of / diverged from upstream so we +never clobber unpushed commits.

    • +
    • confirm (bool) – If False (default), preview only (dry run). +If True, execute the sync operation.

    • +
    • config (DevConfig | None) – Configuration. Loaded from default if None.

    • +
    +
    +
    Returns:
    +

    Per-package results: {package: {status, commands|output, error}}. +status includes ok, skipped_ahead, skipped_diverged, +missing, error, timeout, or dry_run.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.sync_local(packages=None, confirm=False, config=None, jobs=1, on_progress=None)[source]
    +

    Install all local editable packages.

    +

    Safety: defaults to preview only. Pass confirm=True to execute.

    +
    +
    Parameters:
    +
      +
    • packages (list[str] | None) – Package names. None = all configured packages.

    • +
    • confirm (bool) – If False (default), preview only. +If True, execute pip install -e.

    • +
    • config (DevConfig | None) – Configuration.

    • +
    • jobs (int) – Parallel installs. 1 = serial (default). 0 or negative = all CPUs.

    • +
    • on_progress (callable | None) – Optional callback f(idx, total, name, status, elapsed) invoked +as each package finishes.

    • +
    +
    +
    Returns:
    +

    {package: {status, output|commands}}.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.sync_tags(packages=None, confirm=False, config=None)[source]
    +

    Push local tags for all packages to origin.

    +

    Safety: defaults to preview only. Pass confirm=True to execute.

    +
    +
    Parameters:
    +
      +
    • packages (list[str] | None) – Package names. None = all configured packages.

    • +
    • confirm (bool) – If False (default), preview only. +If True, execute git push –tags.

    • +
    • config (DevConfig | None) – Configuration.

    • +
    +
    +
    Returns:
    +

    {package: {status, tag, output|commands}}.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.remote_diff(host=None, packages=None, config=None)[source]
    +

    Show git diff on remote host(s). Read-only operation.

    +
    +
    Parameters:
    +
      +
    • host (str | None) – Host name. None = first enabled host.

    • +
    • packages (list[str] | None) – Package names. None = host-configured defaults.

    • +
    • config (DevConfig | None) – Configuration.

    • +
    +
    +
    Returns:
    +

    {host_name: {package: {status, files, diff_stat, diff}}}.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.remote_commit(host, packages=None, message=None, push=True, confirm=False, config=None)[source]
    +

    Commit dirty changes on a remote host and optionally push to origin.

    +

    Safety: defaults to preview only. Pass confirm=True to execute.

    +
    +
    Parameters:
    +
      +
    • host (str) – Host name (required).

    • +
    • packages (list[str] | None) – Package names. None = host-configured defaults.

    • +
    • message (str | None) – Commit message. Auto-generated if not provided.

    • +
    • push (bool) – Push to origin after commit (default True).

    • +
    • confirm (bool) – If False (default), preview only (dry run).

    • +
    • config (DevConfig | None) – Configuration.

    • +
    +
    +
    Returns:
    +

    {package: {status, commands|output}}.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.dev.pull_local(packages=None, confirm=False, stash=True, config=None)[source]
    +

    Pull latest from origin to local repos.

    +

    Safety: defaults to preview only. Pass confirm=True to execute.

    +
    +
    Parameters:
    +
      +
    • packages (list[str] | None) – Package names. None = all configured packages.

    • +
    • confirm (bool) – If False (default), preview only.

    • +
    • stash (bool) – If True (default), stash local changes before pull and pop after. +If False and repo is dirty, pull proceeds as-is (may fail).

    • +
    • config (DevConfig | None) – Configuration.

    • +
    +
    +
    Returns:
    +

    {package: {status, output|commands, stashed}}.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/diagram.html b/src/scitex/_sphinx_html/source/api/diagram.html new file mode 100644 index 000000000..2de08e10e --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/diagram.html @@ -0,0 +1,768 @@ + + + + + + + + + Diagram Module (stx.diagram) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Diagram Module (stx.diagram)

    +

    Paper-optimized diagram generation with Mermaid and Graphviz backends.

    +
    +

    Quick Reference

    +
    from scitex.diagram import Diagram
    +
    +# Create from Python
    +d = Diagram(type="workflow", title="Analysis Pipeline")
    +d.add_node("load", "Load Data", shape="stadium")
    +d.add_node("proc", "Process", shape="rounded", emphasis="primary")
    +d.add_node("save", "Save Results", shape="stadium", emphasis="success")
    +d.add_edge("load", "proc")
    +d.add_edge("proc", "save")
    +
    +# Export
    +d.to_mermaid("pipeline.mmd")
    +d.to_graphviz("pipeline.dot")
    +
    +# Or from YAML specification
    +d = Diagram.from_yaml("pipeline.diagram.yaml")
    +
    +
    +
    +
    +

    YAML Specification

    +
    type: workflow
    +title: SciTeX Analysis Pipeline
    +
    +paper:
    +  column: single          # single or double
    +  mode: publication       # draft or publication
    +  reading_direction: left_to_right
    +
    +layout:
    +  groups:
    +    Input: [load, preprocess]
    +    Analysis: [analyze, test]
    +
    +nodes:
    +  - id: load
    +    label: Load Data
    +    shape: stadium
    +  - id: analyze
    +    label: Statistical Test
    +    shape: rounded
    +    emphasis: primary
    +
    +edges:
    +  - from: load
    +    to: analyze
    +
    +
    +
    +
    +

    Node Shapes

    +

    box, rounded, stadium, diamond, circle, codeblock

    +
    +
    +

    Node Emphasis

    +
      +
    • normal – Default (dark)

    • +
    • primary – Key nodes (blue)

    • +
    • success – Positive outcomes (green)

    • +
    • warning – Issues (red)

    • +
    • muted – Secondary (gray)

    • +
    +
    +
    +

    Diagram Types

    +
      +
    • workflow – Left-to-right sequential processes

    • +
    • decision – Top-to-bottom decision trees

    • +
    • pipeline – Data pipeline stages

    • +
    • hierarchy – Tree structures

    • +
    • comparison – Side-by-side comparison

    • +
    +
    +
    +

    Paper Modes

    +
      +
    • draft – Full arrows, medium spacing, all edges visible

    • +
    • publication – Tight spacing, return edges invisible, optimized for column width

    • +
    +
    +
    +

    Backends

    +
      +
    • Mermaid (.mmd) – Web/markdown rendering

    • +
    • Graphviz DOT (.dot) – Tighter layouts, render with dot -Tpng

    • +
    • YAML (.diagram.yaml) – Semantic spec, human/LLM-readable

    • +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/dict.html b/src/scitex/_sphinx_html/source/api/dict.html new file mode 100644 index 000000000..153e63732 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/dict.html @@ -0,0 +1,674 @@ + + + + + + + + + dict Module (stx.dict) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    dict Module (stx.dict)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/dsp.html b/src/scitex/_sphinx_html/source/api/dsp.html new file mode 100644 index 000000000..a910a4fae --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/dsp.html @@ -0,0 +1,742 @@ + + + + + + + + + DSP Module (stx.dsp) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    DSP Module (stx.dsp)

    +

    Digital signal processing tools for filtering, spectral analysis, +and time-frequency decomposition.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import numpy as np
    +
    +# Generate test signal
    +fs = 1000  # Hz
    +t = np.arange(0, 1, 1/fs)
    +signal = np.sin(2 * np.pi * 10 * t) + 0.5 * np.sin(2 * np.pi * 50 * t)
    +
    +# Filtering
    +filtered = stx.dsp.filt.bandpass(signal, fs=fs, low=5, high=30)
    +low_pass = stx.dsp.filt.lowpass(signal, fs=fs, cutoff=20)
    +high_pass = stx.dsp.filt.highpass(signal, fs=fs, cutoff=5)
    +
    +# Power spectral density
    +freqs, psd = stx.dsp.psd(signal, fs=fs)
    +
    +# Band powers
    +powers = stx.dsp.band_powers(signal, fs=fs, bands={
    +    "delta": (1, 4),
    +    "theta": (4, 8),
    +    "alpha": (8, 13),
    +    "beta": (13, 30),
    +})
    +
    +# Hilbert transform (analytic signal)
    +analytic = stx.dsp.hilbert(signal)
    +amplitude = np.abs(analytic)
    +phase = np.angle(analytic)
    +
    +# Wavelet decomposition
    +coeffs = stx.dsp.wavelet(signal, fs=fs, freqs=np.arange(1, 50))
    +
    +
    +
    +
    +

    Available Functions

    +

    Filtering (stx.dsp.filt)

    +
      +
    • bandpass(signal, fs, low, high)

    • +
    • lowpass(signal, fs, cutoff)

    • +
    • highpass(signal, fs, cutoff)

    • +
    • notch(signal, fs, freq)

    • +
    +

    Spectral Analysis

    +
      +
    • psd(signal, fs) – Power spectral density

    • +
    • band_powers(signal, fs, bands) – Power in frequency bands

    • +
    • wavelet(signal, fs, freqs) – Continuous wavelet transform

    • +
    +

    Time-Frequency

    +
      +
    • hilbert(signal) – Analytic signal via Hilbert transform

    • +
    • pac(signal, fs) – Phase-amplitude coupling

    • +
    +

    Utilities

    +
      +
    • demo_sig(fs, duration) – Generate demo signals for testing

    • +
    • crop(signal, start, end, fs) – Crop signal to time range

    • +
    • detect_ripples(signal, fs) – Detect sharp-wave ripples

    • +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/etc.html b/src/scitex/_sphinx_html/source/api/etc.html new file mode 100644 index 000000000..6723ab46d --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/etc.html @@ -0,0 +1,777 @@ + + + + + + + + + etc Module (stx.etc) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    etc Module (stx.etc)

    +

    Utility functions for miscellaneous tasks.

    +

    This module provides utility functions that don’t fit into other categories, +such as keyboard input handling for interactive programs.

    +
    +
    +scitex.etc.count(*, printer=<built-in function print>, sleeper=<built-in function sleep>)[source]
    +

    Print an incrementing counter forever, sleeping 1s between values.

    +
    +
    Parameters:
    +
      +
    • printer (callable, optional) – Output sink, defaults to the builtin print. Injectable test seam.

    • +
    • sleeper (callable, optional) – One-arg sleep callable, defaults to time.sleep. Injectable so +tests can run without real delay and bound the loop.

    • +
    +
    +
    +
    + +
    +
    +scitex.etc.count_grids(params_grid)[source]
    +

    Return the total number of combinations in a parameter grid.

    +
    +
    Parameters:
    +

    params_grid (dict) – Mapping of parameter name -> list of candidate values.

    +
    +
    Returns:
    +

    Product of the lengths of all value lists.

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    +scitex.etc.yield_grids(params_grid, random=False)[source]
    +

    Yield every parameter combination from a grid as a dict.

    +
    +
    Parameters:
    +
      +
    • params_grid (dict) – Mapping of parameter name -> list of candidate values.

    • +
    • random (bool) – If True, yield the combinations in shuffled order (default False).

    • +
    +
    +
    Yields:
    +

    dict – One combination, mapping each parameter name to a single value.

    +
    +
    +
    +

    Example

    +
    >>> grid = {"a": [1, 2], "b": ["x", "y"]}
    +>>> list(yield_grids(grid))
    +[{'a': 1, 'b': 'x'}, {'a': 1, 'b': 'y'}, {'a': 2, 'b': 'x'}, {'a': 2, 'b': 'y'}]
    +
    +
    +
    +
    + +
    +
    +scitex.etc.search(patterns, strings, only_perfect_match=False, as_bool=False, ensure_one=False)[source]
    +

    Search for patterns in strings using regular expressions.

    +
    +
    Parameters:
    +
      +
    • patterns (str or list of str) – The pattern(s) to search for. A single string or a list of strings.

    • +
    • strings (str or list of str) – The string(s) to search in. A single string or a list of strings.

    • +
    • only_perfect_match (bool) – If True, only exact matches are considered (default False).

    • +
    • as_bool (bool) – If True, return a boolean mask instead of indices (default False).

    • +
    • ensure_one (bool) – If True, assert exactly one match is found (default False).

    • +
    +
    +
    Returns:
    +

      +
    • If as_bool is False: (indices, matched_strings) where +indices is a list of int positions of matches.

    • +
    • If as_bool is True: (mask, matched_strings) where mask is +a boolean sequence (numpy array when numpy is installed, else a list) +flagging matched positions.

    • +
    +

    +
    +
    Return type:
    +

    tuple

    +
    +
    +
    +

    Example

    +
    >>> patterns = ['orange', 'banana']
    +>>> strings = ['apple', 'orange', 'apple', 'apple_juice', 'banana', 'orange_juice']
    +>>> search(patterns, strings)
    +([1, 4, 5], ['orange', 'banana', 'orange_juice'])
    +
    +
    +
    >>> search('orange', strings)
    +([1, 5], ['orange', 'orange_juice'])
    +
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/events.html b/src/scitex/_sphinx_html/source/api/events.html new file mode 100644 index 000000000..60253984b --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/events.html @@ -0,0 +1,674 @@ + + + + + + + + + events Module (stx.events) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    events Module (stx.events)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/gen.html b/src/scitex/_sphinx_html/source/api/gen.html new file mode 100644 index 000000000..08f0d46ca --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/gen.html @@ -0,0 +1,704 @@ + + + + + + + + + Gen Module (stx.gen) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Gen Module (stx.gen)

    +

    General utilities for path management, shell commands, and system operations.

    +
    +

    Note

    +

    Session management has moved to @stx.session (see Core Concepts). +The scitex.gen.start() / scitex.gen.close() pattern is deprecated.

    +
    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Timestamped output directories
    +path = stx.gen.mk_spath("./results")
    +# → ./results/20260213_143022/
    +
    +# Run shell commands
    +stx.gen.run("ls -la")
    +
    +# Clipboard operations
    +stx.gen.copy("text to clipboard")
    +text = stx.gen.paste()
    +
    +# String to valid path
    +stx.gen.title2path("My Experiment #1")
    +# → "my_experiment_1"
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/gists.html b/src/scitex/_sphinx_html/source/api/gists.html new file mode 100644 index 000000000..28abe7150 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/gists.html @@ -0,0 +1,701 @@ + + + + + + + + + gists Module (stx.gists) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    gists Module (stx.gists)

    +

    SigmaPlot macro conversion utilities.

    +
    +
    +scitex.gists.SigMacro_processFigure_S()[source]
    +

    Deprecated: Use sigmacro_process_figure_s() instead.

    +
    + +
    +
    +scitex.gists.SigMacro_toBlue()[source]
    +

    Deprecated: Use sigmacro_to_blue() instead.

    +
    + +
    +
    +scitex.gists.sigmacro_process_figure_s()[source]
    +

    Print a macro for SigmaPlot (v12.0) to format a panel.

    +

    Please refer to the ‘Automating Routine Tasks’ section of the official documentation.

    +
    + +
    +
    +scitex.gists.sigmacro_to_blue()[source]
    +

    Print a macro for SigmaPlot (v12.0) that changes the color and style of the selected object.

    +

    Please refer to the ‘Automating Routine Tasks’ section of the official documentation.

    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/git.html b/src/scitex/_sphinx_html/source/api/git.html new file mode 100644 index 000000000..c6f246355 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/git.html @@ -0,0 +1,674 @@ + + + + + + + + + git Module (stx.git) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    git Module (stx.git)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/index.html b/src/scitex/_sphinx_html/source/api/index.html new file mode 100644 index 000000000..82b206122 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/index.html @@ -0,0 +1,1181 @@ + + + + + + + + + API Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    API Reference

    +

    SciTeX is organized into focused modules. +All modules are accessible via import scitex as stx followed by stx.<module>.

    + + + + + + + +
    +

    Utilities

    + +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/introspect.html b/src/scitex/_sphinx_html/source/api/introspect.html new file mode 100644 index 000000000..1f37a9814 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/introspect.html @@ -0,0 +1,739 @@ + + + + + + + + + Introspect Module (stx.introspect) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Introspect Module (stx.introspect)

    +

    IPython-like code inspection for exploring Python packages.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Function signature (like IPython's func?)
    +stx.introspect.q("scitex.stats.test_ttest_ind")
    +# → name, signature, parameters, return type
    +
    +# Full source code (like IPython's func??)
    +stx.introspect.qq("scitex.stats.test_ttest_ind")
    +# → complete source with line numbers
    +
    +# List module members (like enhanced dir())
    +stx.introspect.dir("scitex.plt", filter="public", kind="functions")
    +
    +# Recursive API tree
    +df = stx.introspect.list_api("scitex", max_depth=2)
    +
    +
    +
    +
    +

    IPython-Style Shortcuts

    +
      +
    • q(dotted_path) – Signature and parameters (like func?)

    • +
    • qq(dotted_path) – Full source code (like func??)

    • +
    • dir(dotted_path, filter, kind) – List members with filtering

    • +
    +

    Filters: "public", "private", "dunder", "all"

    +

    Kinds: "functions", "classes", "data", "modules"

    +
    +
    +

    Documentation

    +
      +
    • get_docstring(path, format) – Extract docstrings ("raw", "parsed", "summary")

    • +
    • get_exports(path) – Get __all__ exports

    • +
    • find_examples(path) – Find usage examples in tests/examples

    • +
    +
    +
    +

    Type Analysis

    +
      +
    • get_type_hints_detailed(path) – Full type annotation analysis

    • +
    • get_class_hierarchy(path) – Inheritance tree (MRO + subclasses)

    • +
    • get_class_annotations(path) – Class variable annotations

    • +
    +
    +
    +

    Code Analysis

    +
      +
    • get_imports(path, categorize) – All imports (AST-based, grouped by stdlib/third-party/local)

    • +
    • get_dependencies(path, recursive) – Module dependency tree

    • +
    • get_call_graph(path, max_depth) – Function call graph (with timeout protection)

    • +
    +
    +
    +

    API Tree

    +
    # Generate full module tree as DataFrame
    +df = stx.introspect.list_api("scitex", max_depth=3, docstring=True)
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/io.html b/src/scitex/_sphinx_html/source/api/io.html new file mode 100644 index 000000000..026ee7adf --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/io.html @@ -0,0 +1,847 @@ + + + + + + + + + I/O Module (stx.io) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    I/O Module (stx.io)

    +

    Unified file I/O for 30+ scientific data formats. A single save() +and load() interface handles format detection by file extension, +so you never need to remember which library reads .npy vs .h5 +vs .parquet.

    +
    +

    Note

    +

    Core format handlers are provided by the standalone +scitex-io package. +stx.io adds integration with stx.session (provenance tracking), +stx.clew (claim verification), and automatic CSV export for figures.

    +
    +
    +

    Supported Formats

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Category

    Extensions

    Tabular

    .csv, .tsv, .xlsx, .xls, .parquet, .feather

    Array

    .npy, .npz, .mat, .zarr, .h5 / .hdf5

    Config

    .yaml, .yml, .json, .toml, .ini, .conf

    Figure

    .png, .jpg, .jpeg, .svg, .pdf, .tiff

    Text

    .txt, .log, .md, .rst

    Audio

    .wav, .mp3, .flac

    Serialized

    .pkl, .pickle, .joblib

    Bibliography

    .bib

    +
    +
    +

    Quick Start

    +
    import scitex as stx
    +import pandas as pd
    +import numpy as np
    +
    +# --- Save and load a DataFrame ---
    +df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]})
    +stx.io.save(df, "results.csv")
    +df_loaded = stx.io.load("results.csv")
    +
    +# --- Save and load a NumPy array ---
    +arr = np.random.randn(100, 3)
    +stx.io.save(arr, "data.npy")
    +arr_loaded = stx.io.load("data.npy")
    +
    +# --- Save a figure (PNG + CSV data export) ---
    +fig, ax = stx.plt.subplots()
    +ax.stx_line([1, 2, 3, 4, 5], id="my_data")
    +stx.io.save(fig, "plot.png")
    +# Creates: plot.png, plot.csv, plot.yaml
    +
    +
    +
    +
    +

    Key Functions

    +
    +

    save(obj, path, **kwargs)

    +

    Save any supported object to a file. The format is determined by the +file extension. Built-in features beyond simple save:

    +
      +
    • Auto directory creation – no os.makedirs() needed

    • +
    • Path resolution – relative paths resolve to <script_name>_out/<path>

    • +
    • Symlinkssymlink_from_cwd=True for short access paths

    • +
    • Save logging – prints file path and size on success

    • +
    • Clew hash tracking – file hashes recorded automatically for verification

    • +
    • Figure CSV export – saves plot data alongside image files

    • +
    +
    # Format detected from extension
    +stx.io.save(fig, "figure.pdf")       # Also exports CSV + YAML recipe
    +stx.io.save(df, "output.parquet")    # DataFrame
    +stx.io.save({"lr": 0.001}, "config.yaml")  # Dict
    +stx.io.save(arr, "weights.npy")      # NumPy array
    +
    +# Symlink for convenient access
    +stx.io.save(df, "results/data.csv", symlink_from_cwd=True)
    +
    +
    +
    +
    +

    load(path)

    +

    Load data from a file. Returns the appropriate Python object +(DataFrame, ndarray, dict, etc.).

    +
    df = stx.io.load("results.csv")          # -> pd.DataFrame
    +arr = stx.io.load("weights.npy")         # -> np.ndarray
    +cfg = stx.io.load("config.yaml")         # -> dict
    +data = stx.io.load("experiment.h5")      # -> dict of arrays
    +
    +
    +
    +
    +

    load_configs(pattern="./config/*.yaml")

    +

    Load and merge multiple YAML configuration files into a single +DotDict. Used internally by @stx.session to build the +CONFIG object.

    +
    CONF = stx.io.load_configs("./config/*.yaml")
    +print(CONF.MODEL.hidden_size)
    +
    +
    +
    +
    +

    list_formats()

    +

    List all registered format handlers.

    +
    fmts = stx.io.list_formats()
    +# ['.csv', '.h5', '.hdf5', '.json', '.mat', '.npy', ...]
    +
    +
    +
    +
    +
    +

    HDF5 and Zarr Exploration

    +

    For hierarchical formats, use the explorer interface:

    +
    # HDF5
    +stx.io.explore_h5("data.h5")            # Print tree structure
    +stx.io.has_h5_key("data.h5", "/group/dataset")
    +
    +# Zarr
    +stx.io.explore_zarr("data.zarr")
    +stx.io.has_zarr_key("data.zarr", "/group/array")
    +
    +
    +
    +
    +

    Format Registry

    +

    Register custom loaders and savers for new file extensions:

    +
    @stx.io.register_loader(".custom")
    +def load_custom(path, **kwargs):
    +    with open(path) as f:
    +        return parse_custom(f.read())
    +
    +@stx.io.register_saver(".custom")
    +def save_custom(obj, path, **kwargs):
    +    with open(path, "w") as f:
    +        f.write(serialize_custom(obj))
    +
    +
    +
    +
    +

    Caching

    +

    Built-in load caching for repeated reads of the same file:

    +
    stx.io.configure_cache(maxsize=128)
    +data = stx.io.load("big_file.h5")    # First call: reads from disk
    +data = stx.io.load("big_file.h5")    # Second call: from cache
    +
    +stx.io.get_cache_info()               # Cache hit/miss statistics
    +stx.io.clear_load_cache()             # Flush the cache
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/linalg.html b/src/scitex/_sphinx_html/source/api/linalg.html new file mode 100644 index 000000000..e40a9fc4e --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/linalg.html @@ -0,0 +1,674 @@ + + + + + + + + + linalg Module (stx.linalg) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    linalg Module (stx.linalg)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/linter.html b/src/scitex/_sphinx_html/source/api/linter.html new file mode 100644 index 000000000..41714b545 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/linter.html @@ -0,0 +1,853 @@ + + + + + + + + + Linter Module (stx.linter) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Linter Module (stx.linter)

    +

    AST-based Python linter enforcing SciTeX conventions for reproducible +scientific code. Uses a plugin architecture where each downstream +package contributes its own rules.

    +
    +

    Note

    +

    stx.linter wraps the standalone +scitex-linter package. +Install with: pip install scitex-linter.

    +
    +
    +

    Quick Start

    +
    # Check a file
    +scitex linter check my_script.py
    +
    +# Check with specific severity
    +scitex linter check my_script.py --severity warning
    +
    +# List all rules
    +scitex linter list-rules
    +
    +# Filter by category
    +scitex linter list-rules --category session
    +
    +
    +
    from scitex_linter import check_file, list_rules
    +
    +# Check a file
    +results = check_file("my_script.py")
    +
    +# List available rules
    +rules = list_rules()
    +
    +
    +
    +
    +

    Rule Categories

    +

    47+ rules across 7 categories, contributed by multiple packages:

    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Prefix

    Category

    Source

    Examples

    STX-S

    Session

    scitex-linter

    Missing @stx.session, missing if __name__ guard, missing return, +load_configs() result not UPPER_CASE, magic numbers in module scope

    STX-I

    Import

    scitex-linter

    Using import mngs instead of import scitex, bare import numpy, +wildcard imports

    STX-IO

    I/O

    scitex-io

    Using open() instead of stx.io, hardcoded paths, +using pd.read_csv directly

    STX-P

    Plotting

    figrecipe

    Using plt.show() instead of stx.io.save, missing set_xyt, +using raw matplotlib calls

    STX-ST

    Statistics

    scitex-stats

    Using scipy.stats directly instead of stx.stats, +missing multiple comparison correction

    STX-PA

    Path

    scitex-linter

    Hardcoded absolute paths, missing stx.gen.mk_spath

    STX-FM

    Format

    figrecipe

    Non-snake_case names, magic numbers, missing docstrings

    +
    +
    +

    Severity Levels

    +
      +
    • error – Must fix (breaks reproducibility or correctness)

    • +
    • warning – Should fix (best practice violations)

    • +
    • info – Suggestions for improvement

    • +
    +
    +
    +

    Plugin Architecture

    +

    Each downstream package defines its own linter rules via the +scitex_linter.plugins entry point. The linter discovers and +aggregates rules automatically at runtime.

    +
    # In a downstream package's pyproject.toml
    +[project.entry-points."scitex_linter.plugins"]
    +my_package = "my_package._linter_plugin:get_plugin"
    +
    +
    +

    The plugin function returns a dictionary of rules, call patterns, +axes hints, and AST checker classes:

    +
    def get_plugin():
    +    from ._rules import MyRule001, MyRule002
    +    return {
    +        "rules": [MyRule001, MyRule002],
    +        "call_rules": {"my_func": "Use stx.my_func() instead"},
    +        "axes_hints": {},
    +        "checkers": [],
    +    }
    +
    +
    +
    +
    +

    Interfaces

    +

    The linter is available through four interfaces:

    +

    CLI (via scitex):

    +
    scitex linter check script.py
    +scitex linter list-rules --category io --severity warning
    +
    +
    +

    Standalone CLI:

    +
    scitex-linter check script.py
    +
    +
    +

    Python API:

    +
    from scitex_linter import check_file, check_source, list_rules
    +
    +results = check_file("script.py")
    +results = check_source("import numpy as np\n...")
    +rules = list_rules(category="io", severity="warning")
    +
    +
    +

    Flake8 Plugin:

    +
    flake8 --select=STX script.py
    +
    +
    +

    MCP Tools (for AI agents):

    +
    linter_check(path="script.py", severity="warning")
    +linter_list_rules(category="session")
    +linter_check_source(source="...", filepath="<stdin>")
    +
    +
    +
    +
    +

    Configuration

    +

    Configure via pyproject.toml:

    +
    [tool.scitex-linter]
    +severity = "warning"
    +ignore = ["STX-S002", "STX-FM001"]
    +
    +
    +
    +
    +

    Example Output

    +
    my_script.py:3:1: STX-I001 [warning] Use 'import scitex as stx' instead of 'import mngs'
    +my_script.py:15:5: STX-IO003 [error] Use 'stx.io.load()' instead of 'pd.read_csv()'
    +my_script.py:22:1: STX-S001 [warning] Missing '@stx.session' decorator on main()
    +
    +3 issues found (1 error, 2 warnings)
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/logging.html b/src/scitex/_sphinx_html/source/api/logging.html new file mode 100644 index 000000000..4e7c4458f --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/logging.html @@ -0,0 +1,1341 @@ + + + + + + + + + Logging Module (stx.logging) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Logging Module (stx.logging)

    +

    Unified logging with file/console output, custom warnings, exception +hierarchy, and stream redirection.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +from scitex import logging
    +
    +# Get a logger
    +logger = logging.getLogger(__name__)
    +logger.info("Processing data")
    +logger.success("Analysis complete")   # Custom level (31)
    +logger.fail("Model diverged")         # Custom level (35)
    +
    +# Configure globally
    +logging.configure(level="DEBUG", log_file="./run.log")
    +logging.set_level("WARNING")
    +
    +# Temporary file logging
    +with logging.log_to_file("analysis.log"):
    +    logger.info("This goes to both console and file")
    +
    +# Warnings
    +logging.warn("Large dataset", category=logging.PerformanceWarning)
    +logging.warn_deprecated("old_func", "new_func", version="3.0")
    +logging.filterwarnings("ignore", category=logging.UnitWarning)
    +
    +
    +
    +
    +

    Log Levels

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Level

    Value

    Description

    DEBUG

    10

    Detailed diagnostic information

    INFO

    20

    General operational messages

    WARNING

    30

    Something unexpected but not fatal

    SUCCESS

    31

    Custom: operation completed successfully

    FAIL

    35

    Custom: operation failed (non-fatal)

    ERROR

    40

    Serious problem

    CRITICAL

    50

    Program may not continue

    +
    +
    +

    Warning Categories

    +
      +
    • SciTeXWarning – Base warning class

    • +
    • UnitWarning – SI unit convention issues

    • +
    • StyleWarning – Formatting issues

    • +
    • SciTeXDeprecationWarning – Deprecated features

    • +
    • PerformanceWarning – Performance issues

    • +
    • DataLossWarning – Potential data loss

    • +
    +
    +
    +

    Exception Hierarchy

    +

    All inherit from SciTeXError:

    +
      +
    • I/O: IOError, FileFormatError, SaveError, LoadError

    • +
    • Config: ConfigurationError, ConfigFileNotFoundError, ConfigKeyError

    • +
    • Path: PathError, InvalidPathError, PathNotFoundError

    • +
    • Data: DataError, ShapeError, DTypeError

    • +
    • Plotting: PlottingError, FigureNotFoundError, AxisError

    • +
    • Stats: StatsError, TestError

    • +
    • Scholar: ScholarError, SearchError, PDFDownloadError, DOIResolutionError

    • +
    • NN: NNError, ModelError

    • +
    • Template: TemplateError, TemplateViolationError

    • +
    +
    +
    +

    Stream Redirection

    +
    from scitex.logging import tee
    +import sys
    +
    +# Redirect stdout/stderr to log files
    +sys.stdout, sys.stderr = tee(sys, sdir="./output")
    +
    +
    +

    The @stx.session decorator handles this automatically.

    +
    +
    +

    API Reference

    +
    +
    +scitex.logging.getLogger(name=None)[source]
    +

    Return a logger with the specified name, creating it if necessary.

    +

    If no name is specified, return the root logger.

    +
    + +
    +
    +scitex.logging.configure(level='info', log_file=None, enable_file=True, enable_console=True, capture_prints=True, max_file_size=10485760, backup_count=5)[source]
    +

    Configure logging for SciTeX with both console and file output.

    +
    +
    Parameters:
    +
      +
    • level (Union[str, int]) – Log level (string or logging constant)

    • +
    • log_file (Optional[str]) – Path to log file (default: ~/.scitex/logs/scitex-YYYY-MM-DD.log)

    • +
    • enable_file (bool) – Whether to enable file logging

    • +
    • enable_console (bool) – Whether to enable console logging

    • +
    • capture_prints (bool) – Whether to capture print() statements to logs

    • +
    • max_file_size (int) – Maximum size of log file before rotation (default: 10MB)

    • +
    • backup_count (int) – Number of backup files to keep (default: 5)

    • +
    +
    +
    +
    + +
    +
    +scitex.logging.set_level(level)[source]
    +

    Set global log level for all SciTeX loggers.

    +
    + +
    +
    +scitex.logging.get_level()[source]
    +

    Get current global log level.

    +
    + +
    +
    +scitex.logging.enable_file_logging(enabled=True)[source]
    +

    Enable or disable file logging globally.

    +
    + +
    +
    +scitex.logging.is_file_logging_enabled()[source]
    +

    Check if file logging is enabled.

    +
    + +
    +
    +scitex.logging.get_log_path()[source]
    +

    Get the current log file path.

    +
    + +
    +
    +class scitex.logging.Tee(stream, log_path, verbose=True)[source]
    +
    +
    +write(data)[source]
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +flush()[source]
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +isatty()[source]
    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +fileno()[source]
    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    +
    +property buffer
    +
    + +
    +
    +close()[source]
    +

    Explicitly close the log file.

    +
    + +
    + +
    +
    +scitex.logging.tee(sys, sdir=None, verbose=True)[source]
    +

    Redirects stdout and stderr to both console and log files.

    +
    +

    Example

    +
    >>> import sys
    +>>> sys.stdout, sys.stderr = tee(sys)
    +>>> print("abc")  # stdout
    +>>> print(1 / 0)  # stderr
    +
    +
    +
    +
    +
    Parameters:
    +
      +
    • sys_module (module) – System module containing stdout and stderr

    • +
    • sdir (str, optional) – Directory for log files

    • +
    • verbose (bool, default=True) – Whether to print log file locations

    • +
    +
    +
    Returns:
    +

    Wrapped stdout and stderr objects

    +
    +
    Return type:
    +

    tuple[Any, Any]

    +
    +
    +
    + +
    +
    +scitex.logging.log_to_file(file_path, level=10, mode='w', formatter=None)[source]
    +

    Context manager to temporarily log all output to a specific file.

    +
    +
    Usage:

    import scitex_logging as logging +logger = logging.getLogger(__name__)

    +
    +
    with logging.log_to_file(“/path/to/log.txt”):

    logger.info(“This goes to both console and /path/to/log.txt”) +logger.success(“This too!”)

    +
    +
    +
    +
    +
    +
    Parameters:
    +
      +
    • file_path (Union[str, Path]) – Path to log file

    • +
    • level (int) – Logging level for this handler (default: DEBUG)

    • +
    • mode (str) – File mode (‘w’ for overwrite, ‘a’ for append)

    • +
    • formatter (Optional[Formatter]) – Custom formatter (default: SciTeXFileFormatter)

    • +
    +
    +
    Yields:
    +

    The file handler (can be ignored)

    +
    +
    +
    + +
    +
    +exception scitex.logging.SciTeXWarning[source]
    +

    Base warning class for all SciTeX warnings.

    +
    + +
    +
    +exception scitex.logging.UnitWarning[source]
    +

    Warning for axis label unit issues (educational for SI conventions).

    +

    Raised when: +- Axis labels are missing units +- Units use parentheses instead of brackets (SI prefers []) +- Units use division instead of negative exponents (m/s vs m·s⁻¹)

    +
    + +
    +
    +exception scitex.logging.StyleWarning[source]
    +

    Warning for style/formatting issues.

    +
    + +
    +
    +exception scitex.logging.SciTeXDeprecationWarning[source]
    +

    Warning for deprecated SciTeX features.

    +
    + +
    +
    +exception scitex.logging.PerformanceWarning[source]
    +

    Warning for performance issues.

    +
    + +
    +
    +exception scitex.logging.DataLossWarning[source]
    +

    Warning for potential data loss.

    +
    + +
    +
    +scitex.logging.warn(message, category=<class 'scitex_logging._warnings.SciTeXWarning'>, stacklevel=2)[source]
    +

    Emit a warning (like warnings.warn but integrated with scitex.logging).

    +
    +
    Parameters:
    +
      +
    • message (str) – Warning message

    • +
    • category (Type[SciTeXWarning]) – Warning category (default: SciTeXWarning)

    • +
    • stacklevel (int) – Stack level for source location (default: 2 = caller)

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    +

    Examples

    +
    >>> import scitex.logging as logging
    +>>> from scitex.logging import UnitWarning
    +>>> logging.warn("X axis has no units", UnitWarning)
    +
    +
    +
    +
    + +
    +
    +scitex.logging.filterwarnings(action, category=<class 'scitex_logging._warnings.SciTeXWarning'>, message=None)[source]
    +

    Control warning behavior (like warnings.filterwarnings).

    +
    +
    Parameters:
    +
      +
    • action (str) – One of: +- “ignore”: Never show this warning +- “error”: Raise as exception +- “always”: Always show +- “default”: Show first occurrence per location +- “once”: Show only once total +- “module”: Show once per module

    • +
    • category (Type[SciTeXWarning]) – Warning category (default: SciTeXWarning = all)

    • +
    • message (Optional[str]) – Regex pattern to match warning message (not implemented yet)

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    +

    Examples

    +
    >>> import scitex.logging as logging
    +>>> from scitex.logging import UnitWarning
    +>>> logging.filterwarnings("ignore", category=UnitWarning)
    +
    +
    +
    +
    + +
    +
    +scitex.logging.resetwarnings()[source]
    +

    Reset all warning filters to default behavior.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.warn_deprecated(old_name, new_name, version=None)[source]
    +

    Issue a deprecation warning.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.warn_performance(operation, suggestion)[source]
    +

    Issue a performance warning.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.warn_data_loss(operation, detail)[source]
    +

    Issue a data loss warning.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +exception scitex.logging.SciTeXError(message, context=None, suggestion=None)[source]
    +

    Base Exception class for all SciTeX errors.

    +
    +
    +__init__(message, context=None, suggestion=None)[source]
    +

    Initialize SciTeX error with detailed information.

    +
    +
    Parameters:
    +
      +
    • message (str) – The error message

    • +
    • context (Optional[dict]) – Additional context information (e.g., file paths, variable values)

    • +
    • suggestion (Optional[str]) – Suggested fix or action

    • +
    +
    +
    +
    + +
    + +
    +
    +exception scitex.logging.ConfigurationError(message, context=None, suggestion=None)[source]
    +

    Raised when there are issues with SciTeX configuration.

    +
    + +
    +
    +exception scitex.logging.ConfigFileNotFoundError(filepath)[source]
    +

    Raised when a required configuration file is not found.

    +
    + +
    +
    +exception scitex.logging.ConfigKeyError(key, available_keys=None)[source]
    +

    Raised when a required configuration key is missing.

    +
    + +
    +
    +exception scitex.logging.IOError(message, context=None, suggestion=None)[source]
    +

    Base class for input/output related errors.

    +
    + +
    +
    +exception scitex.logging.FileFormatError(filepath, expected_format=None, actual_format=None)[source]
    +

    Raised when file format is not supported or incorrect.

    +
    + +
    +
    +exception scitex.logging.SaveError(filepath, reason)[source]
    +

    Raised when saving data fails.

    +
    + +
    +
    +exception scitex.logging.LoadError(filepath, reason)[source]
    +

    Raised when loading data fails.

    +
    + +
    +
    +exception scitex.logging.ScholarError(message, context=None, suggestion=None)[source]
    +

    Base class for scholar module errors.

    +
    + +
    +
    +exception scitex.logging.SearchError(query, source, reason)[source]
    +

    Raised when paper search fails.

    +
    + +
    +
    +exception scitex.logging.EnrichmentError(paper_title, reason)[source]
    +

    Raised when paper enrichment fails.

    +
    + +
    +
    +exception scitex.logging.PDFDownloadError(url, reason)[source]
    +

    Raised when PDF download fails.

    +
    + +
    +
    +exception scitex.logging.DOIResolutionError(doi, reason)[source]
    +

    Raised when DOI resolution fails.

    +
    + +
    +
    +exception scitex.logging.PDFExtractionError(filepath, reason)[source]
    +

    Raised when PDF text extraction fails.

    +
    + +
    +
    +exception scitex.logging.BibTeXEnrichmentError(bibtex_file, reason)[source]
    +

    Raised when BibTeX enrichment fails.

    +
    + +
    +
    +exception scitex.logging.TranslatorError(translator_name, reason)[source]
    +

    Raised when Zotero translator operations fail.

    +
    + +
    +
    +exception scitex.logging.AuthenticationError(provider, reason='')[source]
    +

    Raised when authentication fails.

    +
    + +
    +
    +exception scitex.logging.PlottingError(message, context=None, suggestion=None)[source]
    +

    Base class for plotting-related errors.

    +
    + +
    +
    +exception scitex.logging.FigureNotFoundError(fig_id)[source]
    +

    Raised when attempting to operate on a non-existent figure.

    +
    + +
    +
    +exception scitex.logging.AxisError(message, axis_info=None)[source]
    +

    Raised when there are issues with plot axes.

    +
    + +
    +
    +exception scitex.logging.DataError(message, context=None, suggestion=None)[source]
    +

    Base class for data processing errors.

    +
    + +
    +
    +exception scitex.logging.ShapeError(expected_shape, actual_shape, operation)[source]
    +

    Raised when data shapes are incompatible.

    +
    + +
    +
    +exception scitex.logging.DTypeError(expected_dtype, actual_dtype, operation)[source]
    +

    Raised when data types are incompatible.

    +
    + +
    +
    +exception scitex.logging.PathError(message, context=None, suggestion=None)[source]
    +

    Base class for path-related errors.

    +
    + +
    +
    +exception scitex.logging.InvalidPathError(path, reason)[source]
    +

    Raised when a path is invalid or doesn’t follow SciTeX conventions.

    +
    + +
    +
    +exception scitex.logging.PathNotFoundError(path)[source]
    +

    Raised when a required path doesn’t exist.

    +
    + +
    +
    +exception scitex.logging.TemplateError(message, context=None, suggestion=None)[source]
    +

    Base class for template-related errors.

    +
    + +
    +
    +exception scitex.logging.TemplateViolationError(filepath, violation)[source]
    +

    Raised when SciTeX template is not followed.

    +
    + +
    +
    +exception scitex.logging.NNError(message, context=None, suggestion=None)[source]
    +

    Base class for neural network module errors.

    +
    + +
    +
    +exception scitex.logging.ModelError(model_name, reason)[source]
    +

    Raised when there are issues with neural network models.

    +
    + +
    +
    +exception scitex.logging.StatsError(message, context=None, suggestion=None)[source]
    +

    Base class for statistics module errors.

    +
    + +
    +
    +exception scitex.logging.TestError(test_name, reason)[source]
    +

    Raised when statistical tests fail.

    +
    + +
    +
    +scitex.logging.check_path(path)[source]
    +

    Validate a path according to SciTeX conventions.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.check_file_exists(filepath)[source]
    +

    Check if a file exists.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +scitex.logging.check_shape_compatibility(shape1, shape2, operation)[source]
    +

    Check if two shapes are compatible for an operation.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/media.html b/src/scitex/_sphinx_html/source/api/media.html new file mode 100644 index 000000000..ea32ec3d4 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/media.html @@ -0,0 +1,686 @@ + + + + + + + + + media Module (stx.media) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    media Module (stx.media)

    +

    scitex_etc.media — Media handling (detection, rendering, display).

    +
    +
    Submodules:
    +
    render — Detect, classify, and format media for various targets

    (chat pane, terminal overlay, markdown embed).

    +
    +
    +
    +
    Usage:

    from scitex_etc.media import render

    +

    refs = render.detect(text, root_path=”/home/user/proj”) +render.show(“figure.png”, target=”terminal”)

    +
    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/module.html b/src/scitex/_sphinx_html/source/api/module.html new file mode 100644 index 000000000..a335a1579 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/module.html @@ -0,0 +1,674 @@ + + + + + + + + + module Module (stx.module) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    module Module (stx.module)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/msword.html b/src/scitex/_sphinx_html/source/api/msword.html new file mode 100644 index 000000000..1a2d5fa92 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/msword.html @@ -0,0 +1,1798 @@ + + + + + + + + + msword Module (stx.msword) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    msword Module (stx.msword)

    +

    MS Word (DOCX) import/export utilities for SciTeX.

    +

    This module provides high-level functions to convert between +MS Word .docx files and SciTeX’s internal writer document model.

    +
    +

    Strategy:

    +
      +
    • Word users write text only (paragraphs, minimal formatting)

    • +
    • SciTeX handles: figures, tables, references, LaTeX generation

    • +
    • SciTeX JSON is the “source of truth”, Word is just a view/edit layer

    • +
    +
    +
    +

    Typical usage:

    +
    +

    from scitex_msword import load_docx, save_docx, list_profiles

    +

    # Import from Word +doc = load_docx(“input.docx”, profile=”generic”)

    +

    # Manipulate via scitex.writer… +# doc.normalize()

    +

    # Export to Word (different journal template) +save_docx(doc, “output.docx”, profile=”mdpi-ijerph”)

    +
    +
    +
    +

    Available profiles:

    +
      +
    • generic: Standard Word with Heading 1/2/3

    • +
    • mdpi-ijerph: MDPI IJERPH journal template

    • +
    • resna-2025: RESNA 2025 scientific paper template

    • +
    • iop-double-anonymous: IOP double-anonymous template

    • +
    +
    +
    +
    +scitex.msword.load_docx(path, profile=None, extract_images=True)[source]
    +

    Load a DOCX file and convert it into a SciTeX writer document.

    +
    +
    Parameters:
    +
      +
    • path (str | Path) – Path to the .docx file.

    • +
    • profile (str | None) – Optional profile name that specifies how to interpret Word styles +(e.g., “mdpi-ijerph”, “resna-2025”). If None, “generic” is used.

    • +
    • extract_images (bool) – If True, extract embedded images and store references.

    • +
    +
    +
    Returns:
    +

    A SciTeX writer document structure containing: +- blocks: List of document blocks (headings, paragraphs, captions, etc.) +- metadata: Profile and source file information +- images: Extracted image references (if extract_images=True) +- references: Parsed reference entries

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import load_docx
    +>>> doc = load_docx("manuscript.docx", profile="mdpi-ijerph")
    +>>> print(doc["metadata"]["profile"])
    +'mdpi-ijerph'
    +
    +
    +
    +
    + +
    +
    +scitex.msword.save_docx(writer_doc, path, profile=None, overwrite=True, template_path=None)[source]
    +

    Save a SciTeX writer document as a DOCX file.

    +
    +
    Parameters:
    +
      +
    • writer_doc (dict[str, Any] | Any) – SciTeX writer document instance to export.

    • +
    • path (str | Path) – Output path for the .docx file.

    • +
    • profile (str | None) – Optional profile name that controls how sections, headings, +figures, tables and references are mapped to Word styles. +If None, “generic” is used.

    • +
    • overwrite (bool) – If False and the file already exists, raises FileExistsError.

    • +
    • template_path (str | Path | None) – Optional path to a Word template (.dotx/.docx) to use as base. +This allows using journal-specific formatting.

    • +
    +
    +
    Returns:
    +

    The path to the written .docx file.

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import save_docx
    +>>> save_docx(doc, "submission_resna_2025.docx", profile="resna-2025")
    +PosixPath('submission_resna_2025.docx')
    +
    +
    +
    +
    + +
    +
    +scitex.msword.convert_docx_to_tex(input_path, output_path, profile=None, *, image_dir=None, link_images=True, link_mode='by-number', normalize_headings=True, validate=True)[source]
    +

    Convert a DOCX file directly to LaTeX.

    +

    This is a convenience function that: +1. Loads the DOCX file into SciTeX intermediate format +2. (Optionally) normalizes headings +3. (Optionally) links figure captions to images +4. (Optionally) validates the document and adds warnings +5. Exports to LaTeX (including figures via image_dir)

    +
    +
    Parameters:
    +
      +
    • input_path (str | Path) – Path to the input .docx file.

    • +
    • output_path (str | Path) – Path for the output .tex file.

    • +
    • profile (str | None) – Word profile for interpreting styles +(e.g., “resna-2025”, “iop-double-anonymous”).

    • +
    • image_dir (str | Path | None) – Directory where extracted figure image files will be saved. +If None, the LaTeX exporter will create “<tex_stem>_figures” +next to output_path.

    • +
    • link_images (bool) – Whether to link figure captions to extracted images so that +LaTeX can generate includegraphics inside figure environments.

    • +
    • link_mode (str) –

      Strategy for linking captions to images: +- “by-number”: Figure 1 -> first image, Figure 2 -> second image… +- “by-proximity”: assign images in document order, useful when

      +
      +

      figure numbers and image order don’t match.

      +
      +

    • +
    • normalize_headings (bool) – If True, apply common heading normalizations +(e.g., “intro” -> “Introduction”).

    • +
    • validate (bool) – If True, run basic structural checks and populate +doc[“warnings”] with any issues.

    • +
    +
    +
    Returns:
    +

    The path to the written .tex file.

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import convert_docx_to_tex
    +>>> convert_docx_to_tex(
    +...     "RESNA 2025 Scientific Paper Template.docx",
    +...     "manuscript.tex",
    +...     profile="resna-2025",
    +...     image_dir="figures",
    +... )
    +PosixPath('manuscript.tex')
    +
    +
    +
    +
    + +
    +
    +scitex.msword.list_profiles()[source]
    +

    List available MS Word profiles.

    +
    +
    Returns:
    +

    List of profile names (e.g., [“generic”, “mdpi-ijerph”, …]).

    +
    +
    Return type:
    +

    list[str]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import list_profiles
    +>>> profiles = list_profiles()
    +>>> "generic" in profiles
    +True
    +
    +
    +
    +
    + +
    +
    +scitex.msword.get_profile(name)[source]
    +

    Get a Word profile by name.

    +
    +
    Parameters:
    +

    name (str | None) – Profile name. If None, “generic” is used.

    +
    +
    Returns:
    +

    The requested profile.

    +
    +
    Return type:
    +

    BaseWordProfile

    +
    +
    Raises:
    +

    KeyError – If the profile name is unknown.

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import get_profile
    +>>> profile = get_profile("mdpi-ijerph")
    +>>> profile.columns
    +1
    +
    +
    +
    +
    + +
    +
    +scitex.msword.register_profile(profile)[source]
    +

    Register a custom Word profile.

    +
    +
    Parameters:
    +

    profile (BaseWordProfile) – The profile to register.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import BaseWordProfile, register_profile
    +>>> custom = BaseWordProfile(
    +...     name="my-journal",
    +...     description="My custom journal template",
    +...     heading_styles={1: "Title", 2: "Subtitle"},
    +... )
    +>>> register_profile(custom)
    +>>> "my-journal" in list_profiles()
    +True
    +
    +
    +
    +
    + +
    +
    +class scitex.msword.BaseWordProfile(name, description, heading_styles=<factory>, caption_style='Caption', normal_style='Normal', reference_section_titles=<factory>, figure_caption_prefixes=<factory>, table_caption_prefixes=<factory>, list_styles=<factory>, equation_style=None, columns=1, double_anonymous=False, body_font=None, body_font_size_pt=None, heading_background_hex=None, line_spacing=None, post_import_hooks=<factory>, pre_export_hooks=<factory>)[source]
    +

    Bases: object

    +

    Base configuration for mapping between DOCX and SciTeX writer documents.

    +
    +
    +name
    +

    Profile identifier (e.g., “mdpi-ijerph”).

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +description
    +

    Human-readable description.

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +heading_styles
    +

    Mapping from section depth (1, 2, 3…) to Word style names +(e.g., {1: “Heading 1”, 2: “Heading 2”}).

    +
    +
    Type:
    +

    dict[int, str]

    +
    +
    +
    + +
    +
    +caption_style
    +

    Word style name used for figure/table captions.

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +normal_style
    +

    Default paragraph style.

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +reference_section_titles
    +

    Titles that indicate the start of the reference section.

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +figure_caption_prefixes
    +

    Prefixes that identify figure captions (e.g., [“Figure”, “Fig.”]).

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +table_caption_prefixes
    +

    Prefixes that identify table captions (e.g., [“Table”]).

    +
    +
    Type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +list_styles
    +

    Mapping for list styles (bullet, numbered).

    +
    +
    Type:
    +

    dict[str, str]

    +
    +
    +
    + +
    +
    +equation_style
    +

    Style name for equations, if any.

    +
    +
    Type:
    +

    str | None

    +
    +
    +
    + +
    +
    +columns
    +

    Number of columns in the layout (1 or 2).

    +
    +
    Type:
    +

    int

    +
    +
    +
    + +
    +
    +double_anonymous
    +

    Whether this profile requires double-anonymous formatting.

    +
    +
    Type:
    +

    bool

    +
    +
    +
    + +
    +
    +name: str
    +
    + +
    +
    +description: str
    +
    + +
    +
    +heading_styles: Dict[int, str]
    +
    + +
    +
    +caption_style: str = 'Caption'
    +
    + +
    +
    +normal_style: str = 'Normal'
    +
    + +
    +
    +reference_section_titles: List[str]
    +
    + +
    +
    +figure_caption_prefixes: List[str]
    +
    + +
    +
    +table_caption_prefixes: List[str]
    +
    + +
    +
    +list_styles: Dict[str, str]
    +
    + +
    +
    +equation_style: str | None = None
    +
    + +
    +
    +columns: int = 1
    +
    + +
    +
    +double_anonymous: bool = False
    +
    + +
    +
    +body_font: str | None = None
    +
    + +
    +
    +body_font_size_pt: float | None = None
    +
    + +
    +
    +heading_background_hex: str | None = None
    +
    + +
    +
    +line_spacing: float | None = None
    +
    + +
    +
    +post_import_hooks: List[Callable]
    +
    + +
    +
    +pre_export_hooks: List[Callable]
    +
    + +
    + +
    +
    +class scitex.msword.WordReader(profile, extract_images=True)[source]
    +

    Bases: object

    +

    Read a DOCX file and convert it into a SciTeX writer document.

    +

    This reader focuses on: +- Sections (via heading styles) +- Plain paragraphs +- Figure/table captions (via caption style) +- Embedded images extraction +- References section boundary detection +- Basic formatting (bold, italic)

    +

    The output is a structured intermediate representation that can be +easily fed into scitex.writer or exported to LaTeX/other formats.

    +
    +
    +__init__(profile, extract_images=True)[source]
    +
    +
    Parameters:
    +
      +
    • profile (BaseWordProfile) – Mapping between Word styles and SciTeX writer semantics.

    • +
    • extract_images (bool) – Whether to extract embedded images from the document.

    • +
    +
    +
    +
    + +
    +
    +read(path)[source]
    +

    Read a DOCX file and return a SciTeX writer document.

    +
    +
    Parameters:
    +

    path (Path) – Path to the DOCX file.

    +
    +
    Returns:
    +

    SciTeX writer document structure with keys: +- blocks: List of document blocks +- metadata: Profile and source information +- images: Extracted image data (if extract_images=True) +- references: Parsed reference entries +- warnings: List of conversion warnings

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    + +
    + +
    +
    +class scitex.msword.WordWriter(profile, template_path=None)[source]
    +

    Bases: object

    +

    Export a SciTeX writer document to a DOCX file.

    +

    This writer handles: +- Section headings with proper styles +- Paragraphs with formatting +- Figure and table captions +- References section +- Image embedding +- Journal-specific template application

    +
    +
    +__init__(profile, template_path=None)[source]
    +
    +
    Parameters:
    +
      +
    • profile (BaseWordProfile) – Mapping from writer structures to Word styles.

    • +
    • template_path (Optional[Path]) – Optional path to a Word template (.dotx/.docx) to use as base.

    • +
    +
    +
    +
    + +
    +
    +write(writer_doc, path)[source]
    +

    Write a SciTeX writer document to a DOCX file.

    +
    +
    Parameters:
    +
      +
    • writer_doc (Union[Dict[str, Any], Any]) – Writer document or intermediate structure.

    • +
    • path (Path) – Output path for the DOCX file.

    • +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + +
    + +

    Link figure captions to images by matching order.

    +

    This function pairs figure captions with images based on their +sequential order in the document. Each figure caption is assigned +an image_hash that corresponds to the image at the same position.

    +
    +
    Parameters:
    +

    doc (Dict[str, Any]) – SciTeX writer document with ‘blocks’ and ‘images’ keys.

    +
    +
    Returns:
    +

    The same document with image_hash added to figure captions.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword import load_docx
    +>>> from scitex.msword.utils import link_captions_to_images
    +>>> doc = load_docx("manuscript.docx")
    +>>> doc = link_captions_to_images(doc)
    +>>> # Now captions have image_hash for LaTeX export
    +
    +
    +
    +
    + +
    + +

    Link figure captions to images by document proximity.

    +

    This function uses the image blocks (type=”image”) that are inserted +at their actual positions in the document body. It finds the nearest +unlinked image block to each figure caption.

    +
    +
    Parameters:
    +

    doc (Dict[str, Any]) – SciTeX writer document.

    +
    +
    Returns:
    +

    Document with image_hash added to captions.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.msword.normalize_section_headings(doc)[source]
    +

    Normalize section headings for consistency.

    +

    Converts common section titles to standard academic format: +- “intro” -> “Introduction” +- “method” -> “Methods” +- etc.

    +
    +
    Parameters:
    +

    doc (Dict[str, Any]) – SciTeX writer document.

    +
    +
    Returns:
    +

    Document with normalized headings.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.msword.validate_document(doc)[source]
    +

    Validate document structure and add warnings.

    +

    Checks for common issues: +- Missing required sections +- Unmatched caption numbers +- Empty references section +- Duplicate figure numbers

    +
    +
    Parameters:
    +

    doc (Dict[str, Any]) – SciTeX writer document.

    +
    +
    Returns:
    +

    Document with warnings added.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.msword.create_post_import_hook(*functions)[source]
    +

    Create a composite post_import_hook from multiple functions.

    +
    +
    Parameters:
    +

    *functions (callable) – Functions to apply in sequence.

    +
    +
    Returns:
    +

    A single hook that applies all functions.

    +
    +
    Return type:
    +

    callable

    +
    +
    +
    +

    Examples

    +
    >>> from scitex.msword.utils import (
    +...     link_captions_to_images,
    +...     normalize_section_headings,
    +...     create_post_import_hook,
    +... )
    +>>> hook = create_post_import_hook(
    +...     link_captions_to_images,
    +...     normalize_section_headings,
    +... )
    +>>> # Use with custom profile
    +>>> profile.post_import_hooks = [hook]
    +
    +
    +
    +
    + +
    +
    +scitex.msword.diff_docx(a, b, *, include_run_diff=True)[source]
    +

    Compute paragraph-level diff between two DOCX documents.

    +
    +
    Parameters:
    +
      +
    • a (Union[str, Path, Document]) – Inputs to compare. May be paths or already-loaded Documents.

    • +
    • b (Union[str, Path, Document]) – Inputs to compare. May be paths or already-loaded Documents.

    • +
    • include_run_diff (bool) – If True, modify operations include a runs_changed field +listing the run-level formatting deltas.

    • +
    +
    +
    Returns:
    +

    Each entry is one of:

    +
    {"op": "equal",  "index": int, "text_a": str, "text_b": str}
    +{"op": "insert", "index": int, "text_a": None, "text_b": str}
    +{"op": "delete", "index": int, "text_a": str,  "text_b": None}
    +{"op": "modify", "index": int, "text_a": str,  "text_b": str,
    + "runs_changed": [...]}
    +
    +
    +

    index refers to the paragraph index in document b for +equal/insert/modify operations, and to the paragraph +index in document a for delete operations.

    +

    +
    +
    Return type:
    +

    List[Dict[str, Any]]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_msword.diff import diff_docx
    +>>> ops = diff_docx("v15.docx", "v16.docx")
    +>>> changes = [o for o in ops if o["op"] != "equal"]
    +
    +
    +
    +
    + +
    +
    +scitex.msword.summarize_diff(ops)[source]
    +

    Convenience helper: count operations by type.

    +
    +
    Parameters:
    +

    ops (List[Dict[str, Any]]) – Output of diff_docx().

    +
    +
    Returns:
    +

    Mapping {"equal": n, "insert": n, "delete": n, "modify": n}.

    +
    +
    Return type:
    +

    Dict[str, int]

    +
    +
    +
    + +
    +
    +scitex.msword.mark_additions(document, runs, color='turquoise')[source]
    +

    Highlight the runs that the operator (or agent) added to the document.

    +
    +
    Parameters:
    +
      +
    • document (Document) – The Document to mutate in place.

    • +
    • runs (Iterable[Tuple[int, int]]) – Targets to highlight. Out-of-range indices are skipped silently.

    • +
    • color (str) – Color name. See module docstring for the supported palette.

    • +
    +
    +
    Returns:
    +

    The same Document object, mutated.

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_msword.highlights import mark_additions
    +>>> doc = mark_additions(doc, [(3, 0), (5, 2)])  # default turquoise
    +
    +
    +
    +
    + +
    +
    +scitex.msword.mark_modifications(document, runs, color='magenta')[source]
    +

    Highlight the runs that the operator (or agent) modified in the document.

    +
    +
    Parameters:
    +
      +
    • document (Document) – The Document to mutate in place.

    • +
    • runs (Iterable[Tuple[int, int]]) – Targets to highlight. Out-of-range indices are skipped silently.

    • +
    • color (str) – Color name. See module docstring for the supported palette.

    • +
    +
    +
    Returns:
    +

    The same Document object, mutated.

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_msword.highlights import mark_modifications
    +>>> doc = mark_modifications(doc, [(7, 1)])  # default magenta
    +
    +
    +
    +
    + +
    +
    +scitex.msword.extract_highlights(document, by_color=True)[source]
    +

    Extract highlighted runs from a document, grouped by color.

    +
    +
    Parameters:
    +
      +
    • document (Document) – The document to scan.

    • +
    • by_color (bool) – If True (default), return {color_name: [run_info, ...]}. +If False, return a single {"all": [run_info, ...]} bucket +with each entry’s color field populated.

    • +
    +
    +
    Returns:
    +

    Mapping from color name to a list of run info dicts of shape:

    +
    {"paragraph": int, "run": int, "text": str, "color": str}
    +
    +
    +

    +
    +
    Return type:
    +

    Dict[str, List[Dict[str, Any]]]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_msword.highlights import extract_highlights
    +>>> by_color = extract_highlights(doc)
    +>>> by_color.get("turquoise", [])
    +[{'paragraph': 3, 'run': 0, 'text': '...', 'color': 'turquoise'}]
    +
    +
    +
    +
    + +
    +
    +scitex.msword.clear_highlights(document, colors=None)[source]
    +

    Remove highlights from all runs (optionally only for the listed colors).

    +
    +
    Parameters:
    +
      +
    • document (Document) – Document to mutate in place.

    • +
    • colors (Optional[Iterable[str]]) – If provided, only runs with one of these highlight colors are +cleared. If None (default), every highlighted run is cleared.

    • +
    +
    +
    Returns:
    +

    The same Document object, mutated.

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    + +
    +
    +scitex.msword.preserve_bold_tokens(document, tokens, *, font_name='MS Gothic', case_sensitive=True)[source]
    +

    Walk every paragraph in document and bold-emphasize each token hit.

    +

    Wherever a token appears inside paragraph text, the paragraph’s runs +are split so that the token sits in its own run with bold=True +and font.name = font_name (Latin + East-Asian + complex script +slots are all set so Japanese text picks up MS Gothic in Word).

    +
    +
    Parameters:
    +
      +
    • document (Document) – The Document to mutate in place.

    • +
    • tokens (Sequence[str]) – Strings to emphasize. Empty strings are ignored. Longer tokens +take precedence on overlapping matches.

    • +
    • font_name (str) – Font face applied to matched tokens.

    • +
    • case_sensitive (bool) – If False, matching is case-insensitive.

    • +
    +
    +
    Returns:
    +

    The same Document object, mutated.

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    +

    Notes

    +

    This implementation rewrites all runs of a paragraph when at least +one token hits; paragraphs without hits are left untouched. The +original surrounding format (italic, underline, size, highlight) is +captured from the first run before rebuilding — if you need +finer-grained preservation, run preserve_bold_tokens() before +other run-level edits.

    +
    +
    +

    Examples

    +
    >>> from scitex_msword.bold import preserve_bold_tokens
    +>>> preserve_bold_tokens(doc, tokens=["BOOST", "JST"])
    +
    +
    +
    +
    + +
    +
    +scitex.msword.extract_comments(document)[source]
    +

    Extract Word comments from a .docx file or open Document.

    +
    +
    Parameters:
    +

    document (Union[str, Path, Document]) – Path to the .docx or an already-open Document.

    +
    +
    Returns:
    +

    One entry per comment:

    +
    {"id": int | str,
    + "author": str,
    + "date": str,           # ISO timestamp string, may be empty
    + "text": str,           # comment body
    + "anchor_text": str,    # text the comment is anchored to
    + "paragraph_range": [start, end]}
    +
    +
    +

    anchor_text and paragraph_range default to "" and +[None, None] when no in-document anchor can be located.

    +

    +
    +
    Return type:
    +

    List[Dict[str, Any]]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_msword.comments import extract_comments
    +>>> comments = extract_comments("boost-v16.docx")
    +>>> [c["text"] for c in comments]
    +['Please rephrase this', 'REPLACE: Use the new wording']
    +
    +
    +
    +
    + +
    +
    +scitex.msword.apply_comments_as_edits(document, *, comments=None, grammar='replace')[source]
    +

    Apply comments to the document body using a narrow grammar.

    +

    Only the REPLACE: grammar is currently supported, i.e. a comment +whose body matches r"^\s*REPLACE\s*:\s*(.+?)\s*$" is interpreted +as “replace this comment’s anchor text with the trailing payload”. +Other comments are ignored.

    +
    +
    Parameters:
    +
      +
    • document (Document) – The Document to mutate in place.

    • +
    • comments (Optional[List[Dict[str, Any]]]) – Pre-extracted comments (as returned by extract_comments()). +If None, the comments are read from document directly.

    • +
    • grammar (str) – Reserved for future expansion. Currently only "replace" +is recognised.

    • +
    +
    +
    Returns:
    +

    Summary: {"applied": int, "skipped": int, "details": [...]}.

    +
    +
    Return type:
    +

    Dict[str, Any]

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_msword.comments import apply_comments_as_edits
    +>>> summary = apply_comments_as_edits(doc)
    +>>> summary["applied"]
    +2
    +
    +
    +
    +
    + +
    +
    +scitex.msword.enable_track_changes(document, enabled=True)[source]
    +

    Toggle Word’s “Track Changes” switch on the document.

    +

    Inserts <w:trackChanges/> into word/settings.xml when +enabled=True (idempotent) or removes it when enabled=False.

    +
    +
    Parameters:
    +
      +
    • document (Document) – The Document to mutate in place.

    • +
    • enabled (bool) – True keeps a single <w:trackChanges/> element present; +False removes any such elements.

    • +
    +
    +
    Returns:
    +

    The same Document object (chainable).

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    + +
    +
    +scitex.msword.is_track_changes_enabled(document)[source]
    +

    Return True iff <w:trackChanges/> is present in settings.xml.

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    +
    +scitex.msword.wrap_as_tracked_insertion(paragraph, runs, author='agent', date=None, w_id=None)[source]
    +

    Wrap the given runs of paragraph in <w:ins> revision blocks.

    +

    Word renders the wrapped content as “inserted by <author>” and +surfaces it as an accept/reject-able revision.

    +
    +
    Parameters:
    +
      +
    • paragraph (Paragraph) – Paragraph that owns the runs to wrap.

    • +
    • runs (Sequence[Any]) – Runs to wrap, by Run object or by 0-based index.

    • +
    • author (str) – Recorded in w:author.

    • +
    • date (Optional[str]) – ISO-8601 string for w:date; defaults to now(UTC).

    • +
    • w_id (Optional[int]) – Explicit revision id; auto-assigned (max+1) when None.

    • +
    +
    +
    Returns:
    +

    Newly created <w:ins> lxml elements.

    +
    +
    Return type:
    +

    List[Any]

    +
    +
    +
    + +
    +
    +scitex.msword.wrap_as_tracked_deletion(paragraph, runs, author='agent', date=None, w_id=None)[source]
    +

    Wrap the given runs of paragraph in <w:del> revision blocks.

    +

    Each wrapped run’s <w:t> children are also retagged as +<w:delText> so Word renders the deletion with strike-through.

    +
    +
    Parameters:
    +
      +
    • paragraph (Paragraph) – Paragraph that owns the runs to wrap.

    • +
    • runs (Sequence[Any]) – Runs to wrap, by Run object or by 0-based index.

    • +
    • author (str) – Recorded in w:author.

    • +
    • date (Optional[str]) – ISO-8601 string for w:date; defaults to now(UTC).

    • +
    • w_id (Optional[int]) – Explicit revision id; auto-assigned (max+1) when None.

    • +
    +
    +
    Returns:
    +

    Newly created <w:del> lxml elements.

    +
    +
    Return type:
    +

    List[Any]

    +
    +
    +
    + +
    +
    +scitex.msword.extract_tracked_changes(document)[source]
    +

    Return every <w:ins> / <w:del> revision as a structured dict.

    +
    +
    Parameters:
    +

    document (Document) – The Document to scan.

    +
    +
    Returns:
    +

    Each entry is shaped as:

    +
    {"type": "insert" | "delete",
    + "paragraph_idx": int,
    + "author": str,
    + "date": str,
    + "id": str,
    + "text": str}
    +
    +
    +

    +
    +
    Return type:
    +

    List[dict]

    +
    +
    +
    + +
    +
    +scitex.msword.accept_all_tracked_changes(document)[source]
    +

    Accept all tracked changes — equivalent to Word’s “Accept All”.

    +

    <w:ins> wrappers are unwrapped (content remains); <w:del> +wrappers and their contents are removed.

    +
    +
    Parameters:
    +

    document (Document) – The Document to mutate in place.

    +
    +
    Returns:
    +

    The same Document, mutated.

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    + +
    +
    +scitex.msword.reject_all_tracked_changes(document)[source]
    +

    Reject all tracked changes — equivalent to Word’s “Reject All”.

    +

    <w:ins> wrappers and contents are removed; <w:del> wrappers +are unwrapped and their <w:delText> children retagged back to +<w:t> so the original text is restored.

    +
    +
    Parameters:
    +

    document (Document) – The Document to mutate in place.

    +
    +
    Returns:
    +

    The same Document, mutated.

    +
    +
    Return type:
    +

    Document

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/nn.html b/src/scitex/_sphinx_html/source/api/nn.html new file mode 100644 index 000000000..9cfd2fe02 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/nn.html @@ -0,0 +1,750 @@ + + + + + + + + + NN Module (stx.nn) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    NN Module (stx.nn)

    +

    PyTorch neural network layers for signal processing and neuroscience +applications.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import torch
    +
    +# Bandpass filtering as a differentiable layer
    +bpf = stx.nn.BandPassFilter(
    +    bands=[[4, 8], [8, 13], [13, 30]],  # theta, alpha, beta
    +    fs=256, seq_len=1024
    +)
    +filtered = bpf(signal)  # (batch, channels, 3, 1024)
    +
    +# Power spectral density
    +psd = stx.nn.PSD(sample_rate=256)
    +power, freqs = psd(signal)
    +
    +# Phase-amplitude coupling
    +pac = stx.nn.PAC(seq_len=1024, fs=256)
    +coupling = pac(signal)
    +
    +
    +
    +
    +

    Signal Processing Layers

    +

    Filtering (all differentiable):

    +
      +
    • BandPassFilter(bands, fs, seq_len) – Multi-band frequency filtering

    • +
    • BandStopFilter(bands, fs, seq_len) – Reject frequency bands

    • +
    • LowPassFilter(cutoffs_hz, fs, seq_len) – Anti-aliasing / smoothing

    • +
    • HighPassFilter(cutoffs_hz, fs, seq_len) – High-frequency emphasis

    • +
    • GaussianFilter(sigma) – Gaussian kernel smoothing

    • +
    • DifferentiableBandPassFilter(...) – Learnable bandpass parameters

    • +
    +

    Spectral Analysis:

    +
      +
    • Spectrogram(sampling_rate, n_fft) – STFT-based magnitude spectrogram

    • +
    • PSD(sample_rate, prob) – FFT-based power spectral density

    • +
    • Wavelet(samp_rate, freq_scale) – Continuous wavelet transform

    • +
    +

    Phase & Coupling:

    +
      +
    • Hilbert(seq_len) – Analytic signal (phase + amplitude)

    • +
    • ModulationIndex(n_bins) – Phase-amplitude coupling metric

    • +
    • PAC(seq_len, fs, ...) – Complete PAC analysis pipeline

    • +
    +
    +
    +

    Channel Manipulation

    +
      +
    • SwapChannels() – Random channel permutation (training augmentation)

    • +
    • DropoutChannels(dropout) – Drop entire channels

    • +
    • ChannelGainChanger(n_chs) – Learnable per-channel scaling

    • +
    • FreqGainChanger(n_bands, fs) – Learnable per-band scaling

    • +
    +
    +
    +

    Attention & Shape

    +
      +
    • SpatialAttention(n_chs_in) – Adaptive channel weighting

    • +
    • TransposeLayer(axis1, axis2) – Dimension permutation

    • +
    • AxiswiseDropout(dropout_prob, dim) – Drop entire axis

    • +
    +
    +
    +

    Architectures

    +
      +
    • ResNet1D(n_chs, n_out, n_blks) – 1D residual network

    • +
    • BNet / BNet_Res – Multi-head EEG classifier

    • +
    • MNet1000 – 2D CNN feature extractor

    • +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/notebook.html b/src/scitex/_sphinx_html/source/api/notebook.html new file mode 100644 index 000000000..71e58dc92 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/notebook.html @@ -0,0 +1,915 @@ + + + + + + + + + notebook Module (stx.notebook) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    notebook Module (stx.notebook)

    +

    SciTeX Notebook — Jupyter notebook verification and compilation.

    +

    Provides tools to verify, compile, convert, and check Jupyter notebooks +for reproducibility using the Clew verification system.

    +

    Key Concept: Notebooks can be executed in any cell order. SciTeX records +actual execution order via timestamps, then reconstructs the dependency +DAG afterward (“do what you want, organize later”).

    +
    +

    Examples

    +
    >>> from scitex_notebook import verify_notebook, compile_notebook
    +>>> results = verify_notebook("experiment.ipynb")
    +>>> compiled = compile_notebook("experiment.ipynb")
    +>>> print(compiled.to_mermaid())  # DAG visualization
    +>>> print(compiled.to_script())   # DAG-ordered .py
    +
    +
    +
    +
    +
    +scitex.notebook.parse_notebook(path)[source]
    +

    Parse a .ipynb file and extract code cells.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to the .ipynb file.

    +
    +
    Returns:
    +

    Code cells with keys: index, source, cell_id, cell_type.

    +
    +
    Return type:
    +

    List[Dict]

    +
    +
    +
    + +
    +
    +scitex.notebook.get_code_cells(path)[source]
    +

    Parse notebook and return only code cells.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to the .ipynb file.

    +
    +
    Returns:
    +

    Code cells only.

    +
    +
    Return type:
    +

    List[Dict]

    +
    +
    +
    + +
    +
    +scitex.notebook.get_notebook_name(path)[source]
    +

    Return the notebook stem name without extension.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.notebook.verify_notebook(path)[source]
    +

    Verify all clew sessions associated with a notebook.

    +

    Finds all runs in the clew DB whose metadata contains this notebook’s +path, then runs L1 (cache) verification on each.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to the .ipynb file.

    +
    +
    Returns:
    +

    Verification results per session.

    +
    +
    Return type:
    +

    List[Dict]

    +
    +
    +
    + +
    +
    +scitex.notebook.check_notebook(path)[source]
    +

    Find cells with scitex.io calls not wrapped in @scitex.session.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to the .ipynb file.

    +
    +
    Returns:
    +

    Cells with untracked IO: {index, has_load, has_save, has_session}.

    +
    +
    Return type:
    +

    List[Dict]

    +
    +
    +
    + +
    +
    +scitex.notebook.compile_notebook(path)[source]
    +

    Compile a notebook’s execution history into a DAG.

    +

    Queries the clew DB for all sessions associated with this notebook, +sorts by timestamp, and builds a dependency DAG based on shared +input/output files.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to the .ipynb file.

    +
    +
    Returns:
    +

    Compiled execution history with DAG and execution order.

    +
    +
    Return type:
    +

    CompiledNotebook

    +
    +
    +
    + +
    +
    +class scitex.notebook.CompiledNotebook(notebook_path, execution_order=<factory>, dag=<factory>, runs=<factory>)[source]
    +

    Bases: object

    +

    Result of compiling a notebook’s execution history.

    +
    +
    +notebook_path
    +

    Path to the source notebook.

    +
    +
    Type:
    +

    str

    +
    +
    +
    + +
    +
    +execution_order
    +

    Session IDs in actual execution order (by timestamp).

    +
    +
    Type:
    +

    list of str

    +
    +
    +
    + +
    +
    +dag
    +

    Adjacency list: {session_id: [dependent_session_ids]}.

    +
    +
    Type:
    +

    dict

    +
    +
    +
    + +
    +
    +runs
    +

    Run records sorted by execution time.

    +
    +
    Type:
    +

    list of dict

    +
    +
    +
    + +
    +
    +notebook_path: str
    +
    + +
    +
    +execution_order: List[str]
    +
    + +
    +
    +dag: Dict[str, List[str]]
    +
    + +
    +
    +runs: List[Dict]
    +
    + +
    +
    +to_script()[source]
    +

    Generate a .py script with sessions in DAG order.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +to_mermaid()[source]
    +

    Generate a Mermaid DAG diagram of execution flow.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    + +
    +
    +scitex.notebook.convert_notebook(path, output=None, order='cell', mode='per_cell')[source]
    +

    Convert a .ipynb notebook to a .py script with @stx.session.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Path to the .ipynb file.

    • +
    • output (Union[str, Path, None]) – Output .py file path. If None, returns string only.

    • +
    • order (str) – Cell ordering: “cell” (notebook order) or “dag” (execution order +from clew DB timestamps).

    • +
    • mode (str) –

      Conversion mode: +- “per_cell”: Each code cell becomes a separate @stx.session function (default). +- “unified”: All cells merged into a single @stx.session main() function.

      +
      +

      Markdown cells become comments, imports are hoisted, and common +notebook patterns (plt.show, pd.read_csv, etc.) are converted to +SciTeX equivalents (stx.io.save/load).

      +
      +

    • +
    +
    +
    Returns:
    +

    The generated Python script content.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/notification.html b/src/scitex/_sphinx_html/source/api/notification.html new file mode 100644 index 000000000..08f7e1992 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/notification.html @@ -0,0 +1,800 @@ + + + + + + + + + Notification Module (stx.notification) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Notification Module (stx.notification)

    +

    Multi-backend notification system for alerting researchers when +long-running tasks complete, errors occur, or results are ready.

    +
    +

    Note

    +

    stx.notification delegates to the standalone +scitex-notification +package. Install with: pip install scitex-notification.

    +
    +
    +

    Supported Backends

    + ++++ + + + + + + + + + + + + + + + + + + + +

    Backend

    Description

    desktop

    Native desktop notifications (Linux notify-send, macOS, Windows)

    email

    Email via SMTP

    slack

    Slack messages via webhook or Bot API

    webhook

    Generic HTTP POST to any URL

    +
    +
    +

    Quick Start

    +
    import scitex as stx
    +
    +# Send a notification (uses default backend)
    +stx.notification.send("Training complete! Accuracy: 95.2%")
    +
    +# Send to a specific backend
    +stx.notification.send("Job finished", backend="slack")
    +
    +# List available backends
    +stx.notification.list_backends()
    +
    +
    +
    +
    +

    Key Functions

    +
    +

    send(message, backend=None, **kwargs)

    +

    Send a notification through one or more backends.

    +
    # Simple message
    +stx.notification.send("Experiment finished successfully.")
    +
    +# With title
    +stx.notification.send("95.2% accuracy achieved", title="Training Complete")
    +
    +# To a specific backend
    +stx.notification.send("Results ready", backend="email")
    +
    +
    +
    +
    +

    config(**kwargs)

    +

    Configure notification backends. Settings persist across sessions.

    +
    # Configure Slack
    +stx.notification.config(
    +    slack_webhook="https://hooks.slack.com/services/...",
    +)
    +
    +# Configure email
    +stx.notification.config(
    +    email_to="researcher@university.edu",
    +    email_from="scitex@lab.org",
    +    smtp_host="smtp.university.edu",
    +)
    +
    +
    +
    +
    +

    list_backends()

    +

    List available and configured backends.

    +
    backends = stx.notification.list_backends()
    +# [{'name': 'desktop', 'available': True, 'configured': True},
    +#  {'name': 'slack', 'available': True, 'configured': False}, ...]
    +
    +
    +
    +
    +
    +

    Integration with @stx.session

    +

    Enable automatic notifications when a session completes:

    +
    import scitex as stx
    +
    +@stx.session(notify=True)
    +def main(CONFIG=stx.INJECTED):
    +    """Long-running experiment."""
    +    result = train_model()
    +    return 0    # Sends "Session FINISHED_SUCCESS" notification
    +
    +if __name__ == "__main__":
    +    main()
    +
    +
    +
    +
    +

    CLI Access

    +
    # Send a notification
    +scitex notify send "Job complete"
    +
    +# Check backend status
    +scitex notify backends
    +
    +# Configure a backend
    +scitex notify config --slack-webhook "https://..."
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/os.html b/src/scitex/_sphinx_html/source/api/os.html new file mode 100644 index 000000000..c21309a70 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/os.html @@ -0,0 +1,697 @@ + + + + + + + + + os Module (stx.os) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    os Module (stx.os)

    +

    scitex-os — host check + safe file mv (standalone, pure stdlib).

    +
    +
    +scitex.os.check_host(keyword)[source]
    +

    Check if the current hostname contains the given keyword.

    +
    + +
    +
    +scitex.os.is_host(keyword)
    +

    Check if the current hostname contains the given keyword.

    +
    + +
    +
    +scitex.os.mv(src, tgt)[source]
    +
    + +
    +
    +scitex.os.verify_host(keyword)[source]
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/parallel.html b/src/scitex/_sphinx_html/source/api/parallel.html new file mode 100644 index 000000000..dcba55a68 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/parallel.html @@ -0,0 +1,707 @@ + + + + + + + + + parallel Module (stx.parallel) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    parallel Module (stx.parallel)

    +

    SciTeX Parallel — thread/process pool parallel execution utilities.

    +
    +
    +scitex.parallel.run(func, args_list, n_jobs=-1, desc='Processing')[source]
    +

    Runs function in parallel using ThreadPoolExecutor with tuple arguments.

    +
    +
    Parameters:
    +
      +
    • func (Callable) – Function to run in parallel

    • +
    • args_list (List[tuple]) – List of argument tuples, each tuple contains arguments for one function call

    • +
    • n_jobs (int) – Number of jobs to run in parallel. -1 means using all processors

    • +
    • desc (str) – Description for progress bar

    • +
    +
    +
    Returns:
    +

    Results of parallel execution

    +
    +
    Return type:
    +

    List[Any]

    +
    +
    +
    +

    Examples

    +
    >>> def add(x, y):
    +...     return x + y
    +>>> args_list = [(1, 4), (2, 5), (3, 6)]
    +>>> run(add, args_list)
    +[5, 7, 9]
    +
    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/path.html b/src/scitex/_sphinx_html/source/api/path.html new file mode 100644 index 000000000..f802f6a27 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/path.html @@ -0,0 +1,1140 @@ + + + + + + + + + path Module (stx.path) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    path Module (stx.path)

    +

    scitex-path: Scientific project path utilities (find, split, symlink, versioning).

    +
    +
    +scitex.path.clean(path_string)[source]
    +

    Cleans and normalizes a file system path string.

    +
    +

    Example

    +
    >>> clean('/home/user/./folder/../file.txt')
    +'/home/user/file.txt'
    +>>> clean('path/./to//file.txt')
    +'path/to/file.txt'
    +>>> clean('path with spaces')
    +'path_with_spaces'
    +
    +
    +
    +
    +
    Parameters:
    +

    path_string (str) – File path to clean

    +
    +
    Returns:
    +

    Normalized path string

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    + +

    Create a relative symbolic link.

    +

    This is a convenience wrapper around symlink() with relative=True.

    +
    +
    Parameters:
    +
      +
    • src (Union[str, Path]) – Source path (target of the symlink)

    • +
    • dst (Union[str, Path]) – Destination path (the symlink to create)

    • +
    • overwrite (bool) – If True, remove existing dst before creating symlink

    • +
    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path object of the created symlink

    +
    +
    +
    + +
    +
    +scitex.path.find_dir(root_dir, exp)[source]
    +

    Find directories matching pattern.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +scitex.path.find_file(root_dir, exp)[source]
    +

    Find files matching pattern.

    +
    +
    Return type:
    +

    List[str]

    +
    +
    +
    + +
    +
    +scitex.path.find_git_root()[source]
    +

    Find the root directory of the current git repository.

    +
    +
    Returns:
    +

    Path to the git repository root.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.path.find_latest(dirname, fname, ext, version_prefix='_v')[source]
    +

    Find the latest versioned file in a directory.

    +
    +
    Parameters:
    +
      +
    • dirname (str) – Directory to search in.

    • +
    • fname (str) – Base filename without version number or extension.

    • +
    • ext (str) – File extension including the dot (e.g., ‘.txt’).

    • +
    • version_prefix (str, optional) – Prefix before the version number. Default is ‘_v’.

    • +
    +
    +
    Returns:
    +

    Path to the latest versioned file, or None if not found.

    +
    +
    Return type:
    +

    str or None

    +
    +
    +
    + +
    + +

    Find and optionally fix broken symbolic links.

    +
    +
    Parameters:
    +
      +
    • directory (Union[str, Path]) – Directory to search

    • +
    • recursive (bool) – If True, search recursively

    • +
    • remove (bool) – If True, remove broken symlinks

    • +
    • new_target (Union[str, Path, None]) – If provided, repoint broken symlinks to this target

    • +
    +
    +
    Return type:
    +

    dict

    +
    +
    Returns:
    +

    Dictionary with ‘found’, ‘fixed’, and ‘removed’ lists of paths

    +
    +
    +
    + +
    +
    +scitex.path.get_data_path_from_a_package(package_str, resource)[source]
    +

    Get the path to a data file within a package.

    +
    +
    Parameters:
    +
      +
    • package_str (str) – The name of the package as a string.

    • +
    • resource (str) – The name of the resource file within the package’s data directory.

    • +
    +
    +
    Returns:
    +

    The full path to the resource file.

    +
    +
    Return type:
    +

    Path

    +
    +
    Raises:
    +
      +
    • ImportError – If the specified package cannot be found.

    • +
    • FileNotFoundError – If the resource file does not exist in the package’s data directory.

    • +
    +
    +
    +
    + +
    +
    +scitex.path.get_spath(sfname, makedirs=False)
    +

    Create a save path based on the calling script’s location.

    +
    +
    Parameters:
    +
      +
    • sfname (Union[str, Path]) – The name of the file to be saved.

    • +
    • makedirs (bool) – If True, create the directory structure for the save path.

    • +
    +
    +
    Returns:
    +

    The full save path for the file.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Example

    +
    >>> spath = mk_spath('output.txt', makedirs=True)
    +
    +
    +
    +
    + +
    +
    +scitex.path.get_this_path(ipython_fake_path='/tmp/fake.py')
    +

    Get the path of the calling script.

    +
    +

    Note

    +

    This function historically captures the caller’s filename via +inspect.stack()[1] but then returns this module’s __file__. +The tests codify that legacy behavior; do not change without +updating callers.

    +
    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.path.getsize(path)[source]
    +

    Get file size in bytes.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to file.

    +
    +
    Returns:
    +

    File size in bytes, or math.nan if file doesn’t exist.

    +
    +
    Return type:
    +

    Union[int, float]

    +
    +
    Raises:
    +

    PermissionError – If the file cannot be accessed due to permissions.

    +
    +
    +
    + +
    +
    +scitex.path.increment_version(dirname, fname, ext, version_prefix='_v')[source]
    +

    Generate the next version of a filename based on existing versioned files.

    +
    +
    Parameters:
    +
      +
    • dirname (str) – Directory to search in.

    • +
    • fname (str) – Base filename without version number or extension.

    • +
    • ext (str) – File extension including the dot (e.g., ‘.txt’).

    • +
    • version_prefix (str, optional) – Prefix before the version number. Default is ‘_v’.

    • +
    +
    +
    Returns:
    +

    Full path for the next version of the file.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Example

    +
    >>> increment_version('/path/to/dir', 'myfile', '.txt')
    +'/path/to/dir/myfile_v001.txt'
    +
    +
    +
    +
    + +
    + +

    Check if a path is a symbolic link.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path to check

    +
    +
    Return type:
    +

    bool

    +
    +
    Returns:
    +

    True if path is a symlink, False otherwise

    +
    +
    +
    + +
    + +

    List all symbolic links in a directory.

    +
    +
    Parameters:
    +
      +
    • directory (Union[str, Path]) – Directory to search

    • +
    • recursive (bool) – If True, search recursively

    • +
    +
    +
    Return type:
    +

    list[Path]

    +
    +
    Returns:
    +

    List of Path objects for all symlinks found

    +
    +
    +
    + +
    +
    +scitex.path.mk_spath(sfname, makedirs=False)[source]
    +

    Create a save path based on the calling script’s location.

    +
    +
    Parameters:
    +
      +
    • sfname (Union[str, Path]) – The name of the file to be saved.

    • +
    • makedirs (bool) – If True, create the directory structure for the save path.

    • +
    +
    +
    Returns:
    +

    The full save path for the file.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Example

    +
    >>> spath = mk_spath('output.txt', makedirs=True)
    +
    +
    +
    +
    + +
    + +

    Return the path to which the symbolic link points.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Symlink path to read

    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path object pointing to the symlink target

    +
    +
    Raises:
    +

    OSError – If path is not a symlink

    +
    +
    +
    + +
    + +

    Resolve all symbolic links in a path.

    +
    +
    Parameters:
    +

    path (Union[str, Path]) – Path potentially containing symlinks

    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Fully resolved absolute path

    +
    +
    +
    + +
    +
    +scitex.path.split(fpath)[source]
    +

    Split a file path into directory, filename, and extension.

    +
    +
    Parameters:
    +

    fpath (Union[str, Path]) – File path to split.

    +
    +
    Returns:
    +

    (directory with trailing slash, filename without extension, extension)

    +
    +
    Return type:
    +

    Tuple[str, str, str]

    +
    +
    +
    +

    Example

    +
    >>> dirname, fname, ext = split('/path/to/file.txt')
    +>>> dirname
    +'/path/to/'
    +>>> fname
    +'file'
    +>>> ext
    +'.txt'
    +
    +
    +
    +
    + +
    + +

    Create a symbolic link pointing to src named dst.

    +
    +
    Parameters:
    +
      +
    • src (Union[str, Path]) – Source path (target of the symlink)

    • +
    • dst (Union[str, Path]) – Destination path (the symlink to create)

    • +
    • overwrite (bool) – If True, remove existing dst before creating symlink

    • +
    • target_is_directory (Optional[bool]) – On Windows, specify if target is directory (auto-detected if None)

    • +
    • relative (bool) – If True, create relative symlink instead of absolute

    • +
    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path object of the created symlink

    +
    +
    Raises:
    +
    +
    +
    +
    +

    Examples

    +
    >>> from scitex_path import symlink
    +>>> # Create absolute symlink
    +>>> symlink("/path/to/source", "/path/to/link")
    +
    +
    +
    >>> # Create relative symlink
    +>>> symlink("../source", "link", relative=True)
    +
    +
    +
    >>> # Overwrite existing symlink
    +>>> symlink("/path/to/new_source", "/path/to/link", overwrite=True)
    +
    +
    +
    +
    + +
    +
    +scitex.path.this_path(ipython_fake_path='/tmp/fake.py')[source]
    +

    Get the path of the calling script.

    +
    +

    Note

    +

    This function historically captures the caller’s filename via +inspect.stack()[1] but then returns this module’s __file__. +The tests codify that legacy behavior; do not change without +updating callers.

    +
    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    + +

    Remove a symbolic link.

    +
    +
    Parameters:
    +
      +
    • path (Union[str, Path]) – Symlink to remove

    • +
    • missing_ok (bool) – If True, don’t raise error if symlink doesn’t exist

    • +
    +
    +
    Raises:
    +
    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/pd.html b/src/scitex/_sphinx_html/source/api/pd.html new file mode 100644 index 000000000..d28c78829 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/pd.html @@ -0,0 +1,714 @@ + + + + + + + + + PD Module (stx.pd) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    PD Module (stx.pd)

    +

    Pandas DataFrame helper functions for common transformations.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import pandas as pd
    +
    +df = pd.DataFrame({
    +    "subject": ["A", "A", "B", "B"],
    +    "condition": ["ctrl", "exp", "ctrl", "exp"],
    +    "score": [10, 15, 12, 18],
    +})
    +
    +# Find individual (unique) values
    +subjects = stx.pd.find_indi(df, "subject")
    +
    +# Convert to long format
    +melted = stx.pd.melt_cols(df, id_vars=["subject"])
    +
    +# Merge columns
    +merged = stx.pd.merge_cols(df, cols=["subject", "condition"], sep="_")
    +
    +# Force to DataFrame
    +stx.pd.force_df({"a": [1, 2], "b": [3, 4]})
    +
    +
    +
    +
    +

    Available Functions

    +
      +
    • find_indi(df, col) – Find unique individual identifiers

    • +
    • find_pval(df) – Find p-value columns in a DataFrame

    • +
    • force_df(data) – Convert any data to a DataFrame

    • +
    • melt_cols(df, id_vars) – Melt columns to long format

    • +
    • merge_cols(df, cols, sep) – Merge multiple columns into one

    • +
    • to_xyz(df, x, y, z) – Reshape to x, y, z pivot format

    • +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/plt.html b/src/scitex/_sphinx_html/source/api/plt.html new file mode 100644 index 000000000..68ac9d755 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/plt.html @@ -0,0 +1,1104 @@ + + + + + + + + + scitex.plt — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    scitex.plt

    +
    +

    Figure and Axis Creation

    +
    + +
    +

    Axis Methods

    +

    The following methods are available on ax objects returned by stx.plt.subplots().

    +
    +

    Line Plots

    +
    fig, ax = stx.plt.subplots()
    +
    +
    +
    +
    +ax.stx_line(values_1d, xx=None, track=True, id=None, **kwargs)
    +

    Plot a simple line from 1D array.

    +
    +
    Parameters:
    +
      +
    • values_1d – Y values

    • +
    • xx – Optional X values

    • +
    • track – Track data for CSV export

    • +
    • id – Identifier for tracking

    • +
    +
    +
    +
    + +
    +
    +ax.stx_shaded_line(xs, ys_lower, ys_middle, ys_upper, color=None, label=None, track=True, id=None, **kwargs)
    +

    Plot a line with shaded area between bounds.

    +
    +
    Parameters:
    +
      +
    • xs – X values

    • +
    • ys_lower – Lower bound Y values

    • +
    • ys_middle – Middle line Y values

    • +
    • ys_upper – Upper bound Y values

    • +
    +
    +
    +
    + +
    +
    +

    Statistical Plots

    +
    +
    +ax.stx_mean_std(values_2d, xx=None, sd=1, track=True, id=None, **kwargs)
    +

    Plot mean line with standard deviation shading.

    +
    +
    Parameters:
    +
      +
    • values_2d – 2D array (samples x timepoints)

    • +
    • xx – Optional X values

    • +
    • sd – Number of standard deviations for shading

    • +
    +
    +
    +
    + +
    +
    +ax.stx_mean_ci(values_2d, xx=None, perc=95, track=True, id=None, **kwargs)
    +

    Plot mean line with confidence interval shading.

    +
    +
    Parameters:
    +
      +
    • values_2d – 2D array (samples x timepoints)

    • +
    • xx – Optional X values

    • +
    • perc – Confidence interval percentage (default: 95)

    • +
    +
    +
    +
    + +
    +
    +ax.stx_median_iqr(values_2d, xx=None, track=True, id=None, **kwargs)
    +

    Plot median line with interquartile range shading.

    +
    +
    Parameters:
    +
      +
    • values_2d – 2D array (samples x timepoints)

    • +
    • xx – Optional X values

    • +
    +
    +
    +
    + +
    +
    +ax.stx_errorbar(x, y, yerr=None, xerr=None, track=True, id=None, **kwargs)
    +

    Error bar plot with scitex styling.

    +
    +
    Parameters:
    +
      +
    • x – X coordinates

    • +
    • y – Y coordinates

    • +
    • yerr – Y error values

    • +
    • xerr – X error values

    • +
    +
    +
    +
    + +
    +
    +

    Distribution Plots

    +
    +
    +ax.stx_kde(values_1d, cumulative=False, fill=False, track=True, id=None, **kwargs)
    +

    Plot kernel density estimate.

    +
    +
    Parameters:
    +
      +
    • values_1d – 1D array of values

    • +
    • cumulative – Plot cumulative distribution

    • +
    • fill – Fill under curve

    • +
    +
    +
    +
    + +
    +
    +ax.stx_ecdf(values_1d, track=True, id=None, **kwargs)
    +

    Plot empirical cumulative distribution function.

    +
    +
    Parameters:
    +

    values_1d – 1D array of values

    +
    +
    +
    + +
    +
    +ax.hist(x, bins=10, range=None, align_bins=True, track=True, id=None, **kwargs)
    +

    Plot histogram with bin alignment support.

    +
    +
    Parameters:
    +
      +
    • x – Input data

    • +
    • bins – Number of bins or bin edges

    • +
    • align_bins – Align bins with other histograms on same axis

    • +
    +
    +
    +
    + +
    +
    +

    Categorical Plots

    +
    +
    +ax.stx_box(values_list, colors=None, track=True, id=None, **kwargs)
    +

    Boxplot with scitex styling.

    +
    +
    Parameters:
    +
      +
    • values_list – List of arrays for each box

    • +
    • colors – Optional colors for boxes

    • +
    +
    +
    +
    + +
    +
    +ax.stx_violin(values_list, x=None, y=None, hue=None, labels=None, colors=None, half=False, track=True, id=None, **kwargs)
    +

    Violin plot with scitex styling.

    +
    +
    Parameters:
    +
      +
    • values_list – List of arrays or DataFrame

    • +
    • half – Show half violins

    • +
    +
    +
    +
    + +
    +
    +

    Scatter Plots

    +
    +
    +ax.stx_scatter(x, y, track=True, id=None, **kwargs)
    +

    Scatter plot with scitex styling.

    +
    +
    Parameters:
    +
      +
    • x – X coordinates

    • +
    • y – Y coordinates

    • +
    +
    +
    +
    + +
    +
    +ax.stx_scatter_hist(x, y, hist_bins=20, scatter_alpha=0.6, track=True, id=None, **kwargs)
    +

    Scatter plot with marginal histograms.

    +
    +
    Parameters:
    +
      +
    • x – X coordinates

    • +
    • y – Y coordinates

    • +
    • hist_bins – Number of histogram bins

    • +
    +
    +
    +
    + +
    +
    +

    Bar Plots

    +
    +
    +ax.stx_bar(x, height, track=True, id=None, **kwargs)
    +

    Vertical bar plot with scitex styling.

    +
    +
    Parameters:
    +
      +
    • x – X coordinates

    • +
    • height – Bar heights

    • +
    +
    +
    +
    + +
    +
    +ax.stx_barh(y, width, track=True, id=None, **kwargs)
    +

    Horizontal bar plot with scitex styling.

    +
    +
    Parameters:
    +
      +
    • y – Y coordinates

    • +
    • width – Bar widths

    • +
    +
    +
    +
    + +
    +
    +

    Heatmaps

    +
    +
    +ax.stx_heatmap(values_2d, x_labels=None, y_labels=None, cmap='viridis', cbar_label='', show_annot=True, track=True, id=None, **kwargs)
    +

    Plot annotated heatmap.

    +
    +
    Parameters:
    +
      +
    • values_2d – 2D array

    • +
    • x_labels – Column labels

    • +
    • y_labels – Row labels

    • +
    • show_annot – Show value annotations

    • +
    +
    +
    +
    + +
    +
    +ax.stx_conf_mat(conf_mat_2d, x_labels=None, y_labels=None, title='Confusion Matrix', track=True, id=None, **kwargs)
    +

    Plot confusion matrix.

    +
    +
    Parameters:
    +
      +
    • conf_mat_2d – 2D confusion matrix array

    • +
    • x_labels – Predicted class labels

    • +
    • y_labels – True class labels

    • +
    +
    +
    +
    + +
    +
    +ax.stx_image(arr_2d, track=True, id=None, **kwargs)
    +

    Display 2D array as image.

    +
    +
    Parameters:
    +

    arr_2d – 2D array

    +
    +
    +
    + +
    +
    +

    Special Plots

    +
    +
    +ax.stx_raster(spike_times_list, time=None, labels=None, colors=None, track=True, id=None, **kwargs)
    +

    Plot spike raster.

    +
    +
    Parameters:
    +
      +
    • spike_times_list – List of spike time arrays per neuron

    • +
    • time – Optional time array

    • +
    +
    +
    +
    + +
    +
    +ax.stx_fillv(starts_1d, ends_1d, color='red', alpha=0.2, track=True, id=None, **kwargs)
    +

    Fill vertical regions.

    +
    +
    Parameters:
    +
      +
    • starts_1d – Start positions

    • +
    • ends_1d – End positions

    • +
    +
    +
    +
    + +
    +
    +ax.stx_rectangle(xx, yy, width, height, track=True, id=None, **kwargs)
    +

    Draw rectangle.

    +
    +
    Parameters:
    +
      +
    • xx – X position

    • +
    • yy – Y position

    • +
    • width – Rectangle width

    • +
    • height – Rectangle height

    • +
    +
    +
    +
    + +
    +
    +ax.stx_joyplot(arrays, track=True, id=None, **kwargs)
    +

    Plot joyplot (ridgeline plot).

    +
    +
    Parameters:
    +

    arrays – List of arrays

    +
    +
    +
    + +
    +
    +

    Seaborn Wrappers

    +
    +
    +ax.sns_barplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_boxplot(data=None, x=None, y=None, strip=False, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_violinplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_stripplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_swarmplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_heatmap(*args, xyz=False, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_histplot(data=None, x=None, y=None, bins=10, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_kdeplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_scatterplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_lineplot(data=None, x=None, y=None, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_jointplot(*args, track=True, id=None, **kwargs)
    +
    + +
    +
    +ax.sns_pairplot(*args, track=True, id=None, **kwargs)
    +
    + +
    +
    +

    Axis Utilities

    +
    +
    +ax.set_xyt(x=None, y=None, t=None)
    +

    Set xlabel, ylabel, and title in one call.

    +
    + +
    +
    +ax.hide_spines(*spines)
    +

    Hide specified spines (top, right, bottom, left).

    +
    + +
    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/project.html b/src/scitex/_sphinx_html/source/api/project.html new file mode 100644 index 000000000..7f8275001 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/project.html @@ -0,0 +1,674 @@ + + + + + + + + + project Module (stx.project) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    project Module (stx.project)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/repro.html b/src/scitex/_sphinx_html/source/api/repro.html new file mode 100644 index 000000000..752d49d19 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/repro.html @@ -0,0 +1,1194 @@ + + + + + + + + + Repro Module (stx.repro) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Repro Module (stx.repro)

    +

    Reproducibility utilities: random state management, ID generation, +timestamps, and array hashing.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +
    +# Fix all random seeds (numpy, torch, random, ...)
    +rng = stx.repro.get()           # Global manager (seed=42)
    +rng = stx.repro.reset(seed=123) # Reset with new seed
    +
    +# Named generators for deterministic results
    +data_gen = rng.get_np_generator("data")
    +data = data_gen.random(100)  # Same seed+name = same result
    +
    +# Unique identifiers
    +stx.repro.gen_id()
    +# → "2026Y-02M-13D-14h30m15s_a3Bc9xY2"
    +
    +stx.repro.gen_timestamp()
    +# → "2026-0213-1430"
    +
    +# Verify reproducibility
    +rng.verify(data, "train_data")  # First: caches hash
    +rng.verify(data, "train_data")  # Later: verifies match
    +
    +
    +
    +
    +

    RandomStateManager

    +

    Central class for managing random states across libraries.

    +
    rng = stx.repro.RandomStateManager(seed=42)
    +
    +# Named generators (same name + seed = deterministic)
    +np_gen = rng.get_np_generator("experiment")
    +torch_gen = rng.get_torch_generator("model")
    +
    +# Checkpoint and restore
    +rng.checkpoint("before_training")
    +rng.restore("before_training.pkl")
    +
    +# Temporary seed change
    +with rng.temporary_seed(999):
    +    noise = rng.get_np_generator("noise").random(10)
    +
    +
    +

    Automatically fixes seeds for: random, numpy, torch (+ CUDA), +tensorflow, jax.

    +
    +
    +

    Available Functions

    +
      +
    • get(verbose) – Get or create global RandomStateManager singleton

    • +
    • reset(seed, verbose) – Reset global instance with new seed

    • +
    • fix_seeds(seed, ...) – Legacy function (use RandomStateManager instead)

    • +
    • gen_id(time_format, N) – Generate unique timestamp + random ID

    • +
    • gen_timestamp() – Generate timestamp string for file naming

    • +
    • hash_array(array_data) – SHA256 hash of numpy array (16 chars)

    • +
    +
    +
    +

    API Reference

    +

    scitex-repro — Reproducibility utilities for scientific computing.

    +

    Provides tools for reproducible scientific computing: +- Random state management (RandomStateManager) +- ID generation (gen_ID) +- Timestamp generation (gen_timestamp) +- Array hashing (hash_array)

    +
    +
    +scitex.repro.gen_ID(time_format='%YY-%mM-%dD-%Hh%Mm%Ss', N=8, *, now_fn=None)
    +

    Generate a unique identifier with timestamp and random characters.

    +

    Creates a unique ID by combining a formatted timestamp with random +alphanumeric characters. Useful for creating unique experiment IDs, +run identifiers, or temporary file names.

    +
    +
    Parameters:
    +
      +
    • time_format (str, optional) – Format string for timestamp portion. Default is “%YY-%mM-%dD-%Hh%Mm%Ss” +which produces “2025Y-05M-31D-12h30m45s” format.

    • +
    • N (int, optional) – Number of random characters to append. Default is 8.

    • +
    • now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    • +
    +
    +
    Returns:
    +

    Unique identifier in format “{timestamp}_{random_chars}”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> id1 = gen_id()
    +>>> print(id1)
    +'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
    +
    +
    +
    >>> id2 = gen_id(time_format="%Y%m%d", N=4)
    +>>> print(id2)
    +'20250531_xY9a'
    +
    +
    +
    >>> # For experiment tracking
    +>>> exp_id = gen_id()
    +>>> save_path = f"results/experiment_{exp_id}.pkl"
    +
    +
    +
    +
    + +
    +
    +scitex.repro.gen_id(time_format='%YY-%mM-%dD-%Hh%Mm%Ss', N=8, *, now_fn=None)[source]
    +

    Generate a unique identifier with timestamp and random characters.

    +

    Creates a unique ID by combining a formatted timestamp with random +alphanumeric characters. Useful for creating unique experiment IDs, +run identifiers, or temporary file names.

    +
    +
    Parameters:
    +
      +
    • time_format (str, optional) – Format string for timestamp portion. Default is “%YY-%mM-%dD-%Hh%Mm%Ss” +which produces “2025Y-05M-31D-12h30m45s” format.

    • +
    • N (int, optional) – Number of random characters to append. Default is 8.

    • +
    • now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    • +
    +
    +
    Returns:
    +

    Unique identifier in format “{timestamp}_{random_chars}”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> id1 = gen_id()
    +>>> print(id1)
    +'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
    +
    +
    +
    >>> id2 = gen_id(time_format="%Y%m%d", N=4)
    +>>> print(id2)
    +'20250531_xY9a'
    +
    +
    +
    >>> # For experiment tracking
    +>>> exp_id = gen_id()
    +>>> save_path = f"results/experiment_{exp_id}.pkl"
    +
    +
    +
    +
    + +
    +
    +scitex.repro.gen_timestamp(*, now_fn=None)[source]
    +

    Generate a timestamp string for file naming.

    +

    Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for +creating unique filenames or version identifiers.

    +
    +
    Parameters:
    +

    now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    +
    +
    Returns:
    +

    Timestamp string in format “YYYY-MMDD-HHMM”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> timestamp = gen_timestamp()
    +>>> print(timestamp)
    +'2025-0531-1230'
    +
    +
    +
    >>> filename = f"experiment_{gen_timestamp()}.csv"
    +>>> print(filename)
    +'experiment_2025-0531-1230.csv'
    +
    +
    +
    +
    + +
    +
    +scitex.repro.timestamp(*, now_fn=None)
    +

    Generate a timestamp string for file naming.

    +

    Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for +creating unique filenames or version identifiers.

    +
    +
    Parameters:
    +

    now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    +
    +
    Returns:
    +

    Timestamp string in format “YYYY-MMDD-HHMM”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> timestamp = gen_timestamp()
    +>>> print(timestamp)
    +'2025-0531-1230'
    +
    +
    +
    >>> filename = f"experiment_{gen_timestamp()}.csv"
    +>>> print(filename)
    +'experiment_2025-0531-1230.csv'
    +
    +
    +
    +
    + +
    +
    +scitex.repro.hash_array(array_data)[source]
    +

    Generate hash for array data.

    +

    Creates a deterministic hash for numpy arrays, useful for +verifying data integrity and reproducibility.

    +
    +
    Parameters:
    +

    array_data (ndarray) – Array to hash

    +
    +
    Returns:
    +

    16-character hash string

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> import numpy as np
    +>>> data = np.array([1, 2, 3, 4, 5])
    +>>> hash1 = hash_array(data)
    +>>> hash2 = hash_array(data)
    +>>> hash1 == hash2
    +True
    +
    +
    +
    +
    + +
    +
    +class scitex.repro.RandomStateManager(seed=42, verbose=False)[source]
    +

    Simple, robust random state manager for scientific computing.

    +
    +

    Examples

    +
    >>> from scitex_repro import RandomStateManager
    +>>>
    +>>> # Method 1: Direct usage
    +>>> rng = RandomStateManager(seed=42)
    +>>> data = rng("data").random(100)
    +>>>
    +>>> # Verify reproducibility
    +>>> rng.verify(data, "my_data")
    +
    +
    +
    +
    +
    +__init__(seed=42, verbose=False)[source]
    +

    Initialize with automatic module detection.

    +
    + +
    +
    +get_np_generator(name)[source]
    +

    Get or create a named NumPy random generator.

    +
    +
    Parameters:
    +

    name (str) – Generator name (e.g., “data”, “model”, “augment”)

    +
    +
    Returns:
    +

    Independent NumPy random generator

    +
    +
    Return type:
    +

    numpy.random.Generator

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> gen = rng.get_np_generator("data")
    +>>> values = gen.random(100)
    +>>> perm = gen.permutation(100)
    +
    +
    +
    +
    + +
    +
    +__call__(name, verbose=None)[source]
    +

    Get or create a named NumPy random generator.

    +

    This is a backward compatibility wrapper for get_np_generator(). +Consider using get_np_generator() directly for clarity.

    +
    +
    Parameters:
    +
      +
    • name (str) – Generator name

    • +
    • verbose (bool) – Whether to show deprecation warning

    • +
    +
    +
    Returns:
    +

    NumPy random generator with deterministic seed

    +
    +
    Return type:
    +

    numpy.random.Generator

    +
    +
    +
    + +
    +
    +verify(obj, name=None, verbose=True)[source]
    +

    Verify object matches cached hash (detects broken reproducibility).

    +

    First call: caches the object’s hash +Later calls: verifies object matches cached hash

    +
    +
    Parameters:
    +
      +
    • obj (Any) – Object to verify (array, tensor, data, model weights, etc.) +Supports: numpy arrays, torch tensors, tf tensors, jax arrays, +lists, dicts, pandas dataframes, and basic types

    • +
    • name (str) – Cache name. Auto-generated if not provided.

    • +
    +
    +
    Returns:
    +

    True if matches cache (or first call), False if different

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    +

    Examples

    +
    >>> data = generate_data()
    +>>> rng.verify(data, "train_data")  # First run: caches
    +>>> # Next run:
    +>>> rng.verify(data, "train_data")  # Verifies match
    +
    +
    +
    +
    + +
    +
    +checkpoint(name='checkpoint')[source]
    +

    Save current state of all generators.

    +
    + +
    +
    +restore(checkpoint)[source]
    +

    Restore from checkpoint.

    +
    + +
    +
    +temporary_seed(seed)[source]
    +

    Context manager for temporary seed change.

    +
    + +
    +
    +get_sklearn_random_state(name)[source]
    +

    Get a random state for scikit-learn.

    +

    Scikit-learn uses integers for random_state parameter.

    +
    +
    Parameters:
    +

    name (str) – Generator name

    +
    +
    Returns:
    +

    Random state integer for sklearn

    +
    +
    Return type:
    +

    int

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> from sklearn.model_selection import train_test_split
    +>>> X_train, X_test = train_test_split(
    +...     X, test_size=0.2,
    +...     random_state=rng.get_sklearn_random_state("split")
    +... )
    +
    +
    +
    +
    + +
    +
    +get_torch_generator(name)[source]
    +

    Get or create a named PyTorch generator.

    +
    +
    Parameters:
    +

    name (str) – Generator name

    +
    +
    Returns:
    +

    PyTorch generator with deterministic seed

    +
    +
    Return type:
    +

    torch.Generator

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> gen = rng.get_torch_generator("model")
    +>>> torch.randn(5, 5, generator=gen)
    +
    +
    +
    +
    + +
    +
    +get_generator(name)[source]
    +

    Alias for get_np_generator for compatibility.

    +
    + +
    +
    +clear_cache(patterns=None)[source]
    +

    Clear verification cache files.

    +
    +
    Parameters:
    +

    patterns (str | list[str]) – Specific cache patterns to clear. If None, clears all.

    +
    +
    Returns:
    +

    Number of cache files removed

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    + +
    +
    +scitex.repro.get(verbose=False)[source]
    +

    Get or create the global RandomStateManager instance.

    +
    +
    Parameters:
    +

    verbose (bool) – Whether to print status messages (default: False)

    +
    +
    Returns:
    +

    Global instance

    +
    +
    Return type:
    +

    RandomStateManager

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_repro import get
    +>>> rng = get()
    +>>> data = rng("data").random(100)
    +
    +
    +
    +
    + +
    +
    +scitex.repro.reset(seed=42, verbose=False)[source]
    +

    Reset global RandomStateManager with new seed.

    +
    +
    Parameters:
    +
      +
    • seed (int) – New seed value

    • +
    • verbose (bool) – Whether to print status messages (default: False)

    • +
    +
    +
    Returns:
    +

    New global instance

    +
    +
    Return type:
    +

    RandomStateManager

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_repro import reset
    +>>> rng = reset(seed=123)
    +
    +
    +
    +
    + +
    +
    +scitex.repro.fix_seeds(seed=42, os=True, random=True, np=True, torch=True, tf=False, jax=False, verbose=False, **kwargs)[source]
    +

    Deprecated: Use RandomStateManager instead.

    +

    This function maintains backward compatibility with the old fix_seeds API.

    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/resource.html b/src/scitex/_sphinx_html/source/api/resource.html new file mode 100644 index 000000000..cf9bf6013 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/resource.html @@ -0,0 +1,888 @@ + + + + + + + + + resource Module (stx.resource) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    resource Module (stx.resource)

    +

    scitex-resource — system resource info, monitoring, RAM limit (standalone).

    +

    Public API is loaded lazily via PEP 562 __getattr__ so import +scitex_resource stays fast (<100ms cold-start) — Click runs the CLI +program once per Tab press for completion, and pulling in +matplotlib/psutil/yaml at top-level made that path ~2s slow.

    +
    +
    +scitex.resource.get_host_config()[source]
    +

    Return the host: block from config (falls back to machine:).

    +

    If a config file declares only the legacy machine: key, a +one-time DeprecationWarning is emitted and that block is returned.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.resource.get_host_name()[source]
    +

    Return the canonical host name.

    +

    See module docstring for the resolution cascade. Always returns a +non-empty string — the short hostname is the last-resort fallback.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.resource.load_config()[source]
    +

    Return the merged config dict — project file overrides user file.

    +

    Empty dict if no config files exist or PyYAML isn’t installed.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.resource.get_machine_config()[source]
    +

    Deprecated alias for get_host_config().

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.resource.get_machine_name()[source]
    +

    Deprecated alias for get_host_name().

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +scitex.resource.get_metrics(gpu=True)[source]
    +

    Return a flat dict of current system metrics suitable for heartbeats.

    +
    +
    Parameters:
    +

    gpu (bool) – When True (default) probe NVIDIA GPUs via nvidia-smi. Set to +False on hot paths to skip the ~200 ms shellout when you know +there’s no GPU or when you cache GPU info separately.

    +
    +
    Returns:
    +

    See module docstring for the full key list and contract.

    +
    +
    Return type:
    +

    dict[str, Any]

    +
    +
    +
    + +
    +
    +scitex.resource.get_processor_usages()[source]
    +

    Gets current system resource usage statistics.

    +
    +
    Returns:
    +

    Resource usage data with columns: +- Timestamp: Timestamp +- CPU [%]: CPU utilization +- RAM [GiB]: RAM usage +- GPU [%]: GPU utilization +- VRAM [GiB]: VRAM usage

    +
    +
    Return type:
    +

    DataFrame

    +
    +
    +
    +

    Example

    +
    >>> df = get_proccessor_usages()
    +>>> print(df)
    +             Timestamp  CPU [%]  RAM [GiB]  GPU [%]  VRAM [GiB]
    +0  2024-11-04 10:30:15    25.3      8.2     65.0        4.5
    +
    +
    +
    +
    + +
    +
    +scitex.resource.get_specs(system=True, cpu=True, gpu=True, disk=True, network=True, verbose=False, yaml=False)[source]
    +

    Collects and returns system specifications including system information, CPU, GPU, disk, and network details.

    +

    This function gathers various pieces of system information based on the parameters provided. It can return the data in a dictionary format or print it out based on the verbose flag. Additionally, there’s an option to format the output as YAML.

    +
    +
    Parameters:
    +
      +
    • system (bool) – If True, collects system-wide information such as OS and node name. Default is True.

    • +
    • boot_time (bool) – If True, collects system boot time. Currently commented out in the implementation. Default is True.

    • +
    • cpu (bool) – If True, collects CPU-specific information including frequency and usage. Default is True.

    • +
    • gpu (bool) – If True, collects GPU-specific information. Default is True.

    • +
    • disk (bool) – If True, collects disk usage information for all partitions. Default is True.

    • +
    • network (bool) – If True, collects network interface and traffic information. Default is True.

    • +
    • verbose (bool) – If True, prints the collected information using pprint. Default is False.

    • +
    • yaml (bool) – If True, formats the collected information as YAML. This modifies the return type to a YAML formatted string. Default is False.

    • +
    +
    +
    Returns:
    +

    By default, returns a dictionary containing the collected system specifications. If yaml is True, returns a YAML-formatted string instead.

    +
    +
    Return type:
    +

    dict or str

    +
    +
    +
    +

    Note

    +
      +
    • The actual collection of system, CPU, GPU, disk, and network information depends on the availability of corresponding libraries and access permissions.

    • +
    • The boot_time argument is currently not used as its corresponding code is commented out.

    • +
    • The function uses global variables and imports within its scope, which might affect its reusability and testability.

    • +
    +
    +
    +

    Example

    +
    >>> specs = get_specs(verbose=True)
    +This will print and return the system specifications based on the default parameters.
    +
    +
    +
    +
    +
    Dependencies:
      +
    • This function depends on the scitex library for accessing system information and formatting output. Ensure this library is installed and properly configured.

    • +
    • Python standard libraries: datetime, platform, psutil, yaml (optional for YAML output).

    • +
    +
    +
    +
    +
    Raises:
    +

    PermissionError – If the function lacks necessary permissions to access certain system information, especially disk and network details.

    +
    +
    +
    + +
    +
    +scitex.resource.log_processor_usages(path='/tmp/scitex/processor_usages.csv', limit_min=30, interval_s=1, init=True, verbose=False, background=False)[source]
    +

    Logs system resource usage over time.

    +
    +
    Parameters:
    +
      +
    • path (str) – Path to save the log file

    • +
    • limit_min (float) – Monitoring duration in minutes

    • +
    • interval_s (float) – Sampling interval in seconds

    • +
    • init (bool) – Whether to clear existing log file

    • +
    • verbose (bool) – Whether to print the log

    • +
    • background (bool) – Whether to run in background

    • +
    +
    +
    Returns:
    +

    Process object if background=True, None otherwise

    +
    +
    Return type:
    +

    Optional[Process]

    +
    +
    +
    + +
    +
    +scitex.resource.main(path='/tmp/scitex/processor_usages.csv', limit_min=30, interval_s=1, init=True, verbose=False, background=False)
    +

    Logs system resource usage over time.

    +
    +
    Parameters:
    +
      +
    • path (str) – Path to save the log file

    • +
    • limit_min (float) – Monitoring duration in minutes

    • +
    • interval_s (float) – Sampling interval in seconds

    • +
    • init (bool) – Whether to clear existing log file

    • +
    • verbose (bool) – Whether to print the log

    • +
    • background (bool) – Whether to run in background

    • +
    +
    +
    Returns:
    +

    Process object if background=True, None otherwise

    +
    +
    Return type:
    +

    Optional[Process]

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/rng.html b/src/scitex/_sphinx_html/source/api/rng.html new file mode 100644 index 000000000..7e7797af0 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/rng.html @@ -0,0 +1,1133 @@ + + + + + + + + + rng Module (stx.rng) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    rng Module (stx.rng)

    +

    scitex-repro — Reproducibility utilities for scientific computing.

    +

    Provides tools for reproducible scientific computing: +- Random state management (RandomStateManager) +- ID generation (gen_ID) +- Timestamp generation (gen_timestamp) +- Array hashing (hash_array)

    +
    +
    +scitex.rng.gen_ID(time_format='%YY-%mM-%dD-%Hh%Mm%Ss', N=8, *, now_fn=None)
    +

    Generate a unique identifier with timestamp and random characters.

    +

    Creates a unique ID by combining a formatted timestamp with random +alphanumeric characters. Useful for creating unique experiment IDs, +run identifiers, or temporary file names.

    +
    +
    Parameters:
    +
      +
    • time_format (str, optional) – Format string for timestamp portion. Default is “%YY-%mM-%dD-%Hh%Mm%Ss” +which produces “2025Y-05M-31D-12h30m45s” format.

    • +
    • N (int, optional) – Number of random characters to append. Default is 8.

    • +
    • now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    • +
    +
    +
    Returns:
    +

    Unique identifier in format “{timestamp}_{random_chars}”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> id1 = gen_id()
    +>>> print(id1)
    +'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
    +
    +
    +
    >>> id2 = gen_id(time_format="%Y%m%d", N=4)
    +>>> print(id2)
    +'20250531_xY9a'
    +
    +
    +
    >>> # For experiment tracking
    +>>> exp_id = gen_id()
    +>>> save_path = f"results/experiment_{exp_id}.pkl"
    +
    +
    +
    +
    + +
    +
    +scitex.rng.gen_id(time_format='%YY-%mM-%dD-%Hh%Mm%Ss', N=8, *, now_fn=None)[source]
    +

    Generate a unique identifier with timestamp and random characters.

    +

    Creates a unique ID by combining a formatted timestamp with random +alphanumeric characters. Useful for creating unique experiment IDs, +run identifiers, or temporary file names.

    +
    +
    Parameters:
    +
      +
    • time_format (str, optional) – Format string for timestamp portion. Default is “%YY-%mM-%dD-%Hh%Mm%Ss” +which produces “2025Y-05M-31D-12h30m45s” format.

    • +
    • N (int, optional) – Number of random characters to append. Default is 8.

    • +
    • now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    • +
    +
    +
    Returns:
    +

    Unique identifier in format “{timestamp}_{random_chars}”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> id1 = gen_id()
    +>>> print(id1)
    +'2025Y-05M-31D-12h30m45s_a3Bc9xY2'
    +
    +
    +
    >>> id2 = gen_id(time_format="%Y%m%d", N=4)
    +>>> print(id2)
    +'20250531_xY9a'
    +
    +
    +
    >>> # For experiment tracking
    +>>> exp_id = gen_id()
    +>>> save_path = f"results/experiment_{exp_id}.pkl"
    +
    +
    +
    +
    + +
    +
    +scitex.rng.gen_timestamp(*, now_fn=None)[source]
    +

    Generate a timestamp string for file naming.

    +

    Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for +creating unique filenames or version identifiers.

    +
    +
    Parameters:
    +

    now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    +
    +
    Returns:
    +

    Timestamp string in format “YYYY-MMDD-HHMM”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> timestamp = gen_timestamp()
    +>>> print(timestamp)
    +'2025-0531-1230'
    +
    +
    +
    >>> filename = f"experiment_{gen_timestamp()}.csv"
    +>>> print(filename)
    +'experiment_2025-0531-1230.csv'
    +
    +
    +
    +
    + +
    +
    +scitex.rng.timestamp(*, now_fn=None)
    +

    Generate a timestamp string for file naming.

    +

    Returns a timestamp in the format YYYY-MMDD-HHMM, suitable for +creating unique filenames or version identifiers.

    +
    +
    Parameters:
    +

    now_fn (callable, optional) – Zero-argument callable returning a datetime-like object with +.strftime(). Defaults to datetime.now. Injection point for +deterministic tests — pass a fake that returns a fixed datetime +instead of mocking datetime globally.

    +
    +
    Returns:
    +

    Timestamp string in format “YYYY-MMDD-HHMM”

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> timestamp = gen_timestamp()
    +>>> print(timestamp)
    +'2025-0531-1230'
    +
    +
    +
    >>> filename = f"experiment_{gen_timestamp()}.csv"
    +>>> print(filename)
    +'experiment_2025-0531-1230.csv'
    +
    +
    +
    +
    + +
    +
    +scitex.rng.hash_array(array_data)[source]
    +

    Generate hash for array data.

    +

    Creates a deterministic hash for numpy arrays, useful for +verifying data integrity and reproducibility.

    +
    +
    Parameters:
    +

    array_data (ndarray) – Array to hash

    +
    +
    Returns:
    +

    16-character hash string

    +
    +
    Return type:
    +

    str

    +
    +
    +
    +

    Examples

    +
    >>> import numpy as np
    +>>> data = np.array([1, 2, 3, 4, 5])
    +>>> hash1 = hash_array(data)
    +>>> hash2 = hash_array(data)
    +>>> hash1 == hash2
    +True
    +
    +
    +
    +
    + +
    +
    +class scitex.rng.RandomStateManager(seed=42, verbose=False)[source]
    +

    Bases: object

    +

    Simple, robust random state manager for scientific computing.

    +
    +

    Examples

    +
    >>> from scitex_repro import RandomStateManager
    +>>>
    +>>> # Method 1: Direct usage
    +>>> rng = RandomStateManager(seed=42)
    +>>> data = rng("data").random(100)
    +>>>
    +>>> # Verify reproducibility
    +>>> rng.verify(data, "my_data")
    +
    +
    +
    +
    +
    +__init__(seed=42, verbose=False)[source]
    +

    Initialize with automatic module detection.

    +
    + +
    +
    +get_np_generator(name)[source]
    +

    Get or create a named NumPy random generator.

    +
    +
    Parameters:
    +

    name (str) – Generator name (e.g., “data”, “model”, “augment”)

    +
    +
    Returns:
    +

    Independent NumPy random generator

    +
    +
    Return type:
    +

    numpy.random.Generator

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> gen = rng.get_np_generator("data")
    +>>> values = gen.random(100)
    +>>> perm = gen.permutation(100)
    +
    +
    +
    +
    + +
    +
    +__call__(name, verbose=None)[source]
    +

    Get or create a named NumPy random generator.

    +

    This is a backward compatibility wrapper for get_np_generator(). +Consider using get_np_generator() directly for clarity.

    +
    +
    Parameters:
    +
      +
    • name (str) – Generator name

    • +
    • verbose (bool) – Whether to show deprecation warning

    • +
    +
    +
    Returns:
    +

    NumPy random generator with deterministic seed

    +
    +
    Return type:
    +

    numpy.random.Generator

    +
    +
    +
    + +
    +
    +verify(obj, name=None, verbose=True)[source]
    +

    Verify object matches cached hash (detects broken reproducibility).

    +

    First call: caches the object’s hash +Later calls: verifies object matches cached hash

    +
    +
    Parameters:
    +
      +
    • obj (Any) – Object to verify (array, tensor, data, model weights, etc.) +Supports: numpy arrays, torch tensors, tf tensors, jax arrays, +lists, dicts, pandas dataframes, and basic types

    • +
    • name (str) – Cache name. Auto-generated if not provided.

    • +
    +
    +
    Returns:
    +

    True if matches cache (or first call), False if different

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    +

    Examples

    +
    >>> data = generate_data()
    +>>> rng.verify(data, "train_data")  # First run: caches
    +>>> # Next run:
    +>>> rng.verify(data, "train_data")  # Verifies match
    +
    +
    +
    +
    + +
    +
    +checkpoint(name='checkpoint')[source]
    +

    Save current state of all generators.

    +
    + +
    +
    +restore(checkpoint)[source]
    +

    Restore from checkpoint.

    +
    + +
    +
    +temporary_seed(seed)[source]
    +

    Context manager for temporary seed change.

    +
    + +
    +
    +get_sklearn_random_state(name)[source]
    +

    Get a random state for scikit-learn.

    +

    Scikit-learn uses integers for random_state parameter.

    +
    +
    Parameters:
    +

    name (str) – Generator name

    +
    +
    Returns:
    +

    Random state integer for sklearn

    +
    +
    Return type:
    +

    int

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> from sklearn.model_selection import train_test_split
    +>>> X_train, X_test = train_test_split(
    +...     X, test_size=0.2,
    +...     random_state=rng.get_sklearn_random_state("split")
    +... )
    +
    +
    +
    +
    + +
    +
    +get_torch_generator(name)[source]
    +

    Get or create a named PyTorch generator.

    +
    +
    Parameters:
    +

    name (str) – Generator name

    +
    +
    Returns:
    +

    PyTorch generator with deterministic seed

    +
    +
    Return type:
    +

    torch.Generator

    +
    +
    +
    +

    Examples

    +
    >>> rng = RandomStateManager(42)
    +>>> gen = rng.get_torch_generator("model")
    +>>> torch.randn(5, 5, generator=gen)
    +
    +
    +
    +
    + +
    +
    +get_generator(name)[source]
    +

    Alias for get_np_generator for compatibility.

    +
    + +
    +
    +clear_cache(patterns=None)[source]
    +

    Clear verification cache files.

    +
    +
    Parameters:
    +

    patterns (str | list[str]) – Specific cache patterns to clear. If None, clears all.

    +
    +
    Returns:
    +

    Number of cache files removed

    +
    +
    Return type:
    +

    int

    +
    +
    +
    + +
    + +
    +
    +scitex.rng.get(verbose=False)[source]
    +

    Get or create the global RandomStateManager instance.

    +
    +
    Parameters:
    +

    verbose (bool) – Whether to print status messages (default: False)

    +
    +
    Returns:
    +

    Global instance

    +
    +
    Return type:
    +

    RandomStateManager

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_repro import get
    +>>> rng = get()
    +>>> data = rng("data").random(100)
    +
    +
    +
    +
    + +
    +
    +scitex.rng.reset(seed=42, verbose=False)[source]
    +

    Reset global RandomStateManager with new seed.

    +
    +
    Parameters:
    +
      +
    • seed (int) – New seed value

    • +
    • verbose (bool) – Whether to print status messages (default: False)

    • +
    +
    +
    Returns:
    +

    New global instance

    +
    +
    Return type:
    +

    RandomStateManager

    +
    +
    +
    +

    Examples

    +
    >>> from scitex_repro import reset
    +>>> rng = reset(seed=123)
    +
    +
    +
    +
    + +
    +
    +scitex.rng.fix_seeds(seed=42, os=True, random=True, np=True, torch=True, tf=False, jax=False, verbose=False, **kwargs)[source]
    +

    Deprecated: Use RandomStateManager instead.

    +

    This function maintains backward compatibility with the old fix_seeds API.

    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/schema.html b/src/scitex/_sphinx_html/source/api/schema.html new file mode 100644 index 000000000..0ecbd7195 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/schema.html @@ -0,0 +1,674 @@ + + + + + + + + + schema Module (stx.schema) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    schema Module (stx.schema)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/scholar.html b/src/scitex/_sphinx_html/source/api/scholar.html new file mode 100644 index 000000000..7d9758d63 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/scholar.html @@ -0,0 +1,794 @@ + + + + + + + + + Scholar Module (stx.scholar) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Scholar Module (stx.scholar)

    +

    Literature management: search papers, download PDFs, enrich BibTeX, +and organize a local library across multiple projects.

    +
    +

    Quick Reference

    +
    from scitex.scholar import Scholar
    +
    +scholar = Scholar(project="my_research")
    +
    +# Load and enrich BibTeX
    +papers = scholar.load_bibtex("references.bib")
    +enriched = scholar.enrich_papers(papers)
    +# Adds: DOIs, abstracts, citation counts, impact factors
    +
    +# Save to library and export
    +scholar.save_papers_to_library(enriched)
    +scholar.save_papers_as_bibtex(enriched, "enriched.bib")
    +
    +# Search your library
    +results = scholar.search_library("neural oscillations")
    +
    +# Download PDFs
    +scholar.download_pdfs(dois, output_dir)
    +
    +
    +
    +
    +

    CLI Usage

    +
    # Full pipeline from BibTeX
    +scitex scholar bibtex refs.bib --project myresearch --num-workers 8
    +
    +# Search papers
    +scitex scholar search "deep learning EEG"
    +
    +# Download PDFs
    +scitex scholar download --doi 10.1038/nature12373
    +
    +# Institutional authentication
    +scitex scholar auth --method openathens
    +scitex scholar auth --method shibboleth --institution "MIT"
    +
    +
    +
    +
    +

    Data Sources

    +

    Searches and enriches from:

    +
      +
    • CrossRef (167M+ papers) – DOI resolution, citation counts

    • +
    • Semantic Scholar – Abstracts, references, influence scores

    • +
    • PubMed – Biomedical literature

    • +
    • arXiv – Preprints

    • +
    • OpenAlex (284M+ works) – Open metadata

    • +
    +
    +
    +

    Key Classes

    +
      +
    • Scholar – Main entry point (search, enrich, download, organize)

    • +
    • Paper – Type-safe metadata container (Pydantic model)

    • +
    • Papers – Collection with filtering, sorting, and export

    • +
    • ScholarConfig – YAML-based configuration

    • +
    • ScholarLibrary – Local library storage and caching

    • +
    +
    +
    +

    Paper Metadata

    +

    Each Paper contains structured metadata sections:

    +
    paper.metadata.basic          # title, authors, year, abstract, keywords
    +paper.metadata.id             # DOI, arXiv, PMID, Semantic Scholar ID
    +paper.metadata.publication    # journal, impact factor, volume, issue
    +paper.metadata.citation_count # total + yearly breakdown (2015--2024)
    +paper.metadata.url            # DOI URL, publisher, arXiv, PDFs
    +paper.metadata.access         # open access status, license
    +
    +
    +
    +
    +

    Filtering and Sorting

    +
    # Criteria-based filtering
    +recent = papers.filter(year_min=2020, has_doi=True)
    +elite = papers.filter(min_impact_factor=10, min_citations=500)
    +
    +# Lambda filtering
    +custom = papers.filter(lambda p: "EEG" in (p.metadata.basic.title or ""))
    +
    +# Sorting
    +papers.sort_by("year", reverse=True)
    +papers.sort_by("citation_count", reverse=True)
    +
    +# Chaining
    +top_recent = papers.filter(year_min=2020).sort_by("citation_count", reverse=True)
    +
    +
    +
    +
    +

    Project Organization

    +
    scholar = Scholar(project="review_paper")
    +scholar.list_projects()
    +papers = scholar.load_project()
    +
    +# Export to multiple formats
    +scholar.save_papers_as_bibtex(papers, "output.bib")
    +papers.to_dataframe()  # pandas DataFrame
    +
    +
    +
    +
    +

    Storage Architecture

    +
    ~/.scitex/scholar/library/
    ++-- MASTER/                     # Centralized master storage
    +|   +-- 8DIGIT01/              # Hash-based unique ID from DOI
    +|   |   +-- metadata.json
    +|   |   +-- paper.pdf
    ++-- project_name/               # Project-specific symlinks
    +    +-- Author-Year-Journal -> ../MASTER/8DIGIT01
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/security.html b/src/scitex/_sphinx_html/source/api/security.html new file mode 100644 index 000000000..c17153762 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/security.html @@ -0,0 +1,774 @@ + + + + + + + + + security Module (stx.security) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    security Module (stx.security)

    +

    scitex-security — GitHub security-alert utilities (standalone).

    +
    +
    Usage:

    from scitex_security import check_github_alerts

    +

    alerts = check_github_alerts() +if alerts:

    +
    +

    print(f”Found {len(alerts)} security alerts!”)

    +
    +
    +
    +
    +
    +scitex.security.check_github_alerts(repo=None, *, auth_check=None, secrets_fn=None, dependabot_fn=None, code_scanning_fn=None)[source]
    +

    Check all GitHub security alerts.

    +
    +
    Parameters:
    +
      +
    • repo (Optional[str]) – Repository in format ‘owner/repo’. If None, uses current repo.

    • +
    • auth_check (Optional[Callable[[], bool]]) – check_gh_auth-shaped callable. Override in tests.

    • +
    • secrets_fn (Optional[Callable]) – get_secret_alerts-shaped callable. Override in tests.

    • +
    • dependabot_fn (Optional[Callable]) – get_dependabot_alerts-shaped callable. Override in +tests.

    • +
    • code_scanning_fn (Optional[Callable]) – get_code_scanning_alerts-shaped callable. +Override in tests.

    • +
    +
    +
    Returns:
    +

    ‘secrets’, ‘dependabot’, ‘code_scanning’

    +
    +
    Return type:
    +

    Dict[str, List[Dict]]

    +
    +
    Raises:
    +

    GitHubSecurityError – If GitHub CLI is not installed or not authenticated

    +
    +
    +
    + +
    +
    +scitex.security.save_alerts_to_file(alerts, output_dir=None, create_symlink=True)[source]
    +

    Save alerts to a timestamped file.

    +
    +
    Parameters:
    +
      +
    • alerts (Dict[str, List[Dict]]) – Dictionary of alerts from check_github_alerts()

    • +
    • output_dir (Optional[Path]) – Directory to save file. Defaults to ./logs/security

    • +
    • create_symlink (bool) – If True, create ‘security-latest.txt’ symlink

    • +
    +
    +
    Return type:
    +

    Path

    +
    +
    Returns:
    +

    Path to saved file

    +
    +
    +
    + +
    +
    +scitex.security.get_latest_alerts_file(security_dir=None)[source]
    +

    Get path to the latest security alerts file.

    +
    +
    Parameters:
    +

    security_dir (Optional[Path]) – Directory containing security files. Defaults to ./logs/security

    +
    +
    Return type:
    +

    Optional[Path]

    +
    +
    Returns:
    +

    Path to latest file, or None if not found

    +
    +
    +
    + +
    +
    +scitex.security.format_alerts_report(alerts)[source]
    +

    Format alerts into a readable text report.

    +
    +
    Parameters:
    +

    alerts (Dict[str, List[Dict]]) – Dictionary of alerts from check_github_alerts()

    +
    +
    Return type:
    +

    str

    +
    +
    Returns:
    +

    Formatted text report

    +
    +
    +
    + +
    +
    +exception scitex.security.GitHubSecurityError[source]
    +

    Bases: Exception

    +

    Raised when GitHub security operations fail.

    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/session.html b/src/scitex/_sphinx_html/source/api/session.html new file mode 100644 index 000000000..c1e9c3d43 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/session.html @@ -0,0 +1,883 @@ + + + + + + + + + Session Decorator (@stx.session) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Session Decorator (@stx.session)

    +

    The @stx.session decorator is the primary entry point for SciTeX +scripts. It wraps a function to provide automatic CLI generation, +output directory management, configuration injection, and provenance tracking.

    +
    +

    Basic Usage

    +
    import scitex as stx
    +
    +@stx.session
    +def main(
    +    data_path="data.csv",       # CLI: --data-path data.csv
    +    threshold=0.5,              # CLI: --threshold 0.7
    +    CONFIG=stx.INJECTED,        # Auto-injected session config
    +    plt=stx.INJECTED,           # Pre-configured matplotlib
    +    logger=stx.INJECTED,        # Session logger
    +):
    +    """Analyze experimental data."""
    +    data = stx.io.load(data_path)
    +    result = process(data, threshold)
    +    stx.io.save(result, "output.csv")
    +    return 0  # exit code (0 = success)
    +
    +if __name__ == "__main__":
    +    main()  # No arguments triggers CLI mode
    +
    +
    +

    Run from the command line:

    +
    python my_script.py --data-path experiment.csv --threshold 0.3
    +python my_script.py --help  # Shows all parameters with defaults
    +
    +
    +
    +
    +

    How It Works

    +Session lifecycle: main() → Parse CLI → Create dir → Load config → Execute → SUCCESS or ERROR + +

    When main() is called without arguments, the decorator:

    +
      +
    1. Parses CLI arguments from the function signature (type hints and defaults become argparse options)

    2. +
    3. Creates a session directory under script_out/RUNNING/{session_id}/

    4. +
    5. Loads configuration from ./config/*.yaml files into CONFIG

    6. +
    7. Injects globals (CONFIG, plt, COLORS, logger, rngg) into the function

    8. +
    9. Redirects stdout/stderr to log files

    10. +
    11. Executes the function with parsed arguments

    12. +
    13. Moves output from RUNNING/ to FINISHED_SUCCESS/ (or FINISHED_ERROR/)

    14. +
    +

    When called with arguments (e.g., main(data_path="x.csv")), the decorator +is bypassed and the function runs directly – useful for testing and notebooks.

    +
    +
    +

    Output Directory Structure

    +

    Each run produces a self-contained output directory:

    +
    my_script_out/
    ++-- FINISHED_SUCCESS/
    +|   +-- 2026Y-02M-13D-14h30m15s_Z5MR/
    +|       +-- CONFIGS/
    +|       |   +-- CONFIG.yaml     # Frozen configuration
    +|       |   +-- CONFIG.pkl      # Pickled config
    +|       +-- logs/
    +|       |   +-- stdout.log      # Captured stdout
    +|       |   +-- stderr.log      # Captured stderr
    +|       +-- output.csv          # Your saved files
    +|       +-- sine.png            # Your saved figures
    +|       +-- sine.csv            # Auto-exported figure data
    ++-- FINISHED_ERROR/
    +|   +-- ...                     # Runs that returned non-zero
    ++-- RUNNING/
    +    +-- ...                     # Currently active sessions
    +
    +
    +

    The session ID format is YYYY-MM-DD-HH:MM:SS_XXXX where XXXX is +a random 4-character suffix for uniqueness.

    +
    +
    +

    Injected Parameters

    +

    Use stx.INJECTED as the default value to receive auto-injected objects:

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Parameter Name

    Type

    Description

    CONFIG

    DotDict

    Session config with ID, SDIR_RUN, FILE, ARGS, plus all ./config/*.yaml values

    plt

    module

    matplotlib.pyplot configured for the session (Agg backend, style settings)

    COLORS

    DotDict

    Color palette for consistent plotting

    logger

    Logger

    SciTeX logger writing to session log files

    rngg

    RandomStateManager

    Reproducibility manager (seeds fixed by default)

    +

    Only request the parameters you need:

    +
    @stx.session
    +def main(n=100, CONFIG=stx.INJECTED):
    +    """Minimal example -- only CONFIG injected."""
    +    print(f"Session ID: {CONFIG.ID}")
    +    print(f"Output dir: {CONFIG.SDIR_RUN}")
    +    return 0
    +
    +
    +
    +
    +

    CONFIG Object

    +

    The injected CONFIG is a DotDict supporting both dictionary and +dot-notation access:

    +
    CONFIG["MODEL"]["hidden_size"]   # dict-style
    +CONFIG.MODEL.hidden_size         # dot-style (equivalent)
    +
    +
    +

    It contains:

    +
    CONFIG.ID             # "2026Y-02M-13D-14h30m15s_Z5MR"
    +CONFIG.PID            # Process ID
    +CONFIG.FILE           # Path to the script
    +CONFIG.SDIR_OUT       # Base output directory
    +CONFIG.SDIR_RUN       # Current session's output directory
    +CONFIG.START_DATETIME # When the session started
    +CONFIG.ARGS           # Parsed CLI arguments as dict
    +CONFIG.EXIT_STATUS    # 0 (success), 1 (error), or None
    +
    +
    +

    Any YAML files in ./config/ are merged into CONFIG:

    +
    # ./config/EXPERIMENT.yaml
    +learning_rate: 0.001
    +batch_size: 32
    +
    +
    +
    # Accessible as:
    +CONFIG.EXPERIMENT.learning_rate  # 0.001
    +CONFIG.EXPERIMENT.batch_size     # 32
    +
    +
    +
    +
    +

    Decorator Options

    +
    @stx.session(verbose=True, agg=False, notify=True, sdir_suffix="v2")
    +def main(...):
    +    ...
    +
    +
    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Option

    Type

    Default

    Description

    verbose

    bool

    False

    Enable verbose logging

    agg

    bool

    True

    Use matplotlib Agg backend (set False for interactive plots)

    notify

    bool

    False

    Send notification when session completes

    sdir_suffix

    str

    None

    Append suffix to output directory name

    +
    +
    +

    Best Practices

    +
      +
    1. One session per script – each .py file should have one @stx.session function

    2. +
    3. Return 0 for success – the return value becomes the exit status

    4. +
    5. Save outputs with stx.io.save – files go into the session directory and are provenance-tracked

    6. +
    7. Put config in YAML – use ./config/*.yaml instead of hardcoding parameters

    8. +
    9. Use stx.repro.fix_seeds() – already called by default via rngg

    10. +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/sh.html b/src/scitex/_sphinx_html/source/api/sh.html new file mode 100644 index 000000000..d0ac3e6c8 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/sh.html @@ -0,0 +1,674 @@ + + + + + + + + + sh Module (stx.sh) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    sh Module (stx.sh)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/social.html b/src/scitex/_sphinx_html/source/api/social.html new file mode 100644 index 000000000..07e1e1d64 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/social.html @@ -0,0 +1,674 @@ + + + + + + + + + social Module (stx.social) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    social Module (stx.social)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/stats.html b/src/scitex/_sphinx_html/source/api/stats.html new file mode 100644 index 000000000..920360e58 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/stats.html @@ -0,0 +1,813 @@ + + + + + + + + + Stats Module (stx.stats) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Stats Module (stx.stats)

    +

    23 statistical tests with effect sizes, confidence intervals, and +publication-ready formatting.

    +
    +

    Quick Reference

    +
    import scitex as stx
    +import numpy as np
    +
    +g1 = np.random.normal(0, 1, 50)
    +g2 = np.random.normal(0.5, 1, 50)
    +
    +# Run a test
    +result = stx.stats.test_ttest_ind(g1, g2)
    +
    +# Result is a flat dict with all details
    +print(result["statistic"])     # t-statistic
    +print(result["pvalue"])        # p-value
    +print(result["effect_size"])   # Cohen's d
    +print(result["stars"])         # Significance stars
    +
    +# Get as DataFrame or LaTeX
    +df = stx.stats.test_ttest_ind(g1, g2, return_as="dataframe")
    +tex = stx.stats.test_ttest_ind(g1, g2, return_as="latex")
    +
    +
    +
    +
    +

    Available Tests

    +

    Parametric

    +
      +
    • test_ttest_1samp(data, popmean) – One-sample t-test

    • +
    • test_ttest_ind(g1, g2) – Independent two-sample t-test

    • +
    • test_ttest_rel(g1, g2) – Paired t-test

    • +
    • test_anova(*groups) – One-way ANOVA

    • +
    • test_anova_2way(data, factor1, factor2) – Two-way ANOVA

    • +
    • test_anova_rm(data, groups) – Repeated measures ANOVA

    • +
    +

    Non-parametric

    +
      +
    • test_mannwhitneyu(g1, g2) – Mann-Whitney U test

    • +
    • test_wilcoxon(g1, g2) – Wilcoxon signed-rank test

    • +
    • test_kruskal(*groups) – Kruskal-Wallis H test

    • +
    • test_friedman(*groups) – Friedman test

    • +
    • test_brunner_munzel(g1, g2) – Brunner-Munzel test

    • +
    +

    Correlation

    +
      +
    • test_pearson(x, y) – Pearson correlation

    • +
    • test_spearman(x, y) – Spearman rank correlation

    • +
    • test_kendall(x, y) – Kendall tau correlation

    • +
    • test_theilsen(x, y) – Theil-Sen robust regression

    • +
    +

    Categorical

    +
      +
    • test_chi2(observed) – Chi-squared test

    • +
    • test_fisher(table) – Fisher’s exact test

    • +
    • test_mcnemar(table) – McNemar test

    • +
    • test_cochran_q(*groups) – Cochran’s Q test

    • +
    +

    Normality

    +
      +
    • test_shapiro(data) – Shapiro-Wilk test

    • +
    • test_ks_1samp(data) – One-sample Kolmogorov-Smirnov test

    • +
    • test_ks_2samp(x, y) – Two-sample Kolmogorov-Smirnov test

    • +
    • test_normality(*samples) – Multi-sample normality check

    • +
    +
    +
    +

    Seaborn-Style Data Parameter

    +

    All two-sample and one-sample tests accept an optional data parameter +for DataFrame/CSV column resolution (like seaborn):

    +
    import pandas as pd
    +
    +df = pd.read_csv("experiment.csv")
    +
    +# Two-sample: column names as x/y
    +result = stx.stats.test_ttest_ind(x="before", y="after", data=df)
    +
    +# One-sample: column name as x
    +result = stx.stats.test_shapiro(x="scores", data=df)
    +
    +# Multi-group: value + group columns
    +result = stx.stats.test_anova(data=df, value_col="score", group_col="treatment")
    +
    +# Also works with CSV path
    +result = stx.stats.test_ttest_ind(x="col1", y="col2", data="data.csv")
    +
    +
    +
    +
    +

    Test Recommendation

    +

    Not sure which test to use? Let SciTeX recommend:

    +
    recommendations = stx.stats.recommend_tests(
    +    n_groups=2,
    +    sample_sizes=[30, 35],
    +    outcome_type="continuous",
    +    paired=False,
    +)
    +
    +
    +
    +
    +

    Output Formats

    +

    Every test supports return_as parameter:

    +
      +
    • "dict" (default) – Returns plain dict with all results

    • +
    • "dataframe" – Returns pandas DataFrame

    • +
    +
    +
    +

    Descriptive Statistics

    +
    stx.stats.describe(data)                    # mean, std, median, IQR, etc.
    +stx.stats.effect_sizes.cohens_d(g1, g2)     # Cohen's d
    +stx.stats.test_normality(g1, g2)            # Multi-sample normality
    +stx.stats.p_to_stars(0.003)                 # "**"
    +
    +
    +
    +
    +

    Multiple Comparison Correction

    +
    corrected = stx.stats.correct_pvalues(
    +    [0.01, 0.03, 0.05, 0.001],
    +    method="fdr_bh",
    +)
    +
    +
    +
    +
    +

    Post-hoc Tests

    +
    stx.stats.posthoc_test(
    +    [g1, g2, g3],
    +    group_names=["Control", "Treatment A", "Treatment B"],
    +    method="tukey",
    +)
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/str.html b/src/scitex/_sphinx_html/source/api/str.html new file mode 100644 index 000000000..e6369fb8d --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/str.html @@ -0,0 +1,674 @@ + + + + + + + + + str Module (stx.str) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    str Module (stx.str)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/template.html b/src/scitex/_sphinx_html/source/api/template.html new file mode 100644 index 000000000..8b806971d --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/template.html @@ -0,0 +1,824 @@ + + + + + + + + + Template Module (stx.template) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Template Module (stx.template)

    +

    Project scaffolding and code snippet templates for quick starts. +Create fully structured research projects, Python packages, or +academic papers with a single command.

    +
    +

    Project Templates

    +
    # Clone a project template
    +scitex template clone research my_project
    +scitex template clone pip_project my_package
    +scitex template clone paper my_paper
    +scitex template clone app my_app
    +scitex template clone singularity my_container
    +
    +
    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + +

    Template

    Description

    research

    Full scientific workflow (scripts, data, docs, config, session scaffolding)

    research_minimal

    Essential modules only for lightweight experiments

    pip_project

    Distributable Python package for PyPI (pyproject.toml, tests, CI)

    paper

    Academic paper with LaTeX/BibTeX structure, SciTeX writer integration

    app

    SciTeX application with bridge-init, MountPoint, and EventBus

    singularity

    Reproducible containerized environment (Singularity/Apptainer definition)

    +
    +

    What You Get

    +

    A research template creates:

    +
    my_project/
    ++-- config/
    +|   +-- EXPERIMENT.yaml       # Experiment parameters
    ++-- scripts/
    +|   +-- main.py               # @stx.session entry point
    ++-- data/                     # Raw data directory
    ++-- docs/                     # Documentation
    ++-- tests/                    # Test suite
    ++-- Makefile                  # Common tasks
    ++-- pyproject.toml            # Package metadata
    +
    +
    +
    +
    +
    +

    Git Strategies

    +

    Control how git is initialized in the cloned template:

    + ++++ + + + + + + + + + + + + + + + + + + + +

    Strategy

    Behavior

    child (default)

    Fresh git repo, isolated from template

    parent

    Use parent repo if available

    origin

    Preserve template’s git history

    None

    No git initialization

    +
    from scitex.template import clone_template
    +
    +clone_template("research", "my_project", git_strategy="child")
    +
    +
    +
    +
    +

    Code Templates

    +

    Ready-to-use code snippets for common SciTeX patterns. Each snippet +is a complete, runnable script.

    +
    # List available code templates
    +scitex template code list
    +
    +# Get a template (prints to stdout)
    +scitex template code session           # Full @stx.session script
    +scitex template code session-minimal   # Lightweight session
    +scitex template code session-plot      # Figure-focused session
    +scitex template code session-stats     # Statistics-focused session
    +scitex template code io                # I/O operations
    +scitex template code plt               # Plotting patterns
    +scitex template code stats             # Statistical analysis
    +scitex template code scholar           # Literature management
    +
    +# Save to a file
    +scitex template code session --output analyze.py
    +
    +
    +
    +
    +

    Python API

    +
    from scitex.template import clone_template, get_code_template
    +
    +# Clone a project template
    +clone_template("research", "my_experiment", git_strategy="child")
    +
    +# Get a code snippet as a string
    +code = get_code_template("session")
    +print(code)
    +
    +# Get a code snippet and write to file
    +code = get_code_template("session", filepath="analyze.py")
    +
    +
    +
    +
    +

    MCP Interface

    +

    Code templates are also available to AI agents via MCP tools:

    +
    # List templates
    +template_list_code_templates()
    +
    +# Get a specific template
    +template_get_code_template(name="session-plot")
    +
    +# Clone a project
    +template_clone_template(template_type="research", name="my_project")
    +
    +
    +
    +
    +

    API Reference

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/tex.html b/src/scitex/_sphinx_html/source/api/tex.html new file mode 100644 index 000000000..1fd153aea --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/tex.html @@ -0,0 +1,674 @@ + + + + + + + + + tex Module (stx.tex) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    tex Module (stx.tex)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/torch.html b/src/scitex/_sphinx_html/source/api/torch.html new file mode 100644 index 000000000..a25b24bf3 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/torch.html @@ -0,0 +1,674 @@ + + + + + + + + + torch Module (stx.torch) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    torch Module (stx.torch)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/tunnel.html b/src/scitex/_sphinx_html/source/api/tunnel.html new file mode 100644 index 000000000..c8756fa0c --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/tunnel.html @@ -0,0 +1,674 @@ + + + + + + + + + tunnel Module (stx.tunnel) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    tunnel Module (stx.tunnel)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/types.html b/src/scitex/_sphinx_html/source/api/types.html new file mode 100644 index 000000000..4cae70141 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/types.html @@ -0,0 +1,674 @@ + + + + + + + + + types Module (stx.types) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    types Module (stx.types)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/ui.html b/src/scitex/_sphinx_html/source/api/ui.html new file mode 100644 index 000000000..09f2f4e97 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/ui.html @@ -0,0 +1,734 @@ + + + + + + + + + ui Module (stx.ui) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    ui Module (stx.ui)

    +

    scitex-ui — Shared frontend UI components for the SciTeX ecosystem.

    +

    Components ship as TypeScript + CSS static assets, discoverable by Django’s +AppDirectoriesFinder when added to INSTALLED_APPS.

    +

    Python API provides component metadata and registration.

    +
    +
    +scitex.ui.get_component(name)[source]
    +

    Get metadata for a registered component.

    +
    +
    Return type:
    +

    Optional[Any]

    +
    +
    +
    + +
    +
    +scitex.ui.list_components()[source]
    +

    List all registered component names.

    +
    +
    Return type:
    +

    list[str]

    +
    +
    +
    + +
    +
    +scitex.ui.get_static_dir()[source]
    +

    Return the absolute path to scitex_ui’s static asset directory.

    +

    This is the directory containing css/ and ts/ subdirectories. +Works for both pip-installed packages and editable (dev) installs.

    +

    Useful for build tools (Vite, Webpack) that need to resolve +scitex-ui source files at build time.

    +
    +
    Returns:
    +

    e.g. /usr/lib/python3.11/.../scitex_ui/static/scitex_ui

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    +
    +scitex.ui.get_docs_path()[source]
    +

    Return the absolute path to scitex_ui’s bundled documentation directory.

    +

    The directory contains APP_DEVELOPER_GUIDE.md and the Sphinx-built +HTML docs. Works for both pip-installed packages and editable (dev) installs.

    +
    +
    Returns:
    +

    e.g. /usr/lib/python3.11/.../scitex_ui/_docs

    +
    +
    Return type:
    +

    Path

    +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/utils.html b/src/scitex/_sphinx_html/source/api/utils.html new file mode 100644 index 000000000..4fed35e52 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/utils.html @@ -0,0 +1,674 @@ + + + + + + + + + utils Module (stx.utils) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    utils Module (stx.utils)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/web.html b/src/scitex/_sphinx_html/source/api/web.html new file mode 100644 index 000000000..86760ab51 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/web.html @@ -0,0 +1,674 @@ + + + + + + + + + web Module (stx.web) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    web Module (stx.web)

    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/api/writer.html b/src/scitex/_sphinx_html/source/api/writer.html new file mode 100644 index 000000000..7bae936b3 --- /dev/null +++ b/src/scitex/_sphinx_html/source/api/writer.html @@ -0,0 +1,1274 @@ + + + + + + + + + Writer Module (stx.writer) — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Writer Module (stx.writer)

    +

    LaTeX manuscript compilation, figure/table management, bibliography +handling, and IMRAD writing guidelines.

    +
    +

    Note

    +

    stx.writer wraps the standalone +scitex-writer package. +Install with: pip install scitex-writer.

    +
    +
    +

    Quick Reference

    +
    from scitex.writer import Writer
    +from pathlib import Path
    +
    +writer = Writer(Path("my_paper"))
    +
    +# Compile manuscript → PDF
    +result = writer.compile_manuscript()
    +if result.success:
    +    print(f"PDF: {result.output_pdf}")
    +
    +# Compile supplementary materials
    +result = writer.compile_supplementary()
    +
    +# Compile revision with change tracking
    +result = writer.compile_revision(track_changes=True)
    +
    +
    +
    +
    +

    CLI Usage

    +
    # Compile
    +scitex writer compile manuscript ./my-paper
    +scitex writer compile supplementary ./my-paper
    +scitex writer compile revision ./my-paper --track-changes
    +
    +# Bibliography
    +scitex writer bib list ./my-paper
    +scitex writer bib add ./my-paper "@article{...}"
    +
    +# Tables and figures
    +scitex writer tables add ./my-paper data.csv
    +scitex writer figures list ./my-paper
    +
    +# Writing guidelines
    +scitex writer guidelines get abstract
    +
    +
    +
    +
    +

    Project Structure

    +

    A writer project follows this layout:

    +
    my_paper/
    ++-- 00_shared/
    +|   +-- bibliography.bib
    +|   +-- figures/
    +|   +-- tables/
    ++-- 01_manuscript/
    +|   +-- main.tex
    +|   +-- sections/
    ++-- 02_supplementary/
    +|   +-- main.tex
    ++-- 03_revision/
    +    +-- main.tex
    +
    +
    +

    Create a new project:

    +
    scitex template clone paper my_paper
    +
    +
    +
    +
    +

    Key Classes

    +
      +
    • Writer – Main entry point for compilation and project management

    • +
    • CompilationResult – Compilation outcome (success, output path, logs)

    • +
    • ManuscriptTree – Document tree for the main manuscript

    • +
    • SupplementaryTree – Document tree for supplementary materials

    • +
    • RevisionTree – Document tree for revision responses

    • +
    +
    +
    +

    Document Management

    +

    Figures:

    +
    # Add figure (copies image + creates caption file)
    +writer.add_figure("fig1", "plot.png", caption="Results")
    +
    +# List figures
    +writer.list_figures()
    +
    +# Convert between formats
    +writer.convert_figure("figure.pdf", "figure.png", dpi=300)
    +
    +
    +

    Tables:

    +
    # Add table from CSV
    +writer.add_table("tab1", csv_content, caption="Demographics")
    +
    +# CSV ↔ LaTeX conversion
    +writer.csv_to_latex("data.csv", "table.tex")
    +writer.latex_to_csv("table.tex", "data.csv")
    +
    +
    +

    Bibliography:

    +
    # Add BibTeX entry
    +writer.add_bibentry('@article{key, title={...}, ...}')
    +
    +# Merge multiple .bib files
    +writer.merge_bibfiles(output_file="bibliography.bib")
    +
    +
    +
    +
    +

    Writing Guidelines

    +

    IMRAD guidelines for each manuscript section:

    +
    scitex writer guidelines list
    +scitex writer guidelines get introduction
    +
    +
    +
    from scitex.writer import guidelines
    +
    +# Get guideline for a section
    +guide = guidelines.get("methods")
    +
    +# Build editing prompt: guideline + draft
    +prompt = guidelines.build("discussion", draft_text)
    +
    +
    +
    +
    +

    Compilation Options

    +
    result = writer.compile_manuscript(
    +    timeout=300,        # Max compilation time (seconds)
    +    no_figs=False,      # Exclude figures
    +    no_tables=False,    # Exclude tables
    +    draft=False,        # Draft mode (fast, lower quality)
    +    dark_mode=False,    # Dark color scheme
    +    quiet=False,        # Suppress output
    +)
    +
    +
    +
    +
    +

    API Reference

    +

    SciTeX Writer - LaTeX manuscript compilation system with MCP server.

    +
    +
    Three Interfaces:
      +
    • Python API: import scitex_writer as sw

    • +
    • CLI: scitex-writer <command>

    • +
    • MCP: 30 tools for AI agents

    • +
    +
    +
    Modules:
      +
    • compile: Compile manuscripts to PDF

    • +
    • export: Export manuscript for arXiv submission

    • +
    • project: Clone, info, get_pdf

    • +
    • tables: List, add, remove, csv_to_latex

    • +
    • figures: List, add, remove, convert

    • +
    • bib: List, add, remove, merge

    • +
    • guidelines: IMRAD writing tips

    • +
    • prompts: AI2 Asta integration

    • +
    +
    +
    +
    +
    +scitex.writer.usage()
    +

    Get the usage guide with branding applied.

    +
    +
    Returns:
    +

    Formatted usage guide string.

    +
    +
    Return type:
    +

    str

    +
    +
    +
    + +
    +
    +class scitex.writer.Writer(project_dir, name=None, git_strategy='child', branch=None, tag=None)[source]
    +

    Bases: object

    +

    LaTeX manuscript compiler.

    +
    +
    +__init__(project_dir, name=None, git_strategy='child', branch=None, tag=None)[source]
    +

    Initialize for project directory.

    +

    If directory doesn’t exist, creates new project.

    +
    +
    Parameters:
    +
      +
    • project_dir (Path) – Path to project directory.

    • +
    • name (Optional[str]) – Project name (used if creating new project).

    • +
    • git_strategy (Optional[str]) – Git initialization strategy: +- ‘child’: Create isolated git in project directory (default) +- ‘parent’: Use parent git repository +- ‘origin’: Preserve template’s original git history +- None or ‘none’: Disable git initialization

    • +
    • branch (Optional[str]) – Specific branch of template repository to clone. +If None, clones the default branch. Mutually exclusive with tag.

    • +
    • tag (Optional[str]) – Specific tag/release of template repository to clone. +If None, clones the default branch. Mutually exclusive with branch.

    • +
    +
    +
    +
    + +
    +
    +compile_manuscript(timeout=300, log_callback=None, progress_callback=None)[source]
    +

    Compile manuscript to PDF with optional live callbacks.

    +

    Runs scripts/shell/compile_manuscript.sh with configured settings.

    +
    +
    Parameters:
    +
      +
    • timeout (int) – Maximum compilation time in seconds (default: 300).

    • +
    • log_callback (Optional[Callable[[str], None]]) – Called with each log line: log_callback(“Running pdflatex…”).

    • +
    • progress_callback (Optional[Callable[[int, str], None]]) – Called with progress: progress_callback(50, “Pass 2/3”).

    • +
    +
    +
    Returns:
    +

    With success status, PDF path, and errors/warnings.

    +
    +
    Return type:
    +

    CompilationResult

    +
    +
    +
    +

    Examples

    +
    >>> writer = Writer(Path("my_paper"))
    +>>> result = writer.compile_manuscript()
    +>>> if result.success:
    +...     print(f"PDF created: {result.output_pdf}")
    +
    +
    +
    +
    + +
    +
    +compile_supplementary(timeout=300, log_callback=None, progress_callback=None)[source]
    +

    Compile supplementary materials to PDF with optional live callbacks.

    +

    Runs scripts/shell/compile_supplementary.sh with configured settings.

    +
    +
    Parameters:
    +
    +
    +
    Returns:
    +

    With success status, PDF path, and errors/warnings.

    +
    +
    Return type:
    +

    CompilationResult

    +
    +
    +
    +

    Examples

    +
    >>> writer = Writer(Path("my_paper"))
    +>>> result = writer.compile_supplementary()
    +>>> if result.success:
    +...     print(f"PDF created: {result.output_pdf}")
    +
    +
    +
    +
    + +
    +
    +compile_revision(track_changes=False, timeout=300, log_callback=None, progress_callback=None)[source]
    +

    Compile revision document with optional change tracking and live callbacks.

    +

    Runs scripts/shell/compile_revision.sh with configured settings.

    +
    +
    Parameters:
    +
      +
    • track_changes (bool) – Enable change tracking in compiled PDF (default: False).

    • +
    • timeout (int) – Maximum compilation time in seconds (default: 300).

    • +
    • log_callback (Optional[Callable[[str], None]]) – Called with each log line.

    • +
    • progress_callback (Optional[Callable[[int, str], None]]) – Called with progress updates.

    • +
    +
    +
    Returns:
    +

    With success status, PDF path, and errors/warnings.

    +
    +
    Return type:
    +

    CompilationResult

    +
    +
    +
    +

    Examples

    +
    >>> writer = Writer(Path("my_paper"))
    +>>> result = writer.compile_revision(track_changes=True)
    +>>> if result.success:
    +...     print(f"Revision PDF: {result.output_pdf}")
    +
    +
    +
    +
    + +
    +
    +watch(on_compile=None)[source]
    +

    Auto-recompile on file changes.

    +
    +
    Return type:
    +

    None

    +
    +
    +
    + +
    +
    +get_pdf(doc_type='manuscript')[source]
    +

    Get output PDF path (Read).

    +
    +
    Return type:
    +

    Optional[Path]

    +
    +
    +
    + +
    +
    +delete()[source]
    +

    Delete project directory (Delete).

    +
    +
    Return type:
    +

    bool

    +
    +
    +
    + +
    + +
    +
    +class scitex.writer.CompilationResult(success, exit_code, stdout, stderr, output_pdf=None, diff_pdf=None, log_file=None, duration=0.0, errors=<factory>, warnings=<factory>)[source]
    +

    Bases: object

    +

    Result of LaTeX compilation.

    +
    +
    +success: bool
    +

    Whether compilation succeeded (exit code 0)

    +
    + +
    +
    +exit_code: int
    +

    Process exit code

    +
    + +
    +
    +stdout: str
    +

    Standard output from compilation

    +
    + +
    +
    +stderr: str
    +

    Standard error from compilation

    +
    + +
    +
    +output_pdf: Path | None = None
    +

    Path to generated PDF (if successful)

    +
    + +
    +
    +diff_pdf: Path | None = None
    +

    Path to diff PDF with tracked changes (if generated)

    +
    + +
    +
    +log_file: Path | None = None
    +

    Path to compilation log file

    +
    + +
    +
    +duration: float = 0.0
    +

    Compilation duration in seconds

    +
    + +
    +
    +errors: List[str]
    +

    Parsed LaTeX errors (if any)

    +
    + +
    +
    +warnings: List[str]
    +

    Parsed LaTeX warnings (if any)

    +
    + +
    +
    +__str__()[source]
    +

    Human-readable summary.

    +
    + +
    + +
    +
    +class scitex.writer.ManuscriptTree(root, git_root=None, contents=None, base=None, readme=None, archive=None)[source]
    +

    Bases: object

    +

    Manuscript directory structure (01_manuscript/).

    +
    +
    +root: Path
    +
    + +
    +
    +git_root: Path | None = None
    +
    + +
    +
    +contents: ManuscriptContents = None
    +
    + +
    +
    +base: DocumentSection = None
    +
    + +
    +
    +readme: DocumentSection = None
    +
    + +
    +
    +archive: Path = None
    +
    + +
    +
    +__post_init__()[source]
    +

    Initialize all instances.

    +
    + +
    +
    +verify_structure()[source]
    +

    Verify manuscript structure has required components.

    +
    +
    Return type:
    +

    tuple[bool, list[str]]

    +
    +
    Returns:
    +

    (is_valid, list_of_missing_items_with_paths)

    +
    +
    +
    + +
    + +
    +
    +class scitex.writer.SupplementaryTree(root, git_root=None, contents=None, base=None, supplementary=None, supplementary_diff=None, readme=None, archive=None)[source]
    +

    Bases: object

    +

    Supplementary directory structure (02_supplementary/).

    +
    +
    +root: Path
    +
    + +
    +
    +git_root: Path | None = None
    +
    + +
    +
    +contents: SupplementaryContents = None
    +
    + +
    +
    +base: DocumentSection = None
    +
    + +
    +
    +supplementary: DocumentSection = None
    +
    + +
    +
    +supplementary_diff: DocumentSection = None
    +
    + +
    +
    +readme: DocumentSection = None
    +
    + +
    +
    +archive: Path = None
    +
    + +
    +
    +__post_init__()[source]
    +

    Initialize all instances.

    +
    + +
    +
    +verify_structure()[source]
    +

    Verify supplementary structure has required components.

    +
    +
    Return type:
    +

    tuple[bool, list[str]]

    +
    +
    Returns:
    +

    (is_valid, list_of_missing_items_with_paths)

    +
    +
    +
    + +
    + +
    +
    +class scitex.writer.RevisionTree(root, git_root=None, contents=None, base=None, revision=None, readme=None, archive=None, docs=None)[source]
    +

    Bases: object

    +

    Revision directory structure (03_revision/).

    +
    +
    +root: Path
    +
    + +
    +
    +git_root: Path | None = None
    +
    + +
    +
    +contents: RevisionContents = None
    +
    + +
    +
    +base: DocumentSection = None
    +
    + +
    +
    +revision: DocumentSection = None
    +
    + +
    +
    +readme: DocumentSection = None
    +
    + +
    +
    +archive: Path = None
    +
    + +
    +
    +docs: Path = None
    +
    + +
    +
    +__post_init__()[source]
    +

    Initialize all instances.

    +
    + +
    +
    +verify_structure()[source]
    +

    Verify revision structure has required components.

    +
    +
    Return type:
    +

    tuple[bool, list[str]]

    +
    +
    Returns:
    +

    (is_valid, list_of_missing_items_with_paths)

    +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/cli.html b/src/scitex/_sphinx_html/source/cli.html new file mode 100644 index 000000000..7c5b410ea --- /dev/null +++ b/src/scitex/_sphinx_html/source/cli.html @@ -0,0 +1,752 @@ + + + + + + + + + CLI Reference — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    CLI Reference

    +

    SciTeX provides a unified command-line interface. All commands follow the +pattern:

    +
    scitex <module> <command> [options]
    +
    +
    +

    Run scitex --help-recursive to see every available command.

    +
    +

    General

    +
    scitex --help-recursive        # Show all commands across all modules
    +scitex list-python-apis        # List all Python APIs (210 items)
    +scitex mcp list-tools          # List all MCP tools (120+ tools)
    +
    +
    +
    +
    +

    Scholar

    +

    Literature search, PDF management, and metadata enrichment.

    +
    scitex scholar fetch <DOI>     # Download paper by DOI
    +scitex scholar bibtex <file>   # Enrich BibTeX file with metadata
    +scitex scholar search <query>  # Search for papers
    +
    +
    +
    +
    +

    Stats

    +

    Statistical testing with automatic test recommendation.

    +
    scitex stats recommend         # Suggest appropriate statistical tests
    +scitex stats run <test> <data> # Run a specific test on data
    +
    +
    +
    +
    +

    Audio

    +

    Text-to-speech and audio playback.

    +
    scitex audio speak <text>      # Convert text to speech
    +scitex audio play <file>       # Play an audio file
    +
    +
    +
    +
    +

    Capture

    +

    Screen capture and monitoring.

    +
    scitex capture snap            # Take a screenshot
    +scitex capture monitor         # Start screen monitoring
    +
    +
    +
    +
    +

    Template

    +

    Project scaffolding from built-in templates.

    +
    scitex template clone <type> <name>
    +
    +
    +

    Available template types:

    +
      +
    • research – Research project with session tracking

    • +
    • pip – Python pip package

    • +
    • paper – LaTeX manuscript project

    • +
    • app – SciTeX app with bridge integration

    • +
    • singularity – Singularity container definition

    • +
    +
    +
    +

    Introspect

    +

    Python code introspection for exploring APIs.

    +
    scitex introspect api <module>       # List APIs for a module
    +scitex introspect source <function>  # View source code of a function
    +
    +
    +
    +
    +

    Dev

    +

    Ecosystem development and version management.

    +
    scitex dev versions            # Show versions of all installed packages
    +scitex dev ecosystem           # Manage ecosystem packages
    +
    +
    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/concepts.html b/src/scitex/_sphinx_html/source/concepts.html new file mode 100644 index 000000000..e520c7b18 --- /dev/null +++ b/src/scitex/_sphinx_html/source/concepts.html @@ -0,0 +1,902 @@ + + + + + + + + + Core Concepts — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Core Concepts

    +

    This page explains the design patterns behind SciTeX. Understanding +these patterns will help you use the toolkit effectively and extend it +for your own workflows.

    +
    +

    Modular Architecture

    +

    SciTeX is not a monolith. Each module is backed by an independent +package that can be installed and used on its own:

    +
    pip install scitex-io       # Use standalone: import scitex_io
    +pip install scitex-stats    # Use standalone: import scitex_stats
    +pip install figrecipe       # Use standalone: import figrecipe
    +
    +
    +

    When you install scitex, these packages are available under a +unified namespace:

    +
    import scitex as stx
    +
    +stx.io.save(data, "out.csv")     # scitex-io
    +stx.stats.run_test(...)          # scitex-stats
    +stx.plt.subplots()               # figrecipe
    +
    +
    +

    Lazy loading ensures that importing scitex does not pull in every +dependency. Modules are loaded only when first accessed. If you never +touch stx.scholar, its dependencies are never imported and startup +remains fast.

    +

    The main scitex package itself contains no runtime logic for I/O, +statistics, or plotting. It is an orchestrator: it re-exports +sub-package APIs, provides the CLI entry point, hosts the MCP server, +and owns the session decorator.

    +
    +
    +

    Session Decorator

    +

    The @stx.session decorator converts a plain Python function into a +reproducible, CLI-enabled experiment.

    +
    import scitex as stx
    +
    +@stx.session
    +def main(
    +    n_epochs=50,
    +    learning_rate=0.001,
    +    CONFIG=stx.session.INJECTED,
    +    logger=stx.session.INJECTED,
    +):
    +    logger.info(f"Training for {n_epochs} epochs at lr={learning_rate}")
    +    return 0
    +
    +if __name__ == "__main__":
    +    main()
    +
    +
    +

    Why it exists. Research scripts tend to accumulate boilerplate: +argument parsing, output directory creation, logging setup, random seed +management, config file loading. The session decorator handles all of +these so that the function body contains only experiment logic.

    +

    What it provides:

    +
      +
    1. Automatic CLI. Function parameters become command-line arguments. +n_epochs=50 becomes --n-epochs 50 with no argparse code.

    2. +
    3. Config injection. Parameters in ./config/*.yaml are aggregated +into a single CONFIG dict and injected at runtime.

    4. +
    5. Reproducibility. Random seeds are fixed. All parameters, stdout, +and stderr are logged to the output directory.

    6. +
    7. Output organization. Each run gets a timestamped directory under +script_out/:

      +
      script_out/FINISHED_SUCCESS/2026-03-18_14-30-00_AbC1/
      ++-- CONFIGS/CONFIG.yaml    # All parameters
      ++-- logs/stdout.log        # Captured output
      ++-- logs/stderr.log        # Captured errors
      +
      +
      +
    8. +
    +

    Parameters marked stx.session.INJECTED are sentinel values. The +decorator replaces them with runtime objects (logger, config, plotting +backend, color palette, random generator). You never pass these +yourself – they signal to the decorator what to inject.

    +
    +
    +

    Unified I/O

    +

    stx.io.save and stx.io.load provide a single interface for 30+ +file formats. The format is determined by the file extension:

    +
    stx.io.save(dataframe, "results.csv")
    +stx.io.save(array, "weights.npy")
    +stx.io.save(fig, "figure.png")
    +stx.io.save(config, "params.yaml")
    +
    +
    +

    The same call pattern works for every type. No need to remember +pd.to_csv, np.save, fig.savefig, or yaml.dump.

    +

    Figure data export. When saving a matplotlib figure, SciTeX +automatically exports the plotted data as a CSV file alongside the +image. This is a deliberate design choice: every figure in a publication +should be backed by accessible data, so that reviewers and readers can +verify the plot independently.

    +
    stx.io.save(fig, "plot.png")
    +# Creates: plot.png  (the image)
    +#          plot.csv  (the underlying data)
    +
    +
    +

    This behavior is powered by figrecipe’s RecordingFigure, which +tracks all data passed to plotting calls and serializes it on save.

    +
    +
    +

    Three Interfaces

    +

    Every SciTeX feature is accessible through three interfaces:

    +
      +
    1. Python API – for scripts and notebooks

    2. +
    3. CLI – for shell workflows and automation

    4. +
    5. MCP – for AI agents via the Model Context Protocol

    6. +
    +

    For example, running a statistical test:

    +
    # Python API
    +result = stx.stats.run_test("ttest_ind", group1, group2)
    +
    +
    +
    # CLI
    +scitex stats run ttest_ind --data data.csv
    +
    +
    +
    # MCP tool (called by AI agents)
    +stats_run_test(test="ttest_ind", data=[[1,2,3],[4,5,6]])
    +
    +
    +

    This three-interface design means that any workflow a human builds in +Python can be replicated by an AI agent through MCP, or scripted in a +shell pipeline through the CLI. The interfaces share the same +underlying implementation, so behavior is identical across all three.

    +

    The MCP server aggregates 120+ tools from all sub-packages. AI agents +can discover available tools, read documentation, and execute full +research pipelines – from literature search to manuscript compilation – +without human intervention.

    +
    +
    +

    Delegation Pattern

    +

    The scitex package is intentionally thin. It delegates all domain +logic to standalone packages:

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    scitex module

    Standalone package

    Responsibility

    stx.io

    scitex-io

    File I/O (30+ formats)

    stx.stats

    scitex-stats

    Statistical testing (23 tests)

    stx.plt

    figrecipe

    Publication-ready figures

    stx.writer

    scitex-writer

    LaTeX manuscript compilation

    stx.scholar

    scitex-scholar

    Literature search, PDF download

    stx.dataset

    scitex-dataset

    Scientific dataset access

    +

    Why delegation? Each sub-package has its own release cycle, test +suite, and dependency tree. A bug fix in scitex-io does not require +releasing all of scitex. Users who only need file I/O can +pip install scitex-io without pulling in matplotlib, LaTeX tooling, +or audio dependencies.

    +

    From the user’s perspective, the delegation is invisible. A single +import scitex as stx provides access to everything. The lazy loader +in scitex.__init__ resolves stx.io to the scitex_io package +on first access.

    +
    +
    +

    Configuration

    +

    SciTeX uses a layered configuration system:

    +

    Project-level config (YAML files)

    +

    Place YAML files in ./config/ at your project root. The session +decorator aggregates all files in this directory into a single CONFIG +dict:

    +
    config/
    ++-- model.yaml      # {"hidden_size": 256, "n_layers": 4}
    ++-- training.yaml   # {"epochs": 100, "batch_size": 32}
    +
    +
    +
    @stx.session
    +def main(CONFIG=stx.session.INJECTED):
    +    print(CONFIG["hidden_size"])  # 256
    +    print(CONFIG["epochs"])       # 100
    +
    +
    +

    Environment-level config (.env.d/)

    +

    Credentials, API keys, and machine-specific paths live in .env.d/:

    +
    .env.d/
    ++-- entry.src            # Single entry point (source this)
    ++-- 00_scitex.env        # Base paths
    ++-- 01_scholar.env       # OpenAthens credentials
    ++-- 01_audio.env         # TTS backend config
    +
    +
    +

    Source the entry point in your shell profile:

    +
    # In ~/.bashrc or ~/.zshrc
    +source /path/to/.env.d/entry.src
    +
    +
    +

    MCP environment (.src files)

    +

    For AI agent deployments, a single .src file bundles all environment +variables. The MCP server loads it at startup via SCITEX_ENV_SRC:

    +
    export SCITEX_ENV_SRC=~/.scitex/scitex/local.src
    +
    +
    +

    This keeps the .mcp.json configuration static across machines – +only the .src file changes between local and remote environments.

    +

    The configuration hierarchy is: CLI arguments override YAML config, +which overrides environment variables, which override built-in defaults.

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/ecosystem.html b/src/scitex/_sphinx_html/source/ecosystem.html new file mode 100644 index 000000000..7fc78d033 --- /dev/null +++ b/src/scitex/_sphinx_html/source/ecosystem.html @@ -0,0 +1,813 @@ + + + + + + + + + Ecosystem — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Ecosystem

    +

    SciTeX is a modular toolkit composed of standalone packages. Each package +can be installed and used independently, or accessed through the unified +import scitex interface.

    +
    +

    Delegation Pattern

    +

    The scitex package itself contains no runtime logic. It acts as an +orchestrator that re-exports functionality from sub-packages via lazy +imports. When you write scitex.io.load("data.csv"), the call is +delegated to the scitex_io package under the hood.

    +

    This means:

    +
      +
    • Standalone use: pip install scitex-io then import scitex_io

    • +
    • Unified use: pip install scitex[io] then import scitex; scitex.io.load(...)

    • +
    +

    Both paths execute the same code. The scitex package simply provides +the namespace glue.

    +
    # These are equivalent:
    +import scitex_io
    +scitex_io.load("data.csv")
    +
    +import scitex
    +scitex.io.load("data.csv")
    +
    +
    +
    +
    +

    Package Reference

    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Package

    scitex Module

    PyPI

    Description

    scitex-io

    scitex.io

    pip install scitex-io

    Unified file I/O for 30+ formats

    scitex-stats

    scitex.stats

    pip install scitex-stats

    Publication-ready statistics (23+ tests)

    figrecipe

    scitex.plt

    pip install figrecipe

    Publication-ready matplotlib figures

    scitex-writer

    scitex.writer

    pip install scitex-writer

    LaTeX manuscript compilation

    scitex-scholar

    scitex.scholar

    pip install scitex-scholar

    Literature search and management

    scitex-audio

    scitex.audio

    pip install scitex-audio

    Text-to-speech and audio

    scitex-dev

    scitex.dev

    pip install scitex-dev

    Developer tools, ecosystem management

    scitex-clew

    scitex.clew

    pip install scitex-clew

    Hash-based reproducibility verification

    scitex-linter

    scitex.linter

    pip install scitex-linter

    AST-based code pattern checking

    scitex-dataset

    scitex.dataset

    pip install scitex-dataset

    Scientific dataset access (DANDI, OpenNeuro, PhysioNet)

    crossref-local

    scitex.scholar.crossref

    pip install crossref-local

    Local CrossRef database (167M+ papers)

    openalex-local

    scitex.scholar.openalex

    pip install openalex-local

    Local OpenAlex database (250M+ papers)

    socialia

    scitex.social

    pip install socialia

    Social media posting (Twitter, LinkedIn)

    scitex-app

    scitex.app

    pip install scitex-app

    Runtime SDK for SciTeX apps

    scitex-cloud

    scitex.cloud

    pip install scitex-cloud

    Cloud platform integration

    scitex-notification

    scitex.notify

    pip install scitex-notification

    Multi-backend notifications

    +
    +
    +

    Installation

    +

    Install individual packages or use extras through the main package:

    +
    # Full installation (all packages)
    +pip install scitex[all]
    +
    +# Typical research setup
    +pip install scitex[plt,stats,scholar]
    +
    +# Individual standalone package
    +pip install figrecipe
    +
    +
    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/gallery.html b/src/scitex/_sphinx_html/source/gallery.html new file mode 100644 index 000000000..0ba421453 --- /dev/null +++ b/src/scitex/_sphinx_html/source/gallery.html @@ -0,0 +1,1018 @@ + + + + + + + + + Plot Gallery — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/index.html b/src/scitex/_sphinx_html/source/index.html new file mode 100644 index 000000000..a3a042b0c --- /dev/null +++ b/src/scitex/_sphinx_html/source/index.html @@ -0,0 +1,877 @@ + + + + + + + + + SciTeX Documentation — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    SciTeX Documentation

    +

    SciTeX is a modular Python toolkit for research automation. It provides a +unified interface across the full scientific workflow: from data loading and +statistical analysis, through publication-ready plotting and manuscript +compilation, to AI-assisted literature review. Every module is installable +independently, and the entire surface area is exposed to AI agents through +an MCP (Model Context Protocol) server.

    +
    +

    Key Features

    +
      +
    • Session decorator – wrap any experiment function with @stx.session +to get automatic directory management, reproducibility logging, and +error-safe cleanup.

    • +
    • Unified I/Ostx.io.save / stx.io.load handle 40+ formats +(CSV, HDF5, YAML, images, PDFs, …) through a single call.

    • +
    • Statisticsstx.stats provides hypothesis testing, effect sizes, +power analysis, and multiple-comparison correction with APA-formatted +output.

    • +
    • Plottingstx.plt produces publication-ready figures via +figrecipe, with +millimetre-based layouts, journal style presets, and automatic CSV data +export alongside every saved figure.

    • +
    • Manuscript writingstx.writer compiles LaTeX manuscripts, +manages BibTeX, and exports to Overleaf.

    • +
    • Literature managementstx.scholar searches CrossRef, OpenAlex, +and Google Scholar; downloads and parses PDFs; and maintains a local +citation database.

    • +
    • MCP for AI agents – every capability above is available as a +tool call through the built-in MCP server, so LLM agents can run +statistics, create figures, and compile papers programmatically.

    • +
    +
    +
    +

    Getting Started

    +
      +
    1. Installation – install the core package and choose the extras you +need.

    2. +
    3. Quickstart – a five-minute walkthrough of the session decorator, +I/O, and plotting.

    4. +
    5. API Reference – full API reference generated from docstrings.

    6. +
    + + + +
    +

    Reference

    + +
    +
    +
    +
    +

    Indices and tables

    + +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/installation.html b/src/scitex/_sphinx_html/source/installation.html new file mode 100644 index 000000000..b2dd2f48e --- /dev/null +++ b/src/scitex/_sphinx_html/source/installation.html @@ -0,0 +1,840 @@ + + + + + + + + + Installation — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Installation

    +
    +

    Requirements

    +
      +
    • Python 3.10+

    • +
    • uv (strongly recommended) — install with pip install uv or +curl -LsSf https://astral.sh/uv/install.sh | sh

    • +
    • pip 21+ also works, but expect 30–90 min for scitex[all] +(see warning below)

    • +
    +
    +

    Warning

    +

    pip install "scitex[all]" typically takes 30–90 minutes because +pip’s serial resolver walks version histories of the large transitive +dependency set (numpy/pandas/torch/jax/playwright/openalex-local/…). +Use uv instead — it resolves the same set in parallel in 1–3 +minutes. Every pip install line on this page also works as +uv pip install and we recommend the uv form.

    +
    +
    +
    +

    Core Install

    +

    The base package pulls in only lightweight dependencies and gives you access +to session management, path utilities, string helpers, and the module +discovery system.

    +
    uv pip install scitex          # recommended
    +pip install scitex              # also works, slower for [all]
    +
    +
    +
    + +
    +

    Research Workflow

    +

    For a typical research project you need figures, statistics, and literature +search but not audio, browser automation, or cloud tools:

    +
    pip install "scitex[plt,stats,scholar]"
    +
    +
    +
    +
    +

    Per-Module Extras

    +

    Install only what you need. Each extra maps to a self-contained capability.

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Extra

    Description

    plt

    Publication-ready figures via figrecipe (matplotlib, seaborn, Pillow)

    stats

    Hypothesis testing, effect sizes, power analysis (scitex-stats, scipy, statsmodels)

    io

    Unified I/O for 40+ formats (HDF5, Excel, YAML, PDF, images, …)

    scholar

    Literature search and PDF management (CrossRef, OpenAlex, Semantic Scholar)

    writer

    LaTeX manuscript compilation, BibTeX management, Overleaf export

    audio

    Text-to-speech and audio utilities (scitex-audio)

    ai

    LLM APIs (OpenAI, Anthropic, Google, Groq) and ML tools (scikit-learn)

    browser

    Web automation via Playwright

    capture

    Screenshot capture (mss, Playwright)

    dataset

    Scientific dataset access (DANDI, OpenNeuro, PhysioNet)

    cloud

    Cloud integration utilities

    app

    Unified file storage SDK (scitex-app)

    session

    Session decorator with reproducibility logging

    diagram

    Diagram generation (Mermaid, Graphviz)

    db

    Database access (SQLAlchemy, PostgreSQL)

    cv

    Computer vision (OpenCV, Pillow)

    dsp

    Digital signal processing (scipy, tensorpac)

    social

    Social media posting (socialia)

    tunnel

    SSH tunnel management (scitex-tunnel)

    all

    Everything above

    +

    Example combinations:

    +
    # Neuroscience analysis
    +pip install "scitex[plt,stats,dsp,dataset]"
    +
    +# Paper writing
    +pip install "scitex[writer,scholar,plt]"
    +
    +# AI agent development
    +pip install "scitex[ai,browser,capture]"
    +
    +
    +
    +
    +

    Development Install

    +

    Clone the repository and install in editable mode with development tools:

    +
    git clone https://github.com/ywatanabe1989/scitex-python.git
    +cd scitex-python
    +pip install -e ".[dev]"
    +
    +
    +

    The dev extra includes pytest, ruff, mypy, Sphinx, and build tools.

    + +
    +
    +

    Verifying the Installation

    +
    import scitex as stx
    +print(stx.__version__)
    +
    +
    +

    To check which optional modules are available:

    +
    stx.usage.list()
    +
    +
    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/mcp.html b/src/scitex/_sphinx_html/source/mcp.html new file mode 100644 index 000000000..acdfe9c15 --- /dev/null +++ b/src/scitex/_sphinx_html/source/mcp.html @@ -0,0 +1,832 @@ + + + + + + + + + MCP Server — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    MCP Server

    +
    +

    What is MCP?

    +

    The Model Context Protocol (MCP) is +an open protocol that lets AI agents call external tools through a +standardized interface. Instead of generating code and hoping it works, an +agent can invoke a well-defined tool and receive structured results.

    +

    SciTeX implements an MCP server that exposes 120+ tools covering the full +research workflow. Any MCP-compatible client – Claude Code, Cursor, or +custom agents – can use these tools to conduct literature searches, run +statistics, create figures, and compile manuscripts.

    +
    +
    +

    Setup

    +

    Add the following to .mcp.json in your project root:

    +
    {
    +  "mcpServers": {
    +    "scitex": {
    +      "command": "scitex",
    +      "args": ["mcp", "start"],
    +      "env": {
    +        "SCITEX_ENV_SRC": "${SCITEX_ENV_SRC}"
    +      }
    +    }
    +  }
    +}
    +
    +
    +

    Then set the environment source file in your shell profile:

    +
    # Local machine
    +export SCITEX_ENV_SRC=~/.scitex/scitex/local.src
    +
    +# Remote server
    +export SCITEX_ENV_SRC=~/.scitex/scitex/remote.src
    +
    +
    +

    Generate a template .src file:

    +
    scitex env-template -o ~/.scitex/scitex/local.src
    +
    +
    +

    Or install the MCP server globally:

    +
    scitex mcp installation
    +
    +
    +
    +
    +

    Tool Categories

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Category

    Tools

    Description

    writer

    28

    LaTeX manuscript compilation

    scholar

    23

    PDF download, metadata enrichment

    capture

    12

    Screen monitoring and capture

    introspect

    12

    Python code introspection

    audio

    10

    Text-to-speech, audio playback

    stats

    10

    Automated statistical testing

    plt

    9

    Matplotlib figure creation

    diagram

    9

    Mermaid and Graphviz diagrams

    dataset

    8

    Scientific dataset access

    social

    7

    Social media posting

    canvas

    7

    Scientific figure canvas

    template

    6

    Project scaffolding

    verify

    6

    Reproducibility verification

    dev

    6

    Ecosystem version management

    ui

    5

    Notifications

    linter

    3

    Code pattern checking

    +

    All tools accept JSON parameters and return structured results.

    +
    +
    +

    Example Workflow

    +

    A typical AI-driven research workflow chains tools across categories:

    +
      +
    1. Scholar – Search literature and download papers

      +
      scholar_search_papers(query="neural oscillations gamma band")
      +scholar_fetch_papers(dois=["10.1038/s41586-024-..."])
      +
      +
      +
    2. +
    3. Stats – Analyze experimental data

      +
      stats_recommend_tests(data=[[1.2, 3.4, ...], [2.1, 4.5, ...]])
      +stats_run_test(test="mann_whitney_u", groups=[[...], [...]])
      +
      +
      +
    4. +
    5. Plt – Create publication-ready figures

      +
      plt_bar(data={"Control": [1,2,3], "Treatment": [4,5,6]},
      +        ylabel="Response", title="Figure 1")
      +
      +
      +
    6. +
    7. Writer – Compile the manuscript

      +
      writer_compile_manuscript(project="my_paper")
      +
      +
      +
    8. +
    +

    The agent orchestrates these steps autonomously, passing outputs from one +tool as inputs to the next.

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/scitex/_sphinx_html/source/quickstart.html b/src/scitex/_sphinx_html/source/quickstart.html new file mode 100644 index 000000000..ffe15cd17 --- /dev/null +++ b/src/scitex/_sphinx_html/source/quickstart.html @@ -0,0 +1,922 @@ + + + + + + + + + Quickstart — SciTeX v0.0.0 + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + +
    +

    Quickstart

    +

    This guide covers the most common SciTeX workflows with working code +examples. For design rationale, see Core Concepts.

    +
    +

    Session Decorator

    +

    The @stx.session decorator is the recommended entry point for any +SciTeX script. It converts your function into a self-contained, +reproducible experiment with automatic CLI generation, config loading, +logging, and organized output directories.

    +
    import scitex as stx
    +
    +@stx.session
    +def main(
    +    n_samples=100,
    +    CONFIG=stx.session.INJECTED,
    +    plt=stx.session.INJECTED,
    +    logger=stx.session.INJECTED,
    +):
    +    """Generate sample data and plot."""
    +    import numpy as np
    +
    +    x = np.linspace(0, 2 * np.pi, n_samples)
    +    y = np.sin(x)
    +
    +    fig, ax = stx.plt.subplots()
    +    ax.plot_line(x, y)
    +    ax.set_xyt("Time", "Amplitude", "Sine Wave")
    +    stx.io.save(fig, "sine.png")  # Saves sine.png + sine.csv
    +    return 0
    +
    +if __name__ == "__main__":
    +    main()
    +
    +
    +

    Run from the command line – arguments are generated automatically from +the function signature:

    +
    python script.py --n-samples 200
    +
    +
    +

    Parameters marked with stx.session.INJECTED are provided by the +session runtime. You never pass them yourself:

    +
      +
    • CONFIG – aggregated YAML parameters from ./config/*.yaml

    • +
    • plt – matplotlib wrapped by figrecipe

    • +
    • logger – colored, file-backed logger

    • +
    • COLORS – publication color palette

    • +
    • rngg – seeded random number generator

    • +
    +

    Output is organized into a timestamped directory:

    +
    script_out/FINISHED_SUCCESS/2026-03-18_14-30-00_AbC1/
    ++-- sine.png               # Figure with embedded metadata
    ++-- sine.csv               # Auto-exported plot data
    ++-- CONFIGS/CONFIG.yaml    # Reproducible parameters
    ++-- logs/stdout.log        # Standard output
    ++-- logs/stderr.log        # Standard error
    +
    +
    +
    +
    +

    Unified File I/O

    +

    stx.io.save and stx.io.load handle 30+ formats through a single +interface. The format is inferred from the file extension.

    +
    import scitex as stx
    +import numpy as np
    +import pandas as pd
    +
    +# DataFrame -- CSV
    +df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]})
    +stx.io.save(df, "data.csv")
    +df = stx.io.load("data.csv")
    +
    +# NumPy array -- NPY
    +arr = np.random.randn(100, 50)
    +stx.io.save(arr, "array.npy")
    +arr = stx.io.load("array.npy")
    +
    +# Figure -- PNG (also generates CSV of plotted data)
    +fig, ax = stx.plt.subplots()
    +ax.plot_line([1, 2, 3, 4, 5])
    +stx.io.save(fig, "plot.png")  # Creates plot.png AND plot.csv
    +
    +# Dictionary -- YAML
    +params = {"learning_rate": 0.001, "epochs": 100}
    +stx.io.save(params, "params.yaml")
    +params = stx.io.load("params.yaml")
    +
    +# Dictionary -- JSON
    +metadata = {"subject": "S01", "task": "rest"}
    +stx.io.save(metadata, "meta.json")
    +metadata = stx.io.load("meta.json")
    +
    +# Arbitrary object -- Pickle
    +stx.io.save({"complex": [1, 2, 3]}, "data.pkl")
    +obj = stx.io.load("data.pkl")
    +
    +
    +

    When saving a matplotlib figure, SciTeX automatically exports the +underlying data as a CSV file alongside the image. This ensures every +figure in a paper can be independently verified and reproduced.

    +
    +
    +

    Statistical Analysis

    +

    SciTeX wraps 23 statistical tests with a consistent interface that +includes effect sizes, confidence intervals, and power analysis.

    +
    import scitex as stx
    +import numpy as np
    +
    +group1 = np.random.randn(30) + 0.5
    +group2 = np.random.randn(30)
    +
    +# Run a t-test with full reporting
    +result = stx.stats.run_test(
    +    "ttest_ind", group1, group2, return_as="dataframe"
    +)
    +print(result)
    +# Columns: test, statistic, p_value, effect_size, ci_lower, ci_upper, power
    +
    +
    +

    Not sure which test to use? Let SciTeX recommend one:

    +
    data = {"group_a": group1, "group_b": group2}
    +recommendations = stx.stats.recommend_tests(data)
    +print(recommendations)
    +
    +
    +

    Additional utilities:

    +
    # Multiple comparison correction
    +corrected = stx.stats.correct_pvalues([0.01, 0.04, 0.06], method="bonferroni")
    +
    +# Effect size calculation
    +d = stx.stats.effect_size(group1, group2, test="cohens_d")
    +
    +# Format results for publication
    +formatted = stx.stats.format_results(result)
    +# "t(58) = 2.34, p = .021, d = 0.60"
    +
    +
    +
    +
    +

    Publication-Ready Figures

    +

    SciTeX delegates to figrecipe +for publication-quality matplotlib figures with a consistent API.

    +

    Basic line plot

    +
    import scitex as stx
    +import numpy as np
    +
    +x = np.linspace(0, 10, 200)
    +
    +fig, ax = stx.plt.subplots()
    +ax.plot_line(x, np.sin(x))
    +ax.set_xyt("Time (s)", "Amplitude", "Sine Wave")
    +stx.io.save(fig, "line.png")
    +
    +
    +

    Multi-panel figure

    +
    import scitex as stx
    +import numpy as np
    +
    +fig, axes = stx.plt.subplots(1, 3)
    +
    +# Panel A: line plot
    +x = np.linspace(0, 10, 200)
    +axes[0].plot_line(x, np.sin(x))
    +axes[0].set_xyt("Time", "Value", "Line")
    +
    +# Panel B: violin plot
    +data = [np.random.randn(50) + i for i in range(3)]
    +axes[1].stx_violin(data)
    +axes[1].set_xyt("Group", "Value", "Violin")
    +
    +# Panel C: heatmap
    +matrix = np.random.randn(10, 10)
    +axes[2].stx_heatmap(matrix)
    +axes[2].set_xyt("X", "Y", "Heatmap")
    +
    +stx.io.save(fig, "panels.png")
    +
    +
    +

    Statistical visualization

    +
    import scitex as stx
    +import numpy as np
    +
    +data = np.random.randn(100, 50)
    +
    +fig, ax = stx.plt.subplots()
    +ax.stx_mean_std(data)
    +ax.set_xyt("Time", "Value", "Mean +/- SD")
    +
    +stx.io.save(fig, "stats_plot.png")
    +
    +
    +
    +
    +

    Literature Management

    +

    The scholar module handles paper discovery, PDF downloads, and BibTeX +enrichment.

    +

    CLI usage

    +
    # Enrich a BibTeX file with missing metadata (DOIs, abstracts)
    +scitex scholar bibtex refs.bib
    +
    +# Fetch a paper by DOI
    +scitex scholar fetch "10.1038/s41586-024-07487-w"
    +
    +# Search for papers
    +scitex scholar search "deep learning EEG" --limit 20
    +
    +
    +

    Python API

    +
    import scitex as stx
    +
    +# Search for papers
    +results = stx.scholar.search("transformer attention mechanism", limit=10)
    +
    +# Parse and enrich a BibTeX file
    +entries = stx.scholar.parse_bibtex("refs.bib")
    +enriched = stx.scholar.enrich_bibtex("refs.bib")
    +
    +
    +
    +
    +

    CLI Usage

    +

    SciTeX provides a unified CLI that mirrors the Python module structure.

    +
    # Show all available commands
    +scitex --help-recursive
    +
    +# Statistics
    +scitex stats recommend             # Suggest tests for your data
    +scitex stats run ttest_ind         # Run a specific test
    +
    +# Scholar / Literature
    +scitex scholar fetch "10.1038/..." # Download paper by DOI
    +scitex scholar bibtex refs.bib     # Enrich BibTeX metadata
    +scitex scholar search "query"      # Search for papers
    +
    +# Figures and diagrams
    +scitex plt info                    # Show available plot types
    +
    +# Utilities
    +scitex audio speak "Analysis complete"  # Text-to-speech notification
    +scitex capture snap                     # Take a screenshot
    +
    +# Introspection
    +scitex introspect api scitex.stats      # List APIs for a module
    +scitex list-python-apis                 # List all Python APIs
    +scitex mcp list-tools                   # List all MCP tools
    +
    +
    +

    Every CLI command corresponds to a Python function and an MCP tool. +See Core Concepts for details on this three-interface design.

    +
    +
    + + +
    +
    +
    + +
    + +
    +

    © Copyright 2024-2026, Yusuke Watanabe.

    +
    + + Built with Sphinx using a + theme + provided by Read the Docs. + + +
    +
    +
    +
    +
    + + + + \ No newline at end of file

r$F7Gx0xC*xh*9#j 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%0Dhj+z*y0!!YJck=o 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 h;~B0xF~$CSJciZ`64hOEgkHUS6Cm`o_8oRkEN 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 z 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 Aob_JSO+85T$Qy5*Zd{GUAwx)p>vi1GS1y` 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

gupx-#7OZjDX<*=Nvu&nvnc1s*n zDF8s;Mz%$a7SA=|3x(mnhpHVupM*II-`}MKEj^(>7u7RALl-h!f9Go(jcNfk?yCe} zqDelGnaZ>YDv`oGHhXT6Wkl>vB_^f1q*oQu+RIH(xSqHd z9)TiXNgMC+Q&@O7bf*$ldZ3X>$vb>UB{}g&3@U5R5k@1^&!9q^F6HwlX(;Yj@mI-+ zc>P=S*I?Xrw`v!x)Msl6Fll1tO;Oiut2FjRB_b`fi|ZiA9`|q2kF+r_tUiqJUroC= z)371sE=om|-j5@d!y1BJL-5)UfcWnhE;$(%Gg5WqJfkN(O9S$po5q5d>a+{5FvdON z&;k4a+ZXUz0NVw9D%V`|OH>x@bWCXI#+UF!tJ^L?0Or*Xgm2Yg-_IVK4$?c?Q;Yd; z$i2U4){f6W`0X_FkM>0*-3$vd@eqnj;-;YG*f3Zv!qWXwBEI zz~4|$>_sand+kJ_9HyM~+#cRxKD;Q*8-EBdKn%I`xBpwq2`GWF2Gh$Wsq;GEjyKQ5DsL)X3xZ zkz~2`qTMnB5Sh!rmA+kTf(L^(KPE!-T{0SX;XXeZ*1%$XrNQfB#8Jql-pn9XaMy)- z(KtNkhYM+%qrweHDLn4BYxlVW7z_?=L$nxo^3yQz!ltzlP8VFLP>&`6_&XIlq58G$ z6#_UF>DNTvR5(aNS3At3C8$HhW+mpa)s~5>rzEfFfiJcv@afb?2j`?1wr>U65(daK zs&pnTQ3u+*94sa%UflNsnHtMzFD<7|Cm#$VFttOE_Nu$*59x;@Gm9J1EyHv?T{R-tSH?d@qT)T7nr z;>Zd`h%si{kshgcw$GPbD#J8h4#@BMzhYST@{)MqQBaob?8=iEiIiYO`V)A zy^Q9~r3%Fs7s-qeb@eVBI^P|v9=_-^;llQaMbULtnt+GIil&f|!676;+h5aoJ zg^lMg8EoJ&0U82oZs!`S)E1YF4ccIJ+ph$hUz9&WDjM+R!}7~WaVMAIFuY`o55ls{ z@#W-87$O9qoiBfU@oE*f-bj295Wdb;e@Iz83Q1+j58ZpM@FFPeal+SlA~0GD60<+k zw!Gx!dUSOYy%(2s!sZH)yS&RjOw?J_2B-|bl5yL>+OFEB%i8eD=$@TG^o)dPT7 zGT0LmN~8%sj&=GEeJE~f$|nUSOA=~U(ZR<8QMV%gWrlNQv1NQE5nRQ=U%!^OfbskY z4{IUdi(U(7D_Sh}0|uM&gA!aPuR)tnt1#fF-3n$jcm z8;efGAwMY61K##X`f>&c~6*9}>YMNvRyd1kqqm|e|UCn5YFO{0F>9P-lyD!=u6CLLegL?xXegHm<% z8zM}QkxWeE^qeI`P2N!Uv#-*+2v_kK0l6eUNasEyxCP&SOQhf-qn=U=Rr>N(dPd#1 z`@0b}!t2Ps9c9bHD@dZNZBJ8NUgB6gig*oPp{4J4BP4>_<4n7Oe`SbHT<3LKF zpXbY9jIWiN1QIEYQLmo@|F5;KF8ypuO{@GvvQ9DpG)WHsvVZs7xba))648y6ohZnW zh3>!t=VG<&Q8p9I_Jl}nCTNsms~}-i8NManPdUcN3;Izv(yXRs6dnhR9)mrdCG$#J z1q2Jl%{sc>L*yT8&80>}syW~0Dx382^1}(an#m^R%F%Mxb~IFHZ7)#KmmM{sPYhcdfXFk9uvxE0)e| zN35=(qi7@Q`{A+q_uLwjI5DdxK1&x#o~Mw9-Qycc_9t5Ww4du{bfD2YO_&V^9AGq- z30(Jgim&wB>fI31;``Vf^J(y`gD3f+NqEow!j~C}Da(Zrx>%Uz$SIq?ogF??%u%C* zgsE-()A=pE%OtVsBKfr9o$#t;Jf!&aWXZgyohhQ_!Mxry^igHFygr8cIyP0Dr1@s; ziVXW0OGm|y94|TdaAdtfoBDcyxHV1W;X`SDnZZjkKmEPKSCORCOzN zm^V$$<;Qk@(uwGd#SY^cS88Co-@Vkg3Mqu$`qj1Ht~{rSlfBvv9HNQW3Befj-yt}S z9g=}{@H6Rr5s5?>-ILh~p3a5*#g+ z>yl(wpZ^dA?|UBZ6ZcV5dCXoJe<4hWO1}DiF@r=T=E6bFUFT*{wLz3i{}h|}&=8En zk&Z^8#f0Y82UQ;hRV=P(wL`i~wS+mavrVB$_1ad5oXUy{AJ3YXI1^Gjpb5(b!NM!d#ArBk~(7zb=7Hz&Y?v3L%8!K z#0qI06zryE+fL8WkJE~CEyZA=;Qi>H241bptA)+mveA_JS#)F0G@Ofs054@8DD~?o zG;YqLx&B}}Y(B|r%4Wxo;i#cyYg<}I@(rE_kb}M9lSq3mrSZ+{n=}QPfMzb2cP;*f8GJ8HtU4p+yBSDuLIa(}894xnC|6>;ji{ zLa{tZRVj6ilBCM~gc@xIE1ADG=Bv~=Ge#Z9v)PPq8W5dbDiEq_FFI z`zOK_O@BB?a{j4+5U*Z!91Jd~T{XVq!l17plZ)W{#}u7U2DDHp5o4 zyf{cW12&llYC)Y{KNS&`a+dAfL97x$wdJ-J)x0wvO~ZmqS09UsAOrKbCD-dh+)I2d znA}4x1x%k&Dxi_4zszl{AFr=r(kiDAk=BSiRdAEEDd+gLBao%VRS$CnbaB3`e3Q-d z%G)R{%od>MImjI4`0O)_-|c3nb)2ex-%2$5$R&l;!CQ~|IJ@R`hM-;h{rHWIYv2dS z{b2cb#G04)6WY%eoOOne^L_vtKx0&}*Vutw=kA(U_uC`9X2RuzYmH~RyYV_kZ!r}P zgjsVVZ!H7fh}@UH&Ck&`5=1D^8r%q^fLyRJ%F#$_GOSU!t9aemQN%eweeVitZ%VA^r0qJNmxBtf{!5?4+xS394!Xn zq#mMLWX@dfC0?lRf*4kMbAIo#2*u<{9;)esH{>vNc$!VRO=#GQ{H1V=2Q)}xHZv5@ za-f>zn5cE%<>C-3;nH1HuR9ofQrLQ@50Be^talUIm*}QSim7Pb_ghU!oq ziA?l)9i$LGR_87FcH}&3b85~zTYzb;-~#K*b-uxQUl6*nK=M8#lnomytX)lcf(?lq zhhF{#2(;e%54|nOsDYOsAE!4`$i`JT`Bf|zE5AUgffLI!6}h6~V>8YrSmAV&$W1n0 zQ}s>5Ut|~&)x`=vo?aOc(~@&z_D@O~-I2pSnd+xgu$1;5HKThJ)M_|yczd4 z{-l9>iq|Ge0Li^OTP-d(kICMK{Wwo~kxemvf-fts=oRhWz2d?e6n|vyZvCY`i4-7t z-A$ahubK}>S*dC)hW6=Ea6F4}c-y0r4_rO9K2XFx2mC^bl9Z&CcJ^q;h*-ZtI5rRb zfE9#5XG6q$ot3aYkpT)5G#ZyVBtd?$x|oxyk5sk*1Ecd(t4!<)-cYcp+8Nh#Ud||{ zk~il8ZPA-3MqICU_~}?%Hk^p1hb*ozDP>$d?xNEZKTG+y+pa}*xP)HFLH44O&s|EvxaWQbc-S*?i`H7Ks|2zBFFy4U#Jr^TUJj{N(Py ze*X^oF%UPsTxd5tT@oX+@r?6oC2scn=RqM7`L-gub!Tszh4a>KD=8gKhRJXqV$BK6 z8Ca<_F6ORoTPKC;HtVmE&+|-3o%0SumbJoXC$(#`S{P<-7moVni*tPBu1pO>ODLKK zvNo$`hRx2g;j9IMvN5WCsq0>?%yorj+J84-~ahY{k8J%z3Pz=Y^tFO@>=p=hXt; z+yQOtRML?q&DK+K=KQ5G<|=F=8U#=lH@3L4P^52p=gvAec_-~xd}Hv|o%<&FdZ)lh zzsT}2LWL_@{fIAsXd}sVWk&Ok_8{CEXI2ifeW$Kx8J^S$Z7*+gEH9r~Pw7dd>4i`S z$4xhC#iy=xfLJrkqHr4#{F&7uX41*Hg3zi9MRS_QLFmJH#3MRh@pEo@JoO@L4jtpm z3tO#g2pqpwa3FGN{duB-ch=>zQFvaUD0MeY;2w*x1(wsSTm<|Q%%Tlyg!L&E_T^W9 zeF8k?X_BcJe{^Jy=R$#!nxM%t+X_$!UPt(Q^v8IY0Ug2}M*2SeaDsY?NK-FnI&W~f zBI?BhKX+5YJ;)Gz&Gv;Me?}9mZ`vOF|!_Fz?Mg96DXR zi4$R*rO+nkQ4=uV*{9q%KjGLk2ocUr2DO=oDrAvISUcM@&5J$Lb>cn4kHRxY^``hH zMgjrjwV*5 zUu6F5EROxMeQIZQE}od5E1!Hwd<5feASxVbL^y7yQg4>%IA~oF3r&h#XOjhM%qT9S zfjuE6?H!eKD~IzU3>rRgbf?Hlpi} z=5gQ1k;odQY*99-B`Hn0VQ1%(7bV0qn;+Fr1z{K(F7i;5yr48{7*=(dS(_QEynW8S@^&ZAx?@lDI^dB00 zG0L%QA%=$6{CoHK#di+)EPB-Q;IJ3PN3MdU!(CYpx~n{OO^q+*zZ5zJr3TWYn?~op zpf6EIqX!eIqgL^?m)^zC_)d5yw+wgF7#Xf)Ry^gf#;`$#V=e3Hj4DOb5=TN%77dr;%Ybm}n!Y4z%1&vwBo&0?{Bp9)s)$>vCFpyR2Y z-l`h!F0&)e>`TuD?*^1$_h6TrH>=pPD(wP$%CTcHF_OJM28JxR5VAnchJkSO(K5{t z@k75)c6CqS;MerZTap;>judhMo!)>(eJqP{z)BB76G@^cnuDz+1zH*zbmt+zrKxU~ z;%yU(m*@CvACjJ(`ZWB~(|C@y3zrP0fcCqN80X1)*DT6rfG;O3l!u%q$Q-@K^u3Xf`O@?rH}l0Y|$++Mq( zDGOzm?JURHe=x5*oVat(&L)~@GOI!09m!8`5)4RlLz{dY5iSk#N$?4V-5{jQa@Qh$ z%ASyBBw-KHlV zxiNgqXwD^PElXpy)@@@hVqk?msra&swr4R4;Md4Vpp;x_$! zB4-eH&Syj?_#{YTP(5~eoN0+gNqS4-Sx&0CMU{rWSi$(ApDqNPVb5cT8^NqEZe7TQvq(3JM7Gqt*wAh7+v* ziZ_Gcw9y$(xgQZt9^KCk-3qLs5&$hkPW$(|+q;8!RKfX<&nICfzejSvdGl*9c=$oM&s>=hLHj(JmPU2fJ26PD#RsA$L` zgulD1x>Jfm)oAEZ^9iqpPh`#9sigiQ$?6E5nn=_^wwBCyD(%{bz@7AM5l21JZQD-3 zeq%fdd3Ryv*>y~9tU#?{JWnX9rx8QMk!{9$VJmWSIT#YXPK)`>+MQ*BLsw*Q@l(fK zRjmN#6bkj6P|xms%QrP?T53fX*pr#?sMFaTCpU{V=N5erS1Y-nIZjEI29;8%sWUIf z*{<0v=0BLZs|K~zO0Yi|QZQJF<3grn&aBtdoWD7C&|y2zesy_Y<_bV8)4dZj)mT{( zGUDcGQ8Fe8t~7tUMUQz5T=>M$7mqSRGH+&-D3w&ojs>WvV0gnw7z2@sz&jywn<=x5 zL~&d~WDgeZ(T_hnfK`mo`Q~toB5g9^+q&7lOzfVWJhg9Bq7O|1ogiNaI{kh?Go!md z1oWQN+YRI0C&bbyXXCpR7yehu%$NH_ePkyp!p>%G%~e-juB?11JabH)7x_&Gtg~mz zzM*&G+bRlBwej+=dJ;ZwZ!h9%=WkDLZpK5BN+UE7F^1H(PnH>^p=jF{igWn4ZzWC^ zF`q!$lA*rIpW7g$Jy?c`Rc3{0ykCYYXK7qV2-Rd-`k7~aKjeFwns!K*v1pdgsdu|c z2piH(^DWyrhU*(f7_EvR{S0F95}dAfHbFUC#LYL+8tR`l8MHzg(8#+O38Dby_cvjy zemrz!Xt8kio82L#Y9owa!*K2UbPW)T1b z7dnKARAq6V0fi9_yP3jZ;(Q8Xdt*7Qqd>7KZc?A5yEJhPXZ4BCwSOYTLn5ubU&9Cb z9aF;xt5q0Yk+9^j&qh=8pL-c;ywAb|Juk`n}u}>M~`nts1ZMAp3XfVhcH)Xo~h%w45 zB<<0GMUWsHF`{)LW(@gZauKc7X4&=nRAl9KRQL0RoB8qhQD0d0_=hAr;uj6i<)KkK z>GdkT362}61P4kM9-foPE}p4_Je4n{a&I^8YxdL$EMzzFQ7Y!~&n;T|Cn5>%&!m}6 zgDujwI$OQd_4+Gnkd#FJ|~QQ1w!G0+ZBxUgc!M9LXZoi#ZbX=m7^xq7JXO7}@pY=FBQRQ)I|7lmVam8JsJf=&8SbnO}NnS{ckkdfW5@48oo*{7dL7^A@H+|CW0_VMJD=KM!^ zx9W^HKeyete*qTq>&TD@yT| zaPs(??$SZZyXeQk6b6Q5i$TX~4%I|)*jRT(PKUcMo*zcqfJT(JF6Wt_pA(6Z9?N(e z!vz+0x9&L}*63|Zr&HF!+|i}jl?}}t0Cp}dz|FGnujT#vRe&jS&E+wEt_NMGzN`lo ztGp7>P%3pPN9~R2&52}qzXR4E(0U)T=v8*^JZ^k|Xgft_+wL#lkW56yS+NJ|BLm7MmJBqD4R0k%& z_7K1YovE{Cr>LdaAa6F@GOk4 zcu}E00H~Xor_PUC48U|4nqZfGx7}Rch~DkSWkjl-is43Rp$WYQwH*!II$s>l#DZjW z4(a&2-!9(rue3>;yKd<5wC%6yh1-QHO&APz`{MD|Fj?EEsWCn^!JI!qOFEQps&z8% zZLV74c-WFS7AkIJlJ>ifeIF>i^g|fCp)C)fqR`bCnYkQ0P)M05V@5?6OPdO6KdzE>x>b7Iv7ebpIePM>znrqlKz_gqNL5=Pmzj zn=o3Lt_r(#@a`Lx64x+#x-|H{SiXf1eP92+|2Y}@UdveW{awqIKuMnOgH^c(SEb%d zL}l*|z!M@Z!w=V8O{FPE_u2;YOzCGZ)10LVhELcbQz$dd&-RKeHvBVG(${cCNk{~Ccz-UzIo$9t{g2e1AYUVo)k8xe@roaCt2Xu ztmeR_DwZl!@-LQ6NrPRILSJ3J1MVcxcP%zbyaF6vvyX>lVOm3i6?#JxgTXf#i$!Zvpo~@ zmGK*&!5C>}6_2iugw3l~!y7)QMm!z5&mK?T?4Hjc1e8mV+=rCpJtWl~K`{vUQ*H@R zS(aRV$ZLsfjdl6Peaf);LzsJYPtjIb;3~!+&9rKl3o8lbO5HXh@y^7!6b6z%3dN8* zsl+9xX^xOAXlK~t<#L^v4?JU{HHjuC6=6harm*SUl3FH1VCx*5C>YKg>BiH@MNPNq zV~@DbRu@3r=>tWc1ct4cD77W_l5HdRDmY4A0#pgULDC{nGaM#$q%*z>u_1qAQ~Q^UrG5;JB1988O5sP?D~~PONb;QB)&t4zM zJM^zz$3s&C4wcuys#%v=6+$#ujdiWW7zv|2bdF`SN>$#kIBqjJ#R49B>Z`vftGWW8;}I|OOe-K?WnZt@A}uWqe;YopTS>5 zfRasnpY8rl?h;L?kTd~$rYKPyeESLLHpSlluPUNPgJgQk4a@Zt1k}E!xK$h){K*_0 z`@4*2lAg0h_r*{MA_3L=nGa&o4)NdsZ?}TKiAbP-*D*n0xbI$}w;Hwutzt{$^Um;D z?Uo~uGRLs5@f$w~fDfRN?cVLC?w$_{09s1=0KmK0U-_s%DH#fxKNh?bLMgNWzLxTH zI0r7PB!F6Q5)*mwzV_G=PF{2<+&-c!X;@Nlco>KT1<{zd-4?YmgWef#+<^-~0RY}X zK)_|_g9g|Dn}@cRPAzM;2lr)q^Q@B7%_a-Ot8?|ZGg$5UWoZ~crJ!eROzC!Akk-=& zbSpG@aClPQNN;es${{v!2SwIs`wBUVtqSs_W-lyb+~nio5p*mi&UfMLiT(2YFM0dG zOAbuGYip~NtosX~dgsX$mPYhk-qZtsk;i^_!gS$2fR>|XURpcb1pfB?kOXUXmTxu{ zX0G2zMYzT^j3Q=8Luo!8Uoe%iFo)B(%NHV`U%}S0A;kPJcSDb%%uo8rI&cz8^~wA_ z*RI~e9uENs2?k3}6e7@5tqMk=ul{>cW*vxip{FCSGNqVWY++o@Ec-6u9$o-b!a9rd3N; z!EjcUu~-@lZ@7*MS8hW3>k9$eK(8pM^g?!{uidxB? zWj=Yp-iv$J{Vpk-=g$dwbR`PTJFrJ(B_@vLN&ng~%$EIGL) zD+q-?65U7BoGPv;Z24w1(;BE_(Ihs@OTP_#QB&})ROqfXt6Ig4$wrEWtSupf&3I#O z1b)3-a^acO+P2b_Bdbbr@H1%Kn#KL9%<5B z9IZ`+pPL1iCr|v>oA+l7&0D9%^5F zvO+xuF)Yj{M4I^X`|l28P_qVJp2oDPD^Kh2)%5 z=Y{da6*R7fJX$>M?1i+zbHV1v7QNx+!El5dEn(%2q%WOSE#HyjM9u0q2Z@#4BX6C z%uhUnm`#LU@V4_sl6DiHu!BollE=OUE6xv)Bvr;?_y}#mG>ReCo+)dfg91+BfX(i2 zu;8FRd<{0-E2=kM<)jKwIK@O5vaALL_&*F~DY>J|NanSpxrm)bNl=2nefuW3+4yJ_ zhta<-A7=&2bGO^pQzI9$_M@u61yA6WHupV~x$IzDIIC>qVQ15U7i#l>cRA>>ahDicKv6q9fW>wdqJ0}?=ckQ;gpGu!=oE&^zOHA0}&zhuaFuj>^nd=`d{KW zs2aNVQZr^@86q=4zmbG_KS@WUo+qnVH@RaNj`@#CWi$)`{`Fm0N>l#GYI}Ai0UJmT znK@{~udcV#O0(ba?2Wi&LIIcPnRDXoTAfT1az^|2ZsyF?i=`jN_!qU`sfqE&?Zc!{m& zm};c`U(e^zTOU{GlCU$Bd&(A0tT|a(uP{Hg%Kj2UtCnJ%Pf<}(Id=V8t1dud zmI|XDO=8x}sn;*SiTMMAI#P@Pi5cPiIw6b?$YLDnexrBCCj4D(zRbK9xnY$p@ytYs z`#qA)fy-FLu*hJluwGR;b2~9xIF7zDI&`a_sA82nrL>%w+I5_9WeZGRt-32-;pD^s z=LHeK2)!cYv#KF|LT~DGk6SIT6{wHD`d($(=(J`zrs_UbSMT?>J;e^udO>VX=fm)9WiNl&$I`H#-N#pl z(8EsT93*T+u-lb4QfKh3?`VehO(G1l3D9c~i3(_FxSeLm!WB4j3GXU>o4_?2Pw+xb&W z@jBdVT=0~h>d0)wTJvHuL3{en%eg8QVDZ&$t(s(@_d#4_7x)rE0x-Ka<1nF=d(tZD zgJ+CxF7z?P&v5-!wP7U&-B7a6*`I?KqL?sNSNmjrpp{`&Ilnk6-@Y_s^3zTW2Ak8WNt^^QqIC@+1DU{nZ)h*MDADdn58UtYC}(c3SD<8WIzku9;oq1 zpu_wm3{V}oe`iHS76t$o2|_?loFY0ZuFFlE3bOK1`}X(|=XZiZwR#lfE<3Qlseupg zEJ8gMtAe7OSUIs=l3&w(hDmoZOx0eC$AaU($^H}a{(FA-(~m!x^xu&`;lg%mM+T3lhL)&pDvHb4*nUy!(@BXbBN z3qMK8#!|?k3Ca40C*Z+yQ@CvPA+~{_3TK!Q1x1lCZyTu>bgIFYiVD3GEX*?-e_ylP zO(Etl8(_gX*>-(=_x$trx#}?g>A?8&Ov3mhBc)TjjwJxFU##xy+ph4pBj^9wDF4&5 z-vJnJ0Z_n9X+bjT8!n`iJrvOpM4sJxXsP#&()_LG$?pG54d~#|QaMg+zMn+-jPW>F zEnNEX)R=6Uf3n7Suz`Jywm|!2%}ccuG3(fxmOQssOSAp-h&R_RcExEFGrr!71Vh!} z@A;J><8%^NNbvnp$F~GK-~ptuPJk!&)9izl&o|N2av4ML^EI&f&Q~cD zzppPorE#vpLAGK_3L`ZZedv`X_U%NXAx0|UP)N{OB-BND@AGDE+je=O%G>$w;wk@W zx&fey9gqP60JuaV{-%BW!!a5Er6a(I$*=hMJsz!>&%YGqPon={_;O=!83tIv{|2kh z2>%-k0O-gb`+v#WarM9F{J%IIIN0TiN|O$C9F;n?+2m5j+BCGGG(n1{Q=Z+6w`Ch{ zx5cNO(1%P71PbZ5(*XpOkLq8k zI+T#m5sQk<%}kGmhsYJIPlt64jcr5W+)37YZ-6K4UqI;d=lLt_jr0rudGMJ&0sws8 z#&`c^|7ONUgUAqWidr#FLLI~Yru?s{BR>XU)XW+|te3=s53!ZR6;+0t0sdTwmDxhJy^MS?xoncFS=`YXCEt@5P91PG=#{2H^ z_5MfV*etkR+fy!s&u6{|0ggp4udZ|{9CksBeH6bxEj%k6331|~HKfAGUJh&nQ06L(+ zC36)F`h!1`z`MU_+7D=ep#$k0%D-Dt0JIW|idYiydc&F{A^!tW5&Xb1{>~==;Jn-3 zWqkdOZtpF8|Dyz~pnuiERdogeuwYV*M_F#q9L1T6YJ$(4{a=Q zL`CEj`fpzsJ)a~bFvDK}&V3;KZDI6ZLB9V4@s|zsXZ-~ltMuy>y86DO(6@aclTa)= z2UyiFCQUem`^=g?kOCxZv#9>;Yf+V?6)$tf&izCGa4|Dwl8qtit&Dx@y~`n@LMC6 z>Q1O-fd06@U?cyJe36lX_d@>zf9eMC{Z6&LmLy*ws9SRNLr$DBH&#wuDibB3a#Z`b z&rHpnJ3t(*m%|JD&!KP_jY<~l=-CkHPW#3Go6&xheJ{m+^l!#hx3ku}RX5%M@r-fYWQN{1E_WnBn$-im8%ooL%zly%5A^$519P9a;J|2q1 zdaORwicN*jz@wr0!f!Wb1ZpGL>FFu(VldqcCQ5?VPb4+}ky-EMFGpv@)Dm!~^giqO z<&FFU9sewPe1C`SACKz7Ujb(N*8)m_-2<*!9UkfSr@$+Yo_KzB@8QNUJtoR-y&M!d z^Z4RSgbxbX6}3P*;N((F<2a&7DS#K*`Gt*tW947?``$xg3*?vS!}J<$b{KNAF8<%V zZ*kc+S)Xtf!+!=Z+GzY{i2Y{d|7O_y#^=BByWiNEN@PRO@?7axhV^3H0My#f-{pPI zutWPY9jNm=bLOBdo9ufIVgNuv@dg#Bjo!Zp$+K*2>@xNohfUV)71(6s*ScRVDry@S z1u8HB8VF#%&Jrm9-;(!&h3tIO%B=+04v!P3}flzV~J@;`7! z4gvuG0g46mrv&QW>;2IvB}f}KT!e338|Ud@f7Y0sA}RpZ#q>=Z=~9MFFw;(loE0n) z&>>7h3H+M-0_Ts#FI&RK8c>0*@mh}K$O~MO{tsY)f(C95d{zG;oBD(3AOHx7eiMSA z62Nu=oBF?s@n#32T|$)K3>^e-UoR`?tHS@w35ca%&Q(9>vUHd0QVjy3G|IEimC~vW zsXgMJPmhs-_kb?*4ha-i8S0{LH4s=cz;ox<#O=L=BY-%q@r{kHty2rUTNF+9{Y3n< zvA)CE0|Mv(^@dF0vvK>_%Gd$At<3jL5`+m)t0)HT6UsB)9w}h(4Oh42;d5 z3h0^AshZco*Or%17g_7*pYNWYT->F-KI!VDEkpc%yd7#Bw&*Y5;{aqL6NCE(A)#Tz1H8?lY-FPeB>_>O z;6S}6Tm$yELqj}z7kKWW<@&wOk(iF0D&JmK^cl19|Dbouc=`b~j>@NwUw@x*LauD2 z{qjn=i6L=uKKX30pfp%&6I0qh5(@ONP~S9Q#I_^#Y zjX`r9!T4*i{+@rf|5=59(f&UGi6g%F_j>xTbRAS9SB2{*kJ5~0kU_zywfA>!>scrO z@9X(oi*(SZBVE^VP?U5t8{_81&p03dpSI31x{@bq_Y+Puu_v}|+sTP-PHb~x+qP{^ zY)+hsjfw5NC-YzLU3cAed#(O_-Kw62`?Jn#8JqB!Q_lNsqDmuH8xb z;*{q(Ggek{KUwJHw=Q?rZzytR0y`KneDRM3Tyk-(jT z$L@Ik9Hr%{w>*^PO^>oYiX#_S9BK`k2&I-6*y3 zNwggy3yU1NFLJ}1?*lHif(MYcZ{QfwsO-yqri&O=garqBt#(mnyS&1*oR8@ zHWDF{eD#uIX9S}V!eKWuw&g62*EZG62Rm-R<8rK1q}SkL`dVy}Mn`FDTb_BDSfgk- zK&{gAxfLYE%@KMK?I*6c<}n$y9NODa9Bb_H>EE|4|4DTaCfJpVbMjP89LC8)5#f=z zI0pxiNn<{qMB|iNkaWa6r(rljkvD=-x@AzU=!Yj-nZ)8p#$aecJ8z(`vn4eRxOfR^ zr`QfY!KnOf2UrsvfNfF^GB{lp3fdc0aBod1pD2?Tb!N@LxCl&w8btv}LuN-2OPgI8 z6%Td9sTf~;2N=CMi>DXFdQ$-UeXTlY~eqofx(yTY;`rN=tzSr_<`&rK?cB4Xo$AfjI1DQ^aMwRqR)-DZQX zMyh9*5l=X)Y)#5h-JKasX!H^NF7HmqHoIGE87;~n(0mipB!242&>5w!C3IJY$0 zjK0J0iUVHj^$g(-u8+<7JXB-_%4UO7HU+8?c*PQb+;Dp1^%vnRtXz zt-FWM2v8=c z(xC=ujJ2yI0}R)I>tfc-y!&yI9^@6_>B~Jxc}@H^#utpA17*SLk|LE+18Ri};fzM* z<7&LU1;tmAsdJO8$e>y}`j@!GC=I^q7DNNAD9A4Ga&*0#p}0ahKSC_4EGjH&P6+Z( zD#w@dp9ZjZRB7s7c%=B{)9}vY@I=>ke|+P0Mg@c5MZX}RAktONHzOh~=v0YSj&x$o zA&XbQBmWy3;qWU(EpN7a1>|o$CDcowueEv*qOF-ydAv%6LWNvc2M!Gr1c`3{n>me- zUJidOt=cakn^prf&*npLkBuRx4Y`Y5xF|brqXO)8%nQ}MxA5KDIS$$X9u>vEzJ!T9fw}FK&pIehGDA4cA@SnOn?D3 zTEr+pX^z>RK=otc8`z>Mm@uz5ziEiWE}Uls^$chiv{6ZI>=v2I>7+hAo92RXXKwRr&WMho2$#?fj-^iWpwg)lnqI zs4QX;lA;Sv{lGfk9p;y~z@)J~7}Ay?R(aM$1YcvJ#v?YnEZqr?iX>v``T&#LUiTZ1f1*;zm@dMjq3UI#{yvWu?>afaW@n{hd zHfUTh#1#vUR<{vN0zy*ak{+Q&&~LQ3ykKAJMaTSq$~0N&U{1Mc&_luf?AwAOfr+ZK zZH6R*?p(oR(y)S08ODGTH4IZe7*ulDpHXh=Qn6*xI+JTz!iN*z9d%;UqfxufbKPXV zxO)QYmFGZ?8btX51zi2Un<81Jh}n%Tg&by3F|Ck_rQZSgDC6yvXCxl3Kw#-iobNW; za?xoN`tND|{ArU;>q+|Gp#dCKFb2kMc#2>!KD@e|Re6$R2@{7P#iGR@&K>~;2@Mey z8F8-7kY6#pU0|Ymv8R7E<78#(Xs@sF@^p22hmtS_Nfj`s(y)b$?*d-Faw7>39GHthpiM_sry7pmW}yZb$-S$PmO0sB}nO?=rHmmnUb;-B7e1HicoGH(D`MhK17P@ zy5eQlfCm&C9}6T&V*57w-RI5lBew5 z_2}{c1j^`$hsE(fvRGgBz=1u2@^2kH`hR_5c<#xeYw-R8DtsGU^7r$w_G$m!or^Dz z-bKv+iks1Yp9C=n!-g5#H}}lZ+3%shh{?l||0_^qh)AmX{Zl~y{fJV+5rkk;^6#?B zDME0;l`&TaeKN3iMKtn?D!nhYu)?NRuwsEiH-^>0i)PG>0JJfxhGx^gMb}Sjm&tR4 zfA>QBx45xxDkSyZXeh*RdGeAIgu{~+gP0InS|lGiASggw0QLT!4F@cN5rxJIN1La3 zB6YXmcZaG^;HyRruP;fVv40R08ku&Wgu-6_U?>{7uD=M36qRIrkwlW|Xtj;$*`!*o ze4HVvR8m%?0~(c}-Gg!ycGJncB_fGBRHD2=pJ*s5sb=Id^UX!<>1mpUV+>!8Tnz{` zviJR<8o8CS!<=H#({^yi^FoGRvK6PpzF_}|S}vmMzb1PncWgRz!TiN!)0=)Q1iPP; zUOlYdY#uKbsNvI|XB=slK2NVK3~)|IWQYvAOqo!tR%w_Gc^k7?uQVGi`HM;?ciB&S z&XN<+^Sy#Y5%~q|7+&%s6UhWpFe0Z3{U;>%pGjeK>~(jXssdpsELp(cJSEj9mfe1wIW*8Wq(+Sb;5 zW}Xtk8P3=3#SR$Uh896i zo0S$XW#I}K<*+gR^kLfJ^&T771}!?4z0BuewS{?BmZnCCrn}df&+K$!t#39wAp*D- zGVUb{J$|=eZftF6(8+q3^cOz@hQcNJ)WSq3;s#+OiFr6ayfmF7QY>%o1gVsu zJ)R8~zU@aZT&+V?Cqk7#ok+zx-a0Fn(@oKG7W2>1f8+jNPXr$=H$_*yDU<5Zl1mro z+8q!}sf?Y~Yh1?(OtT44!$=iDZ05>XHMm1*oiQyl*w6Jyynhe zE-q}E|3BBHY3C^`s3$unkt{WA=ijJqjXGJ2LmwKyPPjVNoiCONE~!`u4Mjaa0uTM6f z4=PKLNIr!D*pS_0ueOczn8UwsNTeDHtm_Q4tM`?za zo@!G#28-L~H83oJ41kr&W&IqP)?hlFW{GyDhu|L+fljZ{Ub&uLquw@FUQzW95C(d? zYkSwbJ_k0SxZ%mL%~1Putl}HM`kP)Yf= zv8!AyM2gWuwO}z{u2dsfKsKq_c>QCpTDXKxcirO_2AKw2s+3`yNTiw{GOBmylhu_0 z`R4?Nj;%bu1SpWD3z^!4%JR#LtMkf=sy<`HY~L? zO!9xBksaPE`2S`FSJU(|6uW=P3TKD7@QL)tAOsmR2`GUmiY^BZ;Bfr^8^}LLc#Q?w z)w_O<$?9C8=df-AZO3FUU_rivaQ&I)()S& zb~G@;Sa&h8r5^wAuA5#s<^sJQQkqR2$JN88VMmZ3#FM91B1Y_ZDHAEGG0!20v@gDagBiXL%sm_G7`J70X*|Wr1xDd93 zC<#}PVWz|_vgI%5KTD8h_a;@vjv=5-)E<%YB|&3h%lhaKd2szYMP+O?t~E3%w}pY_ zNvMq+B1Hv3;Et8ZFcIsmc5yI~LRc{k{lX zIZJ^XL7bQ(p>nb4OCx(hKj|p)y;(TbDiXT*RlHv{Dh^3t^Vc1$LllxmA;LEERIzf(n374y@JT2KTQ{Wlj~&DIq{p47vo5iJT@?ifZwrH&B^b zb&b@EF%v-?2vrcNKh*-tB4DlDNHs<=B{dP`8cT%AdLbmPpBLreLkpW zg}Q#F@OhUxQ8)KS+5ZEQ4;8jH*)pn)|L&s{q2TXA<+HGq|NEbO6ka*m{oYbL_av|Z9I$hgI`wB!-fLn$ax}&jy$cPrV5G zr;8miIm_8kS4&glZ?XD(r+;u3$91$Iq+N|n!FNt>2Bk>cEf%4VpeRiE(}f19UA}i7 z{N_K|Fah3twHCUcspS^@^!u7OC-*2qhbvced(^(Jk))?Fk$LF{oq2UzHEmvs5}H|g zb?%HRk8^+2m5E1?kRk-00Bq5)rIhjgY0!$4^=L9bhhxydhWu~J&i+{MEBe%cblSw;2d^-4iN!!!Xi07==RM5zz@ z3dAy^Pf=%4(@ZAmti}XaupE5do3YHqgr80em9B6$`7GTr>Yb;eEvU^ zCMvc^r4f@g{ZoC^HDrM};Afe2<_Hs5auuP0F?0+&D>Uu^9ckKcZ4l8!$uA(OkKpyi zo|TM~%1At?qgiFWx(5Z$EMfgXT0pEvY9?>EZc|sfGd#;z4g(L+Z%WSan-9*Dm=l#f)ckq zmQ}~L;XMfrZFGgwy<2ol7!z5=3WPvu>zIrxifV61r*5d^h6QyxP~kip@;0X5qYga@@q`$kxaB^0fRKPJ9oM23Up1p z3GxW}Qk>&jMVk=H&dX+6*BmUh%-NklT-nc_;8EX*yA-)ZDX;=DbQ|=A zY}v7ZH~FL-TfCr+yboCxQtplgk17VGrbOURT%5-P0j67+mv9HPV1t(T@DH@+P=r>b zd@TDGt=9W&3HpRB*m}6MjW`!rI@0Sx=EnTM4$WqrrZ(_z(OS@rO>u6#Uu&g-+a5d{ zX!z9qwT%gl3Ja%hVS7W1Ny7@3${Tf3W)(Ay-k3*f5Wulfpq^kds_NzAro&H5_cYY( zU~x~6Y|LFFK8jhg;J$Yh1J`Ct-R1;EQZ(VG{R|lkdvDB06ks?9-Hg593A`vjKSf2A z$xl)8%PZ!PKCQ66j0$>LC&p^?gtiJE~VZ$4D84l8m>rG8nYa z7o(sdMM(_}3?$kAiKU++=&y^{;+XBH57pPOiFfle&$x_|pJeHH=?1IRF#2Ct!o~n> z0#iZEYvH_G$#XN|lYNi~xdK1AuyaF!ABUJ(g|LP*Ierg&se9wbm%DLef%mVmW^>$< z&7hCt#mA@p{*mJ5q{SEpyHQ;4hZAQRQ)y)>CMH}Z{fkHDi3uUKo)&xe&%AT$pHh3M zLlJUE=_}W zKm7r?Sf5Zx_xCB#5IW^{pjjm#@d-I!D$3!9@4FhItz%?Q>gUfgIr zz+Pf`=cMd>5r+G48*lK85q|uz;^)f?xb1oh`hYL!mKfGj_+uDHTd^qoo3NB)3VGHW zx+P(HA|_ZFZi_RR;mehL7)Kw-<+28EH~GiG=68TrzvF;~5D4eG+&6DaIijs|e#OB4 zKN-pxZxXQ)`)v(W9adv>G%79nlDt!Tb}oE z4TuA+1!V);OK?fUq+XR-l^A}KoTr=$j6psmsPj)5?q9qMt$3iT`vD6vLlh0N-!J%^ ztkyz~6E`s8#RxQX-XFs*RE^YrMCg-XOA97t7@$NZ607Mr6tx`xwnWLM#SY6v98WOJ zjAdj=$^J5_;-8=TQ*|a^0t@&&E^4!?Za94w2e@$Wfm*piidP#<_Vy-*n1TgH!eMaf( zvmn{G#`$=k?z32I8gg!H0G@Z1)!X}*$AY8Kg)r;OZTU9c@otXHuV-vq@vM^R3m;Xd^q%&q1Zz|^ z?pzXAYCEB!8EuzJaiR!Rrr#YDBIv@7gYa*BV1JJV`$q$`0uFb3FD7>k#%}r-!Cp4P z?ku?i)f^8bx1#5(T`3jcOf3_xq789Wwe#CfmpvqLY<@<7+3oRfwDjhvD3|R^lUS2^ zt08TMynEdFlM8bV>p%|W7}#9`hT!jPwVrw8*4DQ)lL2iU$Mx@Q*{ccDyFw+GUEXAM znLclgX}`ojR*m0x&2-_{+1@G@(4CPQPpvd}&7b)*j@`56-ud*z`1$cUu{%xqEw33t z-36Kt(qi^w{x*5NdU}3-5ZnNXxE z&Z?7v8YZx>;;T^h+HiXF-aqsj9TG{EXX(O=;E2anEol`Bq9zcuOKw_}StwI%q(*)NkAu50fkB*Y*MBnU}kVMR$sCFW&Uc{5coJ zc-r1IV4O+#+QW0@t{<=dPpR^+Zl2>MD~RJ5IKv6_Zp83PTZR?&Ik)1b`0DSNy>CW@ zj$!76R@(@rUEqh(>Y>RQqA3Xg@P-M+z+MH#LziWNT*EJ!UmYSYoL<4RbSg{vJk1=A z;5GtLheN4nrceELXv&EZew#nHdlfMUq0HVzhYnppOjkRjWMt@pb5PoyO$2q7AmE?I z4sngR@kc8A#2rj+N9!i#v^^(NV|&;Ox39aYV15uX=aM#H?s0`px`h8{nuyBlmoB%*j)5VIBqW8Ma7#q z4(=?`JBmreI-X`9)?%Ri?JnJJWGZyyuT1AWYZBUNobxZs&zv^>7+ekt4F0%~`C8bG zOEJv1mq{6-qSOev1jdCg_ZG!S6Wr9i60lMB^`+pM4?Z~jV!NUp0&nrSEY)Ywp2LoO1}2QZfL^`rN7D#?Kk{E$KAc1 z1Po9qz{({Hhecg?wF~r1Pl_86jv;t>K&EiH`X)Ak@$4}voFVAKIFh{fhW^Joo9`vm zH8LQGAb7{X9<;k5#|?AowzeXJAry%MK0naz__;@XFlvKDM&@l76_1PQ3~cKA@N52V z6M6Uh2jF^PV&{i*2M?5Bq=0>_V=HL1*H@hSFNkLEOecWl$85y&2g3KpF?*Z~JOO*b z0s-It;BAQ}_Q7XNYl7@9)c0`T(r$ND0RpjHj?kkvKE!7fzgPzBTp{t|x1NNmAK3GC z$eFl7ee1F%a=V6yGIT+61ck-aRSS-}Nm_z-?$EZwGLb z8e&JEvy~y5?}eO4uTq7cl4ey-rD{tRR(t-&XWI8J9CDx^4ZK34p!S#4|Ly+GO`kS( z&>^6^A(k(=v|B6PB_-NusS6%VYm$D~wy)U3j=qF*ohnVcb|GFqD#oNFI$%jMZw+Kh zSUgI@`mvBR!O3mX|6DeWlp$WQ9V}j;U_xZ6GrAhKSrHiS@`No1M%F%BXthC6# zQ=(ic4@N@TI8B~+rOi!_&6%f9JTxlB9v=-qdN8FQELD)%Sl|LrZ<%jS2}DVSe~dfH zNyy_~>wKo9 zXc`ZQF{RnGuiGMWLK5Iv)X9;5F~n)`PD2C z@|S7T2Hi&-nHUSK1E3O9o&LDeOZC_2b>iWJMw>$yUpV4x!9fi(bz3~Tqi@8C1V7}r z!+^+Mcy@rY$K!eKCWP8TR?-FH3IW_A*!ZO z{c={Nge&}Vv7;~_{AkQZJNEZeCZqee$;`RT@&#Pk6~p)mM)k37SVEES8BD-pM!5cG zjt&7>nncBwjibg`dDaGBWtl_Fy|;O959TFPU%S(K{^n@4Z!=umS9*OS&>5+4fG|Q^ ziLuj7bjA7j{No2a3HC`LHl2&EoTktM{co^MsQvzVT`&4}jExF}HB(4dkmN^|RMKv! z!EQN?OaB=&GM@X+mVz-d#FsYsGYA6t+Gf^rNlrcu5E3_N<6^~+?le4Lo1>dGch2I@ OA+8o+g0|)wi2noZyn^8X literal 0 HcmV?d00001 diff --git a/src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.eot b/src/scitex/_sphinx_html/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..11e3f2a5f0f9b8c7ef6affae8c543d20f7c112be GIT binary patch literal 253461 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�P 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