Skip to content

Releases: laowantong/mocodo

fix #110

25 Feb 16:53
Compare
Choose a tag to compare

Full Changelog: 4.2...4.2.3

Support sous Basthon

26 Jan 14:47
6a4ae53
Compare
Choose a tag to compare
  • 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 fonction mocodo() 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

Full Changelog: 4.1.2...4.2

Correction d'erreurs en sortie

07 Dec 19:48
Compare
Choose a tag to compare
  • 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

20 Nov 18:59
Compare
Choose a tag to compare

Prise en charge des bibliothèques de MCD

17 Nov 12:30
c5e827e
Compare
Choose a tag to compare

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

13 Nov 16:59
Compare
Choose a tag to compare

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

06 Nov 09:23
Compare
Choose a tag to compare

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

28 Oct 17:07
Compare
Choose a tag to compare
  • 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

22 Oct 15:27
15cc0cb
Compare
Choose a tag to compare
  • 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 ou NOT 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

14 Oct 10:57
Compare
Choose a tag to compare

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 et NOT NUL) aux niveaux relationnel et physique. Visualisation sur demande au niveau relationnel.
  • Ajout de trois options indépendantes : c (avec contraintes), e (avec explications) et b (avec boilerplate de document standalone) pour tous les gabarits produisant des schémas relationnels textuels (html, markdown, latex et text).
  • 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 par VARCHAR2 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 en en4.txt.
  • Options --pdf et --png remplacées par des sous-options pdf et png 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...
Read more