**Full Changelog**: https://github.com/laowantong/mocodo/compare/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 <kbd>alt</kbd> sont inversés : sans <kbd>alt</kbd>, aucune contrainte ; avec <kbd>alt</kbd>, réarrangement contraint par les dimensions de la plus petite grille « équilibrée ». Ajout de la combinaison <kbd>alt</kbd> + <kbd>shift</kbd> 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` ou `1N`, et en mettant le nom de l'association entre crochets droits.
- Table des matières latérale ou flottante dans la [documentation](https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html).
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_](https://www.sitepen.com/blog/snapshot-testing-benefits-and-drawbacks)).
- Modernisation partielle du code et de sa structure.
- Passage à [Poetry](https://python-poetry.org).
- 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 qualificatif `outer`.
- À 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`.