pyodide-mkdocs-theme 5.6.0__tar.gz → 5.6.2__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.2}/PKG-INFO +1 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/__main__.py +1 -1
- pyodide_mkdocs_theme-5.6.2/pyodide_mkdocs_theme/__version__.py +1 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base0_extractors.py +8 -9
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps.py +61 -99
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps_class.py +30 -56
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_manager.py +20 -15
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/py_script.py +2 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/messages/de_lang.py +9 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/messages/en_lang.py +9 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/messages/fr_lang.py +9 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/test_cases.py +20 -11
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/README.md +36 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/0-config.js +1 -6
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/0-legacy-subscriber.js +6 -7
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/functools.js +57 -7
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/functoolsUiBuilder.js +1 -3
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/process_and_gui.js +54 -34
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/0-generic-python-snippets-pyodide.js +38 -49
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/1-packagesInstaller-install-pyodide.js +36 -83
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2}/pyodide_mkdocs_theme/templates/js-per-pages/2-0-runnersManager-runners.js +6 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/2-pyodideSectionsRunner-runner-pyodide.js +33 -22
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/3-btnRunner-py_btn.js +2 -2
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/3-terminalRunner-term.js +6 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/4-ideLogistic-ide.js +16 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2}/pyodide_mkdocs_theme/templates/js-per-pages/5-3-avl-ides_test.mjs +25 -13
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/5-ideTester-ides_test.js +8 -4
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/6-idePlayground-playground.js +22 -3
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/qcms-qcm.js +1 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-per-pages/start-pyodide.js +2 -1
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-scripts/subscriptions.js +6 -10
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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/templates/js-per-pages/6-2-init-playground.js +0 -42
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/LICENSE +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/README.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/p5/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/p5/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/p5v2/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/p5v2/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/vis/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/vis/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/vis_network/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/PMT_tools/vis_network/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/basthon_p5_to_pmt.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/exceptions.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/_inclusions_tools.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base1_contents_extractor.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base2_inclusions.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base3_generic_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/concrete_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/html_builder/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/html_builder/_html_builder.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/indent_parser.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/figure.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_ide.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_playground.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_py_btn.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_run_macro.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_term_ide.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_terminal.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_tester.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/qcm.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/macros/runners_macros.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/messages/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/messages/classes.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/messages/proxy.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/parsing.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/paths_utils.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/config.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_base.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_contracts.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_files.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_indent.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_macros.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_meta.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_templates.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin/pyodide_macros_plugin.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/common_tree_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/config_option_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/macros_configs.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/plugin_config.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/sub_configs.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/dumpers.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/lang_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/macro_config_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/plugin_config_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/sub_config_src.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/ide_tests.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/macros_data.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/maestro_tools.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/options_alterations.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/pyodide_logger.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/pyodide_macros/tools_and_constants.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/de/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/de/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/de/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/en/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/en/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/en/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/fr/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/fr/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/fr/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/models/.gitignore +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/models/main.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/models/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/models/pyodide_plot.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/models/requirements.txt +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/scripts/models/toolbox.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/.qcm-circle.svg +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-check-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-download-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-pause-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-play-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-restart-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-save-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-step-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-stop-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-upload-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/assets/images/icons8-zip-64.png +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/base_pmt.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/functoolsStorage.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/functoolsTxt.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/functoolsUi.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/jsLogger.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-libs/mathjax-libs.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2}/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.2}/pyodide_mkdocs_theme/templates/js-per-pages/4-ideRunner-ide.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/js-scripts/overlord.js +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/main.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/mkdocs_theme.yml +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/partials/content.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/partials/copyright.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/partials/footer.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/partials/header.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/partials/social.html +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/0-generic.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/btns-header.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/history.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/hourglass.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/ide.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/qcm.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/pyodide_mkdocs_theme/templates/pyodide-css/terminal.css +0 -0
- {pyodide_mkdocs_theme-5.6.0 → pyodide_mkdocs_theme-5.6.2}/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.2
|
|
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.2"
|
|
@@ -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
|
|
|
@@ -58,8 +58,27 @@ class HtmlDependencies:
|
|
|
58
58
|
Build all the templates needed for any page of the documentation, caching the different
|
|
59
59
|
versions of them.
|
|
60
60
|
"""
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
def build_and_store_blocks_dict(base_needs):
|
|
62
|
+
# Build the complete set of dependencies:
|
|
63
|
+
all_needs = set(base_needs)
|
|
64
|
+
all_needs.add(DepKind.always)
|
|
65
|
+
|
|
66
|
+
# Separate the wheat from the chaff... :p
|
|
67
|
+
blocks_dct: Dict[Block,List[Dep]] = {b:[] for b in Block.VALUES}
|
|
68
|
+
for dep in cls.__DEPS_IN_ORDER:
|
|
69
|
+
if dep.kind in all_needs:
|
|
70
|
+
blocks_dct[dep.block].append(dep)
|
|
71
|
+
|
|
72
|
+
# Mutate the wheat to templates and extra method calls needed:
|
|
73
|
+
for block, lst_deps in blocks_dct.items():
|
|
74
|
+
extras_dump_calls = []
|
|
75
|
+
template = '\n'.join( dep.to_template(extras_dump_calls) for dep in lst_deps )
|
|
76
|
+
blocks_dct[block] = (template, tuple(extras_dump_calls))
|
|
77
|
+
|
|
78
|
+
needs_to_blocks_dicts[base_needs] = blocks_dct
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
needs_to_blocks_dicts: Dict[FrozenSet[DepKind], BlocksTemplatesData] = {}
|
|
63
82
|
|
|
64
83
|
# (covers the weird case where page is None... Might also become useful one day, if ever
|
|
65
84
|
# pages_configs do not reference anymore all the possible pages of the documentation.
|
|
@@ -71,38 +90,10 @@ class HtmlDependencies:
|
|
|
71
90
|
all_kinds_of_pages = {None: default, **pages_configs}
|
|
72
91
|
|
|
73
92
|
for url, page_config in all_kinds_of_pages.items():
|
|
74
|
-
|
|
75
93
|
base_needs = frozenset(page_config.needs)
|
|
76
|
-
if base_needs not in
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
all_needs = set(base_needs)
|
|
80
|
-
all_needs.add(DepKind.always)
|
|
81
|
-
for need in base_needs:
|
|
82
|
-
DepKind.resolve_deps_needs(need, all_needs)
|
|
83
|
-
base_needs_to_all_needs[base_needs] = all_needs
|
|
84
|
-
|
|
85
|
-
# Separate the wheat from the chaff... :p
|
|
86
|
-
blocks_dct: Dict[Block,List[Dep]] = {b:[] for b in Block.get_blocks()}
|
|
87
|
-
for dep in cls.__DEPS_IN_ORDER:
|
|
88
|
-
if dep.kind in all_needs:
|
|
89
|
-
blocks_dct[dep.block].append(dep)
|
|
90
|
-
|
|
91
|
-
# Mutate the wheat to templates and extra method calls needed:
|
|
92
|
-
for block, lst_deps in blocks_dct.items():
|
|
93
|
-
extras_dump_calls = []
|
|
94
|
-
template = '\n'.join( dep.to_template(extras_dump_calls) for dep in lst_deps )
|
|
95
|
-
blocks_dct[block] = template, tuple(extras_dump_calls)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
# Register templates and cbks
|
|
99
|
-
needs_to_templates[base_needs] = blocks_dct
|
|
100
|
-
|
|
101
|
-
cls.__URL_TO_TEMPLATE_CACHE[url] = needs_to_templates[base_needs]
|
|
102
|
-
|
|
103
|
-
# Reassign the page needs with the complete set so that the proper info is
|
|
104
|
-
# available "later" if needed.
|
|
105
|
-
page_config.needs = base_needs_to_all_needs[base_needs]
|
|
94
|
+
if base_needs not in needs_to_blocks_dicts:
|
|
95
|
+
build_and_store_blocks_dict(base_needs)
|
|
96
|
+
cls.__URL_TO_TEMPLATE_CACHE[url] = needs_to_blocks_dicts[base_needs]
|
|
106
97
|
|
|
107
98
|
|
|
108
99
|
@classmethod
|
|
@@ -121,18 +112,17 @@ class HtmlDependencies:
|
|
|
121
112
|
return html
|
|
122
113
|
|
|
123
114
|
|
|
124
|
-
|
|
125
115
|
@classmethod
|
|
126
116
|
def build_import_map_template(cls):
|
|
127
117
|
""" Build the importmap script template (done in on_env hook). """
|
|
128
118
|
imports = {
|
|
129
119
|
name: target
|
|
130
|
-
|
|
131
|
-
|
|
120
|
+
for dep in cls.__DEPS_IN_ORDER
|
|
121
|
+
for name,target in dep.gen_import_map()
|
|
132
122
|
}
|
|
133
|
-
|
|
134
|
-
<script type="importmap">{
|
|
135
|
-
|
|
123
|
+
data = json.dumps(imports)
|
|
124
|
+
cls.__IMPORT_MAP = f'<script type="importmap">{{"imports":{ data }}}</script>'
|
|
125
|
+
|
|
136
126
|
|
|
137
127
|
@classmethod
|
|
138
128
|
def render_import_map(cls, env:'PyodideMacrosPlugin', page:Optional[Page]):
|
|
@@ -143,13 +133,11 @@ class HtmlDependencies:
|
|
|
143
133
|
return cls.__IMPORT_MAP.replace("{base_url}", env.base_url if page else '.')
|
|
144
134
|
|
|
145
135
|
|
|
146
|
-
|
|
147
|
-
|
|
148
136
|
@classmethod
|
|
149
137
|
def build_overlord_data(cls):
|
|
150
138
|
cls.__DEP_KINDS_TO_POOL_NAME = {
|
|
151
139
|
dep.kind: dep.pool_requirement
|
|
152
|
-
|
|
140
|
+
for dep in cls.__DEPS_IN_ORDER if dep.pool_requirement
|
|
153
141
|
}
|
|
154
142
|
|
|
155
143
|
|
|
@@ -157,8 +145,8 @@ class HtmlDependencies:
|
|
|
157
145
|
def get_overlord_classes(cls, page_configs: PageConfiguration):
|
|
158
146
|
overlord_classes = [
|
|
159
147
|
cls.__DEP_KINDS_TO_POOL_NAME[dep_kind]
|
|
160
|
-
|
|
161
|
-
|
|
148
|
+
for dep_kind in page_configs.needs
|
|
149
|
+
if dep_kind in cls.__DEP_KINDS_TO_POOL_NAME
|
|
162
150
|
]
|
|
163
151
|
return overlord_classes
|
|
164
152
|
|
|
@@ -171,38 +159,26 @@ class HtmlDependencies:
|
|
|
171
159
|
# 3) Easier to transmit data from mkdocs through inlined scripts if the CONFIG parts are
|
|
172
160
|
# actually loaded sync (this avoids the need for yet another global async flag...)
|
|
173
161
|
|
|
174
|
-
|
|
162
|
+
# Those are inserted directly in the page, full sync way (because they might be needed
|
|
163
|
+
# in the html code of the page, especially jQuery):
|
|
175
164
|
lodash = Cdn(Block.libs, DepKind.always, "https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js")
|
|
176
165
|
jQuery = Cdn(Block.libs, DepKind.always, "https://cdn.jsdelivr.net/npm/jquery@3.7.1")
|
|
177
166
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
})
|
|
183
|
-
jQterm = Cdn(Block.libs, DepKind.term, "https://cdn.jsdelivr.net/npm/jquery.terminal@2.43.1/js/jquery.terminal.min.js")
|
|
184
|
-
ace = Cdn(Block.libs, DepKind.ide, {
|
|
185
|
-
'src': "https://cdn.jsdelivr.net/npm/ace-builds@1.44.0/src-min-noconflict/ace.js",
|
|
186
|
-
'integrity': "sha256-By0T5T0R4s7M//4aD6fxXPacVDXYl99T2YxxvhxKLn8=",
|
|
187
|
-
})
|
|
188
|
-
ace_tools = Cdn(Block.libs, DepKind.ide, {
|
|
189
|
-
'src': "https://cdn.jsdelivr.net/npm/ace-builds@1.44.0/src-min-noconflict/ext-language_tools.js",
|
|
190
|
-
'integrity': "sha256-eZ46N0b3QkDX+7GjjlJfoBuXGKIH86UKJVARHhGzpWA=",
|
|
191
|
-
})
|
|
192
|
-
pyodide = Cdn(Block.libs, DepKind.pyodide, "https://cdn.jsdelivr.net/pyodide/v0.25.0/full/pyodide.js")
|
|
193
|
-
|
|
194
|
-
#vvvvvvvvvvvvvvv
|
|
167
|
+
# Css must be always loaded, even if no terminal in the page, to avoid messing the
|
|
168
|
+
# layout differently depending on the page... :rolleyes:
|
|
169
|
+
jQTerm_css = Css(Block.libs, DepKind.always, "https://cdn.jsdelivr.net/npm/jquery.terminal@2.43.1/css/jquery.terminal.min.css")
|
|
170
|
+
|
|
195
171
|
# GENERATED-libs
|
|
196
172
|
config = Cdn(Block.libs, DepKind.always, "{base_url}/js-libs/0-config.js", type="text/javascript", extra_dump="dump_to_js_config")
|
|
197
173
|
subscriber = Cdn(Block.libs, DepKind.always, "{base_url}/js-libs/0-legacy-subscriber.js", type="text/javascript")
|
|
198
|
-
functools = Cdn(Block.libs, DepKind.
|
|
199
|
-
functoolsStorage = Cdn(Block.libs, DepKind.
|
|
200
|
-
functoolsTxt = Cdn(Block.libs, DepKind.
|
|
201
|
-
functoolsUi = Cdn(Block.libs, DepKind.
|
|
202
|
-
functoolsUiBuilder = Cdn(Block.libs, DepKind.
|
|
203
|
-
jsLogger = Cdn(Block.libs, DepKind.
|
|
174
|
+
functools = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/functools.js", type="module")
|
|
175
|
+
functoolsStorage = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/functoolsStorage.js", type="module")
|
|
176
|
+
functoolsTxt = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/functoolsTxt.js", type="module")
|
|
177
|
+
functoolsUi = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/functoolsUi.js", type="module")
|
|
178
|
+
functoolsUiBuilder = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/functoolsUiBuilder.js", type="module")
|
|
179
|
+
jsLogger = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/jsLogger.js", type="module")
|
|
204
180
|
mathjax = Cdn(Block.libs, DepKind.always, "{base_url}/js-libs/mathjax-libs.js", type="text/javascript")
|
|
205
|
-
process_and_gui = Cdn(Block.libs, DepKind.
|
|
181
|
+
process_and_gui = Cdn(Block.libs, DepKind.never, "{base_url}/js-libs/process_and_gui.js", type="module")
|
|
206
182
|
css_generic = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/0-generic.css")
|
|
207
183
|
css_header = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/btns-header.css")
|
|
208
184
|
css_history = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/history.css")
|
|
@@ -212,45 +188,31 @@ class HtmlDependencies:
|
|
|
212
188
|
css_terminal = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/terminal.css")
|
|
213
189
|
css_testing = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/testing.css")
|
|
214
190
|
# GENERATED-libs
|
|
215
|
-
#^^^^^^^^^^^^^^^
|
|
216
191
|
|
|
217
192
|
# Always _after_ the js mathjax-libs.js file (SYNC!)
|
|
218
193
|
mathjax_tex = Cdn(Block.libs, DepKind.always, "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js")
|
|
219
194
|
|
|
220
|
-
|
|
221
|
-
#---------------------------------------------------
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
#vvvvvvvvvvvvvvvv
|
|
225
195
|
# GENERATED-pages
|
|
226
|
-
snippets = Cdn(Block.content, DepKind.pyodide,
|
|
227
|
-
error_logs = Cdn(Block.content, DepKind.pyodide,
|
|
228
|
-
install = Cdn(Block.content, DepKind.pyodide,
|
|
229
|
-
runtime = Cdn(Block.content, DepKind.pyodide,
|
|
230
|
-
runnersManager = Cdn(Block.content, DepKind.runners,
|
|
231
|
-
runner = Cdn(Block.content, DepKind.pyodide,
|
|
232
|
-
btnRunner = Cdn(Block.content, DepKind.py_btn,
|
|
233
|
-
terminalRunner = Cdn(Block.content, DepKind.term,
|
|
234
|
-
idesManager = Cdn(Block.content, DepKind.ide,
|
|
235
|
-
ideLogistic = Cdn(Block.content, DepKind.ide,
|
|
236
|
-
ideRunner = Cdn(Block.content, DepKind.ide,
|
|
237
|
-
virtualizer = Cdn(Block.content, DepKind.ides_test,
|
|
238
|
-
avl = Cdn(Block.content, DepKind.ides_test,
|
|
239
|
-
ideTester = Cdn(Block.content, DepKind.ides_test,
|
|
240
|
-
init = Cdn(Block.content, DepKind.playground, "{base_url}/js-per-pages/6-2-init-playground.js", type="module")
|
|
196
|
+
snippets = Cdn(Block.content, DepKind.pyodide, "{base_url}/js-per-pages/0-generic-python-snippets-pyodide.js", type="module")
|
|
197
|
+
error_logs = Cdn(Block.content, DepKind.pyodide, "{base_url}/js-per-pages/1-error_logs-pyodide.js", type="module")
|
|
198
|
+
install = Cdn(Block.content, DepKind.pyodide, "{base_url}/js-per-pages/1-packagesInstaller-install-pyodide.js", type="module")
|
|
199
|
+
runtime = Cdn(Block.content, DepKind.pyodide, "{base_url}/js-per-pages/1-runtimeManager-runtime-pyodide.js", type="module")
|
|
200
|
+
runnersManager = Cdn(Block.content, DepKind.runners, "{base_url}/js-per-pages/2-0-runnersManager-runners.js", type="module", pool="GlobalRunnersManager")
|
|
201
|
+
runner = Cdn(Block.content, DepKind.pyodide, "{base_url}/js-per-pages/2-pyodideSectionsRunner-runner-pyodide.js", type="module")
|
|
202
|
+
btnRunner = Cdn(Block.content, DepKind.py_btn, "{base_url}/js-per-pages/3-btnRunner-py_btn.js", type="module", pool="PyBtn")
|
|
203
|
+
terminalRunner = Cdn(Block.content, DepKind.term, "{base_url}/js-per-pages/3-terminalRunner-term.js", type="module", pool="Terminal")
|
|
204
|
+
idesManager = Cdn(Block.content, DepKind.ide, "{base_url}/js-per-pages/4-0-idesManager-ide.js", type="module")
|
|
205
|
+
ideLogistic = Cdn(Block.content, DepKind.ide, "{base_url}/js-per-pages/4-ideLogistic-ide.js", type="module")
|
|
206
|
+
ideRunner = Cdn(Block.content, DepKind.ide, "{base_url}/js-per-pages/4-ideRunner-ide.js", type="module", pool="Ide")
|
|
207
|
+
virtualizer = Cdn(Block.content, DepKind.ides_test, "{base_url}/js-per-pages/5-2-virtualizer-ides_test.js", type="module")
|
|
208
|
+
avl = Cdn(Block.content, DepKind.ides_test, "{base_url}/js-per-pages/5-3-avl-ides_test.mjs", type="module")
|
|
209
|
+
ideTester = Cdn(Block.content, DepKind.ides_test, "{base_url}/js-per-pages/5-ideTester-ides_test.js", type="module", pool="IdeTester")
|
|
241
210
|
idePlayground = Cdn(Block.content, DepKind.playground, "{base_url}/js-per-pages/6-idePlayground-playground.js", type="module", pool="IdePlayground")
|
|
242
|
-
qcms = Cdn(Block.content, DepKind.qcm,
|
|
243
|
-
start = Cdn(Block.content, DepKind.pyodide,
|
|
211
|
+
qcms = Cdn(Block.content, DepKind.qcm, "{base_url}/js-per-pages/qcms-qcm.js", type="module", pool="Qcm")
|
|
212
|
+
start = Cdn(Block.content, DepKind.pyodide, "{base_url}/js-per-pages/start-pyodide.js", type="module")
|
|
244
213
|
# GENERATED-pages
|
|
245
|
-
#^^^^^^^^^^^^^^^^
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
#---------------------------------------------------
|
|
249
|
-
|
|
250
214
|
|
|
251
|
-
#vvvvvvvvvvvvvvvvvv
|
|
252
215
|
# GENERATED-scripts
|
|
253
216
|
overlord = Cdn(Block.scripts, DepKind.always, "{base_url}/js-scripts/overlord.js", type="module")
|
|
254
217
|
subscriptions = Cdn(Block.scripts, DepKind.always, "{base_url}/js-scripts/subscriptions.js", type="module")
|
|
255
218
|
# GENERATED-scripts
|
|
256
|
-
#^^^^^^^^^^^^^^^^^^
|
|
@@ -22,7 +22,7 @@ from pathlib import Path
|
|
|
22
22
|
from typing import ClassVar, Dict, List, Optional, Set, Union, TYPE_CHECKING
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
from ..tools_and_constants import AutoDescriptor
|
|
25
|
+
from ..tools_and_constants import AutoDescriptor, MyEnum, dataclass_with_VALUES
|
|
26
26
|
|
|
27
27
|
if TYPE_CHECKING:
|
|
28
28
|
from ..plugin.pyodide_macros_plugin import PyodideMacrosPlugin
|
|
@@ -32,72 +32,39 @@ if TYPE_CHECKING:
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
class Block:
|
|
35
|
+
@dataclass_with_VALUES
|
|
36
|
+
class Block(MyEnum):
|
|
37
37
|
"""
|
|
38
38
|
StrEnum-like object, giving all the jinja blocks usable in the main.html file.
|
|
39
39
|
"""
|
|
40
|
-
libs = AutoDescriptor()
|
|
41
|
-
content = AutoDescriptor()
|
|
42
|
-
scripts = AutoDescriptor()
|
|
43
|
-
|
|
44
|
-
@classmethod
|
|
45
|
-
def get_blocks(cls):
|
|
46
|
-
return (cls.libs, cls.content, cls.scripts)
|
|
40
|
+
libs: 'Block' = AutoDescriptor()
|
|
41
|
+
content: 'Block' = AutoDescriptor()
|
|
42
|
+
scripts: 'Block' = AutoDescriptor()
|
|
47
43
|
|
|
48
44
|
|
|
49
45
|
|
|
50
46
|
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
@dataclass_with_VALUES
|
|
49
|
+
class DepKind(MyEnum):
|
|
53
50
|
"""
|
|
54
51
|
StrEnum-like object, identifying the key components to build the "dependencies graph"
|
|
55
52
|
of scripts and css injections in main.html.
|
|
56
53
|
"""
|
|
57
|
-
always = AutoDescriptor()
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
@classmethod
|
|
73
|
-
def resolve_deps_needs(cls, kind:'DepKind', needs:Set['DepKind']):
|
|
74
|
-
"""
|
|
75
|
-
Gather the whole "chain" of dependencies according to the dependencies graph,
|
|
76
|
-
sorting from the given @kind, which is already present in @needs.
|
|
77
|
-
Keep adding kinds as long as they are not present in @needs.
|
|
78
|
-
"""
|
|
79
|
-
# NOTE: this is almost useless, for PMT 4^ because of automatic resolution of imported
|
|
80
|
-
# modules, BUT there are still some needs for non modules, so keep everything as is...
|
|
81
|
-
|
|
82
|
-
# Keep in mind DepKind _values_ are actually SIMPLE STRINGS!
|
|
83
|
-
if kind in _DEP_KINDS_GRAPH:
|
|
84
|
-
next_kind = _DEP_KINDS_GRAPH[kind]
|
|
85
|
-
if next_kind not in needs:
|
|
86
|
-
needs.add(next_kind)
|
|
87
|
-
cls.resolve_deps_needs(next_kind, needs)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
# Ignoring the systematic DepKind.always final dependency.
|
|
92
|
-
_DEP_KINDS_GRAPH = {
|
|
93
|
-
DepKind.playground: DepKind.ide,
|
|
94
|
-
DepKind.ides_test: DepKind.ide,
|
|
95
|
-
DepKind.ide: DepKind.term,
|
|
96
|
-
DepKind.term: DepKind.pyodide,
|
|
97
|
-
DepKind.run_macro: DepKind.py_btn,
|
|
98
|
-
DepKind.py_btn: DepKind.pyodide,
|
|
99
|
-
DepKind.pyodide: DepKind.runners,
|
|
100
|
-
}
|
|
54
|
+
always: 'DepKind' = AutoDescriptor()
|
|
55
|
+
never: 'DepKind' = AutoDescriptor() # Registered, sent to the importmap, but never directly
|
|
56
|
+
# inserted in the html
|
|
57
|
+
pyodide: 'DepKind' = AutoDescriptor()
|
|
58
|
+
py_btn: 'DepKind' = AutoDescriptor()
|
|
59
|
+
run_macro: 'DepKind' = AutoDescriptor('py_btn') # For now the JS requirements are identical...
|
|
60
|
+
term: 'DepKind' = AutoDescriptor()
|
|
61
|
+
runners: 'DepKind' = AutoDescriptor()
|
|
62
|
+
ide: 'DepKind' = AutoDescriptor()
|
|
63
|
+
ides_test: 'DepKind' = AutoDescriptor()
|
|
64
|
+
playground: 'DepKind' = AutoDescriptor()
|
|
65
|
+
qcm: 'DepKind' = AutoDescriptor()
|
|
66
|
+
qcm_encrypt: 'DepKind' = AutoDescriptor()
|
|
67
|
+
mermaid: 'DepKind' = AutoDescriptor()
|
|
101
68
|
|
|
102
69
|
|
|
103
70
|
|
|
@@ -159,10 +126,10 @@ class Dep:
|
|
|
159
126
|
""" Static property: Store HtmlDependencies property names, to make sure they are unique. """
|
|
160
127
|
|
|
161
128
|
|
|
162
|
-
|
|
163
129
|
def __init_subclass__(cls):
|
|
164
130
|
Dep.EXTENSION_TO_CLASS[cls.EXTENSION] = cls
|
|
165
131
|
|
|
132
|
+
#-------------------------------------------------------------------------
|
|
166
133
|
|
|
167
134
|
@staticmethod
|
|
168
135
|
def auto_ordering():
|
|
@@ -218,11 +185,18 @@ class Dep:
|
|
|
218
185
|
|
|
219
186
|
|
|
220
187
|
def get_html_tag(self):
|
|
188
|
+
"""
|
|
189
|
+
Convert tu current dependency to the corresponding html tag to insert in the page.
|
|
190
|
+
"""
|
|
221
191
|
return self.DUMP_TEMPLATE.format(
|
|
222
192
|
data=' '.join(f'{k}="{v}"' for k,v in self.data.items())
|
|
223
193
|
)
|
|
224
194
|
|
|
225
195
|
def gen_import_map(self):
|
|
196
|
+
"""
|
|
197
|
+
Return an iterator of items to add the current dependency to the importmap tag.
|
|
198
|
+
Reminder: only js modules have to be referenced.
|
|
199
|
+
"""
|
|
226
200
|
return ()
|
|
227
201
|
|
|
228
202
|
|
|
@@ -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
|
|
|
@@ -208,7 +208,10 @@ class LangDe(LangFr):
|
|
|
208
208
|
"""
|
|
209
209
|
Tooltip for the button resetting the content of a code editor.
|
|
210
210
|
"""
|
|
211
|
-
restart_confirm: Tr =
|
|
211
|
+
restart_confirm: Tr = MsgPlural(
|
|
212
|
+
"ACHTUNG: Durch das Zurücksetzen des Editors gehen alle bisherigen Codes, Validierungsstatus und Verlauf verloren.",
|
|
213
|
+
"Beim Zurücksetzen der Editoren gehen der bisherige Code, die Validierungsstatus und die Verläufe aller Editoren auf der Seite verloren.",
|
|
214
|
+
)
|
|
212
215
|
"""
|
|
213
216
|
Confirmation question before resetting an IDE.
|
|
214
217
|
"""
|
|
@@ -261,7 +264,11 @@ class LangDe(LangFr):
|
|
|
261
264
|
"""
|
|
262
265
|
|
|
263
266
|
|
|
264
|
-
# Trashcan button related
|
|
267
|
+
# Trashcan or resetAll button related
|
|
268
|
+
tip_reset_all: Tr = Tip(12, "Alle Editoren auf der Seite zurücksetze.")
|
|
269
|
+
"""
|
|
270
|
+
Tooltip for the button to reset all the IDEs on the page.
|
|
271
|
+
"""
|
|
265
272
|
tip_trash: Tr = Tip(15, "Lösche die gespeicherten Codes im Webbrowser für {site_name}")
|
|
266
273
|
"""
|
|
267
274
|
Tooltip for the button to delete the data stored in the browser's localStorage
|
|
@@ -207,7 +207,10 @@ class LangEn(LangFr):
|
|
|
207
207
|
"""
|
|
208
208
|
Tooltip for the button resetting the content of a code editor.
|
|
209
209
|
"""
|
|
210
|
-
restart_confirm: Tr =
|
|
210
|
+
restart_confirm: Tr = MsgPlural(
|
|
211
|
+
"WARNING: resetting the editor, you will lose previous codes, validation status and histories.",
|
|
212
|
+
"WARNING: resetting the editors will erase the previous code, validation statuses, and histories for all the editors on the page.",
|
|
213
|
+
)
|
|
211
214
|
"""
|
|
212
215
|
Confirmation question before resetting an IDE.
|
|
213
216
|
"""
|
|
@@ -260,7 +263,11 @@ class LangEn(LangFr):
|
|
|
260
263
|
"""
|
|
261
264
|
|
|
262
265
|
|
|
263
|
-
# Trashcan button related
|
|
266
|
+
# Trashcan or resetAll button related
|
|
267
|
+
tip_reset_all: Tr = Tip(12, "Reset all the editors on the page.")
|
|
268
|
+
"""
|
|
269
|
+
Tooltip for the button to reset all the IDEs on the page.
|
|
270
|
+
"""
|
|
264
271
|
tip_trash: Tr = Tip(15, "Remove the saved codes for {site_name} from the browser")
|
|
265
272
|
"""
|
|
266
273
|
Tooltip for the button to delete the data stored in the browser's localStorage
|
|
@@ -213,7 +213,10 @@ class LangFr(LangBase):
|
|
|
213
213
|
"""
|
|
214
214
|
Info-bulle du bouton réinitialisant le contenu d'un éditeur.
|
|
215
215
|
"""
|
|
216
|
-
restart_confirm: Tr =
|
|
216
|
+
restart_confirm: Tr = MsgPlural(
|
|
217
|
+
"ATTENTION: réinitialiser l'éditeur fera perdre les anciens codes, status de validation et historiques.",
|
|
218
|
+
"ATTENTION: réinitialiser les éditeurs fera perdre les anciens codes, status de validation et historiques pour tous les éditeurs de la page.",
|
|
219
|
+
)
|
|
217
220
|
"""
|
|
218
221
|
Demande de confirmation à l'utilisateur avec de faire un restart de l'IDE.
|
|
219
222
|
"""
|
|
@@ -268,7 +271,11 @@ class LangFr(LangBase):
|
|
|
268
271
|
"""
|
|
269
272
|
|
|
270
273
|
|
|
271
|
-
# Trashcan button related
|
|
274
|
+
# Trashcan or resetAll button related
|
|
275
|
+
tip_reset_all: Tr = Tip(12, "Réinitialiser tous les éditeurs de la page.")
|
|
276
|
+
"""
|
|
277
|
+
Info-bulle du bouton de pour réinitialiser tous les IDEs de la page.
|
|
278
|
+
"""
|
|
272
279
|
tip_trash: Tr = Tip(15, "Supprimer du navigateur les codes enregistrés pour {site_name}")
|
|
273
280
|
"""
|
|
274
281
|
Info-bulle du bouton de pour supprimer les données stockées dans le navigateur
|
|
@@ -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()
|