Agrégation, héritage, PDF, etc.
Full Changelog: 2.3.9...3.0
Nouvelles fonctionnalités et modifications
- Majeures :
- Visualisation des agrégations (issue #38).
- Héritage/spécialisation (issue #16). Approche moins complète, mais plus simple que celle expérimentée dans la PR #52.
- Génération d'une sortie en PDF ou en PNG (en local, requiert CairoSVG, à installer séparément). Options
--pdf
et--png
en ligne de commande, onglet « Options » sous Mocodo online. - Interactivité des SVG : possibilité de faire apparaître progressivement les éléments d'un MCD à des fins pédagogiques.
- Mineures :
- Nouveau serveur pour Mocodo online, même adresse (merci Cyril !).
- Génération d'une version non interactive des SVG (si nécessaire).
- Sous Mocodo online, sous l'onglet Relations, cliquer sur le titre d'une sortie pour la copier dans le presse-papier.
pip install mocodo
installe le logiciel et la commande magique associée.- Sous Jupyter,
%load_ext mocodo
au lieu de%load_ext mocodo_magic
. - Les clés primaires sont passées en tête de la liste d'attributs.
- Les clés étrangères sont par défaut préfixées d'un
#
dans les sorties HTML et Markdown. - Sous Mocodo online, les réarrangements obtenus avec et sans alt sont inversés : sans alt, aucune contrainte ; avec alt, réarrangement contraint par les dimensions de la plus petite grille « équilibrée ». Ajout de la combinaison alt + shift pour un réarrangement sur la deuxième plus petite grille « équilibrée ».
- Les plus petites grilles équilibrées pour 2 et 3 boîtes sont respectivement (2x1 et 3x1) au lieu de 2x2.
- Les caractères accentués sont maintenant autorisés dans le titre du MCD.
- L'ordre des relations est maintenant stable, et ne dépend plus de l'ordre dans lequel sont énumérées les boîtes dans le texte d'entrée.
- Dans la version HTML du schéma relationnel expliqué, les explications sont maintenant divulguées à la demande (balise
<details>
). Quand aucune n'est divulguée, la sortie est équivalente à la version HTML non verbeuse. De ce fait, cette dernière n'est plus proposée dans les options de Mocodo online, tandis que la première est cochée par défaut. - Les libellés générés lors de l'obfuscation ne peuvent plus être des mots composés et leur longueur est supérieure ou égale à 3.
- Réduire une clé primaire (agrégation) et forcer la conversion d'une association en table se faisaient avec la même syntaxe (en préfixant d'un "/" un nom d'entité). Cette syntaxe ambiguë est remplacée respectivement en préfixant d'un "/" une cardinalité
0N
ou1N
, et en mettant le nom de l'association entre crochets droits. - Table des matières latérale ou flottante dans la documentation.
Corrections
- Sous Mocodo online, le texte d'entrée est conservé en cas d'échec du réarrangement (issue #50).
- Possibilité d'appliquer un facteur multiplicatif à la largeur des libellés lorsque celle-ci est incorrecte (peut arriver sous Windows et Linux). Option
--adjust_width
en ligne de commande, onglet « Options » sous Mocodo online. - L'obfuscation fonctionne pour les MCD mettant en œuvre une réduction de clé primaire.
- L'obfuscation respecte les identifiants composites (p. ex.,
POSITION: latitude, _longitude
). - L'obfuscation respecte l'option
--seed
(ce n'était plus le cas avec Python 3).
Principaux changements internes
- Dans la documentation et le code, ce qui s'appelait « annotation » s'appelle maintenant « note ». L'option
--hide_annotations
devient--hide_notes
. - Le SVG est généré directement, et non plus par génération et exécution d'un code Python.
- Tests de génération des relations remplacés par des instantanés (snapshot testing).
- Modernisation partielle du code et de sa structure.
- Passage à Poetry.
- Mise à jour de la localisation en français.
- Dans le code, le qualificatif
foreign
est désormais réservé aux clés étrangères. Les migrations d'attributs non identifiants ou de clés d'entités qui ne donnent pas lieu à une création de table, sont distinguées par le qualificatifouter
. - À des fins de débogage, le type interne d'un champ est affiché au survol de la sortie
html_verbose
.
Fonctionnalités retirées
- Support de Python 2.7.
- Support du logiciel macOS Nodebox (option
--image_format
). - Support de Tkinter pour le calcul de la taille des libellés (option
--tkinter
). - Réarrangement par résolution d'un programme linéaire (options
--arrange lp
et--engine [{cplex,gurobi}]
) (issue #55). - Support du caractère
\
dans le texte-source (sauf pour l'héritage) (issue #57). - Compression automatique des lignes consécutives réduites à un deux-points.
- Option
--extract
, puisque le fichier de géométrie est maintenant généré systématiquement. - Option
--obfuscation_max_length
.