laowantong / mocodo

Modélisation Conceptuelle de Données. Nickel. Ni souris.
https://www.mocodo.net
MIT License
181 stars 51 forks source link

Bug spécialisation + obfuscation #78

Closed fduchatea closed 11 months ago

fduchatea commented 1 year ago

Je teste la génération automatique de datasets avec Mocodo, avec obfuscation des labels. Mon script de génération a été lancé plus d'une centaine de fois. Dans la majorité des cas, ça produit un diagramme (plus ou moins intéressant à exploiter).

Mais dès qu'il y a une spécialisation avec l'option obfuscation, il y a une erreur. Initialement, je pensais que c'était à cause des entités reliées aléatoirement, mais l'option obfuscation fait aussi planter des datasets faits à la main (et déjà testés).

Avec Mocodo 3.2, la commande :

mocodo --input fichier.txt --obfuscate --relations diagram

Erreur produite :

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/bin/mocodo", line 8, in <module>
    sys.exit(main())
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mocodo/__main__.py", line 40, in main
    return safe_print_for_PHP(obfuscate(clauses, params))
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mocodo/obfuscate.py", line 77, in obfuscate
    (card, entity_name) = element.split(" ", 1)
ValueError: not enough values to unpack (expected 2, got 1)

Exemple de contenu fichier.txt (diagramme correctement généré sans l'option obfuscation, mais erreur avec l'option) :

E1 : att_E1_1, att_E1_2, att_E1_3
E2 : att_E2_1, att_E2_2, att_E2_3
E3 : att_E3_1, att_E3_2
E4 : att_E4_1, att_E4_2, att_E4_3
Écoles: adresse, nbClasses
/XT2\ Lieux ->> Écoles, Cantines : typeL
Lieux: idL, nom, type, coordonnees
Cantines: adresse, nbPlaces, nbServices
laowantong commented 1 year ago

Je travaille en ce moment sur #77 qui va régler plusieurs problèmes, entre autres celui-là, et permettre d'en créer d'autres ;) Ça demande de gros changements, donc si vous êtes pressé vous devrez mettre les mains dans le cambouis des expressions régulières de obfuscate.py.

Par curiosité : dans quel but générez-vous des MCD aléatoires ? Pédagogique ? Je prépare un article sur les usages de Mocodo, et serais intéressé par ce genre de retours. mocodo --help affiche mon mail de contact, merci d'avance.