pyodide-mkdocs-theme 5.6.0__tar.gz → 5.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/PKG-INFO +1 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/__main__.py +1 -1
- pyodide_mkdocs_theme-5.6.1/pyodide_mkdocs_theme/__version__.py +1 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base0_extractors.py +8 -9
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps_class.py +9 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_manager.py +20 -15
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/py_script.py +2 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/pages_and_macros_py_configs.py +6 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/test_cases.py +14 -5
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/README.md +36 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/0-legacy-subscriber.js +6 -7
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/0-generic-python-snippets-pyodide.js +26 -44
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/1-runtimeManager-runtime-pyodide.js +2 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/5-2-virtualizer-ides_test.js +143 -123
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/5-3-avl-ides_test.mjs +1 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/5-ideTester-ides_test.js +7 -3
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyproject.toml +1 -1
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/__version__.py +0 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/LICENSE +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/README.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/p5/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/p5/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/p5v2/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/p5v2/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/vis/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/vis/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/vis_network/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/PMT_tools/vis_network/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/basthon_p5_to_pmt.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/exceptions.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/_inclusions_tools.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base1_contents_extractor.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base2_inclusions.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base3_generic_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/concrete_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/html_builder/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/html_builder/_html_builder.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/indent_parser.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/figure.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_ide.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_playground.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_py_btn.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_run_macro.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_term_ide.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_terminal.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_tester.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/qcm.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/macros/runners_macros.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/messages/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/messages/classes.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/messages/de_lang.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/messages/en_lang.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/messages/fr_lang.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/messages/proxy.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/parsing.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/paths_utils.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/config.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_base.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_contracts.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_files.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_indent.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_macros.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_meta.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_templates.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin/pyodide_macros_plugin.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/_string_tools_and_constants.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/common_tree_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/config_option_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/docs_dirs_config.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/macros_configs.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/plugin_config.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/sub_configs.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/dumpers.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/lang_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/macro_config_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/plugin_config_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/sub_config_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/ide_tests.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/macros_data.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/maestro_tools.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/options_alterations.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/pyodide_logger.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/pyodide_macros/tools_and_constants.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/de/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/de/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/de/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/en/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/en/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/en/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/fr/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/fr/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/fr/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/models/.gitignore +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/models/main.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/models/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/models/pyodide_plot.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/models/requirements.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/scripts/models/toolbox.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/.qcm-circle.svg +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-check-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-download-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-pause-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-play-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-restart-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-save-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-step-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-stop-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-upload-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/assets/images/icons8-zip-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/base_pmt.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/0-config.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/functools.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/functoolsStorage.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/functoolsTxt.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/functoolsUi.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/functoolsUiBuilder.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/jsLogger.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/mathjax-libs.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-libs/process_and_gui.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/1-error_logs-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/1-packagesInstaller-install-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/2-0-runnersManager-runners.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/2-pyodideSectionsRunner-runner-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/3-btnRunner-py_btn.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/3-terminalRunner-term.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/4-0-idesManager-ide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/4-ideLogistic-ide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/4-ideRunner-ide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/6-2-init-playground.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/6-idePlayground-playground.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/qcms-qcm.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-per-pages/start-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-scripts/overlord.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/js-scripts/subscriptions.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/main.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/mkdocs_theme.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/partials/content.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/partials/copyright.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/partials/footer.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/partials/header.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/partials/social.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/0-generic.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/btns-header.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/history.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/hourglass.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/ide.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/qcm.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/terminal.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/pyodide-css/testing.css +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pyodide-mkdocs-theme
|
|
3
|
-
Version: 5.6.
|
|
3
|
+
Version: 5.6.1
|
|
4
4
|
Summary: Package embedding the necessary tools to host pyodide, ACE editors, jQuery terminals in mkdocs documentations
|
|
5
5
|
License: GPL-3.0-or-later
|
|
6
6
|
Keywords: mkdocs,mkdocs-plugin,pyodide,IDE,terminal
|
|
@@ -50,7 +50,7 @@ parser = ArgumentParser(
|
|
|
50
50
|
"This program comes with ABSOLUTELY NO WARRANTY."
|
|
51
51
|
)
|
|
52
52
|
parser.add_argument(
|
|
53
|
-
'-v', '--version', action='version', version=f'
|
|
53
|
+
'-v', '--version', action='version', version=f'v{__version__}'
|
|
54
54
|
)
|
|
55
55
|
parser.add_argument(
|
|
56
56
|
'-n', '--new', default="",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "5.6.1"
|
|
@@ -130,11 +130,6 @@ class BaseFilesExtractor:
|
|
|
130
130
|
also used to identify an inclusion location, when resolving them).
|
|
131
131
|
"""
|
|
132
132
|
|
|
133
|
-
in_pages: Set[str] = field(default_factory=set)
|
|
134
|
-
"""
|
|
135
|
-
Set of pages uri (relative to the docs_dir) that use the current extractor.
|
|
136
|
-
"""
|
|
137
|
-
|
|
138
133
|
# ---------------------------------------------------------------------------------
|
|
139
134
|
|
|
140
135
|
ARG_NAME: ClassVar[str] = None
|
|
@@ -145,13 +140,9 @@ class BaseFilesExtractor:
|
|
|
145
140
|
|
|
146
141
|
|
|
147
142
|
def __post_init__(self):
|
|
148
|
-
|
|
149
143
|
if self.runner_file:
|
|
150
144
|
self.exo_file = Path(self.runner_file).resolve()
|
|
151
145
|
self.docs_file = Path(self.exo_file).relative_to(CWD)
|
|
152
|
-
md_uri = self.env.page.file.src_uri
|
|
153
|
-
self.in_pages.add(md_uri)
|
|
154
|
-
|
|
155
146
|
|
|
156
147
|
def __hash__(self):
|
|
157
148
|
return hash(self.exo_file)
|
|
@@ -258,6 +249,12 @@ class BaseExtractorWithCache(BaseFilesExtractor):
|
|
|
258
249
|
_mtime_infos: Dict[Path, Optional[int]] = None
|
|
259
250
|
|
|
260
251
|
|
|
252
|
+
in_pages: Set[str] = field(default_factory=set)
|
|
253
|
+
"""
|
|
254
|
+
Set of pages uri (relative to the docs_dir) that use the current extractor (used for external
|
|
255
|
+
purposes only, aka, mkdocs-addresses)
|
|
256
|
+
"""
|
|
257
|
+
|
|
261
258
|
|
|
262
259
|
@classmethod
|
|
263
260
|
def _get_file_extractor_for(
|
|
@@ -287,6 +284,8 @@ class BaseExtractorWithCache(BaseFilesExtractor):
|
|
|
287
284
|
elif not extractor.is_up_to_date():
|
|
288
285
|
extractor.extract_contents()
|
|
289
286
|
|
|
287
|
+
md_uri = env.page.file.src_uri
|
|
288
|
+
extractor.in_pages.add(md_uri)
|
|
290
289
|
return runner_file, extractor
|
|
291
290
|
|
|
292
291
|
|
|
@@ -76,7 +76,7 @@ class DepKind:
|
|
|
76
76
|
sorting from the given @kind, which is already present in @needs.
|
|
77
77
|
Keep adding kinds as long as they are not present in @needs.
|
|
78
78
|
"""
|
|
79
|
-
# NOTE: this is almost useless
|
|
79
|
+
# NOTE: this is almost useless for PMT 4+, because of automatic resolution of imported
|
|
80
80
|
# modules, BUT there are still some needs for non modules, so keep everything as is...
|
|
81
81
|
|
|
82
82
|
# Keep in mind DepKind _values_ are actually SIMPLE STRINGS!
|
|
@@ -159,10 +159,10 @@ class Dep:
|
|
|
159
159
|
""" Static property: Store HtmlDependencies property names, to make sure they are unique. """
|
|
160
160
|
|
|
161
161
|
|
|
162
|
-
|
|
163
162
|
def __init_subclass__(cls):
|
|
164
163
|
Dep.EXTENSION_TO_CLASS[cls.EXTENSION] = cls
|
|
165
164
|
|
|
165
|
+
#-------------------------------------------------------------------------
|
|
166
166
|
|
|
167
167
|
@staticmethod
|
|
168
168
|
def auto_ordering():
|
|
@@ -218,11 +218,18 @@ class Dep:
|
|
|
218
218
|
|
|
219
219
|
|
|
220
220
|
def get_html_tag(self):
|
|
221
|
+
"""
|
|
222
|
+
Convert tu current dependency to the corresponding html tag to insert in the page.
|
|
223
|
+
"""
|
|
221
224
|
return self.DUMP_TEMPLATE.format(
|
|
222
225
|
data=' '.join(f'{k}="{v}"' for k,v in self.data.items())
|
|
223
226
|
)
|
|
224
227
|
|
|
225
228
|
def gen_import_map(self):
|
|
229
|
+
"""
|
|
230
|
+
Return an iterator of items to add the current dependency to the importmap tag.
|
|
231
|
+
Reminder: only js modules have to be referenced.
|
|
232
|
+
"""
|
|
226
233
|
return ()
|
|
227
234
|
|
|
228
235
|
|
|
@@ -21,6 +21,7 @@ If not, see <https://www.gnu.org/licenses/>.
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
from abc import ABCMeta
|
|
24
|
+
import os
|
|
24
25
|
import re
|
|
25
26
|
import hashlib
|
|
26
27
|
from typing import Any, ClassVar, Dict, List, Literal, Optional, Tuple, Union, TYPE_CHECKING
|
|
@@ -706,31 +707,35 @@ class IdeManagerMdHtmlGenerator(IdeSectionsManager):
|
|
|
706
707
|
local machine.
|
|
707
708
|
"""
|
|
708
709
|
is_ide = PmtPyMacrosName.is_ide(self.MACRO_NAME)
|
|
709
|
-
|
|
710
|
+
not_legacy = not self.env.is_legacy
|
|
710
711
|
runner_path = self.exo_py
|
|
711
712
|
has_py_file = bool(runner_path)
|
|
712
|
-
project_id = self.env.project_id or ""
|
|
713
713
|
|
|
714
|
-
need_project_id =
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
# 4. Either...:
|
|
722
|
-
# - the ides_id_hash_mode is set to relative
|
|
723
|
-
# - Or there is no python file for the IDE
|
|
724
|
-
|
|
725
|
-
project_id = f':_{ project_id }' * bool(need_project_id)
|
|
714
|
+
need_project_id = bool(self.FORCE_PROJECT_ID_IN_HASH or (
|
|
715
|
+
is_ide
|
|
716
|
+
and self.env.project_disambiguate_local_storage
|
|
717
|
+
and self.env.project_id
|
|
718
|
+
and (not_legacy or not has_py_file )
|
|
719
|
+
))
|
|
720
|
+
project_id = f':_{ self.env.project_id or "" }' * need_project_id
|
|
726
721
|
|
|
727
722
|
if has_py_file and (is_ide or self.env.ACTIVATE_CACHE):
|
|
728
723
|
|
|
729
724
|
less_ID_needs = "" if is_ide else ':'+self.MACRO_NAME
|
|
730
|
-
if is_ide and
|
|
725
|
+
if is_ide and not_legacy:
|
|
731
726
|
runner_path = Path(self.exo_py).relative_to(self.env.docs_dir_path)
|
|
732
727
|
|
|
728
|
+
if os.getenv("IDE_ID_WITH_POSIX"):
|
|
729
|
+
runner_path = runner_path.as_posix()
|
|
730
|
+
# This is used in CodEx's tests, to make sure the ids do not depend on the OS.
|
|
731
|
+
# Without that, the IDE ids do not match the ones registered in Capytale.
|
|
732
|
+
|
|
733
733
|
to_hash = f"{ runner_path }{ self.IDE_VERT }{ less_ID_needs }{ project_id }"
|
|
734
|
+
# WARNING: there is still a problem here depending on the OS: people working
|
|
735
|
+
# on win/something else will get different html ids because of `\` vs `/` in
|
|
736
|
+
# `runner_path`... This is not a problem, from the end users PoV. This is only
|
|
737
|
+
# a problem (so far) for CodEx tests on Capytale, because the server stores the
|
|
738
|
+
# html ids of the DIE, to know where to put what.
|
|
734
739
|
|
|
735
740
|
else:
|
|
736
741
|
count = self.env.macros_counters[ self.MACRO_NAME ].inc()
|
|
@@ -46,7 +46,7 @@ def _more_code_fence(
|
|
|
46
46
|
title: str,
|
|
47
47
|
attrs: str,
|
|
48
48
|
no_block: bool,
|
|
49
|
-
lang: str=
|
|
49
|
+
lang: str=None,
|
|
50
50
|
):
|
|
51
51
|
"""
|
|
52
52
|
Extra function to centralize some of the formatting logic.
|
|
@@ -61,7 +61,7 @@ def _more_code_fence(
|
|
|
61
61
|
indent,
|
|
62
62
|
title=(title or ""),
|
|
63
63
|
attrs=(attrs or ""),
|
|
64
|
-
lang=lang,
|
|
64
|
+
lang=lang or 'python',
|
|
65
65
|
)
|
|
66
66
|
return out
|
|
67
67
|
|
|
@@ -207,7 +207,12 @@ class PageConfiguration(Dict[EditorName,MacroPyConfig]):
|
|
|
207
207
|
def build_page_script_tag_with_ides_configs_mermaid_and_pool_data(
|
|
208
208
|
self, overlord_classes:List[str]
|
|
209
209
|
):
|
|
210
|
-
|
|
210
|
+
"""
|
|
211
|
+
Build a synch script tag, that his adding to the page the global data structures so that
|
|
212
|
+
the various elements needed in the page can be built:
|
|
213
|
+
- Update CONFIG mermaid and classes pool infos
|
|
214
|
+
- build the PAGE_IDES_CONFIGS compressed string
|
|
215
|
+
"""
|
|
211
216
|
json_ide_configs = '{' + ', '.join(
|
|
212
217
|
f'"{ editor_name }": { ide_conf.dump_to_js_code() }'
|
|
213
218
|
for editor_name, ide_conf in self.items()
|
|
@@ -20,7 +20,7 @@ If not, see <https://www.gnu.org/licenses/>.
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
from typing import ClassVar, Dict, List, Literal, Optional, Set, Tuple, Union, TYPE_CHECKING
|
|
23
|
+
from typing import ClassVar, Dict, List, Literal, Optional, Sequence, Set, Tuple, Union, TYPE_CHECKING
|
|
24
24
|
from dataclasses import dataclass, field, fields
|
|
25
25
|
|
|
26
26
|
from pyodide_mkdocs_theme.pyodide_macros.tools_and_constants import IdeMode, NamedTestCase
|
|
@@ -126,6 +126,13 @@ class Case:
|
|
|
126
126
|
"""
|
|
127
127
|
Don't clear the scope before doing this test (NOTE: this would become useless if the tests
|
|
128
128
|
were not run in order).
|
|
129
|
+
When this feature is used, the `input` fonction will be overridden on the fly in the global
|
|
130
|
+
scope, before the code to test is run. The new function is returning the values in order, one
|
|
131
|
+
element per call. If all inputs are consumed, the call is transferred to the original builtin.
|
|
132
|
+
This custom function is removed from the environment after the test.
|
|
133
|
+
|
|
134
|
+
If the code of the tests also replace/define a custom `input` function, there is no guarantee
|
|
135
|
+
about what will happen.
|
|
129
136
|
"""
|
|
130
137
|
|
|
131
138
|
term_cmd: Optional[str] = None
|
|
@@ -138,7 +145,6 @@ class Case:
|
|
|
138
145
|
Quick description of the test (optional).
|
|
139
146
|
"""
|
|
140
147
|
|
|
141
|
-
|
|
142
148
|
#-------------------------------------------------------------------------
|
|
143
149
|
# Private interface:
|
|
144
150
|
|
|
@@ -508,9 +514,12 @@ Case.CORR = Case() # Default case before PMT 5.0
|
|
|
508
514
|
Case.HUMAN = Case(human=True)
|
|
509
515
|
Case.NO_CLEAR = Case(no_clear=True)
|
|
510
516
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
# Enforce no_clear directly on subcases because these might be copied in auto_convert_and_fix_case:
|
|
520
|
+
Case.DEFAULT = Case(description="", subcases=[
|
|
521
|
+
Case(description="corr vs validation (succès)", no_clear=False),
|
|
522
|
+
Case(description="code vs validation (échec)", no_clear=False, code=True, fail=True),
|
|
514
523
|
# Case(description="`code` vs `tests` (échec)", code=True, fail=True, run_play=True),
|
|
515
524
|
])
|
|
516
525
|
|
{pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.1}/pyodide_mkdocs_theme/templates/README.md
RENAMED
|
@@ -56,3 +56,39 @@ All js scripts are systematically present on the server/built site, but their in
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
1. `templates/js-scripts` scripts are finally run. They are __always present__, and added in as a last step of the Jinja `scripts` block.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
## Files hierarchy and naming "conventions"...
|
|
66
|
+
|
|
67
|
+
This looks like a total mess, I know... The naming is actually constrained for various reasons, some due to legacy behaviors, others are just about easing the navigation in the code during development...
|
|
68
|
+
|
|
69
|
+
The three folders are required by the implementation. They are m
|
|
70
|
+
|
|
71
|
+
| Directory | Inserted in `main.html` in... |
|
|
72
|
+
|-|-|
|
|
73
|
+
| js-libs | the libs block |
|
|
74
|
+
| js-per-pages | the content block |
|
|
75
|
+
| js-scripts | the scripts block |
|
|
76
|
+
|
|
77
|
+
The order of the files in each directory matters for scripts that are loaded synch:
|
|
78
|
+
|
|
79
|
+
- js-libs/0-config.js
|
|
80
|
+
- js-libs/0-legacy-subscriber.js
|
|
81
|
+
- js-libs/mathjax-libs.js
|
|
82
|
+
|
|
83
|
+
/!\ WARNING /!\
|
|
84
|
+
---------------
|
|
85
|
+
|
|
86
|
+
The name of the mathjax CANNOT BE CHANGED for backward compatibility reasons (users may have overridden it through the custom_dir)
|
|
87
|
+
|
|
88
|
+
In the `js-per-pages` directory, the numbers are here only to ease development: they more or less follow the dependency orders.
|
|
89
|
+
Why no subdirectories? ...because I didn't want more depth during development. These folders are used so often that I didn't want to have one more click to do to reach the file I needed...
|
|
90
|
+
|
|
91
|
+
The files in `js-per-pages` also are in the form `N-something-suffix.js`, where `suffix` is used so that the devops tool building the dependencies knows what file is used for what purpose, when building the dependencies in the python layer.
|
|
92
|
+
This is done this way to keep most of the JS logic/configuration in the JS layer, the python one implementing only the logic and having almost no configuration data (aside of the directories locations) to rebuild everything correctly even after some changes occurred on the JS side.
|
|
93
|
+
|
|
94
|
+
So, yeah. That's dirty, but that works pretty well, in the end, and avoids a lot of time lost for nothing.
|
|
@@ -24,17 +24,17 @@ const jsLogger =()=> null
|
|
|
24
24
|
//*
|
|
25
25
|
globalThis.LOGGER_CONFIG = {}
|
|
26
26
|
/*/
|
|
27
|
-
globalThis.LOGGER_CONFIG = {ACTIVATE:
|
|
27
|
+
globalThis.LOGGER_CONFIG = {ACTIVATE:1, all:1}
|
|
28
28
|
//*/
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
/**Defined for backward compatibility,
|
|
33
|
-
* original synch implementation of subscribeWhenReady.
|
|
32
|
+
/**Defined for backward compatibility, in case the user is still relying on the function from
|
|
33
|
+
* the original synch implementation of subscribeWhenReady.
|
|
34
34
|
*
|
|
35
35
|
* Facts:
|
|
36
|
-
* 1. MathJax subscription is now done from the js-scripts/subscriptions.js module, so any
|
|
37
|
-
* call for mathjax coming from a user override is totally useless and can just be
|
|
36
|
+
* 1. MathJax subscription is now done from the `js-scripts/subscriptions.js` module, so any
|
|
37
|
+
* call for mathjax coming from a user override is totally useless and can just be ignored.
|
|
38
38
|
* 2. If ever another subscription is done, just directly transmit the call to the module
|
|
39
39
|
* version, to unify the implementations/logics.
|
|
40
40
|
* */
|
|
@@ -52,6 +52,5 @@ function subscribeWhenReady(subscriptionId, ...args){
|
|
|
52
52
|
module.subscribeWhenReady(subscriptionId, ...args)
|
|
53
53
|
})
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
return ()=>0 // SINK! (the default mathjax override _will_ call a fonction)
|
|
55
|
+
return ()=>null // SINK! (the default mathjax override _will_ call a fonction)
|
|
57
56
|
}
|
|
@@ -243,6 +243,9 @@ def _hack_auto_run():
|
|
|
243
243
|
|
|
244
244
|
# Keep uncleaned elements:
|
|
245
245
|
runner = AutoRunner()
|
|
246
|
+
|
|
247
|
+
# Since this snippet will be run for each new section, always transfer existing traced
|
|
248
|
+
# calls to the new object:
|
|
246
249
|
if hasattr(__builtins__, 'auto_run'):
|
|
247
250
|
runner.run |= __builtins__.auto_run.run
|
|
248
251
|
__builtins__.auto_run = runner
|
|
@@ -531,24 +534,10 @@ def _hack_scope_cleaner():
|
|
|
531
534
|
clearScope: `clear_scope()`,
|
|
532
535
|
|
|
533
536
|
|
|
534
|
-
wantedImports: `
|
|
535
|
-
@auto_run
|
|
536
|
-
def _hack_find_imports():
|
|
537
|
-
from pyodide.code import find_imports
|
|
538
|
-
__builtins__.imported_modules = find_imports({FORMAT_TOKEN})
|
|
539
|
-
|
|
540
|
-
__builtins__.imported_modules
|
|
541
|
-
`,
|
|
542
|
-
|
|
537
|
+
wantedImports: `__import__('pyodide').code.find_imports({FORMAT_TOKEN})`,
|
|
543
538
|
|
|
544
|
-
alreadyImported: `
|
|
545
|
-
@auto_run
|
|
546
|
-
def _hack_imported():
|
|
547
|
-
import sys
|
|
548
|
-
__builtins__.loaded_modules = " ".join(sys.modules.keys())
|
|
549
539
|
|
|
550
|
-
|
|
551
|
-
`,
|
|
540
|
+
alreadyImported: `" ".join(__import__('sys').modules.keys())`,
|
|
552
541
|
|
|
553
542
|
|
|
554
543
|
upDownLoader: `
|
|
@@ -910,6 +899,16 @@ def _hack_mermaid():
|
|
|
910
899
|
def _hack_stdout_up():
|
|
911
900
|
import sys, io, js
|
|
912
901
|
|
|
902
|
+
# Keep a StringIO object there (this also allows to enforce a flush of the stdout content
|
|
903
|
+
# in between runs/sections, on user's side, and redactors wanting to test against the user
|
|
904
|
+
# stdout will also use this:
|
|
905
|
+
__builtins__.src_stdout = sys.stdout
|
|
906
|
+
sys.stdout = io.StringIO()
|
|
907
|
+
|
|
908
|
+
# Different object allowing to spot what to print exactly, for one single call to print:
|
|
909
|
+
__builtins__.per_call_std_out = io.StringIO()
|
|
910
|
+
|
|
911
|
+
|
|
913
912
|
@wraps_builtin
|
|
914
913
|
def print(*a,**kw): # Note: wraps doesn't seem to work... Dunno why...)
|
|
915
914
|
|
|
@@ -917,45 +916,29 @@ def _hack_stdout_up():
|
|
|
917
916
|
__print_src__(*a,**kw)
|
|
918
917
|
|
|
919
918
|
# Then print to the one used to get proper formatting (according to the generic
|
|
920
|
-
# behavior of python print function)
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
properly_formatted =
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
919
|
+
# behavior of python print function):
|
|
920
|
+
kw['file'] = per_call_std_out
|
|
921
|
+
__print_src__(*a, **kw)
|
|
922
|
+
|
|
923
|
+
# Then extract the formatted content to write to the terminal and empty per_call_std_out:
|
|
924
|
+
properly_formatted = per_call_std_out.getvalue()
|
|
925
|
+
per_call_std_out.truncate(0)
|
|
926
|
+
per_call_std_out.seek(0)
|
|
929
927
|
js.config().termMessage(None, properly_formatted, 'none', True)
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
# Different object allowing to spot what to print exactly, for one single call to print:
|
|
933
|
-
__builtins__.per_call_std_out = per_call_stdout = io.StringIO()
|
|
934
|
-
|
|
935
|
-
# Keep a StringIO object there (this also allows to enforce a flush of the stdout content
|
|
936
|
-
# in between runs/sections, on user's side, and redactors wanting to test against the user
|
|
937
|
-
# stdout will also use this:
|
|
938
|
-
__builtins__.src_stdout = sys.stdout
|
|
939
|
-
sys.stdout = io.StringIO()
|
|
940
928
|
`,
|
|
941
929
|
|
|
942
930
|
|
|
943
|
-
|
|
931
|
+
teardownStdIO:`
|
|
944
932
|
@__builtins__.auto_run
|
|
945
933
|
def _hack_stdout_down():
|
|
946
934
|
import sys
|
|
947
935
|
|
|
948
|
-
# Store to send the result to JS layer at the end:
|
|
949
|
-
__builtins__._stdout_value = sys.stdout.getvalue()
|
|
950
|
-
|
|
951
936
|
sys.stdout.close()
|
|
952
937
|
sys.stdout = __builtins__.src_stdout
|
|
953
938
|
del __builtins__.src_stdout
|
|
954
939
|
|
|
955
940
|
__builtins__.per_call_std_out.close()
|
|
956
941
|
__builtins__.print = __builtins__.__print_src__
|
|
957
|
-
|
|
958
|
-
__builtins__._stdout_value
|
|
959
942
|
`,
|
|
960
943
|
}
|
|
961
944
|
|
|
@@ -1050,9 +1033,8 @@ export const setupStdIO =_=>{ // WARNING: some arguments may be passed in
|
|
|
1050
1033
|
pyodideFeatureRunCode('setupStdIO')
|
|
1051
1034
|
}
|
|
1052
1035
|
|
|
1053
|
-
export const
|
|
1054
|
-
|
|
1055
|
-
return escapeSquareBrackets(stdout)
|
|
1036
|
+
export const teardownStdIO =_=>{
|
|
1037
|
+
pyodideFeatureRunCode('teardownStdIO')
|
|
1056
1038
|
}
|
|
1057
1039
|
|
|
1058
1040
|
export const clearPyodideScope=()=>{
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
youAreInTroubles,
|
|
26
26
|
} from 'functoolsTxt'
|
|
27
27
|
import {
|
|
28
|
-
|
|
28
|
+
teardownStdIO,
|
|
29
29
|
pyodideFeatureRunCode,
|
|
30
30
|
setupStdIO,
|
|
31
31
|
} from '0-generic-python-snippets-pyodide'
|
|
@@ -363,7 +363,7 @@ export class RuntimeManager {
|
|
|
363
363
|
|
|
364
364
|
|
|
365
365
|
async teardownManager(ctx){
|
|
366
|
-
|
|
366
|
+
teardownStdIO()
|
|
367
367
|
|
|
368
368
|
if(!ctx.err) return; // nothing to do if no error during the current run.
|
|
369
369
|
|