Releases: laowantong/mocodo
fix #110
Full Changelog: 4.2...4.2.3
Support sous Basthon
- Mocodo est maintenant disponible sous Basthon, un environnement Jupyter Notebook utilisable sans installation. Basthon ne prend pas encore en charge les commandes magiques (
%%mocodo
), mais Mocodo ajoute une fonctionmocodo()
permettant de les simuler :
from mocodo.magic import mocodo
mocodo("--colors ocean", """
Client: Réf. client [VARCHAR(8)], Nom [VARCHAR(255)], Prénom [VARCHAR(255)], Adresse [VARCHAR(255)]
Passer, 0N Client, 11 Commande
Commande: Num. commande [VARCHAR(8)], Date [DATE], Montant [DECIMAL(10,2)]
Inclure, 1N Commande, 0N Produit: Quantité [INTEGER]
Produit: Réf. produit [VARCHAR(8)], Libellé [VARCHAR(50)], Prix unitaire [DECIMAL(10,2)]
""")
- Si vous utilisez Mocodo dans un autre programme, un wrapper est maintenant offert qui évite de passer par
subprocess
ou autre :
from mocodo import mocodo
- Ajout de modifications oubliées lors de la dernière release (amélioration de la sortie LaTeX).
What's Changed
- Support integration in Basthon by @laowantong in #108
Full Changelog: 4.1.2...4.2
Correction d'erreurs en sortie
- Les boîtes invisibles sont ignorées lors du calcul de l'inflexion des pattes et la détection des chevauchements.
- #106 : Correction de la sortie LaTeX pour certaines sous-options ou toutes :
- déduplication du croisillon des clés étrangères ;
- résolution d'une erreur de compilation due à un croisillon non échappé ;
- correction des définitions de commandes utilisant
\textsc
et\textsl
(le\t
était interprété comme une tabulation).
- Sous Mocodo online, la sortie LaTeX inclut le boilerplate et produit donc un document complet prêt à l'emploi.
- Il est possible d'ajouter un commentaire à une clé de gabarit destinée à effacer le dictionnaire correspondant lors de la dérivation.
- Mots réservés dans les sorties SQL :
- liste des mots réservés mise à jour pour tous les dialectes ;
- les noms de colonnes ne sont plus suivis de deux espaces ;
- la protection des mots réservés se fait après traitement du rôle, ce qui évite des choses bizarres comme
"date"_inscription
;
- #107 : Génération d'un code SQLite respectant les spécificités du dialecte (définition des clés étrangères dans la table elle-même et rejet de la déclaration de la primarité d'une clé après celle du ou des attributs concernés).
- #105 : La ou les dernières associations des MCD obtenus par croissance stochastique devraient être correctement nommées dans tous les cas.
- Menues corrections et précisions dans la doc.
- Correction d'un bug de mocodo.js qui empêchait la récupération d'un MCD d'une bibliothèque utilisateur.
Merci à @fduchatea pour les signalements.
Full Changelog: 4.1.1...4.1.2
Prise en charge des identifiants supplémentaires dans les associations
Full Changelog: 4.1.0...4.1.1
Prise en charge des bibliothèques de MCD
Si vous avez un serveur personnel, vous pouvez maintenant fournir à Mocodo l'URL d'un répertoire distant contenant des MCD.
- En ligne de commande, lorsque Mocodo ne trouve pas le fichier d'entrée (
--input
), il va le chercher dans ce répertoire. - Sous Mocodo online, copier-coller le nom du fichier dans le champ de titre remplace le texte-source par son contenu.
Cette fonctionnalité est particulièrement adaptée à la communication du corrigé d'un exercice de modélisation : il suffit de donner aux étudiants le nom du fichier correspondant.
Documentation : https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html#Bibliothèque-de-MCD-en-ligne
PR: add remote library support by @laowantong in #103
Full Changelog: 4.0.14...4.1.0
4.0.14
Full Changelog: 4.0.13...4.0.14
- L'ajout de flèches à la demande se fait seulement sur les cardinalités 1,1 (et non plus 0,1 et 1,1).
- Amélioration de certains messages.
- L'inférence des entités PÉRIODE devient un cas particulier : l'identifiant généré est dorénavant début, fin au lieu de id. période.
- Explicitation de l'encodage UTF-8 des fichiers de ressources, évitant un plantage sous Windows lorsque la langue par défaut est anglais et que l'encodage par défaut n'est pas UTF-8 (#102).
- Toutes les opérations de lecture et d'écriture de fichier utilisent désormais la bibliothèque
pathlib
. - Ajout de quelques nouvelles inférences de types.
4.0.13
Full Changelog: 4.0.11...4.0.13
- Paramétrage de la visualisation des cardinalités « renforçantes » pour les entités faibles sous Mocodo online (#97).
- Correction d'un crash au lancement en l'absence de la bibliothèque
requests
(#98). - Paramétrage de la visualisation des clés étrangères dans le diagramme relationnel (#99).
- Meilleure gestion du double-clic sous Mocodo online.
4.0.11
- Aide-mémoire : séparation des opérations de conversion et de réécriture en deux tableaux. Les alias ne sont plus accessibles qu'au survol.
- Correction de #95 : l'inférence de rôle ne fonctionnait pas pour les associations comportant une cardinalité 01 et une 11.
- Correction de #96 : décomposition des associations n-aires comportant plus d'une cardinalité maximale 1.
- Ajout d'une conversion au format D2.
- L'explication de la suppression des tables est augmentée d'une instruction pour modifier ce comportement en « protégeant » l'entité avec le préfixe
+
. - Ajout d'une localisation en chinois pour les messages d'aide des transformations.
- Correction d'un plantage si la langue du système n'est ni le français, ni l'anglais.
- Améliorations cosmétiques sur Mocodo online.
- Correction d'une régression : Mocodo online ne restituait pas un MCD partagé par URL.
- Explication de la politique de confidentialité dans le panneau d'info de Mocodo online.
- Amélioration d'un message d'erreur à l'intention des débutants qui essaient de mettre des clés étrangères au niveau conceptuel.
- Augmentation de
lorem.txt
avec environ 6000 mots latins. - Sous Mocodo online, les entraînements au passage au relationnel utilisent des mots anglais de 4 lettres (plus courts à transcrire).
Full Changelog: 4.0.8...4.0.11
4.0.8
- Les suffixes d'attribut "?" et "!" ne sont plus interprétés comme contraintes d'optionalité dans le texte-source (ils continuent à apparaître à la demande dans les sorties). Il faut préciser
NULL
ouNOT NULL
pour le même résultat (#91). - Mocodo peut se lancer sans la bibliothèque
urllib3
. - Mocodo online devrait maintenant marcher correctement sous Firefox.
- La conversion en LaTeX est rétablie dans Mocodo online.
- Les notes de pattes (y compris les rôles) sont maintenant affichées au survol même si elles ne comportent aucun espace (comme avant la version 4.0).
- Les erreurs lors de l'analyse syntaxique sont maintenant correctement localisées en français.
- La visualisation des associations « protégées » est améliorée.
- Les sessions de travail sont effacées automatiquement au bout de 24 heures.
- Le symbole d'information (i) s'affiche correctement sur mobile.
- Les types sont alignés dans les sorties SQL et DBML.
- Lors de l'inférence d'entités, les identifiants des entités DATE font exception à la règle, et sont simplement « date ».
- Les noms des boîtes ne sont plus sensibles à la casse et à l'accentuation (#92).
- Les noms des entités comportant des accents sont correctement triés dans les MLD, DDL, etc. (#92).
- Divers changements cosmétiques et corrections dans Mocodo online.
Full Changelog: 4.0.4...4.0.8
Transformations
Full Changelog: 3.2.1...4.0.4
Parser séparé / nouvelle API / réécritures et conversions
L'analyse syntaxique du texte-source décrivant un MCD est désormais complètement séparée de son traitement (#77). Une conséquence immédiate est l'introduction de la coloration syntaxique dans Mocodo online, ainsi que la création du plugin Mocodo syntax highlighter pour VS-Code. Ce travail a également permis d'améliorer certaines fonctionnalités et de faciliter la création de nouvelles.
Transformations
Réécritures
Mocodo 4.0 introduit en particulier la notion de réécriture du texte-source. Elle regroupe toutes les opérations qui transforment un MCD syntaxiquement correct en un autre MCD. Par exemple :
- la mise en miroir, le réarrangement et l'obfuscation d'un MCD, qui existaient déjà ;
- l'effacement des attributs ou des cardinalités pour créer des « exercices à trous » ;
- la rectification des cardinalités mal formées (qui se fait maintenant à la demande) ;
- l'homogénéisation de la mise en forme (capitalisation, séparateurs, diacritiques, ...) ;
- la décomposition d'un MCD donné pour n'employer que des DF sans attributs ;
- la génération de MCD aléatoires, soit from scratch, soit par croissance stochastique sur un MCD existant.
Dans les versions précédentes, les quelques opérations de réécriture existantes étaient toutes terminales. Elles peuvent désormais être enchaînées en pipeline. Par exemple, vous pouvez décomposer les associations n-aires, convertir les libellés des attributs en minuscules et calculer un nouveau plongement d'un seul coup, sans avoir besoin de copier-coller le résultat d'une réécriture pour le fournir à la suivante.
Conversions
Mocodo désigne sous ce nom les transformations d'un MCD qui produisent autre chose qu'un MCD : un dictionnaire des données, un schéma relationnel, un DDL en SQL, une URL, etc. Une même commande peut inclure plusieurs conversions. Si elle comporte également des réécritures, celles-ci sont exécutées en pré-traitement, et les conversions s'appliquent au dernier état du texte-source réécrit. Un post-traitement est possible pour les formats de conversion que Mocodo ne sait pas visualiser directement (par exemple, le QR Code correspondant une URL) : leur rendu peut alors être automatiquement délégué (--defer
) au service tiers approprié.
Nouveautés de Mocodo online
- Un véritable éditeur de texte (ACE) : curseurs multiples, annulations, etc.
- Coloration syntaxique.
- Six boutons couvrant plus de trente opérations de réécriture.
- Possibilité d'ouvrir un MCD codé dans l'URL.
- Possibilité d'adapter les fonctionnalités au niveau de connaissances et aux besoins de l'utilisateur.
- Tutoriel plus complet, en deux parties : élémentaire, plus avancé.
- Suppression de l'outil de mesure d'audience (Google Analytics).
- Remplacement des icônes Font Awesome par des créations maison.
- Améliorations cosmétiques.
- Mode nuit.
Nouveautés de la commande magique Jupyter Notebook
- Visualisation directe du diagramme relationnel.
- Visualisation des sorties graphiques dans certains formats tiers (Graphviz, Mermaid, PlantUML).
- Affichage du nom des fichiers de sortie.
- L'appel de la commande magique peut être suivi d'un commentaire à la Python (
#
). - L'option
-T
permet de remplacer le contenu d'une cellule par le résultat d'une réécriture et/ou de copier dans le presse-papiers le résultat d'une conversion (remplace et étend l'ancienne option--replace
). - L'option
--select
permet de passer outre la sélection par défaut des différentes sorties à afficher (diagramme conceptuel, texte-source réécrit, conversions).
Nouveautés de la commande mocodo
Syntaxe
- Triage automatique des notes de pattes en rôles ou en messages à afficher au survol en fonction de la présence d'espaces. Possibilité de forcer l'interprétation en tant que rôle.
- Si un nom de boîte se termine par un tiret (auparavant, seulement un chiffre), celui-ci n'apparaît pas dans la sortie graphique.
- Possibilité d'avoir plusieurs DF sans devoir les suffixer par un numéro.
- Positionnement d'une contrainte par alignement avec des boîtes (#80).
- Possibilité d'utiliser n'importe quels caractères dans le nom d'une contrainte.
- Possibilité de créer explicitement des boîtes invisibles en préfixant leur nom par un
-
. À la différence des fantômes (:
), Mocodo ne peut pas les détruire lors du réarrangement. De plus, elles peuvent être référencées dans des associations ou des contraintes, ce qui permet de les utiliser pour fixer une position relative. - Messages d'erreurs de syntaxe beaucoup plus précis.
Réécritures
- Nombreuses opérations de réécriture paramétrables.
- Inférence des types de données SQL à partir des noms d'attributs ; des clauses de définition d'entités à partir des clauses de définition d'associations ; des CIFs à partir des agrégats; des DFs.
- Génération de MCD aléatoires par croissance stochastique autour d'un MCD originel (éventuellement vide).
- Révision et augmentation de la base de faux textes : mots français de 4 lettres, mots français de 5 lettres.
- L'obfuscation d'un MCD peut maintenant porter sur certains éléments seulement.
- Transposition automatique des MCD réarrangés plus hauts que larges.
- Ajout du réarrangement des MCD sur des grilles sensiblement plus larges que hautes. Adapté aux graphes-chemins et aux exemples destinés à un document paginé.
Conversions
- Conversions en crow's foot, dans la notation de Chen, en diagramme de classes UML, en arbre syntaxique abstrait, en URL encodant le MCD.
- Visualisation et traitement des clés candidates (#79).
- Génération des contraintes d'unicité (
UNIQUE
) et d'optionnalité (NULL
etNOT NUL
) aux niveaux relationnel et physique. Visualisation sur demande au niveau relationnel. - Ajout de trois options indépendantes :
c
(avec contraintes),e
(avec explications) etb
(avec boilerplate de document standalone) pour tous les gabarits produisant des schémas relationnels textuels (html
,markdown
,latex
ettext
). - Nouveaux gabarits : DBML, Microsoft SQL Server, debug.
- Nombreux aliases pour les gabarits.
- Paramétrage fin de l'extraction du dictionnaire des données.
Autres
- Plugin VS-Code pour la coloration syntaxique.
- Réécriture complète de la documentation.
Corrections
- Les positions des contraintes sont recalculées lors de l'inversion d'un MCD.
- Les clés étrangères dans l'identification relative perdent leur caractère étranger lorsque l'entité d'origine ne donne pas lieu à une création de table (#86).
- Le graphe des dépendances prend en charge les associations n-aires (#89).
- Les DF qui ne sont pas des dépendances fonctionnelles lèvent une erreur.
- Les attributs vides sont correctement ignorés lors du passage au relationnel.
- Les agrégats multiples ne sont plus gérés par réduction de clé, mais par création de contraintes d'unicité (#88).
- Remplacement de
VARCHAR
parVARCHAR2
dans la sortie Oracle. --scale
est maintenant compatible avec--input
(#61).- Suppression des accents dans le nom des archives (#58).
- Possibilité de passer des espaces dans la commande magique (#81).
- L'obfuscation fonctionne en présence de tout type d'élément (#78).
- Interdiction des agrégats sur les associations binaires et, de manière équivalente, de la configuration [E1] -- *N -- (DF) -- _11 -- [E2] lorsque l'entité faible E2 n'a pas de discriminateur.
Principaux changements internes
- Parser dédié (Lark) et grammaire LALR (#77).
- Réécriture des gabarits de passage au relationnel dans un sous-ensemble sain de YAML (et non plus en JSON).
- Minimisation des duplications de code dans les gabarits par recours systématique à la dérivation des gabarits ancêtres. Ainsi, les gabarits HTML sont l'unique source de vérité pour les autres gabarits textuels, et tous les gabarits des dialectes de SQL dérivent du gabarit SQL (ANSI).
- Ajout d'une option de transformation, dont les sous-options couvrent aussi bien les opérations de conversion (comme celles définies par les gabarits, et de façon générale toutes celles qui convertissent un MCD dans un autre format) que les opérations de réécriture d'un MCD en un autre (comme le réarrangement des clauses, la normalisation de la casse, la décomposition des associations, etc.).
- La conversion en dictionnaire des données n'est plus spécifiée par un gabarit.
- Remplacement de
snapshot.md
par un grand zoo de MCD avec toutes leurs transformations et réécritures, de façon à mieux prévenir les régressions. - L'initialisation du germe du générateur aléatoire est faite en un seul endroit.
Changements non rétro-compatibles
- Permutation de la sémantique des rôles dans les associations réflexives.
- Conversion forcée d'une association en table dénotée par un préfixe
+
et non plus par des crochets autour du nom de l'association. - Réécriture complète de l'API en ligne de commande.
- Renommage de
four_letter_words.txt
enen4.txt
. - Options
--pdf
et--png
remplacées par des sous-optionspdf
etpng
d'une nouvelle option--svg_to
. - Désactivation de l'embellissement des pattes d'un héritage :
-->
et==>
au lieu de->>
et=>>
.
Fonctionnalités retirées
- Options
--disambiguation
et--hide_notes
rendues obsolètes par une meilleure gestion des notes de pattes. La désambiguïsation des clés étrangères par numérotation est devenue un fallback. - Le reformatage du MCD pour le faire entrer dans une grille minimale n'avait de sens que s'il était suivi d'un réarrangement du MCD. Il y est désormais intégré com...