git: da41a4731a0c - main - graphics/py-png: Fix build with setuptools 58.0.0+

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Mon, 25 Oct 2021 16:05:14 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=da41a4731a0c8596688193f2227d04fc76e2c844

commit da41a4731a0c8596688193f2227d04fc76e2c844
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2021-10-25 15:15:13 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2021-10-25 15:58:08 +0000

    graphics/py-png: Fix build with setuptools 58.0.0+
    
    With hat:       python
---
 graphics/py-png/files/patch-code-png.py | 201 ++++++++++++++++++++++++++++++++
 graphics/py-png/files/patch-setup.py    |  11 ++
 2 files changed, 212 insertions(+)

diff --git a/graphics/py-png/files/patch-code-png.py b/graphics/py-png/files/patch-code-png.py
new file mode 100644
index 000000000000..e53a370ee772
--- /dev/null
+++ b/graphics/py-png/files/patch-code-png.py
@@ -0,0 +1,201 @@
+--- code/png.py.orig	2014-05-27 07:33:54 UTC
++++ code/png.py
+@@ -143,11 +143,12 @@ And now, my famous members
+ """
+ 
+ # http://www.python.org/doc/2.2.3/whatsnew/node5.html
+-from __future__ import generators
+ 
++
+ __version__ = "0.0.17"
+ 
+ from array import array
++from functools import reduce
+ try: # See :pyver:old
+     import itertools
+ except ImportError:
+@@ -188,7 +189,7 @@ _adam7 = ((0, 0, 8, 8),
+ 
+ def group(s, n):
+     # See http://www.python.org/doc/2.6/library/functions.html#zip
+-    return zip(*[iter(s)]*n)
++    return list(zip(*[iter(s)]*n))
+ 
+ def isarray(x):
+     """Same as ``isinstance(x, array)`` except on Python 2.2, where it
+@@ -746,15 +747,15 @@ class Writer:
+                 a.extend([0]*int(extra))
+                 # Pack into bytes
+                 l = group(a, spb)
+-                l = map(lambda e: reduce(lambda x,y:
+-                                           (x << self.bitdepth) + y, e), l)
++                l = [reduce(lambda x,y:
++                                           (x << self.bitdepth) + y, e) for e in l]
+                 data.extend(l)
+         if self.rescale:
+             oldextend = extend
+             factor = \
+               float(2**self.rescale[1]-1) / float(2**self.rescale[0]-1)
+             def extend(sl):
+-                oldextend(map(lambda x: int(round(factor*x)), sl))
++                oldextend([int(round(factor*x)) for x in sl])
+ 
+         # Build the first row, testing mostly to see if we need to
+         # changed the extend function to cope with NumPy integer types
+@@ -769,7 +770,7 @@ class Writer:
+         # :todo: Certain exceptions in the call to ``.next()`` or the
+         # following try would indicate no row data supplied.
+         # Should catch.
+-        i,row = enumrows.next()
++        i,row = next(enumrows)
+         try:
+             # If this fails...
+             extend(row)
+@@ -779,7 +780,7 @@ class Writer:
+             # types, there are probably lots of other, unknown, "nearly"
+             # int types it works for.
+             def wrapmapint(f):
+-                return lambda sl: f(map(int, sl))
++                return lambda sl: f(list(map(int, sl)))
+             extend = wrapmapint(extend)
+             del wrapmapint
+             extend(row)
+@@ -1225,7 +1226,7 @@ def from_array(a, mode=None, info={}):
+     # first row, which requires that we take a copy of its iterator.
+     # We may also need the first row to derive width and bitdepth.
+     a,t = itertools.tee(a)
+-    row = t.next()
++    row = next(t)
+     del t
+     try:
+         row[0][0]
+@@ -1628,12 +1629,12 @@ class Reader:
+             spb = 8//self.bitdepth
+             out = array('B')
+             mask = 2**self.bitdepth - 1
+-            shifts = map(self.bitdepth.__mul__, reversed(range(spb)))
++            shifts = list(map(self.bitdepth.__mul__, reversed(list(range(spb)))))
+             for o in raw:
+-                out.extend(map(lambda i: mask&(o>>i), shifts))
++                out.extend([mask&(o>>i) for i in shifts])
+             return out[:width]
+ 
+-        return itertools.imap(asvalues, rows)
++        return map(asvalues, rows)
+ 
+     def serialtoflat(self, bytes, width=None):
+         """Convert serial format (byte stream) pixel data to flat row
+@@ -1653,7 +1654,7 @@ class Reader:
+         spb = 8//self.bitdepth
+         out = array('B')
+         mask = 2**self.bitdepth - 1
+-        shifts = map(self.bitdepth.__mul__, reversed(range(spb)))
++        shifts = list(map(self.bitdepth.__mul__, reversed(list(range(spb)))))
+         l = width
+         for o in bytes:
+             out.extend([(mask&(o>>s)) for s in shifts][:l])
+@@ -1884,7 +1885,7 @@ class Reader:
+             while True:
+                 try:
+                     type, data = self.chunk(lenient=lenient)
+-                except ValueError, e:
++                except ValueError as e:
+                     raise ChunkError(e.args[0])
+                 if type == 'IEND':
+                     # http://www.w3.org/TR/PNG/#11IEND
+@@ -1922,7 +1923,7 @@ class Reader:
+             arraycode = 'BH'[self.bitdepth>8]
+             # Like :meth:`group` but producing an array.array object for
+             # each row.
+-            pixels = itertools.imap(lambda *row: array(arraycode, row),
++            pixels = map(lambda *row: array(arraycode, row),
+                        *[iter(self.deinterlace(raw))]*self.width*self.planes)
+         else:
+             pixels = self.iterboxed(self.iterstraight(raw))
+@@ -1977,7 +1978,7 @@ class Reader:
+         if self.trns or alpha == 'force':
+             trns = array('B', self.trns or '')
+             trns.extend([255]*(len(plte)-len(trns)))
+-            plte = map(operator.add, plte, group(trns, 1))
++            plte = list(map(operator.add, plte, group(trns, 1)))
+         return plte
+ 
+     def asDirect(self):
+@@ -2034,7 +2035,7 @@ class Reader:
+             plte = self.palette()
+             def iterpal(pixels):
+                 for row in pixels:
+-                    row = map(plte.__getitem__, row)
++                    row = list(map(plte.__getitem__, row))
+                     yield array('B', itertools.chain(*row))
+             pixels = iterpal(pixels)
+         elif self.trns:
+@@ -2059,11 +2060,11 @@ class Reader:
+                     # True/False to 0/maxval (by multiplication),
+                     # and add it as the extra channel.
+                     row = group(row, planes)
+-                    opa = map(it.__ne__, row)
+-                    opa = map(maxval.__mul__, opa)
+-                    opa = zip(opa) # convert to 1-tuples
++                    opa = list(map(it.__ne__, row))
++                    opa = list(map(maxval.__mul__, opa))
++                    opa = list(zip(opa)) # convert to 1-tuples
+                     yield array(typecode,
+-                      itertools.chain(*map(operator.add, row, opa)))
++                      itertools.chain(*list(map(operator.add, row, opa))))
+             pixels = itertrns(pixels)
+         targetbitdepth = None
+         if self.sbit:
+@@ -2081,7 +2082,7 @@ class Reader:
+             meta['bitdepth'] = targetbitdepth
+             def itershift(pixels):
+                 for row in pixels:
+-                    yield map(shift.__rrshift__, row)
++                    yield list(map(shift.__rrshift__, row))
+             pixels = itershift(pixels)
+         return x,y,pixels,meta
+ 
+@@ -2098,7 +2099,7 @@ class Reader:
+         factor = float(maxval)/float(sourcemaxval)
+         def iterfloat():
+             for row in pixels:
+-                yield map(factor.__mul__, row)
++                yield list(map(factor.__mul__, row))
+         return x,y,iterfloat(),info
+ 
+     def _as_rescale(self, get, targetbitdepth):
+@@ -2111,7 +2112,7 @@ class Reader:
+         meta['bitdepth'] = targetbitdepth
+         def iterscale():
+             for row in pixels:
+-                yield map(lambda x: int(round(x*factor)), row)
++                yield [int(round(x*factor)) for x in row]
+         if maxval == targetmaxval:
+             return width, height, pixels, meta
+         else:
+@@ -2312,7 +2313,7 @@ except TypeError:
+         # Expect to get here on Python 2.2
+         def array(typecode, init=()):
+             if type(init) == str:
+-                return map(ord, init)
++                return list(map(ord, init))
+             return list(init)
+ 
+ # Further hacks to get it limping along on Python 2.2
+@@ -2711,7 +2712,7 @@ def _main(argv):
+         # care about TUPLTYPE.
+         greyscale = depth <= 2
+         pamalpha = depth in (2,4)
+-        supported = map(lambda x: 2**x-1, range(1,17))
++        supported = [2**x-1 for x in range(1,17)]
+         try:
+             mi = supported.index(maxval)
+         except ValueError:
+@@ -2748,5 +2749,5 @@ def _main(argv):
+ if __name__ == '__main__':
+     try:
+         _main(sys.argv)
+-    except Error, e:
+-        print >>sys.stderr, e
++    except Error as e:
++        print(e, file=sys.stderr)
diff --git a/graphics/py-png/files/patch-setup.py b/graphics/py-png/files/patch-setup.py
new file mode 100644
index 000000000000..b91bd4aad3c3
--- /dev/null
+++ b/graphics/py-png/files/patch-setup.py
@@ -0,0 +1,11 @@
+--- setup.py.orig	2014-05-27 07:33:54 UTC
++++ setup.py
+@@ -74,8 +74,6 @@ if __name__ == '__main__':
+     try:
+         # http://peak.telecommunity.com/DevCenter/setuptools#basic-use
+         from setuptools import setup
+-        # distribute is probably installed, so use_2to3 should work
+-        conf['use_2to3'] = True
+     except ImportError:
+         # http://docs.python.org/release/2.4.4/dist/setup-script.html
+         from distutils.core import setup