Mise Ă jour vers pyodide-mkdocs-theme
Passage de mkdocs-pyodide Ă pyodide-mkdocs-theme
Beaucoup de sites avec Python interactif ont été développés en utilisant mkdocs-pyodide créé par Vincent Bouillot.
Le passage à pyodide-mkdocs-theme écrit par Frédéric Zinelli, permet beaucoup d'évolutions présentées ci-dessous, et corrige des bugs.
Tant que ce sablier (animé) est présent dans le bandeau supérieur, des éléments de la page sont inactifs :
l'environnement pyodide est en cours de démarrage.
I. Pourquoi faire une MAJ ?âïž
Une Mise Ă jour importante
Pyodide-MkDocs-Theme est un thÚme pour MkDocs, créé par Frédéric Zinelli.
- Correction des bugs de la version précédantes de pyodide, fonctionalités rajoutées.
- Exercices beaucoup plus faciles à écrire, avec seul fichier python (entre 1 et 4 dans la version précédante)
- Exécution du code beaucoup plus rapide, ce qui est sensible pour les fonctions récursives et les boucles importantes.
- facilité d'installation et de maintenance
Ce thÚme permet de construire des sites pouvant intégrer, cÎté client:
- des IDE (Ă©diteur de code),
- des consoles python interactives,
- un juge en ligne pour tester des fonctions rédigée par l'utilisateur, associé à des corrections et remarques,
- et quelques autres fonctionnalités variées (qcms, ...).
đ Une fois la mise Ă jour effectuĂ©e, le site fonctionnera encore avec l'ancienne structure (plusieurs fichiers python pour un IDE par exemple). Il n'y a donc aucune inquiĂ©tude Ă avoir pour rĂ©aliser cette mise Ă jour.
Attention pour les qcm, les macros personelles, et l'option de taille d'IDE
- Si des syntaxes (expliqué dans le III):
đ Il est recommandĂ© de faire une recherche des qcm sur votre site, avant MAJ, grĂące Ă la barre de recherche situĂ©e en haut Ă droite. Il faudra noter les pages qui contiennent des qcm, pour faire les modifications Ă©ventuelles.
-
Si vous avez rĂ©alisĂ© des macros personnelles, il faudra ĂȘtre attentif Ă ne pas les perdre (expliquĂ© dans le III).
-
Si vous avez utilisé :
Il faudra le remplacer par
Sinon cela mettra le pipeline en Ă©chec.
Remarque
Si vous n'avez jamais construit de site avec Python (pyodide) cette mise à jour ne vous est pas destinée. Le tutoriel présenté ici, est trÚs simplifié, car il est destiné à la mise à jour de sites créés en utilisant le modÚle proposé dans ce tutoriel ancien : Ancien tutoriel pour créer son site
Ce tutoriel s'adresse à des débutants avec GitLab.
đ Pour des points particuliers, se rĂ©fĂ©rer au lien Documentation officielle pour la MAJ depuis les sites crĂ©Ă©s avec pyodide-mkdocs
Warning
L'essentiel des fonctionnalités de pyodide-mkdocs restent présentes dans pyodide-mkdocs-theme.
Documentation officielle de Pyodide Mkdocs Theme
Cependant, certaines modifications ont dĂ» ĂȘtre apportĂ©es au projet, qui font que le passage Ă la version "thĂšme" nĂ©cessitera quelques changements, aussi bien du cĂŽtĂ© de l'environnement (packages installĂ©s) que de la configuration et du contenu.
II. CrĂ©er une copie de sauvegarde de votre projetâïž
Indispensable avant de commencer
Faire un fork
de votre projet, et le renommer (par exemple mon projet old). Vous allez modifier par la suite votre projet d'origine.
Warning
Le rendu du site ne sera possible qu'aprÚs avoir terminé toutes les modifications à réaliser.
III. Supprimer ou modifier des fichiers.âïž
Une fois cette copie de sauvegarde effectuée, revenir sur le projet à mettre à jour.
Supprimez le dossier my_theme_customizations
Supprimez le dossier my_theme_customizations
et tout ce qu'il contient avec un clic droit sur le dossier.
Modifier ou supprimer le fichier main.py
TrÚs important si vous avez utilisé des macros personnelles
Ne pas faire ce qui est proposé dans l'encadré qui suit, mais se reporter ici :
Si vous n'avez pas utilisé des macros personnelles
Supprimer le fichier main.py
Suppressions dans le dossier docs
Dans le dossier docs
:
- supprimer le dossier
javascripts
et tout ce qu'il contient - Dans le dossier
xtra
supprimer le dossierjavascripts
et tout ce qu'il contient. - Dans le dossier
xtra
dans le dossierstylesheets
supprimer le fichierqcm.css
Modifications du fichier mkdocs.yml
Dans le fichier mkdocs.yml
- Vérifier la présence des lignes suivantes (les modifier si nécessaire)
site_url: !ENV [CI_PAGES_URL, "http://127.0.0.1:8000/"]
site_author: !ENV [CI_COMMIT_AUTHOR, "Nom d'auteur"]
repo_url: !ENV [CI_PROJECT_URL]
edit_uri: !ENV [EDIT_VARIABLE]
-
Vers la ligne n° 22 : section
theme
, supprimer (mettre des#
en début de ligne) comme ci-dessous. -
Vers la ligne n° 27 remplacer
name: material
parname: pyodide-mkdocs-theme
-
Vers la ligne n° 47 ne pas oublier de supprimer
navigation.instant
, car le thĂšme nâest pas compatible avec cette option.
theme:
favicon: assets/favicon.ico
icon:
logo: material/stairs-up
#custom_dir: my_theme_customizations/
name: pyodide-mkdocs-theme
#font: false # RGPD ; pas de fonte Google
#language: fr # français
#palette: # Palettes de couleurs jour/nuit
#- media: "(prefers-color-scheme: light)"
#scheme: default
#primary: indigo
#accent: indigo
#toggle:
#icon: material/weather-sunny
#name: Passer au mode nuit
#- media: "(prefers-color-scheme: dark)"
#scheme: slate
#primary: black
#accent: green
#toggle:
#icon: material/weather-night
#name: Passer au mode jour
features:
#- navigation.instant
#- navigation.tabs Pour avoir le menu vertical il fallait supprimer ça
- navigation.top
- toc.integrate
- header.autohide
- content.code.annotate # Pour les annotations de code deroulantes avec +
- Vers la ligne n°66 section markdown_extensions: ajouter
md_in_html
au débutmarkdown_extensions:
- Vers la ligne n°89 remplacer
par :
- pymdownx.emoji: # Ămojis :boom:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
markdown_extensions:
- md_in_html
- meta
- abbr
- def_list # Les listes de définition.
- attr_list # Un peu de CSS et des attributs HTML.
- footnotes # Notes[^1] de bas de page. [^1]: ma note.
- admonition # Blocs colorés !!! info "ma remarque"
- pymdownx.details # qui peuvent se plier/déplier.
- pymdownx.caret # Passage ^^souligné^^ ou en ^exposant^.
- pymdownx.mark # Passage ==surligné==.
- pymdownx.tilde # Passage ~~barré~~ ou en ~indice~.
- pymdownx.highlight: # Coloration syntaxique du code
- pymdownx.inlinehilite # pour `#!python <python en ligne>`
- pymdownx.snippets # Inclusion de fichiers externe.
- pymdownx.tasklist: # Cases Ă cocher - [ ] et - [x]
custom_checkbox: false # avec cases d'origine
clickable_checkbox: true # et cliquables.
- pymdownx.tabbed: # Volets glissants. === "Mon volet"
alternate_style: true
- pymdownx.keys: # Touches du clavier. ++ctrl+d++
separator: "\uff0b"
- pymdownx.emoji: # Ămojis :boom:
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.arithmatex:
generic: true
- toc:
permalink: âïž
toc_depth: 2
- Vers la ligne n°103 section
plugins
, vous devez avoir ceci, dans le mĂȘme ordre :
plugins:
- awesome-pages:
collapse_single_pages: true
- search
- tags:
tags_file: tags.md
- pyodide_macros:
# Vous pouvez ajouter ici tout réglage que vous auriez ajouté concernant les macros:
on_error_fail: true # Il est conseillé d'ajouter celui-ci si vous ne l'utilisez pas.
build:
python_libs: # Pour avoir la tortue Python
- turtle
tab_to_spaces: 4 # Pour convertir les tabulations en 4 espaces
# En remplacement de mkdocs-exclude. Tous les fichiers correspondant aux patterns indiqués seront
# exclu du site final et donc Ă©galement de l'indexation de la recherche.
# Nota: ne pas mettre de commentaires dans ces lignes !
exclude_docs: |
**/*_REM.md
**/*.py
- Vers les lignes n°130 : supprimer (mettre des
#
en début de ligne) comme ci-dessous.
Ajouter le répertoire turtle
Il faut mettre le dossier turtle
à la racine du site à télécharger ici : Clic droit, puis "Enregistrer la cible du lien sous"
DĂ©compresser le fichier turtle.zip
puis mettre le dossier turtle
Ă la racine du projet.
Vous obtiendrez :
Modifications du fichier requirements.txt
Remplacer le contenu du fichier requirements.txt
par :
Le fichier tags.md
Dans le dossier docs
se trouve en principe un fichier tags.md
Si ce n'est pas le cas, le rajouter :
Les QCM
Si des syntaxes (expliqué dans le III):
ont été utilisées dans le site, il faudra les supprimer, et faire les modifications pour utiliser :Exemple de code à supprimer
đ Par exemple, il faut supprimer ceci :
Exemple de code de remplacement
On peut remplacer le code précédant par :
Version longue
Tout savoir sur les qcm
Se reporter ici : Documentation officielle sur les qcm
Les noms de dossiers et de fichiers
Attention, les seuls caractĂšres autorisĂ©s pour les noms de fichiers sont : les lettres, chiffres, traits dâunion ou traits bas, et rien dâautre.
Les caractÚres spéciaux, espaces et lettres accentuées sont interdits.
đ Penser Ă modifier ces noms si nĂ©cessaire.
Les fichiers .pages
La syntaxe arrange
va devenir obsolĂšte. Dans les fichiers .pages
remplacer arrange
par nav
.
IV. Terminerâïž
Faire le commit
Faire le commit, et vérifier le rendu du site.
V. En cas d'erreurâïž
En cas d'Ă©chec du pipeline
đ Ce n'est pas trĂšs grave, pas de panique !
Vous obtenez quelquechose comme ceci :
Cliquer sur J"obs ayant échoué" puis lire le message qui s'affiche.
đ Il n'y a plus qu'Ă comprendre le message d'erreur (c'est un peu effrayant, mais cela permet de rĂ©soudre le problĂšme), et rectifier avant de faire un nouveau commit ...
Dans l'exemple ci-dessus on lit : Nav entry "fractales" not found. [.pages]
. En effet, dans le dfichier .pages
je fais référence à un dossier
"fractales" qui avait été supprimé du site. Il suffit de supprimer la ligne correspondante du fichier .pages
, de faire un commit, et le nouveau pipeline ne sera pas en Ă©chec.
Erreurs fréquentes qui mettent un pipeline en échec
- Une macro qui n'existe pas (voir pour les qcm par exemple) met le pipeline en Ă©chec.
- Utiliser une section vide dans un fichier python : Sections vides
- Une erreur possible : utilisation de l'ancienne option
SIZE
pour la taille d'un IDE. Il faut le remplacer parMAX_SIZE
(Voir le I.) - Un fichier
.pages
incorrect - Un nom de fichier est invalide : Le thĂšme nâautorise plus les caractĂšres accentuĂ©s, caractĂšres spĂ©ciaux, espaces âŠ
Voir : Mettre Ă jour les fichiers
CrĂ©ditsâïž
Merci à Frédéric Zinelli qui a créé ce thÚme, et une documentation trÚs détaillée, dont je me suis trÚs largement inspirée.
Documentation détaillée de pyodide-mkdocs-theme par F. Zinelli