<pre style='margin:0'>
Marius Schamschula (Schamschula) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/a7c3f012de7323e0f7c25c6dd1dd14cd82134b1b">https://github.com/macports/macports-ports/commit/a7c3f012de7323e0f7c25c6dd1dd14cd82134b1b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new a7c3f012de7 py-imagecodecs: update to 2023.3.16 w/o jpeg 12, 16 and lossless code
</span>a7c3f012de7 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit a7c3f012de7323e0f7c25c6dd1dd14cd82134b1b
</span>Author: Marius Schamschula <mschamschula@gmail.com>
AuthorDate: Sat Apr 29 16:30:36 2023 -0500

<span style='display:block; white-space:pre;color:#404040;'>    py-imagecodecs: update to 2023.3.16 w/o jpeg 12, 16 and lossless code
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    re-enable py-cython-devel support
</span><span style='display:block; white-space:pre;color:#404040;'>    revision bump due to changed dependencies and features
</span>---
 python/py-imagecodecs/Portfile                     |  18 ++-
 .../files/patch-imagecodecs-_jpeg8.pyx.diff        | 156 +++++++++++++++++++++
 2 files changed, 168 insertions(+), 6 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-imagecodecs/Portfile b/python/py-imagecodecs/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 5b49556818a..001f69b79b5 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-imagecodecs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-imagecodecs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,8 +4,8 @@ PortSystem          1.0
</span> PortGroup           python 1.0
 
 name                py-imagecodecs
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             2023.1.23
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             2023.3.16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> epoch               1
 
 categories-append   graphics
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,9 +17,9 @@ long_description    {*}${description}
</span> 
 homepage            https://www.lfd.uci.edu/~gohlke/
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  d07a3f16508e370ba3e04621994360b31e72f25c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  1b4591839a2f5c90467e50ebe54117cbd9be42c18864abdf85fc7743223ac5b2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    14814693
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  d6aa717b57501152a1d196429cea922da753ac43 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  e39c2a63f7f5b9bee0ba4961db8c1e7f2518ce07d2fd10a56624d17f1407efc1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    22452941
</span> 
 python.versions     37 38 39 310 311
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,7 +33,7 @@ if {${os.platform} eq "darwin" && ${os.major} < 17} {
</span> 
 if {${name} ne ${subport}} {
     depends_build-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python.version}-cython \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    path:bin/cython-${python.branch}:py${python.version}-cython \
</span>                     port:py${python.version}-setuptools
 
      depends_lib-append \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -56,6 +56,12 @@ if {${name} ne ${subport}} {
</span>                     port:zopfli \
                     port:zstd
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # disable 12-bit, 16-bit, and lossless code paths ( only)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # remove when libjpeg-turbo 3 is out of beta
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # see: https://github.com/conda-forge/imagecodecs-feedstock/pull/79#issuecomment-1492667986
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # see: https://github.com/macports/macports-ports/commit/d3ad9afba4a88e09ed128dc87ccb401e64bc665b
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      patch-imagecodecs-_jpeg8.pyx.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     post-patch {
         reinplace "s|%PREFIX%|${prefix}|g" \
             ${worksrcpath}/setup.py
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-imagecodecs/files/patch-imagecodecs-_jpeg8.pyx.diff b/python/py-imagecodecs/files/patch-imagecodecs-_jpeg8.pyx.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3852cddbfd3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-imagecodecs/files/patch-imagecodecs-_jpeg8.pyx.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,156 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- imagecodecs/_jpeg8.pyx.orig    2023-03-16 19:37:17.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ imagecodecs/_jpeg8.pyx 2023-04-29 16:11:14.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -124,8 +124,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         my_error_mgr err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_compress_struct cinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         JSAMPROW rowpointer8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        J12SAMPROW rowpointer12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        J16SAMPROW rowpointer16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         J_COLOR_SPACE in_color_space = JCS_UNKNOWN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         J_COLOR_SPACE jpeg_color_space = JCS_UNKNOWN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         unsigned long outsize = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -139,7 +137,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         int predictor_selection_value = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if not (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        (src.dtype == numpy.uint8 or src.dtype == numpy.uint16)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        src.dtype == numpy.uint8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         and src.ndim in (2, 3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # src.nbytes < 2 ** 31 and  # limit to 2 GB
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         and samples in (1, 3, 4)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -148,21 +146,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         raise ValueError('invalid data shape, strides, or dtype')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if lossless:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        predictor_selection_value = 1 if predictor is None else predictor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if bitspersample is not None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            bitspersample not in (8, 12, 16)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            or src.itemsize == 1 and bitspersample > 8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        ):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            raise ValueError(f'invalid bitspersample {bitspersample}')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        data_precision = bitspersample
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    # if validate and bitspersample == 12 and not _check_range(src):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    #     # values larger than 12-bit cause segfault
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    #     raise ValueError('all data values must be < 4096')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if colorspace is not None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         in_color_space = _jcs_colorspace(colorspace)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if samples not in _jcs_colorspace_samples(in_color_space):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -235,7 +218,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cinfo.image_height = <JDIMENSION> src.shape[0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cinfo.image_width = <JDIMENSION> src.shape[1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         cinfo.input_components = samples
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        cinfo.data_precision = data_precision
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if in_color_space != JCS_UNKNOWN:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             cinfo.in_color_space = in_color_space
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -246,43 +228,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_mem_dest(&cinfo, &outbuffer, &outsize)  # must call after defaults
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_set_quality(&cinfo, quality, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if predictor_selection_value > 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            jpeg_enable_lossless(&cinfo, predictor_selection_value, 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if smoothing_factor >= 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.smoothing_factor = smoothing_factor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if optimize_coding >= 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.optimize_coding = <boolean> optimize_coding
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if h_samp_factor != 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.comp_info[0].h_samp_factor = h_samp_factor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.comp_info[0].v_samp_factor = v_samp_factor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.comp_info[1].h_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.comp_info[1].v_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.comp_info[2].h_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                cinfo.comp_info[2].v_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if smoothing_factor >= 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.smoothing_factor = smoothing_factor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if optimize_coding >= 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.optimize_coding = <boolean> optimize_coding
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if h_samp_factor != 0:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.comp_info[0].h_samp_factor = h_samp_factor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.comp_info[0].v_samp_factor = v_samp_factor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.comp_info[1].h_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.comp_info[1].v_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.comp_info[2].h_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            cinfo.comp_info[2].v_samp_factor = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # TODO: add option to use or return JPEG tables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_start_compress(&cinfo, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if cinfo.data_precision == 8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            while cinfo.next_scanline < cinfo.image_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                rowpointer8 = <JSAMPROW> (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    <char*> src.data + cinfo.next_scanline * rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                jpeg_write_scanlines(&cinfo, &rowpointer8, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        elif cinfo.data_precision == 12:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            while cinfo.next_scanline < cinfo.image_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                rowpointer12 = <J12SAMPROW> (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    <char*> src.data + cinfo.next_scanline * rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                jpeg12_write_scanlines(&cinfo, &rowpointer12, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        elif cinfo.data_precision == 16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            while cinfo.next_scanline < cinfo.image_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                rowpointer16 = <J16SAMPROW> (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    <char*> src.data + cinfo.next_scanline * rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                jpeg16_write_scanlines(&cinfo, &rowpointer16, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        while cinfo.next_scanline < cinfo.image_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            rowpointer8 = <JSAMPROW> (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                <char*> src.data + cinfo.next_scanline * rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            jpeg_write_scanlines(&cinfo, &rowpointer8, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_finish_compress(&cinfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_destroy_compress(&cinfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -320,8 +286,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         my_error_mgr err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_decompress_struct cinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         JSAMPROW rowpointer8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        J12SAMPROW rowpointer12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        J16SAMPROW rowpointer16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         J_COLOR_SPACE jpeg_color_space
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         J_COLOR_SPACE out_color_space
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         JDIMENSION width = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -398,31 +362,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # TODO: allow strides
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if cinfo.data_precision <= 8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                out = _create_array(out, shape, numpy.uint8)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                out = _create_array(out, shape, numpy.uint16)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            out = _create_array(out, shape, numpy.uint8)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             dst = out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             dstsize = dst.nbytes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             rowstride = dst.strides[0] // dst.itemsize
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         memset(<void*> dst.data, 0, dstsize)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if cinfo.data_precision <= 8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            rowpointer8 = <JSAMPROW> dst.data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            while cinfo.output_scanline < cinfo.output_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                jpeg_read_scanlines(&cinfo, &rowpointer8, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                rowpointer8 += rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        elif cinfo.data_precision == 12:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            rowpointer12 = <J12SAMPROW> dst.data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            while cinfo.output_scanline < cinfo.output_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                jpeg12_read_scanlines(&cinfo, &rowpointer12, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                rowpointer12 += rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            # elif cinfo.data_precision == 16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            rowpointer16 = <J16SAMPROW> dst.data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            while cinfo.output_scanline < cinfo.output_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                jpeg16_read_scanlines(&cinfo, &rowpointer16, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                rowpointer16 += rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        rowpointer8 = <JSAMPROW> dst.data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        while cinfo.output_scanline < cinfo.output_height:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            jpeg_read_scanlines(&cinfo, &rowpointer8, 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            rowpointer8 += rowstride
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_finish_decompress(&cinfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         jpeg_destroy_decompress(&cinfo)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>