From f342b0136f1b9a5b42acae7d793e8a9a9bfecce2 Mon Sep 17 00:00:00 2001 From: jsboige Date: Mon, 1 Jun 2026 01:46:17 +0200 Subject: [PATCH 1/2] fix(tweety): reformat single-line source + add convention prints for Tweety-6 and Tweety-9 (#1946) - Tweety-6 cell 9554123421b1: add print to silent exercise stub (DeLP film recommendation) - Tweety-9 cell d36e667d: reformat single-line source (0 newlines) to proper multi-line Exemple guide solution (calculate_all_rules + strategic manipulation) - Papermill re-exec: Tweety-6 23/23 cells, Tweety-9 21/21 cells, 0 silent Co-Authored-By: Claude Opus 4.8 --- .../Tweety-6-Structured-Argumentation.ipynb | 65 +++++++++++-------- .../Tweety/Tweety-9-Preferences.ipynb | 41 ++++++++++-- 2 files changed, 74 insertions(+), 32 deletions(-) diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb index 91177e08f..fe7b1a71b 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb @@ -92,7 +92,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "--- Verification JVM Tweety + Outils ---\n", + "--- Verification JVM Tweety + Outils ---\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "JDK portable: zulu17.50.19-ca-jdk17.0.11-win_x64\n" ] }, @@ -104,11 +110,12 @@ "\n", "--- Outils disponibles ---\n", " CLINGO: clingo\n", + " SPASS: SPASS.exe\n", " EPROVER: eprover.exe\n", " SAT_SOLVER_PYTHON: sat_solver.py\n", " MARCO: marco.py\n", "\n", - "JVM prete. Outils: 4/5\n" + "JVM prete. Outils: 5/5\n" ] } ], @@ -545,7 +552,13 @@ "JVM prete. Execution de l'exemple DeLP...\n", "Imports DeLP, FOL et Commons necessaires reussis.\n", "\n", - "Chargement du programme DeLP depuis: resources\\birds2.txt\n", + "Chargement du programme DeLP depuis: resources\\birds2.txt\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Programme charge avec succes depuis le fichier.\n", "\n", "Programme DeLP charge:\n", @@ -567,7 +580,14 @@ "\n", "Evaluation des requetes DeLP:\n", "(YES=justifie, NO=refute, UNDECIDED=indetermine)\n", - " Querying 'Fly(tweety)'... Resultat: The answer is: NO\n", + " Querying 'Fly(tweety)'..." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Resultat: The answer is: NO\n", " Querying 'Fly(opus)'... Resultat: The answer is: YES\n", " Querying 'Bird(tweety)'... Resultat: The answer is: YES\n", " Querying 'Bird(opus)'... Resultat: The answer is: YES\n", @@ -853,13 +873,7 @@ " - Query 'a' (ABA Preferred)? True\n", "\n", "\n", - "--- Exemple ABA avec Logique du Premier Ordre ---\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "--- Exemple ABA avec Logique du Premier Ordre ---\n", "OK: Signature FOL pour ABA definie.\n", "INFO: Utilisation de ';' comme separateur pour le parser ABA FOL.\n", "Chargement ABA (FOL) depuis fichier: resources\\smp_fol.aba\n", @@ -875,14 +889,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " - Query 'Pair(a,d)' (ABA Preferred)? False" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" + " - Query 'Pair(a,d)' (ABA Preferred)? False\n" ] } ], @@ -1362,15 +1369,21 @@ "\n", "--- Programme ASP Simple ---\n", "Programme 1:\n", - " {r :- -q, not b. p :- not r. b. -q :- b.}\n", + " {b. -q :- b. p :- not r. r :- -q, not b.}\n", "\n", "--- Programme ASP Suspects ---\n", "Programme 2:\n", - " {motive(sally). guilty(harry). innocent(Suspect) :- motive(Suspect), not guilty(Suspect). motive(harry).}\n", + " {guilty(harry). innocent(Suspect) :- motive(Suspect), not guilty(Suspect). motive(harry). motive(sally).}\n", "\n", - "Utilisation de Clingo trouve/configure a: D:\\CoursIA\\MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\ext_tools\\clingo\n", + "Utilisation de Clingo trouve/configure a: D:\\dev\\CoursIA\\MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\ext_tools\\clingo\n", "\n", - "Calcul des Answer Sets pour Programme 2...\n", + "Calcul des Answer Sets pour Programme 2...\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Answer Sets trouves (1):\n", " - AS 1: {guilty(harry), innocent(sally), motive(harry), motive(sally)}\n", "\n", @@ -1695,14 +1708,14 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Exercice a completer : argumentation structuree avec DeLP pour recommandation de films\n" + "Exercice : DeLP pour recommandation de films a completer\n" ] } ], - "source": "print(\"Exercice a completer : argumentation structuree avec DeLP pour recommandation de films\")\n\n# Exercice: Choisissez un framework (ASPIC+, DeLP, ou ABA)\n# Exemple avec DeLP (le plus intuitif pour les recommandations)\n# TODO etudiant : instancier le raisonneur DeLP et analyser les arguments\n\nfrom org.tweetyproject.arg.delp.syntax import *\n\n# Exercice: Definissez une base de connaissances de films\n# Exemple: regles pour recommander des films selon les genres\nfilms_kb = \"\"\"\n% Regles strictes (faits)\nfilm(inception) <- true.\nfilm(titanic) <- true.\nfilm(matrix) <- true.\n\n% Regles defeasibles (peuvent etre contredites)\n<- genre(inception, sci_fi).\n<- genre(titanic, romance).\n<- genre(matrix, sci_fi).\n\n% Preferences utilisateur (a adapter)\n<- prefere(scifi) | utilisateur_geek.\n<- prefere(romance) | utilisateur_sentimental.\n\n% Regles de recommandation\n<- recommander(F) <- film(F), genre(F, G), prefere(G).\n\"\"\"\n\n# Exercice: Instanciez le raisonneur DeLP\n# reasoner = DelpReasoner()\n\n# Exercice: Posez une query\n# result = reasoner.query(\"recommander(X)\")\n\n# Exercice: Analysez les arguments pour/contre\n# Quels films sont recommandes ? Pourquoi ?\n\n# Exercice: Ajoutez des contre-arguments\n# Exemple: \"inception est trop complexe pour certains\"" + "source": "# Exercice: Choisissez un framework (ASPIC+, DeLP, ou ABA)\n# Exemple avec DeLP (le plus intuitif pour les recommandations)\n\nfrom org.tweetyproject.arg.delp.syntax import *\n\n# Exercice: Definissez une base de connaissances de films\n# Exemple: regles pour recommander des films selon les genres\nfilms_kb = \"\"\"\n% Regles strictes (faits)\nfilm(inception) <- true.\nfilm(titanic) <- true.\nfilm(matrix) <- true.\n\n% Regles defeasibles (peuvent etre contredites)\n<- genre(inception, sci_fi).\n<- genre(titanic, romance).\n<- genre(matrix, sci_fi).\n\n% Preferences utilisateur (a adapter)\n<- prefere(scifi) | utilisateur_geek.\n<- prefere(romance) | utilisateur_sentimental.\n\n% Regles de recommandation\n<- recommander(F) <- film(F), genre(F, G), prefere(G).\n\"\"\"\n\n# Exercice: Instanciez le raisonneur DeLP\n# reasoner = DelpReasoner()\n\n# Exercice: Posez une query\n# result = reasoner.query(\"recommander(X)\")\n\n# Exercice: Analysez les arguments pour/contre\n# Quels films sont recommandes ? Pourquoi ?\n\n# Exercice: Ajoutez des contre-arguments\n# Exemple: \"inception est trop complexe pour certains\"\n\nprint(\"Exercice : DeLP pour recommandation de films a completer\")" }, { "cell_type": "markdown", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb index 61e497df5..9f6eb80dd 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb @@ -63,8 +63,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "--- Verification JVM Tweety + Outils ---\n", - "JDK portable: zulu17.50.19-ca-jdk17.0.11-win_x64\n", + "--- Verification JVM Tweety + Outils ---\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JDK portable: zulu17.50.19-ca-jdk17.0.11-win_x64\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "JVM demarree avec 42 JARs.\n", "\n", "--- Outils disponibles ---\n", @@ -1220,10 +1232,27 @@ }, "tags": [] }, - "outputs": [], - "source": [ - "# Exemple guide : Solution completecandidats = ['Paris', 'Berlin', 'Rome', 'Madrid']# 1. Definition des profils de preference (5 votants)profils = [ ['Paris', 'Berlin', 'Rome', 'Madrid'], # Votant 1 ['Berlin', 'Paris', 'Madrid', 'Rome'], # Votant 2 ['Rome', 'Madrid', 'Paris', 'Berlin'], # Votant 3 ['Madrid', 'Rome', 'Berlin', 'Paris'], # Votant 4 ['Berlin', 'Rome', 'Paris', 'Madrid'], # Votant 5]def calculate_all_rules(prefs, candidates): borda = {c: 0 for c in candidates} n = len(candidates) for p in prefs: for rank, c in enumerate(p): borda[c] += (n - 1 - rank) plurality = {c: 0 for c in candidates} for p in prefs: plurality[p[0]] += 1 condorcet_winner = None for c1 in candidates: is_condorcet = True for c2 in candidates: if c1 == c2: continue wins = sum(1 for p in prefs if p.index(c1) < p.index(c2)) if wins <= len(prefs) / 2: is_condorcet = False break if is_condorcet: condorcet_winner = c1 break return borda, plurality, condorcet_winnerprint(\"--- Resultats de l'exercice de synthese ---\")b, p, c = calculate_all_rules(profils, candidats)b_win = max(b, key=b.get)p_win = max(p, key=p.get)print(f\"Vainqueur Borda: {b_win} (scores: {dict(sorted(b.items(), key=lambda x: -x[1]))})\")print(f\"Vainqueur Pluralite: {p_win} ({p[p_win]} votes)\")print(f\"Vainqueur Condorcet: {c if c else 'Aucun'}\")print(f\"\\nConsensus (Borda == Pluralite == Condorcet): {b_win == p_win == c}\")# 2. Manipulation strategiqueprint(\"\\n--- Manipulation Strategique (Votant 3) ---\")profils_manip = profils.copy()print(f\"Votant 3 change son vote de {profils[2]} a ['Paris', 'Rome', 'Madrid', 'Berlin']\")profils_manip[2] = ['Paris', 'Rome', 'Madrid', 'Berlin']b2, p2, c2 = calculate_all_rules(profils_manip, candidats)print(f\"Nouveau vainqueur Borda: {max(b2, key=b2.get)} (score augmente)\")print(f\"Nouveau vainqueur Pluralite: {max(p2, key=p2.get)} (tie avec Berlin)\")print(\"Note: Dans ce profil, la manipulation renforce le gagnant initial Borda.\")" - ] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--- Resultats de l'exercice de synthese ---\n", + "Vainqueur Borda: Berlin (scores: {'Berlin': 9, 'Rome': 8, 'Paris': 7, 'Madrid': 6})\n", + "Vainqueur Pluralite: Berlin (2 votes)\n", + "Vainqueur Condorcet: Berlin\n", + "\n", + "Consensus (Borda == Pluralite == Condorcet): True\n", + "\n", + "--- Manipulation Strategique (Votant 3) ---\n", + "Votant 3 change son vote de ['Rome', 'Madrid', 'Paris', 'Berlin'] a ['Paris', 'Rome', 'Madrid', 'Berlin']\n", + "Nouveau vainqueur Borda: Paris (score augmente)\n", + "Nouveau vainqueur Pluralite: Paris (tie avec Berlin)\n", + "Note: Dans ce profil, la manipulation renforce le gagnant initial Borda.\n" + ] + } + ], + "source": "# Exemple guide : Solution complete\ncandidats = ['Paris', 'Berlin', 'Rome', 'Madrid']\n\n# 1. Definition des profils de preference (5 votants)\nprofils = [\n ['Paris', 'Berlin', 'Rome', 'Madrid'], # Votant 1\n ['Berlin', 'Paris', 'Madrid', 'Rome'], # Votant 2\n ['Rome', 'Madrid', 'Paris', 'Berlin'], # Votant 3\n ['Madrid', 'Rome', 'Berlin', 'Paris'], # Votant 4\n ['Berlin', 'Rome', 'Paris', 'Madrid'], # Votant 5\n]\n\n\ndef calculate_all_rules(prefs, candidates):\n borda = {c: 0 for c in candidates}\n n = len(candidates)\n for p in prefs:\n for rank, c in enumerate(p):\n borda[c] += (n - 1 - rank)\n\n plurality = {c: 0 for c in candidates}\n for p in prefs:\n plurality[p[0]] += 1\n\n condorcet_winner = None\n for c1 in candidates:\n is_condorcet = True\n for c2 in candidates:\n if c1 == c2:\n continue\n wins = sum(1 for p in prefs if p.index(c1) < p.index(c2))\n if wins <= len(prefs) / 2:\n is_condorcet = False\n break\n if is_condorcet:\n condorcet_winner = c1\n break\n\n return borda, plurality, condorcet_winner\n\n\nprint(\"--- Resultats de l'exercice de synthese ---\")\nb, p, c = calculate_all_rules(profils, candidats)\nb_win = max(b, key=b.get)\np_win = max(p, key=p.get)\nprint(f\"Vainqueur Borda: {b_win} (scores: {dict(sorted(b.items(), key=lambda x: -x[1]))})\")\nprint(f\"Vainqueur Pluralite: {p_win} ({p[p_win]} votes)\")\nprint(f\"Vainqueur Condorcet: {c if c else 'Aucun'}\")\nprint(f\"\\nConsensus (Borda == Pluralite == Condorcet): {b_win == p_win == c}\")\n\n# 2. Manipulation strategique\nprint(\"\\n--- Manipulation Strategique (Votant 3) ---\")\nprofils_manip = profils.copy()\nprint(f\"Votant 3 change son vote de {profils[2]} a ['Paris', 'Rome', 'Madrid', 'Berlin']\")\nprofils_manip[2] = ['Paris', 'Rome', 'Madrid', 'Berlin']\nb2, p2, c2 = calculate_all_rules(profils_manip, candidats)\nprint(f\"Nouveau vainqueur Borda: {max(b2, key=b2.get)} (score augmente)\")\nprint(f\"Nouveau vainqueur Pluralite: {max(p2, key=p2.get)} (tie avec Berlin)\")\nprint(\"Note: Dans ce profil, la manipulation renforce le gagnant initial Borda.\")" }, { "cell_type": "markdown", From 4b08cf12ac314ebdb45b9efb163fc16c80e69e05 Mon Sep 17 00:00:00 2001 From: jsboige Date: Mon, 1 Jun 2026 08:18:49 +0200 Subject: [PATCH 2/2] chore(catalog): regen after rebase on main (504 entries) Co-Authored-By: Claude Opus 4.8 --- COURSE_CATALOG.generated.json | 382 +++++++++++------------ MyIA.AI.Notebooks/GameTheory/README.md | 2 +- MyIA.AI.Notebooks/GenAI/README.md | 2 +- MyIA.AI.Notebooks/ML/README.md | 2 +- MyIA.AI.Notebooks/QuantConnect/README.md | 2 +- MyIA.AI.Notebooks/README.md | 2 +- MyIA.AI.Notebooks/Search/README.md | 2 +- MyIA.AI.Notebooks/Sudoku/README.md | 2 +- 8 files changed, 198 insertions(+), 198 deletions(-) diff --git a/COURSE_CATALOG.generated.json b/COURSE_CATALOG.generated.json index f8eea07d4..1769ea1ad 100644 --- a/COURSE_CATALOG.generated.json +++ b/COURSE_CATALOG.generated.json @@ -64,7 +64,7 @@ "cells_code": 8, "cells_markdown": 13, "cells_with_outputs": 7, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -88,7 +88,7 @@ "cells_code": 8, "cells_markdown": 13, "cells_with_outputs": 4, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -111,7 +111,7 @@ "cells_total": 66, "cells_code": 20, "cells_markdown": 46, - "cells_with_outputs": 18, + "cells_with_outputs": 17, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -126,7 +126,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", "last_validation": "2026-05-30", @@ -135,8 +135,8 @@ "cells_total": 34, "cells_code": 14, "cells_markdown": 20, - "cells_with_outputs": 9, - "cells_without_outputs": 1, + "cells_with_outputs": 4, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -150,7 +150,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2024", "last_validation": "2026-05-30", @@ -159,8 +159,8 @@ "cells_total": 47, "cells_code": 15, "cells_markdown": 32, - "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_with_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -183,7 +183,7 @@ "cells_total": 26, "cells_code": 12, "cells_markdown": 14, - "cells_with_outputs": 10, + "cells_with_outputs": 3, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -222,7 +222,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", "last_validation": "2026-06-01", @@ -232,7 +232,7 @@ "cells_code": 11, "cells_markdown": 23, "cells_with_outputs": 9, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -255,7 +255,7 @@ "cells_total": 51, "cells_code": 24, "cells_markdown": 27, - "cells_with_outputs": 21, + "cells_with_outputs": 19, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -366,17 +366,17 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2024", - "last_validation": "2026-05-30", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1895", + "issue_pr_associee": "#2010", "cells_total": 45, "cells_code": 16, "cells_markdown": 29, - "cells_with_outputs": 13, - "cells_without_outputs": 1, + "cells_with_outputs": 11, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -423,8 +423,8 @@ "cells_total": 49, "cells_code": 15, "cells_markdown": 34, - "cells_with_outputs": 13, - "cells_without_outputs": 1, + "cells_with_outputs": 11, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -438,7 +438,7 @@ "sous_serie": "", "kernel": "Python (GameTheory WSL + OpenSpiel)", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", "last_validation": "2026-05-30", @@ -447,8 +447,8 @@ "cells_total": 30, "cells_code": 12, "cells_markdown": 18, - "cells_with_outputs": 10, - "cells_without_outputs": 1, + "cells_with_outputs": 6, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -496,7 +496,7 @@ "cells_code": 14, "cells_markdown": 23, "cells_with_outputs": 13, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -510,7 +510,7 @@ "sous_serie": "", "kernel": "Python (GameTheory WSL + OpenSpiel)", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", "last_validation": "2026-05-30", @@ -519,8 +519,8 @@ "cells_total": 27, "cells_code": 12, "cells_markdown": 15, - "cells_with_outputs": 10, - "cells_without_outputs": 1, + "cells_with_outputs": 6, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -534,7 +534,7 @@ "sous_serie": "", "kernel": "Python (GameTheory WSL + OpenSpiel)", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2024", "last_validation": "2026-05-30", @@ -543,8 +543,8 @@ "cells_total": 38, "cells_code": 16, "cells_markdown": 22, - "cells_with_outputs": 14, - "cells_without_outputs": 1, + "cells_with_outputs": 5, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -567,7 +567,7 @@ "cells_total": 31, "cells_code": 14, "cells_markdown": 17, - "cells_with_outputs": 11, + "cells_with_outputs": 9, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -582,17 +582,17 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", - "last_validation": "2026-05-30", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1895", + "issue_pr_associee": "#2010", "cells_total": 32, "cells_code": 14, "cells_markdown": 18, - "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_with_outputs": 5, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -1086,7 +1086,7 @@ "sous_serie": "Audio", "kernel": "Python 3", "status": "DEMO", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2025", "last_validation": "2026-05-27", @@ -1096,7 +1096,7 @@ "cells_code": 10, "cells_markdown": 17, "cells_with_outputs": 6, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -1624,7 +1624,7 @@ "cells_code": 8, "cells_markdown": 7, "cells_with_outputs": 2, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -1647,7 +1647,7 @@ "cells_total": 36, "cells_code": 16, "cells_markdown": 20, - "cells_with_outputs": 15, + "cells_with_outputs": 14, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -2334,7 +2334,7 @@ "sous_serie": "SemanticKernel", "kernel": "Python 3", "status": "DEMO", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2025", "last_validation": "2026-05-30", @@ -2344,7 +2344,7 @@ "cells_code": 9, "cells_markdown": 13, "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -2559,8 +2559,8 @@ "cells_total": 23, "cells_code": 11, "cells_markdown": 12, - "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_with_outputs": 7, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -2583,8 +2583,8 @@ "cells_total": 26, "cells_code": 13, "cells_markdown": 13, - "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_with_outputs": 7, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -2607,8 +2607,8 @@ "cells_total": 26, "cells_code": 13, "cells_markdown": 13, - "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_with_outputs": 7, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -2680,7 +2680,7 @@ "cells_code": 7, "cells_markdown": 15, "cells_with_outputs": 2, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -2703,7 +2703,7 @@ "cells_total": 12, "cells_code": 6, "cells_markdown": 6, - "cells_with_outputs": 6, + "cells_with_outputs": 5, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -2823,7 +2823,7 @@ "cells_total": 56, "cells_code": 17, "cells_markdown": 39, - "cells_with_outputs": 16, + "cells_with_outputs": 10, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -2967,7 +2967,7 @@ "cells_total": 58, "cells_code": 17, "cells_markdown": 41, - "cells_with_outputs": 16, + "cells_with_outputs": 15, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -3087,7 +3087,7 @@ "cells_total": 30, "cells_code": 15, "cells_markdown": 15, - "cells_with_outputs": 12, + "cells_with_outputs": 8, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -3135,7 +3135,7 @@ "cells_total": 27, "cells_code": 13, "cells_markdown": 14, - "cells_with_outputs": 13, + "cells_with_outputs": 10, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -3159,7 +3159,7 @@ "cells_total": 30, "cells_code": 12, "cells_markdown": 18, - "cells_with_outputs": 12, + "cells_with_outputs": 9, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -3318,7 +3318,7 @@ "sous_serie": "Video", "kernel": "Python 3", "status": "DEMO", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2025", "last_validation": "2026-05-17", @@ -3328,7 +3328,7 @@ "cells_code": 14, "cells_markdown": 15, "cells_with_outputs": 10, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": true, "requires_cloud": false, @@ -3366,7 +3366,7 @@ "sous_serie": "Video", "kernel": "Python 3", "status": "DEMO", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2025", "last_validation": "2026-05-17", @@ -3376,7 +3376,7 @@ "cells_code": 12, "cells_markdown": 16, "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": true, "requires_cloud": false, @@ -3472,7 +3472,7 @@ "cells_code": 11, "cells_markdown": 13, "cells_with_outputs": 9, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": true, "requires_cloud": false, @@ -3654,7 +3654,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "DEMO", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-04-25", @@ -3664,7 +3664,7 @@ "cells_code": 10, "cells_markdown": 16, "cells_with_outputs": 7, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -3678,7 +3678,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-13", @@ -3688,7 +3688,7 @@ "cells_code": 11, "cells_markdown": 14, "cells_with_outputs": 7, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3702,7 +3702,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-13", @@ -3712,7 +3712,7 @@ "cells_code": 11, "cells_markdown": 13, "cells_with_outputs": 7, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3726,7 +3726,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-13", @@ -3736,7 +3736,7 @@ "cells_code": 11, "cells_markdown": 15, "cells_with_outputs": 4, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3774,7 +3774,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-13", @@ -3784,7 +3784,7 @@ "cells_code": 10, "cells_markdown": 12, "cells_with_outputs": 3, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3798,7 +3798,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-13", @@ -3808,7 +3808,7 @@ "cells_code": 11, "cells_markdown": 14, "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3822,7 +3822,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-17", @@ -3832,7 +3832,7 @@ "cells_code": 10, "cells_markdown": 14, "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3846,7 +3846,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-13", @@ -3856,7 +3856,7 @@ "cells_code": 9, "cells_markdown": 12, "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -3966,7 +3966,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-17", @@ -3975,8 +3975,8 @@ "cells_total": 26, "cells_code": 11, "cells_markdown": 15, - "cells_with_outputs": 9, - "cells_without_outputs": 1, + "cells_with_outputs": 4, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -4014,7 +4014,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "DEMO", - "maturity": "ALPHA", + "maturity": "PRODUCTION", "duree_estimee": "15min", "owner_logique": "po-2023", "last_validation": "2026-05-23", @@ -4024,7 +4024,7 @@ "cells_code": 6, "cells_markdown": 15, "cells_with_outputs": 2, - "cells_without_outputs": 2, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -4038,7 +4038,7 @@ "sous_serie": "DataScienceWithAgents", "kernel": "Python 3", "status": "DEMO", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-05-03", @@ -4047,8 +4047,8 @@ "cells_total": 20, "cells_code": 8, "cells_markdown": 12, - "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_with_outputs": 1, + "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, "requires_cloud": false, @@ -4071,7 +4071,7 @@ "cells_total": 34, "cells_code": 14, "cells_markdown": 20, - "cells_with_outputs": 14, + "cells_with_outputs": 13, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -4143,7 +4143,7 @@ "cells_total": 77, "cells_code": 38, "cells_markdown": 39, - "cells_with_outputs": 11, + "cells_with_outputs": 9, "cells_without_outputs": 26, "requires_api": false, "requires_gpu": false, @@ -4503,7 +4503,7 @@ "cells_total": 31, "cells_code": 11, "cells_markdown": 20, - "cells_with_outputs": 11, + "cells_with_outputs": 10, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -5271,7 +5271,7 @@ "cells_total": 35, "cells_code": 13, "cells_markdown": 22, - "cells_with_outputs": 5, + "cells_with_outputs": 3, "cells_without_outputs": 1, "requires_api": false, "requires_gpu": false, @@ -5343,7 +5343,7 @@ "cells_total": 14, "cells_code": 3, "cells_markdown": 11, - "cells_with_outputs": 3, + "cells_with_outputs": 2, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -6293,18 +6293,18 @@ "serie": "QuantConnect", "sous_serie": "projects", "kernel": "Python 3", - "status": "BROKEN", + "status": "DEMO", "maturity": "DRAFT", "duree_estimee": "15min", "owner_logique": "po-2026", - "last_validation": "2026-05-12", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#984", + "issue_pr_associee": "#1916, #1982", "cells_total": 1, "cells_code": 1, "cells_markdown": 0, - "cells_with_outputs": 1, - "cells_without_outputs": 0, + "cells_with_outputs": 0, + "cells_without_outputs": 1, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6486,7 +6486,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "PRODUCTION", + "maturity": "ALPHA", "duree_estimee": "30min", "owner_logique": "po-2026", "last_validation": "2026-05-28", @@ -6496,7 +6496,7 @@ "cells_code": 7, "cells_markdown": 19, "cells_with_outputs": 0, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6510,7 +6510,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "PRODUCTION", + "maturity": "ALPHA", "duree_estimee": "30min", "owner_logique": "po-2026", "last_validation": "2026-05-29", @@ -6520,7 +6520,7 @@ "cells_code": 5, "cells_markdown": 29, "cells_with_outputs": 0, - "cells_without_outputs": 5, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6534,7 +6534,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "PRODUCTION", + "maturity": "ALPHA", "duree_estimee": "45min", "owner_logique": "po-2026", "last_validation": "2026-05-29", @@ -6544,7 +6544,7 @@ "cells_code": 10, "cells_markdown": 41, "cells_with_outputs": 0, - "cells_without_outputs": 10, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6558,7 +6558,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "BROKEN", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "1h", "owner_logique": "po-2026", "last_validation": "2026-05-29", @@ -6568,7 +6568,7 @@ "cells_code": 25, "cells_markdown": 41, "cells_with_outputs": 24, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6582,7 +6582,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "PRODUCTION", + "maturity": "ALPHA", "duree_estimee": "45min", "owner_logique": "po-2026", "last_validation": "2026-05-28", @@ -6592,7 +6592,7 @@ "cells_code": 11, "cells_markdown": 41, "cells_with_outputs": 0, - "cells_without_outputs": 10, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6606,7 +6606,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "PRODUCTION", + "maturity": "ALPHA", "duree_estimee": "45min", "owner_logique": "po-2026", "last_validation": "2026-05-28", @@ -6616,7 +6616,7 @@ "cells_code": 10, "cells_markdown": 41, "cells_with_outputs": 0, - "cells_without_outputs": 9, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6630,7 +6630,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "ALPHA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2026", "last_validation": "2026-05-28", @@ -6640,7 +6640,7 @@ "cells_code": 15, "cells_markdown": 54, "cells_with_outputs": 4, - "cells_without_outputs": 11, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6678,7 +6678,7 @@ "sous_serie": "Python", "kernel": "Python 3", "status": "DEMO", - "maturity": "PRODUCTION", + "maturity": "ALPHA", "duree_estimee": "45min", "owner_logique": "po-2026", "last_validation": "2026-05-28", @@ -6688,7 +6688,7 @@ "cells_code": 17, "cells_markdown": 41, "cells_with_outputs": 0, - "cells_without_outputs": 17, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -6759,8 +6759,8 @@ "cells_total": 78, "cells_code": 31, "cells_markdown": 47, - "cells_with_outputs": 23, - "cells_without_outputs": 8, + "cells_with_outputs": 22, + "cells_without_outputs": 5, "requires_api": false, "requires_gpu": false, "requires_cloud": true, @@ -7023,7 +7023,7 @@ "cells_total": 39, "cells_code": 14, "cells_markdown": 25, - "cells_with_outputs": 14, + "cells_with_outputs": 12, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": true, @@ -7719,7 +7719,7 @@ "cells_total": 37, "cells_code": 17, "cells_markdown": 20, - "cells_with_outputs": 13, + "cells_with_outputs": 11, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -7767,7 +7767,7 @@ "cells_total": 29, "cells_code": 12, "cells_markdown": 17, - "cells_with_outputs": 8, + "cells_with_outputs": 7, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -7791,7 +7791,7 @@ "cells_total": 37, "cells_code": 17, "cells_markdown": 20, - "cells_with_outputs": 16, + "cells_with_outputs": 13, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -7815,7 +7815,7 @@ "cells_total": 17, "cells_code": 7, "cells_markdown": 10, - "cells_with_outputs": 6, + "cells_with_outputs": 4, "cells_without_outputs": 1, "requires_api": false, "requires_gpu": false, @@ -7839,7 +7839,7 @@ "cells_total": 28, "cells_code": 10, "cells_markdown": 18, - "cells_with_outputs": 10, + "cells_with_outputs": 9, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -7935,7 +7935,7 @@ "cells_total": 23, "cells_code": 10, "cells_markdown": 13, - "cells_with_outputs": 8, + "cells_with_outputs": 6, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8103,7 +8103,7 @@ "cells_total": 47, "cells_code": 19, "cells_markdown": 28, - "cells_with_outputs": 19, + "cells_with_outputs": 15, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8190,7 +8190,7 @@ "sous_serie": "Applications", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2025", "last_validation": "2026-05-13", @@ -8199,8 +8199,8 @@ "cells_total": 34, "cells_code": 12, "cells_markdown": 22, - "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_with_outputs": 3, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -8334,7 +8334,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2025", "last_validation": "2026-06-01", @@ -8344,7 +8344,7 @@ "cells_code": 18, "cells_markdown": 21, "cells_with_outputs": 5, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -8415,7 +8415,7 @@ "cells_total": 49, "cells_code": 18, "cells_markdown": 31, - "cells_with_outputs": 16, + "cells_with_outputs": 13, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8487,7 +8487,7 @@ "cells_total": 67, "cells_code": 29, "cells_markdown": 38, - "cells_with_outputs": 20, + "cells_with_outputs": 15, "cells_without_outputs": 1, "requires_api": false, "requires_gpu": false, @@ -8511,7 +8511,7 @@ "cells_total": 61, "cells_code": 21, "cells_markdown": 40, - "cells_with_outputs": 20, + "cells_with_outputs": 19, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8574,7 +8574,7 @@ "sous_serie": "Part1-Foundations", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2025", "last_validation": "2026-05-31", @@ -8584,7 +8584,7 @@ "cells_code": 14, "cells_markdown": 24, "cells_with_outputs": 7, - "cells_without_outputs": 1, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -8727,7 +8727,7 @@ "cells_total": 66, "cells_code": 23, "cells_markdown": 43, - "cells_with_outputs": 20, + "cells_with_outputs": 19, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8751,7 +8751,7 @@ "cells_total": 40, "cells_code": 19, "cells_markdown": 21, - "cells_with_outputs": 15, + "cells_with_outputs": 12, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8775,7 +8775,7 @@ "cells_total": 53, "cells_code": 20, "cells_markdown": 33, - "cells_with_outputs": 16, + "cells_with_outputs": 15, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -8847,7 +8847,7 @@ "cells_total": 42, "cells_code": 17, "cells_markdown": 25, - "cells_with_outputs": 13, + "cells_with_outputs": 12, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -8920,7 +8920,7 @@ "cells_code": 11, "cells_markdown": 15, "cells_with_outputs": 5, - "cells_without_outputs": 3, + "cells_without_outputs": 1, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -8958,17 +8958,17 @@ "sous_serie": "", "kernel": ".NET (C#)", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", - "last_validation": "2026-05-17", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1205, #1221", + "issue_pr_associee": "#2018", "cells_total": 13, "cells_code": 5, "cells_markdown": 8, - "cells_with_outputs": 3, - "cells_without_outputs": 1, + "cells_with_outputs": 4, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -8982,7 +8982,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", "last_validation": "2026-06-01", @@ -8991,8 +8991,8 @@ "cells_total": 28, "cells_code": 11, "cells_markdown": 17, - "cells_with_outputs": 10, - "cells_without_outputs": 1, + "cells_with_outputs": 8, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -9039,7 +9039,7 @@ "cells_total": 18, "cells_code": 8, "cells_markdown": 10, - "cells_with_outputs": 8, + "cells_with_outputs": 7, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9054,17 +9054,17 @@ "sous_serie": "", "kernel": ".NET (C#)", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2023", - "last_validation": "2026-05-30", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1893", + "issue_pr_associee": "#2018", "cells_total": 23, "cells_code": 9, "cells_markdown": 14, - "cells_with_outputs": 8, - "cells_without_outputs": 1, + "cells_with_outputs": 9, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -9177,14 +9177,14 @@ "maturity": "BETA", "duree_estimee": "45min", "owner_logique": "po-2023", - "last_validation": "2026-05-23", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1488", + "issue_pr_associee": "#2018", "cells_total": 33, "cells_code": 12, "cells_markdown": 21, - "cells_with_outputs": 11, - "cells_without_outputs": 1, + "cells_with_outputs": 12, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -9279,7 +9279,7 @@ "cells_total": 32, "cells_code": 13, "cells_markdown": 19, - "cells_with_outputs": 13, + "cells_with_outputs": 12, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -9294,7 +9294,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2023", "last_validation": "2026-06-01", @@ -9303,8 +9303,8 @@ "cells_total": 60, "cells_code": 21, "cells_markdown": 39, - "cells_with_outputs": 17, - "cells_without_outputs": 1, + "cells_with_outputs": 14, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -9351,7 +9351,7 @@ "cells_total": 27, "cells_code": 9, "cells_markdown": 18, - "cells_with_outputs": 9, + "cells_with_outputs": 8, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9399,7 +9399,7 @@ "cells_total": 26, "cells_code": 9, "cells_markdown": 17, - "cells_with_outputs": 8, + "cells_with_outputs": 7, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9447,7 +9447,7 @@ "cells_total": 35, "cells_code": 15, "cells_markdown": 20, - "cells_with_outputs": 15, + "cells_with_outputs": 14, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9495,7 +9495,7 @@ "cells_total": 39, "cells_code": 12, "cells_markdown": 27, - "cells_with_outputs": 11, + "cells_with_outputs": 10, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9591,7 +9591,7 @@ "cells_total": 26, "cells_code": 10, "cells_markdown": 16, - "cells_with_outputs": 7, + "cells_with_outputs": 6, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9630,7 +9630,7 @@ "sous_serie": "", "kernel": "Python 3", "status": "READY", - "maturity": "BETA", + "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2023", "last_validation": "2026-05-30", @@ -9639,8 +9639,8 @@ "cells_total": 43, "cells_code": 19, "cells_markdown": 24, - "cells_with_outputs": 13, - "cells_without_outputs": 1, + "cells_with_outputs": 12, + "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, "requires_cloud": false, @@ -9687,7 +9687,7 @@ "cells_total": 23, "cells_code": 8, "cells_markdown": 15, - "cells_with_outputs": 8, + "cells_with_outputs": 7, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9705,13 +9705,13 @@ "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", - "last_validation": "2026-05-31", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "", + "issue_pr_associee": "#1947, #2020", "cells_total": 27, "cells_code": 10, "cells_markdown": 17, - "cells_with_outputs": 10, + "cells_with_outputs": 8, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -9729,9 +9729,9 @@ "maturity": "PRODUCTION", "duree_estimee": "15min", "owner_logique": "po-2024", - "last_validation": "2026-05-31", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1947", + "issue_pr_associee": "#1947, #2020", "cells_total": 13, "cells_code": 4, "cells_markdown": 9, @@ -9753,13 +9753,13 @@ "maturity": "PRODUCTION", "duree_estimee": "15min", "owner_logique": "po-2024", - "last_validation": "2026-05-31", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1947", + "issue_pr_associee": "#1947, #2020", "cells_total": 17, "cells_code": 4, "cells_markdown": 13, - "cells_with_outputs": 3, + "cells_with_outputs": 2, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -9777,9 +9777,9 @@ "maturity": "PRODUCTION", "duree_estimee": "15min", "owner_logique": "po-2024", - "last_validation": "2026-05-31", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1947", + "issue_pr_associee": "#1947, #2020", "cells_total": 19, "cells_code": 3, "cells_markdown": 16, @@ -9879,7 +9879,7 @@ "cells_total": 73, "cells_code": 26, "cells_markdown": 47, - "cells_with_outputs": 24, + "cells_with_outputs": 23, "cells_without_outputs": 0, "requires_api": true, "requires_gpu": false, @@ -10377,9 +10377,9 @@ "maturity": "PRODUCTION", "duree_estimee": "45min", "owner_logique": "po-2024", - "last_validation": "2026-05-31", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1947", + "issue_pr_associee": "#1947, #2020", "cells_total": 50, "cells_code": 19, "cells_markdown": 31, @@ -10503,7 +10503,7 @@ "cells_total": 44, "cells_code": 15, "cells_markdown": 29, - "cells_with_outputs": 12, + "cells_with_outputs": 11, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -10527,7 +10527,7 @@ "cells_total": 48, "cells_code": 12, "cells_markdown": 36, - "cells_with_outputs": 9, + "cells_with_outputs": 6, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -10575,7 +10575,7 @@ "cells_total": 57, "cells_code": 17, "cells_markdown": 40, - "cells_with_outputs": 13, + "cells_with_outputs": 12, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -11751,7 +11751,7 @@ "cells_total": 31, "cells_code": 13, "cells_markdown": 18, - "cells_with_outputs": 13, + "cells_with_outputs": 12, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -11963,7 +11963,7 @@ "owner_logique": "po-2024", "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1946", + "issue_pr_associee": "#1946, #1979", "cells_total": 59, "cells_code": 19, "cells_markdown": 40, @@ -11985,9 +11985,9 @@ "maturity": "PRODUCTION", "duree_estimee": "30min", "owner_logique": "po-2024", - "last_validation": "2026-05-31", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1947", + "issue_pr_associee": "#1946", "cells_total": 23, "cells_code": 8, "cells_markdown": 15, @@ -12015,7 +12015,7 @@ "cells_total": 33, "cells_code": 10, "cells_markdown": 23, - "cells_with_outputs": 9, + "cells_with_outputs": 8, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, @@ -12059,7 +12059,7 @@ "owner_logique": "po-2024", "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1946", + "issue_pr_associee": "#1946, #2012", "cells_total": 21, "cells_code": 6, "cells_markdown": 15, @@ -12081,13 +12081,13 @@ "maturity": "PRODUCTION", "duree_estimee": "15min", "owner_logique": "po-2024", - "last_validation": "2026-05-29", + "last_validation": "2026-06-01", "last_validator": "jsboige@gmail.com", - "issue_pr_associee": "#1769", + "issue_pr_associee": "#1946", "cells_total": 21, "cells_code": 7, "cells_markdown": 14, - "cells_with_outputs": 5, + "cells_with_outputs": 6, "cells_without_outputs": 0, "requires_api": false, "requires_gpu": false, diff --git a/MyIA.AI.Notebooks/GameTheory/README.md b/MyIA.AI.Notebooks/GameTheory/README.md index a5fab235e..85711a2be 100644 --- a/MyIA.AI.Notebooks/GameTheory/README.md +++ b/MyIA.AI.Notebooks/GameTheory/README.md @@ -4,7 +4,7 @@ series: GameTheory pedagogical_count: 25 breakdown: root=21, SocialChoice=4 -maturity: PRODUCTION=14, BETA=9, ALPHA=2 +maturity: PRODUCTION=22, ALPHA=2, BETA=1 --> La théorie des jeux est le langage mathématique de la stratégie. Elle modélise les situations où des agents rationnels prennent des décisions dont le résultat dépend des choix des autres : enchères, négociations commerciales, élections, poker, guerre commerciale, allocation de ressources. Cette dualité entre coopération et compétition est omniprésente en économie, en sciences politiques et en informatique (mécanismes de vote, smart contracts, réseaux). Le prix Nobel d'économie a été décerné à des théoriciens des jeux à sept reprises entre 1994 et 2020 — c'est un domaine vivant et influent. diff --git a/MyIA.AI.Notebooks/GenAI/README.md b/MyIA.AI.Notebooks/GenAI/README.md index 4df75f1d4..2159a546b 100644 --- a/MyIA.AI.Notebooks/GenAI/README.md +++ b/MyIA.AI.Notebooks/GenAI/README.md @@ -4,7 +4,7 @@ series: GenAI pedagogical_count: 120 breakdown: Audio=30, SemanticKernel=20, Image=16, Video=16, Texte=11, 00-GenAI-Environment=6, PostTraining=6, FineTuning=5, Vibe-Coding=5, CaseStudies=4, root=1 -maturity: PRODUCTION=75, BETA=35, ALPHA=4, DRAFT=3, TEMPLATE=3 +maturity: PRODUCTION=79, BETA=31, ALPHA=4, DRAFT=3, TEMPLATE=3 --> Ce parcours vous forme a la maitrise de l'IA generative dans toute sa diversite : generer des images, synthetiser la voix, composer de la musique, produire des videos, orchestrer des agents autonomes, et deployer des applications en production. Chaque modalite suit une progression en quatre niveaux, du premier pas avec une API jusqu'aux pipelines multi-modeles de production. diff --git a/MyIA.AI.Notebooks/ML/README.md b/MyIA.AI.Notebooks/ML/README.md index 16fc21ab4..82eaa439b 100644 --- a/MyIA.AI.Notebooks/ML/README.md +++ b/MyIA.AI.Notebooks/ML/README.md @@ -4,7 +4,7 @@ series: ML pedagogical_count: 27 breakdown: DataScienceWithAgents=19, ML.Net=8 -maturity: PRODUCTION=14, BETA=11, ALPHA=2 +maturity: PRODUCTION=25, ALPHA=1, BETA=1 --> Vous êtes développeur ou analyste et vous voulez construire des modèles prédictifs sans devenir data scientist théoricien ? Cette série vous forme au Machine Learning pratique avec deux stack complémentaires : **ML.NET** pour l'écosystème .NET/C# (8 notebooks, ~6h) et **Python Data Science with Agents** pour les pipelines modernes enrichis de LLMs (19 notebooks, ~17h). À la fin, vous saurez charger des données, entraîner un modèle, l'évaluer rigoureusement, et le déployer en production. diff --git a/MyIA.AI.Notebooks/QuantConnect/README.md b/MyIA.AI.Notebooks/QuantConnect/README.md index 412ee6e43..98d640366 100644 --- a/MyIA.AI.Notebooks/QuantConnect/README.md +++ b/MyIA.AI.Notebooks/QuantConnect/README.md @@ -4,7 +4,7 @@ series: QuantConnect pedagogical_count: 101 breakdown: Python=51, projects=48, ML-Training-Pipeline=2 -maturity: PRODUCTION=68, ALPHA=22, BETA=9, DRAFT=1, TEMPLATE=1 +maturity: PRODUCTION=64, ALPHA=27, BETA=8, DRAFT=1, TEMPLATE=1 --> Le trading algorithmique transforme les marchés financiers : aujourd'hui, plus de 60% des volumes aux États-Unis sont générés par des algorithmes. Cette série vous apprend à construire, tester et déployer vos propres stratégies de trading automatisées sur la plateforme **QuantConnect LEAN** — un framework open-source utilisé par des milliers de quants professionnels. Le parcours va des fondements (lifecycle d'un algorithme, gestion des données) aux frontières de l'IA (Transformers, RL, LLMs pour signaux de trading). diff --git a/MyIA.AI.Notebooks/README.md b/MyIA.AI.Notebooks/README.md index df568b2f5..d9ffada84 100644 --- a/MyIA.AI.Notebooks/README.md +++ b/MyIA.AI.Notebooks/README.md @@ -10,7 +10,7 @@ Le catalogue rassemble près de 500 notebooks répartis sur les onze domaines ci series: ALL total: 504 breakdown: GenAI=120, QuantConnect=101, SymbolicAI=100, Search=45, Probas=43, Sudoku=32, ML=27, GameTheory=25, RL=6, CaseStudies=4, IIT=1 -maturity: PRODUCTION=365, BETA=99, ALPHA=31, DRAFT=5, TEMPLATE=4 +maturity: PRODUCTION=392, BETA=68, ALPHA=35, DRAFT=5, TEMPLATE=4 --> Dernière mise à jour : 2026-05-28 diff --git a/MyIA.AI.Notebooks/Search/README.md b/MyIA.AI.Notebooks/Search/README.md index f09b83354..9e86b4ed9 100644 --- a/MyIA.AI.Notebooks/Search/README.md +++ b/MyIA.AI.Notebooks/Search/README.md @@ -4,7 +4,7 @@ series: Search pedagogical_count: 45 breakdown: Applications=20, Part1-Foundations=11, Part2-CSP=9, root=5 -maturity: PRODUCTION=39, BETA=5, DRAFT=1 +maturity: PRODUCTION=42, BETA=2, DRAFT=1 --> Tout problème d'IA, du plus simple jeu de plateau à la planification logistique industrielle, se réduit à un même défi : explorer un espace de solutions possibles pour trouver la meilleure. Cette série vous apprend à maîtriser cette exploration, depuis les algorithmes classiques (BFS, A*, Minimax) jusqu'aux techniques avancées (CSP, métaheuristiques, hybridation LLM). Le fil rouge est la **réduction de l'espace de recherche** : comment passer d'une exploration aveugle exponentielle à une résolution intelligemment guidée. diff --git a/MyIA.AI.Notebooks/Sudoku/README.md b/MyIA.AI.Notebooks/Sudoku/README.md index bc0a49ba2..6339fa231 100644 --- a/MyIA.AI.Notebooks/Sudoku/README.md +++ b/MyIA.AI.Notebooks/Sudoku/README.md @@ -4,7 +4,7 @@ series: Sudoku pedagogical_count: 32 breakdown: root=32 -maturity: PRODUCTION=22, BETA=10 +maturity: PRODUCTION=27, BETA=5 --> Cette serie de **32 notebooks** (16 C#, 16 Python) explore differentes techniques de resolution de Sudoku, des algorithmes classiques aux approches symboliques, probabilistes et neuronales. Les notebooks sont disponibles en **approche miroir C#/Python** pour permettre aux etudiants de choisir leur langage.