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.
Files changed (161) hide show
  1. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/PKG-INFO +1 -1
  2. pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/__version__.py +1 -0
  3. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/basthon_p5_to_pmt.py +0 -5
  4. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/_inclusions_tools.py +3 -3
  5. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_builder/__init__.py +1 -0
  6. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_builder/_html_builder.py +53 -30
  7. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps.py +10 -8
  8. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_ide.py +10 -19
  9. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_manager.py +9 -4
  10. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_playground.py +25 -18
  11. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_tester.py +126 -121
  12. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/de_lang.py +0 -16
  13. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/en_lang.py +0 -16
  14. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/fr_lang.py +0 -16
  15. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/__init__.py +1 -1
  16. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_base.py +29 -20
  17. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_contracts.py +5 -7
  18. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_files.py +10 -3
  19. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_macros.py +4 -3
  20. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_meta.py +2 -1
  21. {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
  22. {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
  23. {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
  24. {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
  25. {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
  26. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/lang_src.py +52 -1
  27. {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
  28. {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
  29. {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
  30. pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/ide_tests.py +80 -0
  31. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/macros_data.py +1 -62
  32. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/maestro_tools.py +13 -10
  33. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/options_alterations.py +3 -3
  34. {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
  35. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/test_cases.py +75 -36
  36. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/tools_and_constants.py +36 -13
  37. pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/assets/images/icons8-pause-64.png +0 -0
  38. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/0-config.js +4 -8
  39. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functools.js +25 -0
  40. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsUi.js +9 -6
  41. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/jsLogger.js +1 -2
  42. pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/js-libs/process_and_gui.js +166 -0
  43. {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
  44. pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/js-per-pages/5-2-virtualizer-ides_test.js +898 -0
  45. pyodide_mkdocs_theme-5.6.0/pyodide_mkdocs_theme/templates/js-per-pages/5-3-avl-ides_test.mjs +342 -0
  46. {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
  47. {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
  48. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/qcms-qcm.js +1 -1
  49. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-per-pages/start-pyodide.js +15 -27
  50. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/0-generic.css +14 -16
  51. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/testing.css +69 -14
  52. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyproject.toml +1 -1
  53. pyodide_mkdocs_theme-5.5.6/pyodide_mkdocs_theme/__version__.py +0 -1
  54. pyodide_mkdocs_theme-5.5.6/pyodide_mkdocs_theme/templates/js-libs/process_and_gui.js +0 -141
  55. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/LICENSE +0 -0
  56. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/README.md +0 -0
  57. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5/__init__.py +0 -0
  58. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5/cdns.txt +0 -0
  59. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5v2/__init__.py +0 -0
  60. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/p5v2/cdns.txt +0 -0
  61. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis/__init__.py +0 -0
  62. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis/cdns.txt +0 -0
  63. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis_network/__init__.py +0 -0
  64. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/PMT_tools/vis_network/cdns.txt +0 -0
  65. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/__init__.py +0 -0
  66. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/__main__.py +0 -0
  67. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/__init__.py +0 -0
  68. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/exceptions.py +0 -0
  69. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/__init__.py +0 -0
  70. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base0_extractors.py +0 -0
  71. {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
  72. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/base2_inclusions.py +0 -0
  73. {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
  74. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/files_extractors/concrete_extractors.py +0 -0
  75. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/__init__.py +0 -0
  76. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/html_dependencies/deps_class.py +0 -0
  77. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/indent_parser.py +0 -0
  78. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/__init__.py +0 -0
  79. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/figure.py +0 -0
  80. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_py_btn.py +0 -0
  81. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_run_macro.py +0 -0
  82. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_term_ide.py +0 -0
  83. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/ide_terminal.py +0 -0
  84. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/py_script.py +0 -0
  85. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/qcm.py +0 -0
  86. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/macros/runners_macros.py +0 -0
  87. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/__init__.py +0 -0
  88. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/classes.py +0 -0
  89. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/messages/proxy.py +0 -0
  90. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/parsing.py +0 -0
  91. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/paths_utils.py +0 -0
  92. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/config.py +0 -0
  93. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_indent.py +0 -0
  94. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/maestro_templates.py +0 -0
  95. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin/pyodide_macros_plugin.py +0 -0
  96. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/__init__.py +0 -0
  97. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/definitions/__init__.py +0 -0
  98. {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
  99. {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
  100. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_config/dumpers.py +0 -0
  101. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/plugin_tools/__init__.py +0 -0
  102. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/pyodide_macros/pyodide_logger.py +0 -0
  103. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/de/docs/exo.py +0 -0
  104. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/de/docs/index.md +0 -0
  105. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/de/mkdocs.yml +0 -0
  106. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/en/docs/exo.py +0 -0
  107. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/en/docs/index.md +0 -0
  108. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/en/mkdocs.yml +0 -0
  109. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/fr/docs/exo.py +0 -0
  110. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/fr/docs/index.md +0 -0
  111. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/fr/mkdocs.yml +0 -0
  112. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/.gitignore +0 -0
  113. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/main.py +0 -0
  114. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/mkdocs.yml +0 -0
  115. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/pyodide_plot.py +0 -0
  116. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/requirements.txt +0 -0
  117. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/scripts/models/toolbox.py +0 -0
  118. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/README.md +0 -0
  119. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/__init__.py +0 -0
  120. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/.qcm-circle.svg +0 -0
  121. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-check-64.png +0 -0
  122. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-download-64.png +0 -0
  123. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-play-64.png +0 -0
  124. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-restart-64.png +0 -0
  125. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-save-64.png +0 -0
  126. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-step-64.png +0 -0
  127. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-stop-64.png +0 -0
  128. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-upload-64.png +0 -0
  129. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/assets/images/icons8-zip-64.png +0 -0
  130. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/base_pmt.html +0 -0
  131. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/0-legacy-subscriber.js +0 -0
  132. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsStorage.js +0 -0
  133. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsTxt.js +0 -0
  134. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/functoolsUiBuilder.js +0 -0
  135. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-libs/mathjax-libs.js +0 -0
  136. {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
  137. {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
  138. {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
  139. {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
  140. {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
  141. {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
  142. {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
  143. {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
  144. {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
  145. {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
  146. {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
  147. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-scripts/overlord.js +0 -0
  148. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/js-scripts/subscriptions.js +0 -0
  149. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/main.html +0 -0
  150. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/mkdocs_theme.yml +0 -0
  151. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/content.html +0 -0
  152. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/copyright.html +0 -0
  153. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/footer.html +0 -0
  154. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/header.html +0 -0
  155. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/partials/social.html +0 -0
  156. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/btns-header.css +0 -0
  157. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/history.css +0 -0
  158. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/hourglass.css +0 -0
  159. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/ide.css +0 -0
  160. {pyodide_mkdocs_theme-5.5.6 → pyodide_mkdocs_theme-5.6.0}/pyodide_mkdocs_theme/templates/pyodide-css/qcm.css +0 -0
  161. {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.5.6
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"
@@ -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`).\nOccurred in:\n{ self.parent.env.log() }"
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"the { source.parent } directory."
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(
@@ -40,6 +40,7 @@ from ._html_builder import (
40
40
  button,
41
41
  code,
42
42
  div,
43
+ label,
43
44
  script,
44
45
  style,
45
46
  span,
@@ -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
- # disabled: Any=None,
35
- # checked: Any=None,
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 = "none",
158
+ id:str = "",
151
159
  kls:str = "",
152
160
  kls_box:str = "",
153
161
  tip_txt:str = "",
154
- width_em:Optional[int]=None,
155
- tip_shift:Optional[int]=None,
156
- bare_tip: bool = False
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
- If @bare_tip is True and there is no given label, attach the tooltip info as dataset
161
- directly on the input.
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
- input_kw = {'checked':""} if checked else {}
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
- if bare_tip:
166
- if label or kls:
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
- box = input('', type='checkbox', disabled=True, id=id, kls=kls_box, **input_kw)
181
- return box if bare_tip else div( box+txt+tip, kls=f'{ HtmlClass.tooltip } { kls }'.rstrip() )
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
- generic = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/0-generic.css")
207
- header = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/btns-header.css")
208
- history = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/history.css")
209
- hourglass = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/hourglass.css")
210
- ide = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/ide.css")
211
- qcm = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/qcm.css")
212
- terminal = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/terminal.css")
213
- testing = Css(Block.libs, DepKind.always, "{base_url}/pyodide-css/testing.css")
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.macros_data import IdeToTest
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.test_config = case
196
+ if not self.IS_TESTED:
197
+ return
208
198
 
209
- test = IdeToTest.from_ide(self)
210
- self.env.archive_ide_to_tests(test)
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
- tip_txt: Tip = getattr(env.lang, lang_prop)
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(tip_txt)
851
- if tip_txt.em: kwargs['data']['tip-width'] = tip_txt.em
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(tip_txt, tip_txt.em, tip_side=tip_side or P5BtnLocation.bottom)
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 sections sont
121
- modifiables et exécutables à volonté : lorsque l'IDE est exécuté, les contenus de tous les autres
122
- éditeurs de la page sont utilisés en tant que sections de l'IDE.
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
- ??? help "Aide..."
142
- - [Configuration]({ GIT_LAB_PAGES }custom/config/#pyodide_macros.playground) de la page Playground.
143
- - Informations sur les différentes [`sections`]({ GIT_LAB_PAGES }redactors/IDE-details/#ide-sections)
144
- et leurs comportements
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