Compare commits
20 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb86ce9f7b | ||
|
|
7bd31f9c20 | ||
|
|
daf31ab78a | ||
|
|
afd10ca9bf | ||
|
|
5e563f70ab | ||
|
|
a8f22f1896 | ||
|
|
f05456d782 | ||
|
|
aec925fe8a | ||
|
|
00f357ba2c | ||
|
|
7a525cb620 |
||
|
|
8327bbdad6 |
||
|
|
430a462944 | ||
|
|
6d3e8893c8 | ||
|
|
6e76669e4b | ||
|
|
480c388682 | ||
|
|
c2178e71d0 | ||
|
|
a5d4279563 | ||
|
|
82c2ac0d3a | ||
|
|
422d0bdfff | ||
|
|
e055c1366d |
7 changed files with 370 additions and 489 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1 +1,6 @@
|
|||
/imagecodecs-2022.9.26.tar.gz
|
||||
/imagecodecs-2023.1.23.tar.gz
|
||||
/imagecodecs-2024.9.22.tar.gz
|
||||
/imagecodecs-2024.12.30.tar.gz
|
||||
/imagecodecs-2025.3.30.tar.gz
|
||||
/imagecodecs-2025.8.2.tar.gz
|
||||
|
|
|
|||
50
changelog
Normal file
50
changelog
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
* Wed Aug 06 2025 Orion Poplawski <orion@nwra.com> - 2025.3.30-1
|
||||
- Update to 2025.3.30
|
||||
|
||||
* Wed Aug 06 2025 Orion Poplawski <orion@nwra.com> - 2024.12.30-1
|
||||
- Update to 2024.12.30
|
||||
|
||||
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2024.9.22-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Fri Jun 06 2025 Python Maint <python-maint@redhat.com> - 2024.9.22-2
|
||||
- Rebuilt for Python 3.14
|
||||
|
||||
* Wed Jan 22 2025 Sandro <devel@penguinpee.nl> - 2024.9.22-1
|
||||
- Update to 2024.9.22
|
||||
- Add support for NumPy 2.x
|
||||
- Close RHBZ#2341164
|
||||
|
||||
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2023.1.23-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Tue Sep 10 2024 Zbigniew Jedrzejewski-Szmek <zbyszek@in.waw.pl> - 2023.1.23-4
|
||||
- Rebuilt for blosc2-2.15.1-1
|
||||
|
||||
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2023.1.23-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Mon Jun 17 2024 Python Maint <python-maint@redhat.com> - 2023.1.23-2
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Sun Apr 21 2024 Orion Poplawski <orion@nwra.com> - 2023.1.23-1
|
||||
- Update to 2023.1.23
|
||||
- Add more test dependencies
|
||||
|
||||
* Sun Apr 21 2024 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2022.9.26-6
|
||||
- Rebuilt for blosc2 2.14.4
|
||||
|
||||
* Wed Jan 31 2024 František Zatloukal <fzatlouk@redhat.com> - 2022.9.26-5
|
||||
- Rebuilt for libavif 1.0.3
|
||||
|
||||
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2022.9.26-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2022.9.26-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2022.9.26-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Fri Jun 02 2023 Orion Poplawski <orion@nwra.com> - 2022.9.26-1
|
||||
- Initial Fedora package
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
import platform
|
||||
|
||||
def customize_build(EXTENSIONS, OPTIONS):
|
||||
"""Customize build for Fedora"""
|
||||
|
||||
|
|
@ -5,12 +7,13 @@ def customize_build(EXTENSIONS, OPTIONS):
|
|||
del EXTENSIONS['bitshuffle'] # Uses 3rdparty source
|
||||
del EXTENSIONS['brunsli'] # not available on Fedora
|
||||
del EXTENSIONS['jetraw'] # commercial
|
||||
del EXTENSIONS['jpeg12'] # jpeg12 requires custom build
|
||||
del EXTENSIONS['jpegls'] # Fedora's charls is too old at the moment
|
||||
del EXTENSIONS['jpegsof3'] # Uses 3rdparty source
|
||||
del EXTENSIONS['jpegxl'] # requires static linking?
|
||||
del EXTENSIONS['ljpeg'] # Uses 3rdparty source
|
||||
del EXTENSIONS['lz4f'] # requires static linking
|
||||
del EXTENSIONS['lzf'] # Uses 3rdparty source
|
||||
del EXTENSIONS['lzham'] # Uses 3rdparty source
|
||||
del EXTENSIONS['mozjpeg'] # Win32 only
|
||||
del EXTENSIONS['pglz'] # Uses 3rdparty source
|
||||
del EXTENSIONS['qoi'] # Uses 3rdparty source
|
||||
|
|
@ -25,3 +28,18 @@ def customize_build(EXTENSIONS, OPTIONS):
|
|||
del EXTENSIONS['jpeg2k'] # Uses 3rdparty source to use private function - https://github.com/cgohlke/imagecodecs/issues/77
|
||||
EXTENSIONS['jpegxr']['include_dirs'].append('/usr/include/jxrlib')
|
||||
EXTENSIONS['zopfli']['include_dirs'].append('/usr/include/zopfli')
|
||||
|
||||
if platform.machine() == 's390x':
|
||||
del EXTENSIONS['lzfse'] # Not supported on big-endian
|
||||
# New or changed in 2024.9.22
|
||||
del EXTENSIONS['bcn'] # not available in Fedora
|
||||
del EXTENSIONS['h5checksum'] # uses 3rdparty source
|
||||
EXTENSIONS['jpeg8']['sources'] = [] # requires libjpeg-turbo v3
|
||||
del EXTENSIONS['jpegxs'] # not available on Fedora
|
||||
del EXTENSIONS['lzo'] # Uses 3rdparty source
|
||||
del EXTENSIONS['pcodec'] # Uses 3rdparty source
|
||||
del EXTENSIONS['quantize'] # Uses 3rdparty source
|
||||
del EXTENSIONS['rcomp'] # Uses 3rdparty source
|
||||
del EXTENSIONS['sperr'] # Uses 3rdparty source
|
||||
del EXTENSIONS['sz3'] # Uses 3rdparty source
|
||||
del EXTENSIONS['ultrahdr'] # Uses 3rdparty source
|
||||
|
|
|
|||
|
|
@ -1,141 +0,0 @@
|
|||
diff -up imagecodecs-2024.1.1/imagecodecs/imagecodecs.py.nobcn imagecodecs-2024.1.1/imagecodecs/imagecodecs.py
|
||||
--- imagecodecs-2024.1.1/imagecodecs/imagecodecs.py.nobcn 2023-12-28 21:05:16.000000000 -0700
|
||||
+++ imagecodecs-2024.1.1/imagecodecs/imagecodecs.py 2024-02-12 21:32:54.460164389 -0700
|
||||
@@ -710,20 +710,6 @@ _MODULES: dict[str, list[str]] = {
|
||||
'cms_check',
|
||||
'cms_version',
|
||||
],
|
||||
- '_bcn': [
|
||||
- 'BCN',
|
||||
- 'BcnError',
|
||||
- 'bcn_encode',
|
||||
- 'bcn_decode',
|
||||
- 'bcn_check',
|
||||
- 'bcn_version',
|
||||
- 'DDS',
|
||||
- 'DdsError',
|
||||
- 'dds_encode',
|
||||
- 'dds_decode',
|
||||
- 'dds_check',
|
||||
- 'dds_version',
|
||||
- ],
|
||||
'_deflate': [
|
||||
'DEFLATE',
|
||||
'DeflateError',
|
||||
diff -up imagecodecs-2024.1.1/setup.py.nobcn imagecodecs-2024.1.1/setup.py
|
||||
diff -up imagecodecs-2024.1.1/imagecodecs/__init__.pyi.nobcn imagecodecs-2024.1.1/imagecodecs/__init__.pyi
|
||||
--- imagecodecs-2024.1.1/imagecodecs/__init__.pyi.nobcn 2023-12-28 13:34:01.000000000 -0700
|
||||
+++ imagecodecs-2024.1.1/imagecodecs/__init__.pyi 2024-02-12 21:35:34.919824196 -0700
|
||||
@@ -378,57 +378,6 @@ def avif_decode(
|
||||
"""Return decoded AVIF image."""
|
||||
|
||||
|
||||
-class BCN:
|
||||
- """BCn codec constants."""
|
||||
-
|
||||
- available: bool
|
||||
- """BCn codec is available."""
|
||||
-
|
||||
- class FORMAT(enum.IntEnum):
|
||||
- """BCn compression format."""
|
||||
-
|
||||
- BC1 = 1 # DXT1
|
||||
- BC2 = 2 # DXT3
|
||||
- BC3 = 3 # DXT5
|
||||
- BC4 = 4 # BC4_UNORM
|
||||
- BC5 = 5 # BC5_UNORM
|
||||
- BC6HU = 6 # BC6H_UF16
|
||||
- BC6HS = -6 # BC6H_SF16
|
||||
- BC7 = 7 # BC7_UNORM
|
||||
-
|
||||
-
|
||||
-class BcnError(RuntimeError):
|
||||
- """BCn codec exceptions."""
|
||||
-
|
||||
-
|
||||
-def bcn_version() -> str:
|
||||
- """Return bcdec library version string."""
|
||||
-
|
||||
-
|
||||
-def bcn_check(data: BytesLike, /) -> None:
|
||||
- """Return whether data is BCn encoded."""
|
||||
-
|
||||
-
|
||||
-def bcn_encode(
|
||||
- data: BytesLike,
|
||||
- /,
|
||||
- *,
|
||||
- out: int | bytearray | None = None,
|
||||
-) -> bytes | bytearray:
|
||||
- """Return BCn encoded data (not implemented)."""
|
||||
-
|
||||
-
|
||||
-def bcn_decode(
|
||||
- data: BytesLike,
|
||||
- format: BCN.FORMAT | int,
|
||||
- /,
|
||||
- shape: tuple[int, ...] | None = None,
|
||||
- *,
|
||||
- out: int | bytearray | memoryview | None = None,
|
||||
-) -> bytes | bytearray:
|
||||
- """Return decoded BCn data."""
|
||||
-
|
||||
-
|
||||
class BITORDER:
|
||||
"""BITORDER codec constants."""
|
||||
|
||||
diff -up imagecodecs-2024.1.1/setup.py.nobcn imagecodecs-2024.1.1/setup.py
|
||||
--- imagecodecs-2024.1.1/setup.py.nobcn 2023-12-28 15:06:07.000000000 -0700
|
||||
+++ imagecodecs-2024.1.1/setup.py 2024-02-12 21:37:26.229282364 -0700
|
||||
@@ -122,10 +122,6 @@ EXTENSIONS = {
|
||||
'aec': ext(libraries=['aec']),
|
||||
'apng': ext(libraries=['png']),
|
||||
'avif': ext(libraries=['avif']),
|
||||
- 'bcn': ext(
|
||||
- include_dirs=['3rdparty/bcdec'],
|
||||
- define_macros=[('BCDEC_STATIC', 1), ('BCDEC_IMPLEMENTATION', 1)],
|
||||
- ),
|
||||
'bitshuffle': ext(
|
||||
sources=[
|
||||
'3rdparty/bitshuffle/bitshuffle_core.c',
|
||||
diff -up imagecodecs-2024.1.1/setup.py.nobcn imagecodecs-2024.1.1/setup.py
|
||||
--- imagecodecs-2024.1.1/setup.py.nobcn 2024-02-12 21:44:36.012054859 -0700
|
||||
+++ imagecodecs-2024.1.1/setup.py 2024-02-12 21:45:05.113176289 -0700
|
||||
@@ -586,6 +586,7 @@ if 'sdist' not in sys.argv:
|
||||
else:
|
||||
customize_build = customize_build_default
|
||||
|
||||
+ print(f'customize_build = {customize_build}')
|
||||
customize_build(EXTENSIONS, OPTIONS)
|
||||
|
||||
|
||||
diff -up imagecodecs-2024.1.1/setup.py.nobcn imagecodecs-2024.1.1/setup.py
|
||||
--- imagecodecs-2024.1.1/setup.py.nobcn 2024-02-12 21:46:16.313473389 -0700
|
||||
+++ imagecodecs-2024.1.1/setup.py 2024-02-12 21:46:30.849534044 -0700
|
||||
@@ -568,23 +568,9 @@ def customize_build_mingw(EXTENSIONS, OP
|
||||
|
||||
if 'sdist' not in sys.argv:
|
||||
# customize builds based on environment
|
||||
- try:
|
||||
- from imagecodecs_distributor_setup import ( # type: ignore
|
||||
- customize_build,
|
||||
- )
|
||||
- except ImportError:
|
||||
- if os.environ.get('COMPUTERNAME', '').startswith('CG-'):
|
||||
- customize_build = customize_build_cgohlke
|
||||
- elif os.environ.get('IMAGECODECS_CIBW', ''):
|
||||
- customize_build = customize_build_cibuildwheel
|
||||
- elif os.environ.get('CONDA_BUILD', ''):
|
||||
- customize_build = customize_build_condaforge
|
||||
- elif shutil.which('port'):
|
||||
- customize_build = customize_build_macports
|
||||
- elif os.name == 'nt' and 'GCC' in sys.version:
|
||||
- customize_build = customize_build_mingw
|
||||
- else:
|
||||
- customize_build = customize_build_default
|
||||
+ from imagecodecs_distributor_setup import ( # type: ignore
|
||||
+ customize_build,
|
||||
+ )
|
||||
|
||||
print(f'customize_build = {customize_build}')
|
||||
customize_build(EXTENSIONS, OPTIONS)
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
diff --git a/imagecodecs/_cms.pyx b/imagecodecs/_cms.pyx
|
||||
index 37f9f12..dc3e778 100644
|
||||
--- a/imagecodecs/_cms.pyx
|
||||
+++ b/imagecodecs/_cms.pyx
|
||||
@@ -942,5 +942,5 @@ cdef void _cms_log_error_handler(
|
||||
cmsContext ContextID,
|
||||
cmsUInt32Number ErrorCode,
|
||||
const char *Text
|
||||
-) with gil:
|
||||
- _log_warning('CMS error: %s', Text.decode().strip())
|
||||
\ No newline at end of file
|
||||
+) noexcept with gil:
|
||||
+ _log_warning('CMS error: %s', Text.decode().strip())
|
||||
diff --git a/imagecodecs/_gif.pyx b/imagecodecs/_gif.pyx
|
||||
index 82f023f..000c5bb 100644
|
||||
--- a/imagecodecs/_gif.pyx
|
||||
+++ b/imagecodecs/_gif.pyx
|
||||
@@ -489,7 +489,7 @@ cdef int gif_input_func(
|
||||
GifFileType* gif,
|
||||
GifByteType* dst,
|
||||
int size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""GIF read callback function."""
|
||||
cdef:
|
||||
memgif_t* memgif = <memgif_t*> gif.UserData
|
||||
@@ -514,7 +514,7 @@ cdef int gif_output_func(
|
||||
GifFileType* gif,
|
||||
const GifByteType* src,
|
||||
int size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""GIF write callback function."""
|
||||
cdef:
|
||||
memgif_t* memgif = <memgif_t*> gif.UserData
|
||||
diff --git a/imagecodecs/_heif.pyx b/imagecodecs/_heif.pyx
|
||||
index 408e36c..41acb6d 100644
|
||||
--- a/imagecodecs/_heif.pyx
|
||||
+++ b/imagecodecs/_heif.pyx
|
||||
@@ -771,7 +771,7 @@ cdef heif_error heif_write_callback(
|
||||
const void* data,
|
||||
size_t size,
|
||||
void* userdata
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""heif_writer callback function."""
|
||||
cdef:
|
||||
output_t* output = <output_t*> userdata
|
||||
diff --git a/imagecodecs/_jpeg8.pyx b/imagecodecs/_jpeg8.pyx
|
||||
index 19b1ce8..5f8bc4e 100644
|
||||
--- a/imagecodecs/_jpeg8.pyx
|
||||
+++ b/imagecodecs/_jpeg8.pyx
|
||||
@@ -393,14 +393,14 @@ ctypedef struct my_error_mgr:
|
||||
jmp_buf setjmp_buffer
|
||||
|
||||
|
||||
-cdef void my_error_exit(jpeg_common_struct* cinfo) nogil:
|
||||
+cdef void my_error_exit(jpeg_common_struct* cinfo) noexcept nogil:
|
||||
cdef:
|
||||
my_error_mgr* error = <my_error_mgr*> deref(cinfo).err
|
||||
|
||||
longjmp(deref(error).setjmp_buffer, 1)
|
||||
|
||||
|
||||
-cdef void my_output_message(jpeg_common_struct* cinfo) nogil:
|
||||
+cdef void my_output_message(jpeg_common_struct* cinfo) noexcept nogil:
|
||||
pass
|
||||
|
||||
|
||||
diff --git a/imagecodecs/_jpegxr.pyx b/imagecodecs/_jpegxr.pyx
|
||||
index 548fcdf..b0cb11f 100644
|
||||
--- a/imagecodecs/_jpegxr.pyx
|
||||
+++ b/imagecodecs/_jpegxr.pyx
|
||||
@@ -378,7 +378,7 @@ def jpegxr_decode(data, index=None, fp2int=False, numthreads=None, out=None):
|
||||
return out
|
||||
|
||||
|
||||
-cdef ERR WriteWS_Memory(WMPStream* pWS, const void* pv, size_t cb) nogil:
|
||||
+cdef ERR WriteWS_Memory(WMPStream* pWS, const void* pv, size_t cb) noexcept nogil:
|
||||
"""Relpacement for WriteWS_Memory to keep track of bytes written."""
|
||||
if pWS.state.buf.cbCur + cb < pWS.state.buf.cbCur:
|
||||
return WMP_errBufferOverflow
|
||||
@@ -395,7 +395,7 @@ cdef ERR WriteWS_Memory(WMPStream* pWS, const void* pv, size_t cb) nogil:
|
||||
return WMP_errSuccess
|
||||
|
||||
|
||||
-cdef ERR WriteWS_Realloc(WMPStream* pWS, const void* pv, size_t cb) nogil:
|
||||
+cdef ERR WriteWS_Realloc(WMPStream* pWS, const void* pv, size_t cb) noexcept nogil:
|
||||
"""Relpacement for WriteWS_Memory to realloc buffers on overflow.
|
||||
|
||||
Only use with buffers allocated by malloc.
|
||||
@@ -431,7 +431,7 @@ cdef ERR WriteWS_Realloc(WMPStream* pWS, const void* pv, size_t cb) nogil:
|
||||
return WMP_errSuccess
|
||||
|
||||
|
||||
-cdef Bool EOSWS_Realloc(WMPStream* pWS) nogil:
|
||||
+cdef Bool EOSWS_Realloc(WMPStream* pWS) noexcept nogil:
|
||||
"""Relpacement for EOSWS_Memory."""
|
||||
# return pWS.state.buf.cbBuf <= pWS.state.buf.cbCur
|
||||
return 1
|
||||
diff --git a/imagecodecs/_png.pyx b/imagecodecs/_png.pyx
|
||||
index ce2b597..bdb0f23 100644
|
||||
--- a/imagecodecs/_png.pyx
|
||||
+++ b/imagecodecs/_png.pyx
|
||||
@@ -328,14 +328,14 @@ def png_decode(data, index=None, numthreads=None, out=None):
|
||||
cdef void png_error_callback(
|
||||
png_structp png_ptr,
|
||||
png_const_charp msg
|
||||
-) with gil:
|
||||
+) noexcept with gil:
|
||||
raise PngError(msg.decode().strip())
|
||||
|
||||
|
||||
cdef void png_warn_callback(
|
||||
png_structp png_ptr,
|
||||
png_const_charp msg
|
||||
-) with gil:
|
||||
+) noexcept with gil:
|
||||
_log_warning('PNG warning: %s', msg.decode().strip())
|
||||
|
||||
|
||||
@@ -350,7 +350,7 @@ cdef void png_read_data_fn(
|
||||
png_structp png_ptr,
|
||||
png_bytep dst,
|
||||
png_size_t size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""PNG read callback function."""
|
||||
cdef:
|
||||
mempng_t* mempng = <mempng_t*> png_get_io_ptr(png_ptr)
|
||||
@@ -373,7 +373,7 @@ cdef void png_write_data_fn(
|
||||
png_structp png_ptr,
|
||||
png_bytep src,
|
||||
png_size_t size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""PNG write callback function."""
|
||||
cdef:
|
||||
mempng_t* mempng = <mempng_t*> png_get_io_ptr(png_ptr)
|
||||
@@ -404,7 +404,7 @@ cdef void png_write_data_fn(
|
||||
mempng.offset += size
|
||||
|
||||
|
||||
-cdef void png_output_flush_fn(png_structp png_ptr) nogil:
|
||||
+cdef void png_output_flush_fn(png_structp png_ptr) noexcept nogil:
|
||||
"""PNG flush callback function."""
|
||||
pass
|
||||
|
||||
diff --git a/imagecodecs/_tiff.pyx b/imagecodecs/_tiff.pyx
|
||||
index 488e8f5..32fc847 100644
|
||||
--- a/imagecodecs/_tiff.pyx
|
||||
+++ b/imagecodecs/_tiff.pyx
|
||||
@@ -821,7 +821,7 @@ cdef memtif_t* memtif_open(
|
||||
return memtif
|
||||
|
||||
|
||||
-cdef memtif_t* memtif_new(toff_t size, toff_t inc) nogil:
|
||||
+cdef memtif_t* memtif_new(toff_t size, toff_t inc) noexcept nogil:
|
||||
"""Return new memtif with new buffer for writing."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> malloc(sizeof(memtif_t))
|
||||
@@ -842,7 +842,7 @@ cdef memtif_t* memtif_new(toff_t size, toff_t inc) nogil:
|
||||
return memtif
|
||||
|
||||
|
||||
-cdef void memtif_del(memtif_t* memtif) nogil:
|
||||
+cdef void memtif_del(memtif_t* memtif) noexcept nogil:
|
||||
"""Delete memtif."""
|
||||
if memtif != NULL:
|
||||
if memtif.owner:
|
||||
@@ -854,7 +854,7 @@ cdef tsize_t memtif_TIFFReadProc(
|
||||
thandle_t handle,
|
||||
void* buf,
|
||||
tmsize_t size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""Callback function to read from memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> handle
|
||||
@@ -870,7 +870,7 @@ cdef tmsize_t memtif_TIFFWriteProc(
|
||||
thandle_t handle,
|
||||
void* buf,
|
||||
tmsize_t size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""Callback function to write to memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> handle
|
||||
@@ -897,7 +897,7 @@ cdef toff_t memtif_TIFFSeekProc(
|
||||
thandle_t handle,
|
||||
toff_t off,
|
||||
int whence
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""Callback function to seek to memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> handle
|
||||
@@ -946,7 +946,7 @@ cdef toff_t memtif_TIFFSeekProc(
|
||||
return memtif.fpos
|
||||
|
||||
|
||||
-cdef int memtif_TIFFCloseProc(thandle_t handle) nogil:
|
||||
+cdef int memtif_TIFFCloseProc(thandle_t handle) noexcept nogil:
|
||||
"""Callback function to close memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> handle
|
||||
@@ -955,7 +955,7 @@ cdef int memtif_TIFFCloseProc(thandle_t handle) nogil:
|
||||
return 0
|
||||
|
||||
|
||||
-cdef toff_t memtif_TIFFSizeProc(thandle_t handle) nogil:
|
||||
+cdef toff_t memtif_TIFFSizeProc(thandle_t handle) noexcept nogil:
|
||||
"""Callback function to return size of memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> handle
|
||||
@@ -967,7 +967,7 @@ cdef int memtif_TIFFMapFileProc(
|
||||
thandle_t handle,
|
||||
void** base,
|
||||
toff_t* size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""Callback function to map memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif = <memtif_t*> handle
|
||||
@@ -981,7 +981,7 @@ cdef void memtif_TIFFUnmapFileProc(
|
||||
thandle_t handle,
|
||||
void* base,
|
||||
toff_t size
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""Callback function to unmap memtif."""
|
||||
return
|
||||
|
||||
@@ -991,7 +991,7 @@ cdef void tif_error_handler(
|
||||
const char* module,
|
||||
const char* fmt,
|
||||
va_list args
|
||||
-) nogil:
|
||||
+) noexcept nogil:
|
||||
"""Callback function to write libtiff error message to memtif."""
|
||||
cdef:
|
||||
memtif_t* memtif
|
||||
@@ -1010,7 +1010,7 @@ cdef void tif_warning_handler(
|
||||
const char* module,
|
||||
const char* fmt,
|
||||
va_list args
|
||||
-) with gil:
|
||||
+) noexcept with gil:
|
||||
"""Callback function to output libtiff warning message to logging."""
|
||||
cdef:
|
||||
char msg[80]
|
||||
|
|
@ -1,10 +1,8 @@
|
|||
%global srcname imagecodecs
|
||||
|
||||
Name: python-imagecodecs
|
||||
# Imagecodecs 2023.3.16 requires libjpeg-turbo 3, which is currently in beta:
|
||||
# Imagecodecs 2023.1.23-2022.12.22 requires libtiff 4.5.0
|
||||
Version: 2022.9.26
|
||||
Release: 6%{?dist}
|
||||
Version: 2025.8.2
|
||||
Release: %autorelease
|
||||
Summary: Image transformation, compression, and decompression codecs
|
||||
|
||||
License: BSD-3-Clause
|
||||
|
|
@ -12,7 +10,8 @@ URL: https://pypi.org/project/imagecodecs/
|
|||
Source: %{pypi_source}
|
||||
# Build configuration
|
||||
Source1: imagecodecs_distributor_setup.py
|
||||
Patch0: python-imagecodecs-noexcept.patch
|
||||
|
||||
ExcludeArch: %{ix86}
|
||||
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-Cython
|
||||
|
|
@ -22,19 +21,23 @@ BuildRequires: blosc2-devel
|
|||
BuildRequires: bzip2-devel
|
||||
BuildRequires: cfitsio-devel
|
||||
BuildRequires: CharLS-devel
|
||||
BuildRequires: brotli-devel
|
||||
BuildRequires: giflib-devel
|
||||
BuildRequires: jxrlib-devel
|
||||
BuildRequires: lcms2-devel
|
||||
BuildRequires: libaec-devel
|
||||
BuildRequires: libavif-devel
|
||||
BuildRequires: libavif-devel >= 1.3.0
|
||||
BuildRequires: libdeflate-devel
|
||||
BuildRequires: libheif-devel
|
||||
BuildRequires: libjpeg-turbo-devel
|
||||
BuildRequires: libjpeg-turbo-devel >= 3
|
||||
BuildRequires: liblerc-devel
|
||||
BuildRequires: libpng-devel
|
||||
BuildRequires: libtiff-devel
|
||||
BuildRequires: libtiff-devel >= 4.5.0
|
||||
BuildRequires: libzstd-devel
|
||||
BuildRequires: lz4-devel
|
||||
%ifnarch s390x
|
||||
BuildRequires: lzfse-devel
|
||||
%endif
|
||||
# Uses 3rdparty source to use private function - https://github.com/cgohlke/imagecodecs/issues/77
|
||||
#BuildRequires: openjpeg2-devel
|
||||
BuildRequires: snappy-devel
|
||||
|
|
@ -43,7 +46,19 @@ BuildRequires: zfp-devel
|
|||
BuildRequires: zlib-ng-devel
|
||||
BuildRequires: zopfli-devel
|
||||
# Tests
|
||||
BuildRequires: pytest
|
||||
BuildRequires: %{py3_dist pytest}
|
||||
BuildRequires: %{py3_dist blosc}
|
||||
BuildRequires: %{py3_dist blosc2}
|
||||
BuildRequires: %{py3_dist brotli}
|
||||
BuildRequires: %{py3_dist lz4}
|
||||
BuildRequires: %{py3_dist numcodecs}
|
||||
BuildRequires: %{py3_dist python-snappy}
|
||||
BuildRequires: %{py3_dist tifffile}
|
||||
BuildRequires: %{py3_dist zarr}
|
||||
BuildRequires: %{py3_dist zstd}
|
||||
%ifnarch s390x
|
||||
BuildRequires: %{py3_dist pyliblzfse}
|
||||
%endif
|
||||
|
||||
%global _description %{expand:
|
||||
Imagecodecs is a Python library that provides block-oriented, in-memory
|
||||
|
|
@ -79,11 +94,15 @@ rm -f $(grep -rl '/\* Generated by Cython')
|
|||
rm -r 3rdparty
|
||||
|
||||
%generate_buildrequires
|
||||
# We need to import the local imagecodecs_distributor_setup.py file
|
||||
export PYTHONPATH=.
|
||||
%pyproject_buildrequires
|
||||
|
||||
|
||||
%build
|
||||
export CPPFLAGS=-I%{_includedir}/cfitsio
|
||||
# We need to import the local imagecodecs_distributor_setup.py file
|
||||
export PYTHONPATH=.
|
||||
%pyproject_wheel
|
||||
|
||||
|
||||
|
|
@ -93,76 +112,274 @@ export CPPFLAGS=-I%{_includedir}/cfitsio
|
|||
|
||||
|
||||
%check
|
||||
# tifffile is too old at this point to run the tifffile tests
|
||||
# spng_encode appears to not be available with openjpeg2 disabled, but the test still tries to run
|
||||
# Other deselected tests seem to be related to unsupported compression types
|
||||
TEST_OPTS=(
|
||||
# TODO - tests/test_imagecodecs.py::test_cms_identity_transforms segfaults (various cases)
|
||||
--deselect "tests/test_imagecodecs.py::test_cms_identity_transforms"
|
||||
# TODO AssertionError
|
||||
--deselect "tests/test_imagecodecs.py::test_cms"
|
||||
# TODO - investigate blosc2 test failues - value differences
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-0-new]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-0-bytearray]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-0-out]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-0-size]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-2-new]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-2-bytearray]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-2-out]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-2-size]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-3069-new]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-3069-bytearray]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-3069-out]"
|
||||
--deselect "tests/test_imagecodecs.py::test_compressors[blosc2-encode-3069-size]"
|
||||
# spng_encode appears to not be available with openjpeg2 disabled, but the test still tries to run
|
||||
--deselect tests/test_imagecodecs.py::test_spng_encode
|
||||
# Other deselected tests seem to be related to unsupported compression types
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-new-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-out-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-gray-bytearray-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-new-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-out-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint8-graya-bytearray-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-new-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-out-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-gray-bytearray-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-new-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-out-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[avif-uint16-graya-bytearray-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-new-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-new-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-new--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-out-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-out-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-out--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-bytearray-None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-bytearray-5]"
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-bytearray--1]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.lerc.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.lerc.u1-True]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.tiled.lerc.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.tiled.lerc.u1-True]"
|
||||
--deselect "tests/test_imagecodecs.py::test_numcodecs[heif-gray]"
|
||||
--deselect "tests/test_imagecodecs.py::test_numcodecs[heif-rgb]"
|
||||
--deselect "tests/test_imagecodecs.py::test_numcodecs[heif-stack]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.i2-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.one.f8-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgba.separate.tiled.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.f8-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.separate.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.tiled.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.u2-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.f4-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.i1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.u4-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.c8-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.separate.tiled.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.separate.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgba.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.f2-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.tiled.u2-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.one.f4-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.series.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgba.tiled.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.i4-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgba.separate.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.tiled.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.predict.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.contig.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.one.f2-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.bigendian.u2-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.bigtiff.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.stack.u1-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.c16-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.i8-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.u8-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.tiled.f4-False]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_index[0]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_index[3]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_index[None]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_index[list]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_index[slice]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_asrgb"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-u1-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-u1->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-u2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-u2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-f2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-f2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-f4-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-False-f4->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-u1-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-u1->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-u2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-u2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-f2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-f2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-f4-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[deflate-True-f4->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-u1-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-u1->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-u2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-u2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-f2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-f2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-f4-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-False-f4->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-u1-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-u1->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-u2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-u2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-f2-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-f2->]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-f4-<]"
|
||||
--deselect "tests/test_imagecodecs.py::test_tifffile[lzma-True-f4->]"
|
||||
)
|
||||
|
||||
# A number of tests fail on s390x, ignore that for now
|
||||
# TODO - tests/test_imagecodecs.py::test_cms_identity_transforms segfaults (various cases)
|
||||
%pytest -v --deselect tests/test_imagecodecs.py::test_tifffile \
|
||||
--deselect tests/test_imagecodecs.py::test_spng_encode \
|
||||
--deselect tests/test_imagecodecs.py::test_cms_identity_transforms \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-new-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-new-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-new--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-out-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-out-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-out--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-bytearray-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-bytearray-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-new-bytearray--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-new-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-new-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-new--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-out-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-out-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-out--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-bytearray-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-bytearray-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-out-bytearray--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-new-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-new-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-new--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-out-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-out-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-out--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-bytearray-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-bytearray-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgb-bytearray-bytearray--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-new-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-new-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-new--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-out-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-out-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-out--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-bytearray-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-bytearray-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-new-bytearray--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-new-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-new-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-new--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-out-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-out-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-out--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-bytearray-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-bytearray-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-out-bytearray--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-new-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-new-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-new--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-out-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-out-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-out--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-bytearray-None]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-bytearray-5]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_image_roundtrips[heif-uint8-rgba-bytearray-bytearray--1]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.lerc.u1-False]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[gray.lerc.u1-True]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.tiled.lerc.u1-False]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_tiff_files[rgb.tiled.lerc.u1-True]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_numcodecs[heif-gray]" \
|
||||
--deselect "tests/test_imagecodecs.py::test_numcodecs[heif-rgb]" \
|
||||
%pytest -v "${TEST_OPTS[@]}" \
|
||||
%ifarch s390x
|
||||
|| exit 0
|
||||
|| :
|
||||
%endif
|
||||
|
||||
%files -n python3-imagecodecs -f %{pyproject_files}
|
||||
|
|
@ -172,21 +389,4 @@ export CPPFLAGS=-I%{_includedir}/cfitsio
|
|||
|
||||
|
||||
%changelog
|
||||
* Wed Sep 04 2024 Orion Poplawski <orion@nwra.com> - 2022.9.26-6
|
||||
- Add patch to fix FTBFS
|
||||
- Ignore test segfault for now
|
||||
|
||||
* Wed Jan 31 2024 František Zatloukal <fzatlouk@redhat.com> - 2022.9.26-5
|
||||
- Rebuilt for libavif 1.0.3
|
||||
|
||||
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2022.9.26-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2022.9.26-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2022.9.26-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Fri Jun 02 2023 Orion Poplawski <orion@nwra.com> - 2022.9.26-1
|
||||
- Initial Fedora package
|
||||
%autochangelog
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (imagecodecs-2022.9.26.tar.gz) = 3f1fd8f475e19ec12b52797c58afd49581be495acd59380cd145ed3d60719b55f4cfffaf0a5564595de058b9a3cfb4ff2ec43ed507d0a1cb6c90d7eb7cc9ea48
|
||||
SHA512 (imagecodecs-2025.8.2.tar.gz) = d3daee7ca1d1954541195a5fd4475d1b37ab747ed1b86131ec94013623179182aff09a09a05c6c5989f3e07e089d6e14c9e9084750a21aed4f163441a42b37b4
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue