Package: yapps2 Version: 2.2.1-3 Severity: normal Tags: patch pending Dear maintainer,
I've prepared an NMU for yapps2 (versioned as 2.2.1-3.1) and uploaded it to DELAYED/10. Please feel free to tell me if I should delay it longer. Regards, -- Colin Watson [[email protected]]
diff -u yapps2-2.2.1/debian/changelog yapps2-2.2.1/debian/changelog --- yapps2-2.2.1/debian/changelog +++ yapps2-2.2.1/debian/changelog @@ -1,3 +1,14 @@ +yapps2 (2.2.1-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * Drop Python 2 support (closes: #938864). + * Write __future__ import before preparser (closes: #911730). + * Convert Scanner.print_line_with_pointer to Python 3 print syntax + (closes: #911753). + * Port documentation and examples to Python 3 (closes: #911752). + + -- Colin Watson <[email protected]> Mon, 23 Dec 2019 22:05:40 +0000 + yapps2 (2.2.1-3) unstable; urgency=medium * yapps2 depends on python3-pkg-resources for the entry point wrapper diff -u yapps2-2.2.1/debian/control yapps2-2.2.1/debian/control --- yapps2-2.2.1/debian/control +++ yapps2-2.2.1/debian/control @@ -3,15 +3,15 @@ Priority: optional Maintainer: Matthias Urlichs <[email protected]> Build-Depends: debhelper (>= 9~) -Build-Depends-Indep: python-dev (>= 2.5.4-1~), python3-dev, +Build-Depends-Indep: python3-dev, dh-python, hevea, - python-setuptools, python3-setuptools, + python3-setuptools, Standards-Version: 3.9.8 Package: yapps2 Architecture: all -Depends: ${python:Depends}, python3-yapps (= ${binary:Version}), ${misc:Depends}, +Depends: ${python3:Depends}, python3-yapps (= ${binary:Version}), ${misc:Depends}, python3-pkg-resources, Description: Yet Another Python Parser System YAPPS is an easy to use parser generator that is written in Python and @@ -31,20 +31,6 @@ - better error reporting - reads input incrementally -Package: python-yapps -Architecture: all -Depends: ${python:Depends}, ${misc:Depends} -Replaces: yapps2-runtime -Conflicts: yapps2-runtime -Description: Yet Another Python Parser System - YAPPS is an easy to use parser generator that is written in Python and - generates Python code. There are several parser generator systems - already available for Python, but this parser has different goals: - Yapps is simple, very easy to use, and produces human-readable parsers. - . - This package contains the Python2 runtime support for parsers generated - with yapps2. - Package: python3-yapps Architecture: all Depends: ${python3:Depends}, ${misc:Depends} reverted: --- yapps2-2.2.1/debian/python-yapps.README +++ yapps2-2.2.1.orig/debian/python-yapps.README @@ -1,11 +0,0 @@ -The Debian Package python-yapps2 --------------------------------- - -This package contains the new runtime Python code for the augmented -yapps2 parser which is included in Debian. - -You need to depend on this package if you Debianize Python programs that -contain a yapps2-built parser. - --- -Matthias Urlichs reverted: --- yapps2-2.2.1/debian/python-yapps2.dirs +++ yapps2-2.2.1.orig/debian/python-yapps2.dirs @@ -1 +0,0 @@ -usr/share/doc/python-yapps2 diff -u yapps2-2.2.1/debian/rules yapps2-2.2.1/debian/rules --- yapps2-2.2.1/debian/rules +++ yapps2-2.2.1/debian/rules @@ -3,7 +3,7 @@ export PYBUILD_NAME=yapps %: - dh $@ --with python2,python3 --buildsystem=pybuild + dh $@ --with python3 --buildsystem=pybuild override_dh_auto_build: dh_auto_build @@ -13,7 +13,6 @@ override_dh_install: mkdir -p debian/yapps2/usr/bin mv debian/python3-yapps/usr/bin/yapps2 debian/yapps2/usr/bin - rm debian/python-yapps/usr/bin/yapps2 dh_install override_dh_auto_test: diff -u yapps2-2.2.1/doc/yapps2.html yapps2-2.2.1/doc/yapps2.html --- yapps2-2.2.1/doc/yapps2.html +++ yapps2-2.2.1/doc/yapps2.html @@ -554,7 +554,7 @@ class MyX(Xparser.X): def printmsg(self): - print "Hello!" + print("Hello!") </pre> <!--TOC subsection id="sec15" Customizing Scanners--> <h3 id="sec15" class="subsection">4.2  Customizing Scanners</h3><!--SEC END --><p>The generated parser class is not dependent on the generated scanner @@ -645,7 +645,7 @@ {{ start = self._scanner.pos }} a b c {{ end = self._scanner.pos }} - {{ print 'Text is', self._scanner.input[start:end] }} + {{ print('Text is', self._scanner.input[start:end]) }} </pre> <!--TOC subsection id="sec20" Pre- and Post-Parser Code--> <h3 id="sec20" class="subsection">5.4  Pre- and Post-Parser Code</h3><!--SEC END --><p>Sometimes the parser code needs to rely on helper variables, only in patch2: unchanged: --- yapps2-2.2.1.orig/doc/yapps2.tex +++ yapps2-2.2.1/doc/yapps2.tex @@ -795,7 +795,7 @@ class MyX(Xparser.X): def printmsg(self): - print "Hello!" + print("Hello!") \end{verbatim} \mysubsection{Customizing Scanners} @@ -924,7 +924,7 @@ {{ start = self._scanner.pos }} a b c {{ end = self._scanner.pos }} - {{ print 'Text is', self._scanner.input[start:end] }} + {{ print('Text is', self._scanner.input[start:end]) }} \end{verbatim} \mysubsection{Pre- and Post-Parser Code} only in patch2: unchanged: --- yapps2-2.2.1.orig/examples/calc.g +++ yapps2-2.2.1/examples/calc.g @@ -3,12 +3,12 @@ def lookup(map, name): for x,v in map: if x == name: return v - if not globalvars.has_key(name): print 'Undefined (defaulting to 0):', name + if name not in globalvars: print('Undefined (defaulting to 0):', name) return globalvars.get(name, 0) def stack_input(scanner,ign): """Grab more input""" - scanner.stack_input(raw_input(">?> ")) + scanner.stack_input(input(">?> ")) %% parser Calculator: @@ -20,10 +20,10 @@ token VAR: "[a-zA-Z_]+" # Each line can either be an expression or an assignment statement - rule goal: expr<<[]>> END {{ print '=', expr }} + rule goal: expr<<[]>> END {{ print('=', expr) }} {{ return expr }} | "set" VAR expr<<[]>> END {{ globalvars[VAR] = expr }} - {{ print VAR, '=', expr }} + {{ print(VAR, '=', expr) }} {{ return expr }} # An expression is the sum and difference of factors @@ -47,18 +47,18 @@ "in" expr<<V>> {{ return expr }} %% if __name__=='__main__': - print 'Welcome to the calculator sample for Yapps 2.' - print ' Enter either "<expression>" or "set <var> <expression>",' - print ' or just press return to exit. An expression can have' - print ' local variables: let x = expr in expr' + print('Welcome to the calculator sample for Yapps 2.') + print(' Enter either "<expression>" or "set <var> <expression>",') + print(' or just press return to exit. An expression can have') + print(' local variables: let x = expr in expr') # We could have put this loop into the parser, by making the # `goal' rule use (expr | set var expr)*, but by putting the # loop into Python code, we can make it interactive (i.e., enter # one expression, get the result, enter another expression, etc.) while 1: - try: s = raw_input('>>> ') + try: s = input('>>> ') except EOFError: break if not s.strip(): break parse('goal', s) - print 'Bye.' + print('Bye.') only in patch2: unchanged: --- yapps2-2.2.1.orig/examples/xml.g +++ yapps2-2.2.1/examples/xml.g @@ -54,13 +54,13 @@ '<begin> middle </end>', '<begin> <nested attr=\'baz\' another="hey"> foo </nested> <nested> bar </nested> </begin>', ] - print - print '____Running tests_______________________________________' + print() + print('____Running tests_______________________________________') for test in tests: - print + print() try: parser = xml(xmlScanner(test)) output = '%s ==> %s' % (repr(test), repr(parser.node())) - except (yappsrt.SyntaxError, AssertionError) as e: + except (runtime.SyntaxError, AssertionError) as e: output = '%s ==> FAILED ==> %s' % (repr(test), e) - print output + print(output) only in patch2: unchanged: --- yapps2-2.2.1.orig/test.sh +++ yapps2-2.2.1/test.sh @@ -4,10 +4,10 @@ trap 'echo ERROR' 0 export PYTHONPATH=$(pwd) -for PY_G in python python3 ; do +for PY_G in python3 ; do $PY_G ./yapps2 examples/expr.g examples/expr.py -for PY_X in python python3 ; do +for PY_X in python3 ; do test "$(echo "1+2*3+4" | $PY_X examples/expr.py goal)" = 11 done only in patch2: unchanged: --- yapps2-2.2.1.orig/yapps/parsetree.py +++ yapps2-2.2.1/yapps/parsetree.py @@ -270,9 +270,9 @@ def generate_output(self): self.calculate() + self.write("from __future__ import print_function\n") self.write(self.preparser) self.write("# Begin -- grammar generated by Yapps\n") - self.write("from __future__ import print_function\n") self.write("import sys, re\n") self.write("from yapps import runtime\n") self.write("\n") only in patch2: unchanged: --- yapps2-2.2.1.orig/yapps/runtime.py +++ yapps2-2.2.1/yapps/runtime.py @@ -175,7 +175,7 @@ file,line,p = pos if file != self.filename: if self.stack: return self.stack.print_line_with_pointer(pos,length=length,out=out) - print >>out, "(%s: not in input buffer)" % file + print("(%s: not in input buffer)" % file, file=out) return text = self.input @@ -198,7 +198,7 @@ break spos = cr+1 else: - print >>out, "(%s:%d not in input buffer)" % (file,origline) + print("(%s:%d not in input buffer)" % (file,origline), file=out) return # Now try printing part of the line @@ -227,8 +227,8 @@ p = p - 7 # Now print the string, along with an indicator - print >>out, '> ',text - print >>out, '> ',' '*p + '^' + print('> ',text, file=out) + print('> ',' '*p + '^', file=out) def grab_input(self): """Get more input if possible.""" @@ -316,7 +316,7 @@ del self.tokens[0] self.tokens.append(tok) self.last_read_token = tok - # print repr(tok) + # print(repr(tok)) return tok else: ignore = self.ignore[best_pat]

