pyodide-mkdocs-theme 5.5.6__tar.gz → 5.6.0__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.5.6 → pyodide_mkdocs_theme-5.6.0}/PKG-INFO +1 -1
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/__version__.py +1 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/basthon_p5_to_pmt.py +0 -5
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/_inclusions_tools.py +3 -3
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_builder/__init__.py +1 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_builder/_html_builder.py +53 -30
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps.py +10 -8
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_ide.py +10 -19
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_manager.py +9 -4
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_playground.py +25 -18
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_tester.py +126 -121
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/de_lang.py +0 -16
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/en_lang.py +0 -16
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/fr_lang.py +0 -16
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/__init__.py +1 -1
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_base.py +29 -20
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_contracts.py +5 -7
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_files.py +10 -3
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_macros.py +4 -3
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_meta.py +2 -1
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/_string_tools_and_constants.py +25 -32
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/common_tree_src.py +74 -44
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/config_option_src.py +41 -39
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/macros_configs.py +52 -22
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/sub_configs.py +110 -61
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/lang_src.py +52 -1
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/macro_config_src.py +50 -4
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/plugin_config_src.py +5 -5
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/sub_config_src.py +3 -3
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/ide_tests.py +80 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/macros_data.py +1 -62
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/maestro_tools.py +13 -10
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/options_alterations.py +3 -3
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/pages_and_macros_py_configs.py +1 -1
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/test_cases.py +75 -36
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/tools_and_constants.py +36 -13
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/assets/images/icons8-pause-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/0-config.js +4 -8
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functools.js +25 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsUi.js +9 -6
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/jsLogger.js +1 -2
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/js-libs/process_and_gui.js +166 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/4-ideLogistic-ide.js +7 -20
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/js-per-pages/5-2-virtualizer-ides_test.js +898 -0
- pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/js-per-pages/5-3-avl-ides_test.mjs +342 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/5-ideTester-ides_test.js +332 -386
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/6-idePlayground-playground.js +3 -2
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/qcms-qcm.js +1 -1
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/start-pyodide.js +15 -27
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/0-generic.css +14 -16
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/testing.css +69 -14
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyproject.toml +1 -1
- pyodide_mkdocs_theme-5.5.6/pyodide_mkdocs_theme/__version__.py +0 -1
- pyodide_mkdocs_theme-5.5.6/pyodide_mkdocs_theme/templates/js-libs/process_and_gui.js +0 -141
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/LICENSE +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/README.md +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5v2/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5v2/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis_network/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis_network/cdns.txt +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/__main__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/exceptions.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base0_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base1_contents_extractor.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base2_inclusions.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base3_generic_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/concrete_extractors.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps_class.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/indent_parser.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/figure.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_py_btn.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_run_macro.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_term_ide.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_terminal.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/py_script.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/qcm.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/runners_macros.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/classes.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/proxy.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/parsing.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/paths_utils.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/config.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_indent.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_templates.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/pyodide_macros_plugin.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/docs_dirs_config.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/plugin_config.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/dumpers.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/pyodide_logger.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/de/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/de/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/de/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/en/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/en/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/en/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/fr/docs/exo.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/fr/docs/index.md +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/fr/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/.gitignore +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/main.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/mkdocs.yml +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/pyodide_plot.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/requirements.txt +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/toolbox.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/README.md +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/__init__.py +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/.qcm-circle.svg +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-check-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-download-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-play-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-restart-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-save-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-step-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-stop-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-upload-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-zip-64.png +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/base_pmt.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/0-legacy-subscriber.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsStorage.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsTxt.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsUiBuilder.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/mathjax-libs.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/0-generic-python-snippets-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/1-error_logs-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/1-packagesInstaller-install-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/1-runtimeManager-runtime-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/2-0-runnersManager-runners.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/2-pyodideSectionsRunner-runner-pyodide.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/3-btnRunner-py_btn.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/3-terminalRunner-term.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/4-0-idesManager-ide.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/4-ideRunner-ide.js +1 -1
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/6-2-init-playground.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-scripts/overlord.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-scripts/subscriptions.js +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/main.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/mkdocs_theme.yml +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/content.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/copyright.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/footer.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/header.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/social.html +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/btns-header.css +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/history.css +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/hourglass.css +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/ide.css +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/qcm.css +0 -0
- {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/terminal.css +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pyodide-mkdocs-theme
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.6.0
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "5.6.0"
|
{pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/basthon_p5_to_pmt.py
RENAMED
|
@@ -211,7 +211,6 @@ def update_basthon_p5_code(file:str, target:str, tail:str=None):
|
|
|
211
211
|
|
|
212
212
|
source_code = py_file.read_text(encoding='utf-8')
|
|
213
213
|
|
|
214
|
-
|
|
215
214
|
# Determine the output file name:
|
|
216
215
|
i_end = None
|
|
217
216
|
tail = tail or '_pmt'
|
|
@@ -223,22 +222,18 @@ def update_basthon_p5_code(file:str, target:str, tail:str=None):
|
|
|
223
222
|
|
|
224
223
|
print('Convert:', py_file, 'to', out_name)
|
|
225
224
|
|
|
226
|
-
|
|
227
225
|
# First pass to update each p5 name to p5.name:
|
|
228
226
|
p5_code, tree = update_code_with_nodes(source_code, find_p5_names, name_transform)
|
|
229
227
|
|
|
230
|
-
|
|
231
228
|
# Second pass to update the `run` calls:
|
|
232
229
|
run_call = find_runs_signature_call(tree, target)
|
|
233
230
|
out_code,_ = update_code_with_nodes(p5_code, find_p5_run_calls, run_transformer(run_call))
|
|
234
231
|
out_code = out_code.replace('from p5 import *', "import p5")
|
|
235
232
|
|
|
236
|
-
|
|
237
233
|
# Show useful info to the user:
|
|
238
234
|
P5Visitor().visit(ast.parse(out_code))
|
|
239
235
|
P5Visitor.show_messages(run_call)
|
|
240
236
|
|
|
241
|
-
|
|
242
237
|
# Dump the fixed file, in the same folder:
|
|
243
238
|
out_file.write_text(out_code, encoding='utf-8')
|
|
244
239
|
|
|
@@ -266,7 +266,7 @@ class InclusionConfig:
|
|
|
266
266
|
if not rel_path:
|
|
267
267
|
raise PmtMacrosInvalidPmtFileError(
|
|
268
268
|
"Inclusions using `[md]` or `[cwd]` require to specify a relative path information "
|
|
269
|
-
f"(aka, `py_name`).\
|
|
269
|
+
f"(aka, `py_name`).\nFile containing the error: { self.parent.exo_file }"
|
|
270
270
|
)
|
|
271
271
|
|
|
272
272
|
as_path = Path(rel_path)
|
|
@@ -278,8 +278,8 @@ class InclusionConfig:
|
|
|
278
278
|
|
|
279
279
|
if not runner_file:
|
|
280
280
|
raise PmtMacrosInvalidPmtFileError(
|
|
281
|
-
f"No file matching {(redirect or '')+rel_path!r} could be found, starting from "
|
|
282
|
-
f"
|
|
281
|
+
f"No file matching {(redirect or '')+rel_path!r} could be found, starting from the"
|
|
282
|
+
f" { source.parent } directory.\nFile containing the error: { self.parent.exo_file }"
|
|
283
283
|
)
|
|
284
284
|
|
|
285
285
|
_, child = self.parent.get_file_extractor_for(
|
|
@@ -21,8 +21,8 @@ If not, see <https://www.gnu.org/licenses/>.
|
|
|
21
21
|
|
|
22
22
|
from typing import Any, Dict, Optional
|
|
23
23
|
|
|
24
|
-
from ..exceptions import PmtInternalError
|
|
25
24
|
from ..tools_and_constants import HtmlClass
|
|
25
|
+
from ..parsing import admonition_safe_html
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
@@ -31,9 +31,8 @@ def _build_html_attributes(
|
|
|
31
31
|
id:str,
|
|
32
32
|
kls:str,
|
|
33
33
|
attrs: Dict[str, str],
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
kwargs: Dict[str,Any],
|
|
34
|
+
kwargs: Dict[str,Any], # NOTE: content overrides attrs values
|
|
35
|
+
# Supported through @kwargs or attrs: disabled, checked, for_
|
|
37
36
|
):
|
|
38
37
|
"""
|
|
39
38
|
Build a string with all the desired html attributes for an opening tag.
|
|
@@ -53,6 +52,14 @@ def _build_html_attributes(
|
|
|
53
52
|
attrs.update(kwargs)
|
|
54
53
|
if id: attrs['id'] = id
|
|
55
54
|
if kls: attrs['class'] = kls
|
|
55
|
+
if attrs.get('for_'):
|
|
56
|
+
attrs['for'] = attrs.pop('for_')
|
|
57
|
+
|
|
58
|
+
style = attrs.get('style')
|
|
59
|
+
if style and not isinstance(style, str):
|
|
60
|
+
raise ValueError(
|
|
61
|
+
f'The `style` argument should be given as a string, but was:\n{style!r}'
|
|
62
|
+
)
|
|
56
63
|
|
|
57
64
|
if 'data' in attrs:
|
|
58
65
|
data: Dict = attrs.pop('data')
|
|
@@ -114,13 +121,14 @@ a = bi_tag('a')
|
|
|
114
121
|
button = bi_tag('button', type='button') # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#notes
|
|
115
122
|
code = bi_tag('code')
|
|
116
123
|
div = bi_tag('div')
|
|
124
|
+
label = bi_tag('label')
|
|
117
125
|
script = bi_tag('script')
|
|
118
126
|
style = bi_tag('style')
|
|
119
127
|
span = bi_tag('span')
|
|
120
128
|
svg = bi_tag('svg')
|
|
121
129
|
td = bi_tag('td')
|
|
122
130
|
|
|
123
|
-
|
|
131
|
+
_label = label # To access the function from within the checkbox one, which has a label argument...
|
|
124
132
|
|
|
125
133
|
|
|
126
134
|
|
|
@@ -147,45 +155,50 @@ def checkbox(
|
|
|
147
155
|
checked:bool,
|
|
148
156
|
*,
|
|
149
157
|
label:str="",
|
|
150
|
-
id:str = "
|
|
158
|
+
id:str = "",
|
|
151
159
|
kls:str = "",
|
|
152
160
|
kls_box:str = "",
|
|
153
161
|
tip_txt:str = "",
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
162
|
+
tip_width:Optional[int]=None,
|
|
163
|
+
disabled: bool = False,
|
|
164
|
+
box_left:bool = True
|
|
157
165
|
):
|
|
158
166
|
"""
|
|
159
167
|
Build a checkbox with a PMT tooltip attached, and an optional label after it.
|
|
160
|
-
|
|
161
|
-
|
|
168
|
+
* @kls is on the outer element (whatever it is...)
|
|
169
|
+
* if @label is given, the checkbox is wrapped with a span element containing the
|
|
170
|
+
label and the checkbox
|
|
162
171
|
"""
|
|
163
|
-
|
|
172
|
+
box_kw = {}
|
|
173
|
+
if checked: box_kw['checked'] = ""
|
|
174
|
+
if disabled: box_kw['disabled'] = ""
|
|
175
|
+
|
|
176
|
+
tip_kw = {}
|
|
177
|
+
if tip_txt:
|
|
178
|
+
tip_kw['data-tip-txt'] = tip_txt
|
|
179
|
+
if tip_width is not None:
|
|
180
|
+
tip_kw['data-tip-width'] = tip_width
|
|
181
|
+
|
|
182
|
+
tip_box, tip_label = ({},tip_kw) if label else (tip_kw,{})
|
|
164
183
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
raise PmtInternalError(
|
|
168
|
-
"A checkbox built with @bare_tip=True shouldn't have a label or a class for any outer element."
|
|
169
|
-
)
|
|
170
|
-
dct = {}
|
|
171
|
-
if tip_txt:
|
|
172
|
-
dct['data-tip-txt'] = tip_txt
|
|
173
|
-
if width_em is not None: dct['data-tip-width'] = width_em
|
|
174
|
-
input_kw.update(dct)
|
|
175
|
-
kls_box = f"{ kls_box } { HtmlClass.tooltip }".lstrip()
|
|
176
|
-
else:
|
|
177
|
-
txt = label and span(label)
|
|
178
|
-
tip = tooltip(tip_txt, width_em, shift=tip_shift)
|
|
184
|
+
kls_box = f"{ kls_box } { HtmlClass.tooltip * bool(tip_txt) }".strip()
|
|
185
|
+
box = input('', type='checkbox', id=id, kls=kls_box, **tip_box, **box_kw)
|
|
179
186
|
|
|
180
|
-
|
|
181
|
-
|
|
187
|
+
if label:
|
|
188
|
+
side_margin = 'left' if box_left else 'right'
|
|
189
|
+
box = _label(
|
|
190
|
+
box*box_left + span(label, style=f'margin-{side_margin}:10px') + box*(not box_left),
|
|
191
|
+
kls=f"{ kls } { HtmlClass.tooltip * bool(tip_txt) }".strip(),
|
|
192
|
+
for_=id, **tip_label,
|
|
193
|
+
)
|
|
194
|
+
return box
|
|
182
195
|
|
|
183
196
|
|
|
184
197
|
|
|
185
198
|
|
|
186
199
|
|
|
187
200
|
|
|
188
|
-
SVG_BOX_TEMPLATE = '''\
|
|
201
|
+
SVG_BOX_TEMPLATE = admonition_safe_html('''\
|
|
189
202
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
190
203
|
<svg {attrs} viewBox="0 0 12 12" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" style="stroke-width:1.25;stroke-linecap:round">
|
|
191
204
|
<path class="bgd-svg" style="fill:var(--qcm-fill);stroke:none;" d="M 5.93,1.93 3.29,2.40 2.70,2.75 1.86,5.70 2.38,8.76 2.75,9.29 5.82,10.13 9.07,9.45 9.36,9.13 10.12,6.11 9.49,2.93 9.12,2.65 Z"></path>
|
|
@@ -197,7 +210,7 @@ SVG_BOX_TEMPLATE = '''\
|
|
|
197
210
|
</g>
|
|
198
211
|
</g>
|
|
199
212
|
<g style="fill:none;stroke:var(--qcm-border)">{shape}</g>
|
|
200
|
-
</svg>'''
|
|
213
|
+
</svg>''')
|
|
201
214
|
CIRCLE_QCS = '<circle cy="6" cx="6" r="4.2"></circle>'
|
|
202
215
|
SQUARE_QCM = '<rect width="7.41" height="7.36" x="2.29" y="2.32"></rect>'
|
|
203
216
|
|
|
@@ -207,8 +220,18 @@ def svg_qcm_box(
|
|
|
207
220
|
id: str = "",
|
|
208
221
|
kls: str = "",
|
|
209
222
|
attrs: Dict[str,Any] = None,
|
|
223
|
+
state:str=None,
|
|
224
|
+
tip_txt:str=None,
|
|
225
|
+
tip_width:float=None,
|
|
210
226
|
**kwargs
|
|
211
227
|
):
|
|
228
|
+
if tip_txt:
|
|
229
|
+
kls = 'tooltip '+kls
|
|
230
|
+
kwargs['data-tip-txt'] = tip_txt
|
|
231
|
+
if tip_width is not None:
|
|
232
|
+
kwargs['data-tip-width'] = tip_width
|
|
233
|
+
if state is not None:
|
|
234
|
+
kwargs['data-state'] = state
|
|
212
235
|
shape = SQUARE_QCM if is_multi else CIRCLE_QCS
|
|
213
236
|
attributes = _build_html_attributes(id, f'qcm {kls}'.rstrip(), attrs, kwargs)
|
|
214
237
|
return SVG_BOX_TEMPLATE.format(attrs=attributes, shape=shape)
|
|
@@ -203,14 +203,14 @@ class HtmlDependencies:
|
|
|
203
203
|
jsLogger = Cdn(Block.libs, DepKind.always, "{base_url}/js-libs/jsLogger.js", type="module")
|
|
204
204
|
mathjax = Cdn(Block.libs, DepKind.always, "{base_url}/js-libs/mathjax-libs.js", type="text/javascript")
|
|
205
205
|
process_and_gui = Cdn(Block.libs, DepKind.always, "{base_url}/js-libs/process_and_gui.js", type="module")
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
206
|
+
css_generic = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/0-generic.css")
|
|
207
|
+
css_header = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/btns-header.css")
|
|
208
|
+
css_history = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/history.css")
|
|
209
|
+
css_hourglass = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/hourglass.css")
|
|
210
|
+
css_ide = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/ide.css")
|
|
211
|
+
css_qcm = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/qcm.css")
|
|
212
|
+
css_terminal = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/terminal.css")
|
|
213
|
+
css_testing = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/testing.css")
|
|
214
214
|
# GENERATED-libs
|
|
215
215
|
#^^^^^^^^^^^^^^^
|
|
216
216
|
|
|
@@ -234,6 +234,8 @@ class HtmlDependencies:
|
|
|
234
234
|
idesManager = Cdn(Block.content, DepKind.ide, "{base_url}/js-per-pages/4-0-idesManager-ide.js", type="module")
|
|
235
235
|
ideLogistic = Cdn(Block.content, DepKind.ide, "{base_url}/js-per-pages/4-ideLogistic-ide.js", type="module")
|
|
236
236
|
ideRunner = Cdn(Block.content, DepKind.ide, "{base_url}/js-per-pages/4-ideRunner-ide.js", type="module", pool="Ide")
|
|
237
|
+
virtualizer = Cdn(Block.content, DepKind.ides_test, "{base_url}/js-per-pages/5-2-virtualizer-ides_test.js", type="module")
|
|
238
|
+
avl = Cdn(Block.content, DepKind.ides_test, "{base_url}/js-per-pages/5-3-avl-ides_test.mjs", type="module")
|
|
237
239
|
ideTester = Cdn(Block.content, DepKind.ides_test, "{base_url}/js-per-pages/5-ideTester-ides_test.js", type="module", pool="IdeTester")
|
|
238
240
|
init = Cdn(Block.content, DepKind.playground, "{base_url}/js-per-pages/6-2-init-playground.js", type="module")
|
|
239
241
|
idePlayground = Cdn(Block.content, DepKind.playground, "{base_url}/js-per-pages/6-idePlayground-playground.js", type="module", pool="IdePlayground")
|
|
@@ -31,11 +31,11 @@ from pyodide_mkdocs_theme.pyodide_macros.html_dependencies.deps_class import Dep
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
from .. import html_builder as Html
|
|
34
|
-
from ..tools_and_constants import HtmlClass, PmtCte, IdeMode, PmtPyMacrosName, Prefix
|
|
34
|
+
from ..tools_and_constants import HtmlClass, PmtCte, IdeMode, PmtPyMacrosName, Prefix, NamedTestCase
|
|
35
35
|
from ..messages import Tip
|
|
36
36
|
from ..parsing import add_indent, admonition_safe_html, build_code_fence, items_comma_joiner
|
|
37
37
|
from ..plugin_tools.test_cases import Case
|
|
38
|
-
from ..plugin_tools.
|
|
38
|
+
from ..plugin_tools.ide_tests import IdeTests
|
|
39
39
|
from ..plugin_config import PLUGIN_CONFIG_SRC
|
|
40
40
|
|
|
41
41
|
from .ide_term_ide import CommonTermIde
|
|
@@ -75,6 +75,9 @@ class Ide(CommonTermIde):
|
|
|
75
75
|
(what an awful interface, yeah... x) )
|
|
76
76
|
"""
|
|
77
77
|
|
|
78
|
+
IS_TESTED: ClassVar[bool] = True
|
|
79
|
+
""" True if the IDE is supposed to end up in the `test_ides` page. """
|
|
80
|
+
|
|
78
81
|
NEED_INDENTS: ClassVar[bool] = True
|
|
79
82
|
|
|
80
83
|
MACRO_NAME: ClassVar[PmtPyMacrosName] = PmtPyMacrosName.IDE
|
|
@@ -189,25 +192,13 @@ class Ide(CommonTermIde):
|
|
|
189
192
|
|
|
190
193
|
def __post_init__(self):
|
|
191
194
|
super().__post_init__()
|
|
192
|
-
self.register_ide_for_tests()
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
def register_ide_for_tests(self):
|
|
197
|
-
"""
|
|
198
|
-
Archive config info about the current IDE and register for testing...
|
|
199
|
-
"""
|
|
200
|
-
case = Case.auto_convert_str_to_case(self.test_config)
|
|
201
|
-
|
|
202
|
-
some_to_test = self.has_code if case.code else self.has_corr
|
|
203
|
-
fallback = self.env.testing_empty_section_fallback
|
|
204
|
-
if not some_to_test and fallback:
|
|
205
|
-
setattr(case, fallback, True)
|
|
206
195
|
|
|
207
|
-
self.
|
|
196
|
+
if not self.IS_TESTED:
|
|
197
|
+
return
|
|
208
198
|
|
|
209
|
-
|
|
210
|
-
|
|
199
|
+
self.test_config = Case.auto_convert_and_fix_case(self)
|
|
200
|
+
ide_tests = IdeTests.from_ide(self)
|
|
201
|
+
self.env.archive_ide_for_tests(ide_tests)
|
|
211
202
|
|
|
212
203
|
|
|
213
204
|
|
|
@@ -788,6 +788,7 @@ class IdeManagerMdHtmlGenerator(IdeSectionsManager):
|
|
|
788
788
|
margin_right: float = 0.2,
|
|
789
789
|
extra_btn_kls: str = "",
|
|
790
790
|
tip_side: P5BtnLocation = "",
|
|
791
|
+
tip_txt: str = "",
|
|
791
792
|
bare_tip: bool = False,
|
|
792
793
|
**kwargs
|
|
793
794
|
) -> str:
|
|
@@ -806,6 +807,7 @@ class IdeManagerMdHtmlGenerator(IdeSectionsManager):
|
|
|
806
807
|
margin_right = margin_right,
|
|
807
808
|
extra_btn_kls = extra_btn_kls,
|
|
808
809
|
tip_side = tip_side,
|
|
810
|
+
tip_txt = tip_txt,
|
|
809
811
|
bare_tip = bare_tip,
|
|
810
812
|
**kwargs
|
|
811
813
|
)
|
|
@@ -821,6 +823,7 @@ class IdeManagerMdHtmlGenerator(IdeSectionsManager):
|
|
|
821
823
|
margin_right: float = 0.2,
|
|
822
824
|
extra_btn_kls: str = "",
|
|
823
825
|
tip_side: P5BtnLocation = "",
|
|
826
|
+
tip_txt: str = "",
|
|
824
827
|
bare_tip: bool = False,
|
|
825
828
|
**kwargs
|
|
826
829
|
) -> str:
|
|
@@ -843,14 +846,15 @@ class IdeManagerMdHtmlGenerator(IdeSectionsManager):
|
|
|
843
846
|
|
|
844
847
|
img = Html.img(src=img_link, kls=HtmlClass.skip_light_box, **img_style)
|
|
845
848
|
|
|
846
|
-
|
|
849
|
+
tip: Tip = tip_txt or getattr(env.lang, lang_prop)
|
|
850
|
+
tip_width = None if tip_txt else tip.em
|
|
847
851
|
if bare_tip:
|
|
848
852
|
tip_span = ""
|
|
849
853
|
kwargs['data'] = kwargs.get('data', {})
|
|
850
|
-
kwargs['data']['tip-txt'] = str(
|
|
851
|
-
if
|
|
854
|
+
kwargs['data']['tip-txt'] = str(tip)
|
|
855
|
+
if tip_width: kwargs['data']['tip-width'] = tip_width
|
|
852
856
|
else:
|
|
853
|
-
tip_span = Html.tooltip(
|
|
857
|
+
tip_span = Html.tooltip(tip, tip_width, tip_side=tip_side or P5BtnLocation.bottom)
|
|
854
858
|
|
|
855
859
|
btn_style = f"margin-left:{margin_left}em; margin-right:{ margin_right }em;"
|
|
856
860
|
if 'style' in kwargs:
|
|
@@ -887,6 +891,7 @@ BTNS_KINDS_CONFIG = {
|
|
|
887
891
|
'show': ('check', 'show', 'gray'),
|
|
888
892
|
|
|
889
893
|
'test_ides': ('play', 'test_ides', 'orange'),
|
|
894
|
+
'test_pause': ('pause', 'test_pause', 'orange'),
|
|
890
895
|
'test_stop': ('stop', 'test_stop', 'orange'),
|
|
891
896
|
'test_1_ide': ('play', 'test_1_ide', 'orange'),
|
|
892
897
|
'load_ide': ('download', 'load_ide', None),
|
|
@@ -42,6 +42,8 @@ class IdePlayground(CommonGeneratedIde, Ide):
|
|
|
42
42
|
|
|
43
43
|
DEPS_KIND: ClassVar[DepKind] = DepKind.playground
|
|
44
44
|
|
|
45
|
+
IS_TESTED: ClassVar[bool] = False
|
|
46
|
+
|
|
45
47
|
|
|
46
48
|
@property
|
|
47
49
|
def has_check_btn(self):
|
|
@@ -64,19 +66,17 @@ class IdePlayground(CommonGeneratedIde, Ide):
|
|
|
64
66
|
return False
|
|
65
67
|
|
|
66
68
|
|
|
67
|
-
|
|
68
69
|
def exported_items(self):
|
|
70
|
+
"""
|
|
71
|
+
Override the exported values, making sure deactivate_stdout_for_secrets is always
|
|
72
|
+
false in the playground (otherwise, it becomes mainly useless...).
|
|
73
|
+
"""
|
|
69
74
|
yield from (
|
|
70
75
|
(k,v) if k!='deactivate_stdout_for_secrets' else (k, False)
|
|
71
76
|
for k,v in super().exported_items()
|
|
72
77
|
)
|
|
73
78
|
|
|
74
79
|
|
|
75
|
-
|
|
76
|
-
def register_ide_for_tests(self):
|
|
77
|
-
""" IdeTester instances are never registered for testing... """
|
|
78
|
-
|
|
79
|
-
|
|
80
80
|
# def list_of_buttons(self):
|
|
81
81
|
# """ Keep only public tests, validations and restart. """
|
|
82
82
|
# btns = super().list_of_buttons()
|
|
@@ -84,7 +84,6 @@ class IdePlayground(CommonGeneratedIde, Ide):
|
|
|
84
84
|
# return btns[:2] + [restart]
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
|
|
88
87
|
#-----------------------------------------------------------------------------------
|
|
89
88
|
|
|
90
89
|
|
|
@@ -117,16 +116,23 @@ class IdePlayground(CommonGeneratedIde, Ide):
|
|
|
117
116
|
# Playground {{ data-search-exclude }}
|
|
118
117
|
|
|
119
118
|
|
|
120
|
-
Cette page permet de développer dynamiquement dans un contexte où les différentes
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
Cette page permet de développer dynamiquement dans un contexte où les différentes
|
|
120
|
+
[`sections`]({ GIT_LAB_PAGES }redactors/IDE-details/#ide-sections) sont modifiables et exécutables
|
|
121
|
+
à volonté : lorsque l'IDE est exécuté, les contenus de tous les autres éditeurs de la page sont
|
|
122
|
+
utilisés en tant que sections de l'IDE.
|
|
123
|
+
|
|
124
|
+
Elle permet donc d'accélérer la création et le débogage des codes pythons pour un exercice, sans
|
|
125
|
+
avoir besoin de passer par de multiples pipelines ou `mkdocs serve`.
|
|
126
|
+
|
|
127
|
+
<br>
|
|
123
128
|
|
|
129
|
+
* <span style="color:orange" markdown>___Le bouton de téléversement de l'IDE permet d'importer un fichier existant pour
|
|
130
|
+
ensuite en modifier les différentes sections.___</span>
|
|
131
|
+
* <span style="color:orange" markdown>___Le bouton de téléchargement de l'IDE permet de récupérer un fichier PMT correctement
|
|
132
|
+
formaté, avec toutes les sections assemblées.___</span>
|
|
133
|
+
* Toutes les [`python_libs`]({ GIT_LAB_PAGES }custom/python_libs/) du site sont utilisables dans l'IDE.
|
|
124
134
|
* Les raccourcis ++ctrl+s++ (tests publics) et ++ctrl+enter++ (validation) sont actifs dans
|
|
125
135
|
n'importe quel éditeur de la page.
|
|
126
|
-
* Le bouton de téléversement permet d'importer un fichier existant pour ensuite en modifier
|
|
127
|
-
les différentes sections.
|
|
128
|
-
* Le bouton de téléchargement sous l'IDE permet de récupérer un fichier PMT correctement formaté,
|
|
129
|
-
avec toutes les sections assemblées.
|
|
130
136
|
* Le contenu de la section `tests` est automatiquement exécuté après le contenu de l'IDE : il n'est
|
|
131
137
|
pas nécessaire d'en rajouter le code dans celui-ci pour retrouver le comportement habituel des IDEs
|
|
132
138
|
normaux, que ce soit pour les tests publics ou les validations.
|
|
@@ -138,10 +144,11 @@ normaux, que ce soit pour les tests publics ou les validations.
|
|
|
138
144
|
|
|
139
145
|
<br>
|
|
140
146
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
???+ help "Configurer et utiliser la page Playground sur votre site ?"
|
|
148
|
+
|
|
149
|
+
La page décrivant les options de configuration de la page Playground :
|
|
150
|
+
|
|
151
|
+
[`Utilisations avancées/configuration`]({ GIT_LAB_PAGES }custom/config/#pyodide_macros.playground)
|
|
145
152
|
|
|
146
153
|
<br>
|
|
147
154
|
|