[arch-commits] Commit in python-astor/trunk (PKGBUILD string-newline.patch)

Felix Yan felixonmars at archlinux.org
Tue Feb 19 19:38:07 UTC 2019


    Date: Tuesday, February 19, 2019 @ 19:38:05
  Author: felixonmars
Revision: 434582

upgpkg: python-astor 0.7.1-2

remove python2 sibling

Added:
  python-astor/trunk/string-newline.patch
Modified:
  python-astor/trunk/PKGBUILD

----------------------+
 PKGBUILD             |   43 ++++++++++++-------------------------
 string-newline.patch |   56 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 29 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-02-19 19:33:48 UTC (rev 434581)
+++ PKGBUILD	2019-02-19 19:38:05 UTC (rev 434582)
@@ -1,51 +1,36 @@
 # Maintainer: Felix Yan <felixonmars at archlinux.org>
 
-pkgbase=python-astor
-pkgname=('python-astor' 'python2-astor')
+pkgname=python-astor
 pkgver=0.7.1
-pkgrel=1
+pkgrel=2
 pkgdesc="Read/rewrite/write Python ASTs"
 arch=('any')
 license=('BSD')
 url="http://astor.rtfd.org/"
-makedepends=('python-setuptools' 'python2-setuptools')
-checkdepends=('python-nose' 'python2-nose' 'python2-unittest2')
-source=("$pkgbase-$pkgver.tar.gz::https://github.com/berkerpeksag/astor/archive/$pkgver.tar.gz")
-sha512sums=('02764e5751e4c4b0ffa83da262b87e0a6bf027461529a99d3ca01a415db0896754f2b3f278e8a28f9bce4972ee7a75eec4eec5ac47d1064e6d6656a007b38a64')
+depends=('python')
+makedepends=('python-setuptools')
+checkdepends=('python-nose')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/berkerpeksag/astor/archive/$pkgver.tar.gz"
+        string-newline.patch)
+sha512sums=('02764e5751e4c4b0ffa83da262b87e0a6bf027461529a99d3ca01a415db0896754f2b3f278e8a28f9bce4972ee7a75eec4eec5ac47d1064e6d6656a007b38a64'
+            'ad977606c1b0374dccece65a9743e875e250e86d923c987eee7babb09f1209a874a7b447f253e1666364da32e309579d261ac70cf32b3d909c9fe78501b19cb8')
 
 prepare() {
-  cp -a astor-$pkgver{,-py2}
+  patch -d astor-$pkgver -p1 -i ../string-newline.patch
 }
 
 build() {
-  cd "$srcdir"/astor-$pkgver
+  cd astor-$pkgver
   python setup.py build
-
-  cd "$srcdir"/astor-$pkgver-py2
-  python2 setup.py build
 }
 
 check() {
-  # https://github.com/berkerpeksag/astor/issues/89
-  cd "$srcdir"/astor-$pkgver
-  nosetests3 || warning "Tests failed"
-
-  cd "$srcdir"/astor-$pkgver-py2
-  nosetests2
+  cd astor-$pkgver
+  nosetests3 || warning "https://github.com/berkerpeksag/astor/issues/124"
 }
 
-package_python-astor() {
-  depends=('python')
-
+package() {
   cd astor-$pkgver
   python setup.py install --root="$pkgdir" --optimize=1
   install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
 }
-
-package_python2-astor() {
-  depends=('python2')
-
-  cd astor-$pkgver-py2
-  python2 setup.py install --root="$pkgdir" --optimize=1
-  install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
-}

Added: string-newline.patch
===================================================================
--- string-newline.patch	                        (rev 0)
+++ string-newline.patch	2019-02-19 19:38:05 UTC (rev 434582)
@@ -0,0 +1,56 @@
+commit 33f0e57bc84f0cd5cdf994127d81c99f2a23f659
+Author: Felix Yan <felixonmars at archlinux.org>
+Date:   Wed Feb 20 01:56:35 2019 +0800
+
+    Fix string parsing with newline
+    
+    When looping over a joined str, if a node is ast.Str and the value is
+    just a newline "\n", the write() function adds an additional indentation
+    after it, which fails to represent the original string. By calling
+    self.result.append() here directly the issue is resolved.
+    
+    The added test could show the issue. With code_gen unmodifed, it fails
+    with the following error:
+    
+    ```
+    AssertionError: "if 1:\n    x = f'{host}\\n\\t{port}\\n    '" != "if
+    1:\n    x = f'{host}\\n\\t{port}\\n'"
+      if 1:
+          -     x = f'{host}\n\t{port}\n    '?
+          ----
+          +     x = f'{host}\n\t{port}\n'
+    ```
+    
+    Which is exactly the problem.
+    
+    This fixes parsing issues with many of Python 3.7's stdlib.
+
+diff --git a/astor/code_gen.py b/astor/code_gen.py
+index 157d2cc..453d108 100644
+--- a/astor/code_gen.py
++++ b/astor/code_gen.py
+@@ -566,7 +566,7 @@ class SourceGenerator(ExplicitNodeVisitor):
+             def recurse(node):
+                 for value in node.values:
+                     if isinstance(value, ast.Str):
+-                        self.write(value.s)
++                        self.result.append(value.s)
+                     elif isinstance(value, ast.FormattedValue):
+                         with self.delimit('{}'):
+                             self.visit(value.value)
+diff --git a/tests/test_code_gen.py b/tests/test_code_gen.py
+index 3a8be7b..0db4279 100644
+--- a/tests/test_code_gen.py
++++ b/tests/test_code_gen.py
+@@ -516,6 +516,11 @@ class CodegenTestCase(unittest.TestCase, Comparisons):
+         x = f"""{host}\n\t{port}\n"""
+         '''
+         self.assertSrcRoundtripsGtVer(source, (3, 6))
++        source = '''
++        if 1:
++            x = f'{host}\\n\\t{port}\\n'
++        '''
++        self.assertSrcRoundtripsGtVer(source, (3, 6))
+ 
+     def test_docstring_function(self):
+         source = '''



More information about the arch-commits mailing list