Hello community, here is the log from the commit of package frescobaldi for openSUSE:Factory checked in at 2017-03-31 15:05:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/frescobaldi (Old) and /work/SRC/openSUSE:Factory/.frescobaldi.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "frescobaldi" Fri Mar 31 15:05:52 2017 rev:12 rq:459719 version:2.20.0 Changes: -------- --- /work/SRC/openSUSE:Factory/frescobaldi/frescobaldi.changes 2016-05-31 12:24:55.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.frescobaldi.new/frescobaldi.changes 2017-03-31 15:05:53.550879270 +0200 @@ -1,0 +2,40 @@ +Wed Feb 22 14:10:48 UTC 2017 - cornelis@solcon.nl + +- Update frescobaldi to 2.20.0: + * New features: + - New Manuscript viewer tool, displaying an "engraver's copy", + contributed by Peter Bjuhr and Urs Liska + - Copy selected text in Music View + - New command Edit->Move to include file... + - New quick remove actions to remove beams and ligatures from selected music + - Search tool in the keyboard shortcuts preferences page (#690) + * Improvements: + - Fit Width in Music View now fits two pages in width, if in two-page mode + - the Music View now remembers the page layout mode + - Jump to next or previous bookmark now respects surrounding lines setting + - Better default save path, looking at last edited document (#162) + * Bug fixes: + - fix #716 position of open document tab bar changes on engrave + - Midi input fixes by David Rydh: + * fix #797 and #853, now honour Midi input port setting + * in Midi input, ces and bis now have the correct octave + * fix interruption of Midi input by other events than note events + - Midi input now uses correct channel, fix by David Kastrup + - fix #857 UnicodeDecodeError on some types of \displayMusic command output + - fix #891 QTextBlock not hashable anymore + - fix #862 midi not loaded on first document load + * Translations: + - new Swedish translation contributed by Dag Odenhall + - updated Dutch by Wilbert Berendsen + - updated Italian by Federico Bruni + - updated Spanish by Francisco Vila + - updated German by Henning Hraban Ramm + - updated Czech by Pavel Fric +- Update python-ly to 0.9.5: + * basic support for tokenizing the MUP format + * fix wbsoft/frescobaldi#832: wrong duration handling with \partial when + changing durations + * xml export tests now work correctly with Python3 + * fix #74 traversing events fails in empty \alternative + +------------------------------------------------------------------- Old: ---- frescobaldi-2.19.0.tar.gz python-ly-0.9.4.tar.gz New: ---- frescobaldi-2.20.0.tar.gz python-ly-0.9.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ frescobaldi.spec ++++++ --- /var/tmp/diff_new_pack.8fyAEF/_old 2017-03-31 15:05:54.542739048 +0200 +++ /var/tmp/diff_new_pack.8fyAEF/_new 2017-03-31 15:05:54.542739048 +0200 @@ -1,7 +1,7 @@ # # spec file for package frescobaldi # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,15 +20,15 @@ Summary: Lilypond editor License: GPL-2.0+ Group: Productivity/Multimedia/Sound/Editors and Convertors -Version: 2.19.0 +Version: 2.20.0 Release: 0 Url: http://www.frescobaldi.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: %{name}-%{version}.tar.gz # New package, was before part of frescobaldi # Url: https://pypi.python.org/pypi/python-ly -# Split off into separate package? -Source1: python-ly-0.9.4.tar.gz +# Keep in this package, because frescobaldi is the only one using it. +Source1: python-ly-0.9.5.tar.gz BuildRequires: hicolor-icon-theme BuildRequires: python3-devel BuildRequires: update-desktop-files @@ -59,7 +59,7 @@ %install %suse_update_desktop_file %{name} Multimedia AudioVideoEditing # first install python-ly -cd python-ly-0.9.4 +cd python-ly-0.9.5 python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} cd .. python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} ++++++ frescobaldi-2.19.0.tar.gz -> frescobaldi-2.20.0.tar.gz ++++++ /work/SRC/openSUSE:Factory/frescobaldi/frescobaldi-2.19.0.tar.gz /work/SRC/openSUSE:Factory/.frescobaldi.new/frescobaldi-2.20.0.tar.gz differ: char 24, line 1 ++++++ python-ly-0.9.4.tar.gz -> python-ly-0.9.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ChangeLog new/python-ly-0.9.5/ChangeLog --- old/python-ly-0.9.4/ChangeLog 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ChangeLog 2017-02-17 07:19:49.000000000 +0100 @@ -2,6 +2,15 @@ ======================= +2017-02-17: python-ly 0.9.5 + +- basic support for tokenizing the MUP format +- fix wbsoft/frescobaldi#832: wrong duration handling with \partial when + changing durations +- xml export tests now work correctly with Python3 +- fix #74 traversing events fails in empty \alternative + + 2016-04-20: python-ly 0.9.4 - support LilyPond 2.18+ behaviour on \relative without startpitch in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/colorize.py new/python-ly-0.9.5/ly/colorize.py --- old/python-ly-0.9.4/ly/colorize.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ly/colorize.py 2017-02-17 07:19:49.000000000 +0100 @@ -94,6 +94,7 @@ from ly.lex import texinfo #from ly.lex import latex #from ly.lex import docbook + from ly.lex import mup return ( ('lilypond', ( @@ -161,6 +162,13 @@ style('verbatim', 'string', (texinfo.Verbatim,)), style('comment', 'comment', (texinfo.Comment,)), )), + ('mup', ( + style('string', 'string', (mup.String,)), + style('stringescape', 'escape', (mup.StringQuoteEscape,)), + style('comment', 'comment', (mup.Comment,)), + style('macro', 'variable', (mup.Macro,)), + style('preprocessor', 'keyword', (mup.Preprocessor,)), + )), ) # end of mapping @@ -240,6 +248,8 @@ }, 'texinfo': { }, + 'mup': { + }, } # end of default_css_styles diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/lex/_mode.py new/python-ly-0.9.5/ly/lex/_mode.py --- old/python-ly-0.9.4/ly/lex/_mode.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ly/lex/_mode.py 2017-02-17 07:19:49.000000000 +0100 @@ -77,6 +77,10 @@ from . import html return html.ParseHTML + def mup(): + from . import mup + return mup.ParseMup + # more modes can be added here return locals() @@ -111,6 +115,11 @@ return "scheme" if text.startswith('@'): return "texinfo" + if text.startswith('//'): + return "mup" + s = text.split(None, 1) + if s and s[0] in ('include', 'score', 'music'): + return "mup" return "lilypond" @@ -123,5 +132,6 @@ 'latex': '.lytex', 'texinfo': '.texi', 'docbook': '.docbook', + 'mup': '.mup', } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/lex/lilypond.py new/python-ly-0.9.5/ly/lex/lilypond.py --- old/python-ly-0.9.4/ly/lex/lilypond.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ly/lex/lilypond.py 2017-02-17 07:19:49.000000000 +0100 @@ -573,6 +573,10 @@ rx = r"[-~](?=\s*\d)" +class Partial(Command): + rx = r"\\partial\b" + + class Override(Keyword): rx = r"\\override\b" def update_state(self, state): @@ -915,6 +919,7 @@ With, Clef, Tempo, + Partial, KeySignatureMode, AccidentalStyle, AlterBroken, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/lex/mup.py new/python-ly-0.9.5/ly/lex/mup.py --- old/python-ly-0.9.4/ly/lex/mup.py 1970-01-01 01:00:00.000000000 +0100 +++ new/python-ly-0.9.5/ly/lex/mup.py 2017-02-17 07:19:49.000000000 +0100 @@ -0,0 +1,91 @@ +# This file is part of python-ly, https://pypi.python.org/pypi/python-ly +# +# Copyright (c) 2008 - 2015 by Wilbert Berendsen +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# See http://www.gnu.org/licenses/ for more information. + +""" +Parses and tokenizes MUP input. + +MUP (www.arkkra.com) is an open source music typesetter (formerly shareware). + +We add a tokenizer here, to enable a decent mup2ly conversion. + +""" + +from __future__ import unicode_literals + + +from . import _token +from . import Parser, FallthroughParser + + +class Comment(_token.Comment): + pass + + +class LineComment(Comment): + rx = r"//.*$" + + +class String(_token.String): + pass + + +class StringQuotedStart(String, _token.StringStart): + rx = r'"' + def update_state(self, state): + state.enter(ParseString()) + + +class StringQuotedEnd(String, _token.StringEnd): + rx = r'"' + def update_state(self, state): + state.leave() + state.endArgument() + + +class StringQuoteEscape(_token.Character): + rx = r'\\[\\"]' + + +class Macro(_token.Token): + rx = r'\b[A-Z][A-Z0-9_]*' + + +class Preprocessor(_token.Token): + rx = (r'\b(' + 'if|then|else|endif|define|undef|ifdef|ifndef' + r')\b|@') + + +class ParseMup(Parser): + mode = "mup" + items = ( + LineComment, + StringQuotedStart, + Macro, + Preprocessor, + ) + + +class ParseString(Parser): + default = String + items = ( + StringQuotedEnd, + StringQuoteEscape, + ) + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/music/items.py new/python-ly-0.9.5/ly/music/items.py --- old/python-ly-0.9.4/ly/music/items.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ly/music/items.py 2017-02-17 07:19:49.000000000 +0100 @@ -694,7 +694,7 @@ if e.unfold_repeats or self.specifier() != "volta": count = self.repeat_count() - if alt and len(alt): + if alt and len(alt) and len(alt[0]): alts = list(alt[0])[:count+1] alts[0:0] = [alts[0]] * (count - len(alts)) for a in alts: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/pkginfo.py new/python-ly-0.9.5/ly/pkginfo.py --- old/python-ly-0.9.4/ly/pkginfo.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ly/pkginfo.py 2017-02-17 07:19:49.000000000 +0100 @@ -31,7 +31,7 @@ name = "python-ly" #: the current version -version = "0.9.4" +version = "0.9.5" #: short description description = "Tool and library for manipulating LilyPond files" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/ly/rhythm.py new/python-ly-0.9.5/ly/rhythm.py --- old/python-ly-0.9.4/ly/rhythm.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/ly/rhythm.py 2017-02-17 07:19:49.000000000 +0100 @@ -66,7 +66,8 @@ ly.lex.lilypond.Accidental, ly.lex.lilypond.OctaveCheck, ly.lex.lilypond.Duration, - ly.lex.lilypond.Tempo + ly.lex.lilypond.Tempo, + ly.lex.lilypond.Partial ) _stay = ( @@ -156,7 +157,7 @@ dur_tokens.append(t) else: tokens.append(t) - may_remove = not any(map(('\\skip', '\\tempo', '\\tuplet').__contains__, tokens)) + may_remove = not any(map(('\\skip', '\\tempo', '\\tuplet', '\\partial').__contains__, tokens)) if dur_tokens: insert_pos = dur_tokens[0].pos else: @@ -312,7 +313,7 @@ prev = item.dur_tokens or preceding_duration(cursor) with cursor.document as d: for item in items: - if '\\tempo' not in item.tokens and '\\tuplet' not in item.tokens: + if not set(item.tokens) & set(('\\tempo', '\\tuplet', '\\partial')): if item.dur_tokens: if item.dur_tokens == prev and item.may_remove: del d[item.dur_tokens[0].pos:item.dur_tokens[-1].end] @@ -329,7 +330,7 @@ previous_block = cursor.document.block(prev[0].pos) with cursor.document as d: for item in items: - if '\\tempo' not in item.tokens and '\\tuplet' not in item.tokens: + if not set(item.tokens) & set(('\\tempo', '\\tuplet', '\\partial')): block = d.block( (item.dur_tokens or item.tokens) [0].pos) if block != previous_block: if not item.dur_tokens: @@ -352,7 +353,7 @@ prev = item.dur_tokens or preceding_duration(cursor) with cursor.document as d: for item in items: - if '\\tempo' not in item.tokens and '\\tuplet' not in item.tokens: + if not set(item.tokens) & set(('\\tempo', '\\tuplet', '\\partial')): if item.dur_tokens: prev = item.dur_tokens else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ly-0.9.4/tests/test_xml.py new/python-ly-0.9.5/tests/test_xml.py --- old/python-ly-0.9.4/tests/test_xml.py 2016-04-20 01:24:12.000000000 +0200 +++ new/python-ly-0.9.5/tests/test_xml.py 2017-02-17 07:19:49.000000000 +0100 @@ -4,7 +4,7 @@ import ly.musicxml from lxml import etree import os -import StringIO +import io def test_glissando(): @@ -37,7 +37,7 @@ with open(filename, 'r') as lyfile: writer.parse_text(lyfile.read()) xml = writer.musicxml() - sio = StringIO.StringIO() + sio = io.StringIO() xml.write(sio, "utf-8") return sio.getvalue()