patacrep/patadata

I do not understand how to compile the books

Closed this issue · 11 comments

On the readme of patacrep I saw that the command to compile a songbook is
songbook <songbook_file.yaml>

But patadata does not contains any .yml file

I tried: songbook books/songbook_fr.sb
but I get:

ERROR:root:The songbook file 'songbook_fr' is not valid
unknown fields: bookoptions, lang, encoding, authwords, datadir
ERROR:root:Running again with option '-v' may give more information.

Sorry, it is because the versions between patacrep and patadata are not perfectly synchronous.

Please try to use the branch yaml of patadata: https://github.com/patacrep/patadata/tree/yaml

Awesome, it works.
Very nice job on refactoring the patacrep! I have been using it 6 years ago and decided to get back to my instrument again.
In my old version, I had modify the patacrep source code to enable ukulele (4 strings).
I think now patacrep already have this ukulele feature, which is great.
I will try to recreate my old songbook soon.
Thanks.

Jusqu'ici j'arrivais à compiler sur la branche principale avec une ancienne version de patacrep (je crois que j'avais installé depuis le tag v4.0.0 de Git), mais en réessayant la commande songbook ne fonctionne plus du tout :

% songbook --version
Traceback (most recent call last):
  File "/usr/local/bin/songbook", line 9, in <module>
    load_entry_point('patacrep==4.0.0', 'console_scripts', 'songbook')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python3.5/dist-packages/patacrep-4.0.0-py3.5.egg/patacrep/songbook/__init__.py", line 9, in <module>
    from patacrep.build import config_model
ImportError: cannot import name 'config_model'

Utiliser la branche yaml n'est pas une solution pour moi, car elle n'est pas à jour. Quelqu'un aurait-il une solution ? Quoi qu'il en soit, je pense que ce bug devrait être rouvert jusqu'à ce que la version de patacrep installable par pip fonctionne directement avec la branche master de patadata.

@cypriani : comment as-tu installé la version master ?
Le plus simple et le plus sûr est d'utiliser pip:

pip3 install https://github.com/patacrep/patacrep/archive/master.zip

Mon précédent message d'erreur est avec une installation depuis git (sur le tag v4.0.0). Avec pip, j'ai un virtualenv avec la version publique (pip3 install patacrep), et je viens d'essayer d'en faire un autre avec la version master (ta commande). Les deux exécutables marchent avec songbook --version. Voilà ce qui se passe quand j'essaye de compiler (toujours sur la branche master de patadata) avec la version publique :

(virtualenv) % songbook books/naheulbeuk.sb
INFO:patacrep.build:Building 'naheulbeuk.tex'…
INFO:patacrep.build:Building 'naheulbeuk.pdf'…
ERROR:root:Error while pdfLaTeX compilation of "naheulbeuk.tex" (see naheulbeuk.log for more information).
ERROR:root:Running again with option '-v' may give more information.
zsh: exit 1     songbook books/naheulbeuk.sb

Apparemment, il n'aime pas les cover dans les \beginsong. J'ai essayer de remplacer par cov ça compile correctement. Faut-il faire un s/cover/cov/ sur toutes les chansons ? Si oui je peux préparer un commit pour ça.

Avec la version master :

(virtualenv-master) % songbook books/naheulbeuk.sb
Traceback (most recent call last):
  File "/blabla/virtualenv-master/bin/songbook", line 9, in <module>
    load_entry_point('patacrep==4.0.0', 'console_scripts', 'songbook')()
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/songbook/__main__.py", line 148, in main
    songbook = open_songbook(songbook_path)
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/songbook/__init__.py", line 44, in open_songbook
    return prepare_songbook(user_songbook, outputdir, outputname, songbookfile_dir)
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/songbook/__init__.py", line 64, in prepare_songbook
    songbook = _add_songbook_defaults(songbook)
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/songbook/__init__.py", line 89, in _add_songbook_defaults
    locale_default = config_model('default')
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/build.py", line 384, in config_model
    with encoding.open_read(model_path) as model_file:
  File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__
    return next(self.gen)
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/encoding.py", line 18, in open_read
    encoding = detect_encoding(filename)
  File "/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/encoding.py", line 35, in detect_encoding
    filehandler = codecs.open(filename, 'r', encoding=encoding)
  File "/blabla/virtualenv-master/lib/python3.5/codecs.py", line 895, in open
    file = builtins.open(filename, mode, buffering)
FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type: '/blabla/virtualenv-master/lib/python3.5/site-packages/patacrep/data/templates/songbook_model.yml'
zsh: exit 1     songbook books/naheulbeuk.sb

Même erreur sur la branche yaml avec songbook books/naheulbeuk.yaml.

Je viens d'essayer s/cover=/cov=/, mais ça ne suffit pas (toujours sur la version publique et la branche master). Maintenant j'ai ça dans le log :

! LaTeX Error: File 'nb_elf_02' not found.

Pourtant :

% git grep -n nb_elf_02                                                                        
songs/le_donjon_de_naheulbeuk/les_elfes_de_greenelven.sg:66:  \image[width=4cm]{nb_elf_02}
% find -iname 'nb_elf_02*'
./songs/le_donjon_de_naheulbeuk/nb_elf_02.jpg

Désolé, je n'ai pas le temps de regarder plus en détail d'où ça peut venir.

Comme indiqué par mon premier message de cette "issue", seule la branche yaml de patadata fonctionne avec la branche master de patacrep.

La branche master de patadata est un peu inconstante (utilise cover mais pas encore le nouveau format de carnet de chants), mais peut-être qu'elle compile avec le commit de patacrep suivant: https://github.com/patacrep/patacrep/tree/f15cbbf333378c47412d2fa19646563c6cc9e606

En fait, je pense que la meilleure solution est d'utiliser la branche master de patadata, avec la branche master de patacrep.

Seuls les carnets de chants de patadata sont alors incorrects et il suffit de les remplacer par ceux qui sont proposés ici: https://github.com/patacrep/patadata/tree/yaml/books (#34)

@oliverpool : Qu'est-ce qui nous empêche de sortir une version 5, qui résoudrait tous ces problèmes ?

@paternal rien, à vrai dire

@cypriani & @casertap I just updated patacrep and patadata to be coherent again.

Everything should now be fine if you use their latest versions (patacrep was also uploaded on pip: pip3 install patacrep -U to upgrade).

Please, feel free to open a new issue if anything does work as expected !