sbuild (Debian sbuild) 0.85.11~bpo12+1 (31 August 2024) on debusine-worker-arm64-demeter-05.freexian.com
+==============================================================================+
| pylibtiff 0.6.1-1+bd1 (arm64) Thu, 26 Sep 2024 11:09:21 +0000 |
+==============================================================================+
Package: pylibtiff
Version: 0.6.1-1+bd1
Source Version: 0.6.1-1
Distribution: sid
Machine Architecture: arm64
Host Architecture: arm64
Build Architecture: arm64
Build Type: any
I: No tarballs found in /var/lib/debusine/worker/.cache/sbuild
Unpacking /var/lib/debusine/worker/system-images/807048/system.tar.xz to /tmp/tmp.sbuild.yxb_ngxky5...
I: NOTICE: Log filtering will replace 'sbuild-unshare-dummy-location' with '<<CHROOT>>'
+------------------------------------------------------------------------------+
| Chroot Setup Commands |
+------------------------------------------------------------------------------+
rm -f /etc/resolv.conf
----------------------
I: Finished running 'rm -f /etc/resolv.conf'.
Finished processing commands.
--------------------------------------------------------------------------------
Copying /tmp/debusine-fetch-exec-upload-2ppijh23/python3-numpy-dbgsym_2.1.1+ds-3_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-2ppijh23/python3-numpy-dev_2.1.1+ds-3_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-2ppijh23/python3-numpy_2.1.1+ds-3_arm64.deb to /<<CHROOT>>...
Copying /tmp/debusine-fetch-exec-upload-2ppijh23/python-numpy-doc_2.1.1+ds-3_all.deb to /<<CHROOT>>...
I: NOTICE: Log filtering will replace 'build/pylibtiff-OtXeZs/resolver-6AX7NP' with '<<RESOLVERDIR>>'
+------------------------------------------------------------------------------+
| Update chroot |
+------------------------------------------------------------------------------+
Get:1 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ InRelease
Ign:1 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ InRelease
Get:2 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ Release [606 B]
Get:3 http://deb.debian.org/debian sid InRelease [202 kB]
Get:2 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ Release [606 B]
Get:4 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ Release.gpg
Ign:4 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ Release.gpg
Get:5 file:/build/pylibtiff-OtXeZs/resolver-gNRbSN/apt_archive ./ Packages [4543 B]
Get:6 http://deb.debian.org/debian sid/main arm64 Packages [9861 kB]
Fetched 10.1 MB in 1s (7484 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
The following packages will be upgraded:
libc-bin libc6
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2993 kB of archives.
After this operation, 131 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian sid/main arm64 libc6 arm64 2.40-3 [2453 kB]
Get:2 http://deb.debian.org/debian sid/main arm64 libc-bin arm64 2.40-3 [540 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 2993 kB in 0s (35.4 MB/s)
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 16564 files and directories currently installed.)
Preparing to unpack .../libc6_2.40-3_arm64.deb ...
Unpacking libc6:arm64 (2.40-3) over (2.40-2) ...
Setting up libc6:arm64 (2.40-3) ...
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 16564 files and directories currently installed.)
Preparing to unpack .../libc-bin_2.40-3_arm64.deb ...
Unpacking libc-bin (2.40-3) over (2.40-2) ...
Setting up libc-bin (2.40-3) ...
Processing triggers for man-db (2.13.0-1) ...
+------------------------------------------------------------------------------+
| Fetch source files |
+------------------------------------------------------------------------------+
Local sources
-------------
/tmp/debusine-fetch-exec-upload-2ppijh23/pylibtiff_0.6.1-1.dsc exists in /tmp/debusine-fetch-exec-upload-2ppijh23; copying to chroot
I: NOTICE: Log filtering will replace 'build/pylibtiff-OtXeZs/pylibtiff-0.6.1' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/pylibtiff-OtXeZs' with '<<BUILDDIR>>'
+------------------------------------------------------------------------------+
| Install package build dependencies |
+------------------------------------------------------------------------------+
Setup apt archive
-----------------
Merged Build-Depends: debhelper-compat (= 13), dh-python, dh-sequence-numpy3, dh-sequence-python3, libtiff-dev, pybuild-plugin-pyproject, python3-all-dev, python3-bitarray, python3-numpy, python3-pytest, python3-setuptools, python3-setuptools-scm, build-essential, fakeroot, dumb-init
Filtered Build-Depends: debhelper-compat (= 13), dh-python, dh-sequence-numpy3, dh-sequence-python3, libtiff-dev, pybuild-plugin-pyproject, python3-all-dev, python3-bitarray, python3-numpy, python3-pytest, python3-setuptools, python3-setuptools-scm, build-essential, fakeroot, dumb-init
dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<<RESOLVERDIR>>/apt_archive/sbuild-build-depends-main-dummy.deb'.
Ign:1 copy:/<<RESOLVERDIR>>/apt_archive ./ InRelease
Get:2 copy:/<<RESOLVERDIR>>/apt_archive ./ Release [609 B]
Ign:3 copy:/<<RESOLVERDIR>>/apt_archive ./ Release.gpg
Get:4 copy:/<<RESOLVERDIR>>/apt_archive ./ Sources [847 B]
Get:5 copy:/<<RESOLVERDIR>>/apt_archive ./ Packages [861 B]
Fetched 2317 B in 0s (179 kB/s)
Reading package lists...
Get:1 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ InRelease
Ign:1 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ InRelease
Get:2 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ Release [606 B]
Get:2 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ Release [606 B]
Get:3 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ Release.gpg
Ign:3 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ Release.gpg
Reading package lists...
Reading package lists...
Install main build dependencies (apt-based resolver)
----------------------------------------------------
Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
autoconf automake autopoint autotools-dev build-essential cpp cpp-14
cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper dh-autoreconf
dh-python dh-strip-nondeterminism dumb-init dwz fakeroot g++ g++-14
g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-14
gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu libasan8 libatomic1 libblas3
libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libdebhelper-perl
libdeflate-dev libdeflate0 libelf1t64 libexpat1 libexpat1-dev libfakeroot
libfile-stripnondeterminism-perl libgcc-14-dev libgfortran5 libgssapi-krb5-2
libhwasan0 libisl23 libitm1 libjbig-dev libjbig0 libjpeg-dev libjpeg62-turbo
libjpeg62-turbo-dev libjs-jquery libjs-sphinxdoc libjs-underscore
libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblapack3 liblerc-dev
liblerc4 liblsan0 liblzma-dev libmpc3 libmpfr6 libncursesw6 libnsl2
libpkgconf3 libpython3-all-dev libpython3-dev libpython3-stdlib
libpython3.12-dev libpython3.12-minimal libpython3.12-stdlib
libpython3.12t64 libsharpyuv-dev libsharpyuv0 libstdc++-14-dev libtiff-dev
libtiff6 libtiffxx6 libtirpc-common libtirpc3t64 libtool libtsan2 libubsan1
libwebp-dev libwebp7 libwebpdecoder3 libwebpdemux2 libwebpmux3 libzstd-dev
linux-libc-dev m4 media-types pkgconf pkgconf-bin po-debconf
pybuild-plugin-pyproject python3 python3-all python3-all-dev
python3-autocommand python3-bitarray python3-build python3-dev
python3-inflect python3-iniconfig python3-installer python3-jaraco.context
python3-jaraco.functools python3-minimal python3-more-itertools
python3-numpy python3-numpy-dev python3-packaging python3-pkg-resources
python3-pluggy python3-pyproject-hooks python3-pytest python3-setuptools
python3-setuptools-scm python3-toml python3-typeguard
python3-typing-extensions python3-wheel python3-zipp python3.12
python3.12-dev python3.12-minimal rpcsvc-proto zlib1g-dev
Suggested packages:
autoconf-archive gnu-standards autoconf-doc cpp-doc gcc-14-locales
cpp-14-doc dh-make flit gcc-14-doc gcc-multilib manpages-dev flex bison gdb
gcc-doc gdb-aarch64-linux-gnu libc-devtools glibc-doc krb5-doc krb5-user
liblzma-doc libstdc++-14-doc libtool-doc gfortran | fortran95-compiler
gcj-jdk m4-doc libmail-box-perl python3-doc python3-tk python3-venv
python3-pip python-build-doc python-installer-doc gfortran python-numpy-doc
python-setuptools-doc python3.12-venv python3.12-doc binfmt-support
Recommended packages:
manpages manpages-dev libarchive-cpio-perl javascript-common krb5-locales
libgpm2 libltdl-dev libmail-sendmail-perl python3-pygments
The following NEW packages will be installed:
autoconf automake autopoint autotools-dev build-essential cpp cpp-14
cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper dh-autoreconf
dh-python dh-strip-nondeterminism dumb-init dwz fakeroot g++ g++-14
g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-14
gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu libasan8 libatomic1 libblas3
libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libdebhelper-perl
libdeflate-dev libdeflate0 libelf1t64 libexpat1 libexpat1-dev libfakeroot
libfile-stripnondeterminism-perl libgcc-14-dev libgfortran5 libgssapi-krb5-2
libhwasan0 libisl23 libitm1 libjbig-dev libjbig0 libjpeg-dev libjpeg62-turbo
libjpeg62-turbo-dev libjs-jquery libjs-sphinxdoc libjs-underscore
libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblapack3 liblerc-dev
liblerc4 liblsan0 liblzma-dev libmpc3 libmpfr6 libncursesw6 libnsl2
libpkgconf3 libpython3-all-dev libpython3-dev libpython3-stdlib
libpython3.12-dev libpython3.12-minimal libpython3.12-stdlib
libpython3.12t64 libsharpyuv-dev libsharpyuv0 libstdc++-14-dev libtiff-dev
libtiff6 libtiffxx6 libtirpc-common libtirpc3t64 libtool libtsan2 libubsan1
libwebp-dev libwebp7 libwebpdecoder3 libwebpdemux2 libwebpmux3 libzstd-dev
linux-libc-dev m4 media-types pkgconf pkgconf-bin po-debconf
pybuild-plugin-pyproject python3 python3-all python3-all-dev
python3-autocommand python3-bitarray python3-build python3-dev
python3-inflect python3-iniconfig python3-installer python3-jaraco.context
python3-jaraco.functools python3-minimal python3-more-itertools
python3-numpy python3-numpy-dev python3-packaging python3-pkg-resources
python3-pluggy python3-pyproject-hooks python3-pytest python3-setuptools
python3-setuptools-scm python3-toml python3-typeguard
python3-typing-extensions python3-wheel python3-zipp python3.12
python3.12-dev python3.12-minimal rpcsvc-proto
sbuild-build-depends-main-dummy zlib1g-dev
0 upgraded, 132 newly installed, 0 to remove and 0 not upgraded.
Need to get 84.3 MB/88.0 MB of archives.
After this operation, 357 MB of additional disk space will be used.
Get:1 copy:/<<RESOLVERDIR>>/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [984 B]
Get:2 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ python3-numpy-dev 1:2.1.1+ds-3 [133 kB]
Get:3 http://deb.debian.org/debian sid/main arm64 libpython3.12-minimal arm64 3.12.6-1 [806 kB]
Get:4 file:/<<BUILDDIR>>/resolver-gNRbSN/apt_archive ./ python3-numpy 1:2.1.1+ds-3 [3625 kB]
Get:5 http://deb.debian.org/debian sid/main arm64 libexpat1 arm64 2.6.3-1 [90.2 kB]
Get:6 http://deb.debian.org/debian sid/main arm64 python3.12-minimal arm64 3.12.6-1 [1935 kB]
Get:7 http://deb.debian.org/debian sid/main arm64 python3-minimal arm64 3.12.6-1 [26.7 kB]
Get:8 http://deb.debian.org/debian sid/main arm64 media-types all 10.1.0 [26.9 kB]
Get:9 http://deb.debian.org/debian sid/main arm64 libncursesw6 arm64 6.5-2 [124 kB]
Get:10 http://deb.debian.org/debian sid/main arm64 libkrb5support0 arm64 1.21.3-3 [32.1 kB]
Get:11 http://deb.debian.org/debian sid/main arm64 libk5crypto3 arm64 1.21.3-3 [80.8 kB]
Get:12 http://deb.debian.org/debian sid/main arm64 libkeyutils1 arm64 1.6.3-3 [9112 B]
Get:13 http://deb.debian.org/debian sid/main arm64 libkrb5-3 arm64 1.21.3-3 [310 kB]
Get:14 http://deb.debian.org/debian sid/main arm64 libgssapi-krb5-2 arm64 1.21.3-3 [126 kB]
Get:15 http://deb.debian.org/debian sid/main arm64 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB]
Get:16 http://deb.debian.org/debian sid/main arm64 libtirpc3t64 arm64 1.3.4+ds-1.3 [78.4 kB]
Get:17 http://deb.debian.org/debian sid/main arm64 libnsl2 arm64 1.3.0-3+b2 [37.7 kB]
Get:18 http://deb.debian.org/debian sid/main arm64 libpython3.12-stdlib arm64 3.12.6-1 [1898 kB]
Get:19 http://deb.debian.org/debian sid/main arm64 python3.12 arm64 3.12.6-1 [669 kB]
Get:20 http://deb.debian.org/debian sid/main arm64 libpython3-stdlib arm64 3.12.6-1 [9692 B]
Get:21 http://deb.debian.org/debian sid/main arm64 python3 arm64 3.12.6-1 [27.8 kB]
Get:22 http://deb.debian.org/debian sid/main arm64 m4 arm64 1.4.19-4 [277 kB]
Get:23 http://deb.debian.org/debian sid/main arm64 autoconf all 2.72-3 [493 kB]
Get:24 http://deb.debian.org/debian sid/main arm64 autotools-dev all 20220109.1 [51.6 kB]
Get:25 http://deb.debian.org/debian sid/main arm64 automake all 1:1.16.5-1.3 [823 kB]
Get:26 http://deb.debian.org/debian sid/main arm64 autopoint all 0.22.5-2 [723 kB]
Get:27 http://deb.debian.org/debian sid/main arm64 libc-dev-bin arm64 2.40-3 [50.9 kB]
Get:28 http://deb.debian.org/debian sid/main arm64 linux-libc-dev all 6.10.11-1 [2399 kB]
Get:29 http://deb.debian.org/debian sid/main arm64 libcrypt-dev arm64 1:4.4.36-5 [122 kB]
Get:30 http://deb.debian.org/debian sid/main arm64 rpcsvc-proto arm64 1.4.3-1 [59.7 kB]
Get:31 http://deb.debian.org/debian sid/main arm64 libc6-dev arm64 2.40-3 [1591 kB]
Get:32 http://deb.debian.org/debian sid/main arm64 libisl23 arm64 0.27-1 [601 kB]
Get:33 http://deb.debian.org/debian sid/main arm64 libmpfr6 arm64 4.2.1-1+b1 [674 kB]
Get:34 http://deb.debian.org/debian sid/main arm64 libmpc3 arm64 1.3.1-1+b2 [50.2 kB]
Get:35 http://deb.debian.org/debian sid/main arm64 cpp-14-aarch64-linux-gnu arm64 14.2.0-5 [9161 kB]
Get:36 http://deb.debian.org/debian sid/main arm64 cpp-14 arm64 14.2.0-5 [1280 B]
Get:37 http://deb.debian.org/debian sid/main arm64 cpp-aarch64-linux-gnu arm64 4:14.1.0-2 [4792 B]
Get:38 http://deb.debian.org/debian sid/main arm64 cpp arm64 4:14.1.0-2 [1572 B]
Get:39 http://deb.debian.org/debian sid/main arm64 libcc1-0 arm64 14.2.0-5 [42.0 kB]
Get:40 http://deb.debian.org/debian sid/main arm64 libitm1 arm64 14.2.0-5 [24.2 kB]
Get:41 http://deb.debian.org/debian sid/main arm64 libatomic1 arm64 14.2.0-5 [10.1 kB]
Get:42 http://deb.debian.org/debian sid/main arm64 libasan8 arm64 14.2.0-5 [2578 kB]
Get:43 http://deb.debian.org/debian sid/main arm64 liblsan0 arm64 14.2.0-5 [1162 kB]
Get:44 http://deb.debian.org/debian sid/main arm64 libtsan2 arm64 14.2.0-5 [2385 kB]
Get:45 http://deb.debian.org/debian sid/main arm64 libubsan1 arm64 14.2.0-5 [1040 kB]
Get:46 http://deb.debian.org/debian sid/main arm64 libhwasan0 arm64 14.2.0-5 [1442 kB]
Get:47 http://deb.debian.org/debian sid/main arm64 libgcc-14-dev arm64 14.2.0-5 [2363 kB]
Get:48 http://deb.debian.org/debian sid/main arm64 gcc-14-aarch64-linux-gnu arm64 14.2.0-5 [17.7 MB]
Get:49 http://deb.debian.org/debian sid/main arm64 gcc-14 arm64 14.2.0-5 [513 kB]
Get:50 http://deb.debian.org/debian sid/main arm64 gcc-aarch64-linux-gnu arm64 4:14.1.0-2 [1440 B]
Get:51 http://deb.debian.org/debian sid/main arm64 gcc arm64 4:14.1.0-2 [5136 B]
Get:52 http://deb.debian.org/debian sid/main arm64 libstdc++-14-dev arm64 14.2.0-5 [2263 kB]
Get:53 http://deb.debian.org/debian sid/main arm64 g++-14-aarch64-linux-gnu arm64 14.2.0-5 [10.1 MB]
Get:54 http://deb.debian.org/debian sid/main arm64 g++-14 arm64 14.2.0-5 [19.7 kB]
Get:55 http://deb.debian.org/debian sid/main arm64 g++-aarch64-linux-gnu arm64 4:14.1.0-2 [1200 B]
Get:56 http://deb.debian.org/debian sid/main arm64 g++ arm64 4:14.1.0-2 [1328 B]
Get:57 http://deb.debian.org/debian sid/main arm64 build-essential arm64 12.10 [4516 B]
Get:58 http://deb.debian.org/debian sid/main arm64 libdebhelper-perl all 13.20 [89.7 kB]
Get:59 http://deb.debian.org/debian sid/main arm64 libtool all 2.4.7-7 [517 kB]
Get:60 http://deb.debian.org/debian sid/main arm64 dh-autoreconf all 20 [17.1 kB]
Get:61 http://deb.debian.org/debian sid/main arm64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB]
Get:62 http://deb.debian.org/debian sid/main arm64 dh-strip-nondeterminism all 1.14.0-1 [8448 B]
Get:63 http://deb.debian.org/debian sid/main arm64 libelf1t64 arm64 0.191-2 [188 kB]
Get:64 http://deb.debian.org/debian sid/main arm64 dwz arm64 0.15-1+b1 [102 kB]
Get:65 http://deb.debian.org/debian sid/main arm64 po-debconf all 1.0.21+nmu1 [248 kB]
Get:66 http://deb.debian.org/debian sid/main arm64 debhelper all 13.20 [915 kB]
Get:67 http://deb.debian.org/debian sid/main arm64 python3-autocommand all 2.2.2-3 [13.6 kB]
Get:68 http://deb.debian.org/debian sid/main arm64 python3-more-itertools all 10.4.0-1 [63.7 kB]
Get:69 http://deb.debian.org/debian sid/main arm64 python3-typing-extensions all 4.12.2-2 [73.0 kB]
Get:70 http://deb.debian.org/debian sid/main arm64 python3-typeguard all 4.3.0-1 [36.5 kB]
Get:71 http://deb.debian.org/debian sid/main arm64 python3-inflect all 7.3.1-2 [32.4 kB]
Get:72 http://deb.debian.org/debian sid/main arm64 python3-jaraco.context all 6.0.0-1 [7984 B]
Get:73 http://deb.debian.org/debian sid/main arm64 python3-jaraco.functools all 4.0.2-1 [11.7 kB]
Get:74 http://deb.debian.org/debian sid/main arm64 python3-pkg-resources all 74.1.2-2 [213 kB]
Get:75 http://deb.debian.org/debian sid/main arm64 python3-zipp all 3.20.2-1 [10.3 kB]
Get:76 http://deb.debian.org/debian sid/main arm64 python3-setuptools all 74.1.2-2 [736 kB]
Get:77 http://deb.debian.org/debian sid/main arm64 dh-python all 6.20240824 [109 kB]
Get:78 http://deb.debian.org/debian sid/main arm64 dumb-init arm64 1.2.5-3 [13.4 kB]
Get:79 http://deb.debian.org/debian sid/main arm64 libfakeroot arm64 1.36-1 [29.1 kB]
Get:80 http://deb.debian.org/debian sid/main arm64 fakeroot arm64 1.36-1 [74.4 kB]
Get:81 http://deb.debian.org/debian sid/main arm64 libblas3 arm64 3.12.0-3 [91.7 kB]
Get:82 http://deb.debian.org/debian sid/main arm64 libdeflate0 arm64 1.21-1 [42.2 kB]
Get:83 http://deb.debian.org/debian sid/main arm64 libdeflate-dev arm64 1.21-1 [51.2 kB]
Get:84 http://deb.debian.org/debian sid/main arm64 libexpat1-dev arm64 2.6.3-1 [142 kB]
Get:85 http://deb.debian.org/debian sid/main arm64 libgfortran5 arm64 14.2.0-5 [361 kB]
Get:86 http://deb.debian.org/debian sid/main arm64 libjbig0 arm64 2.1-6.1+b1 [30.4 kB]
Get:87 http://deb.debian.org/debian sid/main arm64 libjbig-dev arm64 2.1-6.1+b1 [30.2 kB]
Get:88 http://deb.debian.org/debian sid/main arm64 libjpeg62-turbo arm64 1:2.1.5-3 [172 kB]
Get:89 http://deb.debian.org/debian sid/main arm64 libjpeg62-turbo-dev arm64 1:2.1.5-3 [292 kB]
Get:90 http://deb.debian.org/debian sid/main arm64 libjpeg-dev arm64 1:2.1.5-3 [71.9 kB]
Get:91 http://deb.debian.org/debian sid/main arm64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB]
Get:92 http://deb.debian.org/debian sid/main arm64 libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [116 kB]
Get:93 http://deb.debian.org/debian sid/main arm64 libjs-sphinxdoc all 7.4.7-3 [158 kB]
Get:94 http://deb.debian.org/debian sid/main arm64 liblapack3 arm64 3.12.0-3 [1757 kB]
Get:95 http://deb.debian.org/debian sid/main arm64 liblerc4 arm64 4.0.0+ds-4+b1 [142 kB]
Get:96 http://deb.debian.org/debian sid/main arm64 liblerc-dev arm64 4.0.0+ds-4+b1 [149 kB]
Get:97 http://deb.debian.org/debian sid/main arm64 liblzma-dev arm64 5.6.2-2 [296 kB]
Get:98 http://deb.debian.org/debian sid/main arm64 libpkgconf3 arm64 1.8.1-3 [35.3 kB]
Get:99 http://deb.debian.org/debian sid/main arm64 libpython3.12t64 arm64 3.12.6-1 [1981 kB]
Get:100 http://deb.debian.org/debian sid/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1 [916 kB]
Get:101 http://deb.debian.org/debian sid/main arm64 libpython3.12-dev arm64 3.12.6-1 [4782 kB]
Get:102 http://deb.debian.org/debian sid/main arm64 libpython3-dev arm64 3.12.6-1 [9952 B]
Get:103 http://deb.debian.org/debian sid/main arm64 libpython3-all-dev arm64 3.12.6-1 [1064 B]
Get:104 http://deb.debian.org/debian sid/main arm64 libsharpyuv0 arm64 1.4.0-0.1 [111 kB]
Get:105 http://deb.debian.org/debian sid/main arm64 libsharpyuv-dev arm64 1.4.0-0.1 [115 kB]
Get:106 http://deb.debian.org/debian sid/main arm64 libzstd-dev arm64 1.5.6+dfsg-1 [330 kB]
Get:107 http://deb.debian.org/debian sid/main arm64 libwebp7 arm64 1.4.0-0.1 [267 kB]
Get:108 http://deb.debian.org/debian sid/main arm64 libwebpdemux2 arm64 1.4.0-0.1 [110 kB]
Get:109 http://deb.debian.org/debian sid/main arm64 libwebpmux3 arm64 1.4.0-0.1 [122 kB]
Get:110 http://deb.debian.org/debian sid/main arm64 libwebpdecoder3 arm64 1.4.0-0.1 [179 kB]
Get:111 http://deb.debian.org/debian sid/main arm64 libwebp-dev arm64 1.4.0-0.1 [400 kB]
Get:112 http://deb.debian.org/debian sid/main arm64 libtiff6 arm64 4.5.1+git230720-5 [309 kB]
Get:113 http://deb.debian.org/debian sid/main arm64 libtiffxx6 arm64 4.5.1+git230720-5 [149 kB]
Get:114 http://deb.debian.org/debian sid/main arm64 libtiff-dev arm64 4.5.1+git230720-5 [451 kB]
Get:115 http://deb.debian.org/debian sid/main arm64 pkgconf-bin arm64 1.8.1-3 [29.4 kB]
Get:116 http://deb.debian.org/debian sid/main arm64 pkgconf arm64 1.8.1-3 [26.0 kB]
Get:117 http://deb.debian.org/debian sid/main arm64 python3-packaging all 24.1-1 [45.8 kB]
Get:118 http://deb.debian.org/debian sid/main arm64 python3-pyproject-hooks all 1.1.0-2 [11.3 kB]
Get:119 http://deb.debian.org/debian sid/main arm64 python3-toml all 0.10.2-1 [16.2 kB]
Get:120 http://deb.debian.org/debian sid/main arm64 python3-wheel all 0.44.0-2 [53.4 kB]
Get:121 http://deb.debian.org/debian sid/main arm64 python3-build all 1.2.2-1 [36.0 kB]
Get:122 http://deb.debian.org/debian sid/main arm64 python3-installer all 0.7.0+dfsg1-3 [18.6 kB]
Get:123 http://deb.debian.org/debian sid/main arm64 pybuild-plugin-pyproject all 6.20240824 [11.2 kB]
Get:124 http://deb.debian.org/debian sid/main arm64 python3-all arm64 3.12.6-1 [1040 B]
Get:125 http://deb.debian.org/debian sid/main arm64 python3.12-dev arm64 3.12.6-1 [506 kB]
Get:126 http://deb.debian.org/debian sid/main arm64 python3-dev arm64 3.12.6-1 [26.1 kB]
Get:127 http://deb.debian.org/debian sid/main arm64 python3-all-dev arm64 3.12.6-1 [1068 B]
Get:128 http://deb.debian.org/debian sid/main arm64 python3-bitarray arm64 2.9.2-1+b1 [152 kB]
Get:129 http://deb.debian.org/debian sid/main arm64 python3-iniconfig all 1.1.1-2 [6396 B]
Get:130 http://deb.debian.org/debian sid/main arm64 python3-pluggy all 1.5.0-1 [26.9 kB]
Get:131 http://deb.debian.org/debian sid/main arm64 python3-pytest all 8.3.3-1 [249 kB]
Get:132 http://deb.debian.org/debian sid/main arm64 python3-setuptools-scm all 8.1.0-1 [40.5 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 84.3 MB in 1s (99.8 MB/s)
Selecting previously unselected package libpython3.12-minimal:arm64.
(Reading database ... 16564 files and directories currently installed.)
Preparing to unpack .../libpython3.12-minimal_3.12.6-1_arm64.deb ...
Unpacking libpython3.12-minimal:arm64 (3.12.6-1) ...
Selecting previously unselected package libexpat1:arm64.
Preparing to unpack .../libexpat1_2.6.3-1_arm64.deb ...
Unpacking libexpat1:arm64 (2.6.3-1) ...
Selecting previously unselected package python3.12-minimal.
Preparing to unpack .../python3.12-minimal_3.12.6-1_arm64.deb ...
Unpacking python3.12-minimal (3.12.6-1) ...
Setting up libpython3.12-minimal:arm64 (3.12.6-1) ...
Setting up libexpat1:arm64 (2.6.3-1) ...
Setting up python3.12-minimal (3.12.6-1) ...
Selecting previously unselected package python3-minimal.
(Reading database ... 16884 files and directories currently installed.)
Preparing to unpack .../00-python3-minimal_3.12.6-1_arm64.deb ...
Unpacking python3-minimal (3.12.6-1) ...
Selecting previously unselected package media-types.
Preparing to unpack .../01-media-types_10.1.0_all.deb ...
Unpacking media-types (10.1.0) ...
Selecting previously unselected package libncursesw6:arm64.
Preparing to unpack .../02-libncursesw6_6.5-2_arm64.deb ...
Unpacking libncursesw6:arm64 (6.5-2) ...
Selecting previously unselected package libkrb5support0:arm64.
Preparing to unpack .../03-libkrb5support0_1.21.3-3_arm64.deb ...
Unpacking libkrb5support0:arm64 (1.21.3-3) ...
Selecting previously unselected package libk5crypto3:arm64.
Preparing to unpack .../04-libk5crypto3_1.21.3-3_arm64.deb ...
Unpacking libk5crypto3:arm64 (1.21.3-3) ...
Selecting previously unselected package libkeyutils1:arm64.
Preparing to unpack .../05-libkeyutils1_1.6.3-3_arm64.deb ...
Unpacking libkeyutils1:arm64 (1.6.3-3) ...
Selecting previously unselected package libkrb5-3:arm64.
Preparing to unpack .../06-libkrb5-3_1.21.3-3_arm64.deb ...
Unpacking libkrb5-3:arm64 (1.21.3-3) ...
Selecting previously unselected package libgssapi-krb5-2:arm64.
Preparing to unpack .../07-libgssapi-krb5-2_1.21.3-3_arm64.deb ...
Unpacking libgssapi-krb5-2:arm64 (1.21.3-3) ...
Selecting previously unselected package libtirpc-common.
Preparing to unpack .../08-libtirpc-common_1.3.4+ds-1.3_all.deb ...
Unpacking libtirpc-common (1.3.4+ds-1.3) ...
Selecting previously unselected package libtirpc3t64:arm64.
Preparing to unpack .../09-libtirpc3t64_1.3.4+ds-1.3_arm64.deb ...
Adding 'diversion of /lib/aarch64-linux-gnu/libtirpc.so.3 to /lib/aarch64-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64'
Adding 'diversion of /lib/aarch64-linux-gnu/libtirpc.so.3.0.0 to /lib/aarch64-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64'
Unpacking libtirpc3t64:arm64 (1.3.4+ds-1.3) ...
Selecting previously unselected package libnsl2:arm64.
Preparing to unpack .../10-libnsl2_1.3.0-3+b2_arm64.deb ...
Unpacking libnsl2:arm64 (1.3.0-3+b2) ...
Selecting previously unselected package libpython3.12-stdlib:arm64.
Preparing to unpack .../11-libpython3.12-stdlib_3.12.6-1_arm64.deb ...
Unpacking libpython3.12-stdlib:arm64 (3.12.6-1) ...
Selecting previously unselected package python3.12.
Preparing to unpack .../12-python3.12_3.12.6-1_arm64.deb ...
Unpacking python3.12 (3.12.6-1) ...
Selecting previously unselected package libpython3-stdlib:arm64.
Preparing to unpack .../13-libpython3-stdlib_3.12.6-1_arm64.deb ...
Unpacking libpython3-stdlib:arm64 (3.12.6-1) ...
Setting up python3-minimal (3.12.6-1) ...
Selecting previously unselected package python3.
(Reading database ... 17393 files and directories currently installed.)
Preparing to unpack .../000-python3_3.12.6-1_arm64.deb ...
Unpacking python3 (3.12.6-1) ...
Selecting previously unselected package m4.
Preparing to unpack .../001-m4_1.4.19-4_arm64.deb ...
Unpacking m4 (1.4.19-4) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../002-autoconf_2.72-3_all.deb ...
Unpacking autoconf (2.72-3) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../003-autotools-dev_20220109.1_all.deb ...
Unpacking autotools-dev (20220109.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../004-automake_1%3a1.16.5-1.3_all.deb ...
Unpacking automake (1:1.16.5-1.3) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../005-autopoint_0.22.5-2_all.deb ...
Unpacking autopoint (0.22.5-2) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../006-libc-dev-bin_2.40-3_arm64.deb ...
Unpacking libc-dev-bin (2.40-3) ...
Selecting previously unselected package linux-libc-dev.
Preparing to unpack .../007-linux-libc-dev_6.10.11-1_all.deb ...
Unpacking linux-libc-dev (6.10.11-1) ...
Selecting previously unselected package libcrypt-dev:arm64.
Preparing to unpack .../008-libcrypt-dev_1%3a4.4.36-5_arm64.deb ...
Unpacking libcrypt-dev:arm64 (1:4.4.36-5) ...
Selecting previously unselected package rpcsvc-proto.
Preparing to unpack .../009-rpcsvc-proto_1.4.3-1_arm64.deb ...
Unpacking rpcsvc-proto (1.4.3-1) ...
Selecting previously unselected package libc6-dev:arm64.
Preparing to unpack .../010-libc6-dev_2.40-3_arm64.deb ...
Unpacking libc6-dev:arm64 (2.40-3) ...
Selecting previously unselected package libisl23:arm64.
Preparing to unpack .../011-libisl23_0.27-1_arm64.deb ...
Unpacking libisl23:arm64 (0.27-1) ...
Selecting previously unselected package libmpfr6:arm64.
Preparing to unpack .../012-libmpfr6_4.2.1-1+b1_arm64.deb ...
Unpacking libmpfr6:arm64 (4.2.1-1+b1) ...
Selecting previously unselected package libmpc3:arm64.
Preparing to unpack .../013-libmpc3_1.3.1-1+b2_arm64.deb ...
Unpacking libmpc3:arm64 (1.3.1-1+b2) ...
Selecting previously unselected package cpp-14-aarch64-linux-gnu.
Preparing to unpack .../014-cpp-14-aarch64-linux-gnu_14.2.0-5_arm64.deb ...
Unpacking cpp-14-aarch64-linux-gnu (14.2.0-5) ...
Selecting previously unselected package cpp-14.
Preparing to unpack .../015-cpp-14_14.2.0-5_arm64.deb ...
Unpacking cpp-14 (14.2.0-5) ...
Selecting previously unselected package cpp-aarch64-linux-gnu.
Preparing to unpack .../016-cpp-aarch64-linux-gnu_4%3a14.1.0-2_arm64.deb ...
Unpacking cpp-aarch64-linux-gnu (4:14.1.0-2) ...
Selecting previously unselected package cpp.
Preparing to unpack .../017-cpp_4%3a14.1.0-2_arm64.deb ...
Unpacking cpp (4:14.1.0-2) ...
Selecting previously unselected package libcc1-0:arm64.
Preparing to unpack .../018-libcc1-0_14.2.0-5_arm64.deb ...
Unpacking libcc1-0:arm64 (14.2.0-5) ...
Selecting previously unselected package libitm1:arm64.
Preparing to unpack .../019-libitm1_14.2.0-5_arm64.deb ...
Unpacking libitm1:arm64 (14.2.0-5) ...
Selecting previously unselected package libatomic1:arm64.
Preparing to unpack .../020-libatomic1_14.2.0-5_arm64.deb ...
Unpacking libatomic1:arm64 (14.2.0-5) ...
Selecting previously unselected package libasan8:arm64.
Preparing to unpack .../021-libasan8_14.2.0-5_arm64.deb ...
Unpacking libasan8:arm64 (14.2.0-5) ...
Selecting previously unselected package liblsan0:arm64.
Preparing to unpack .../022-liblsan0_14.2.0-5_arm64.deb ...
Unpacking liblsan0:arm64 (14.2.0-5) ...
Selecting previously unselected package libtsan2:arm64.
Preparing to unpack .../023-libtsan2_14.2.0-5_arm64.deb ...
Unpacking libtsan2:arm64 (14.2.0-5) ...
Selecting previously unselected package libubsan1:arm64.
Preparing to unpack .../024-libubsan1_14.2.0-5_arm64.deb ...
Unpacking libubsan1:arm64 (14.2.0-5) ...
Selecting previously unselected package libhwasan0:arm64.
Preparing to unpack .../025-libhwasan0_14.2.0-5_arm64.deb ...
Unpacking libhwasan0:arm64 (14.2.0-5) ...
Selecting previously unselected package libgcc-14-dev:arm64.
Preparing to unpack .../026-libgcc-14-dev_14.2.0-5_arm64.deb ...
Unpacking libgcc-14-dev:arm64 (14.2.0-5) ...
Selecting previously unselected package gcc-14-aarch64-linux-gnu.
Preparing to unpack .../027-gcc-14-aarch64-linux-gnu_14.2.0-5_arm64.deb ...
Unpacking gcc-14-aarch64-linux-gnu (14.2.0-5) ...
Selecting previously unselected package gcc-14.
Preparing to unpack .../028-gcc-14_14.2.0-5_arm64.deb ...
Unpacking gcc-14 (14.2.0-5) ...
Selecting previously unselected package gcc-aarch64-linux-gnu.
Preparing to unpack .../029-gcc-aarch64-linux-gnu_4%3a14.1.0-2_arm64.deb ...
Unpacking gcc-aarch64-linux-gnu (4:14.1.0-2) ...
Selecting previously unselected package gcc.
Preparing to unpack .../030-gcc_4%3a14.1.0-2_arm64.deb ...
Unpacking gcc (4:14.1.0-2) ...
Selecting previously unselected package libstdc++-14-dev:arm64.
Preparing to unpack .../031-libstdc++-14-dev_14.2.0-5_arm64.deb ...
Unpacking libstdc++-14-dev:arm64 (14.2.0-5) ...
Selecting previously unselected package g++-14-aarch64-linux-gnu.
Preparing to unpack .../032-g++-14-aarch64-linux-gnu_14.2.0-5_arm64.deb ...
Unpacking g++-14-aarch64-linux-gnu (14.2.0-5) ...
Selecting previously unselected package g++-14.
Preparing to unpack .../033-g++-14_14.2.0-5_arm64.deb ...
Unpacking g++-14 (14.2.0-5) ...
Selecting previously unselected package g++-aarch64-linux-gnu.
Preparing to unpack .../034-g++-aarch64-linux-gnu_4%3a14.1.0-2_arm64.deb ...
Unpacking g++-aarch64-linux-gnu (4:14.1.0-2) ...
Selecting previously unselected package g++.
Preparing to unpack .../035-g++_4%3a14.1.0-2_arm64.deb ...
Unpacking g++ (4:14.1.0-2) ...
Selecting previously unselected package build-essential.
Preparing to unpack .../036-build-essential_12.10_arm64.deb ...
Unpacking build-essential (12.10) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../037-libdebhelper-perl_13.20_all.deb ...
Unpacking libdebhelper-perl (13.20) ...
Selecting previously unselected package libtool.
Preparing to unpack .../038-libtool_2.4.7-7_all.deb ...
Unpacking libtool (2.4.7-7) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../039-dh-autoreconf_20_all.deb ...
Unpacking dh-autoreconf (20) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../040-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../041-dh-strip-nondeterminism_1.14.0-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.14.0-1) ...
Selecting previously unselected package libelf1t64:arm64.
Preparing to unpack .../042-libelf1t64_0.191-2_arm64.deb ...
Unpacking libelf1t64:arm64 (0.191-2) ...
Selecting previously unselected package dwz.
Preparing to unpack .../043-dwz_0.15-1+b1_arm64.deb ...
Unpacking dwz (0.15-1+b1) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../044-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../045-debhelper_13.20_all.deb ...
Unpacking debhelper (13.20) ...
Selecting previously unselected package python3-autocommand.
Preparing to unpack .../046-python3-autocommand_2.2.2-3_all.deb ...
Unpacking python3-autocommand (2.2.2-3) ...
Selecting previously unselected package python3-more-itertools.
Preparing to unpack .../047-python3-more-itertools_10.4.0-1_all.deb ...
Unpacking python3-more-itertools (10.4.0-1) ...
Selecting previously unselected package python3-typing-extensions.
Preparing to unpack .../048-python3-typing-extensions_4.12.2-2_all.deb ...
Unpacking python3-typing-extensions (4.12.2-2) ...
Selecting previously unselected package python3-typeguard.
Preparing to unpack .../049-python3-typeguard_4.3.0-1_all.deb ...
Unpacking python3-typeguard (4.3.0-1) ...
Selecting previously unselected package python3-inflect.
Preparing to unpack .../050-python3-inflect_7.3.1-2_all.deb ...
Unpacking python3-inflect (7.3.1-2) ...
Selecting previously unselected package python3-jaraco.context.
Preparing to unpack .../051-python3-jaraco.context_6.0.0-1_all.deb ...
Unpacking python3-jaraco.context (6.0.0-1) ...
Selecting previously unselected package python3-jaraco.functools.
Preparing to unpack .../052-python3-jaraco.functools_4.0.2-1_all.deb ...
Unpacking python3-jaraco.functools (4.0.2-1) ...
Selecting previously unselected package python3-pkg-resources.
Preparing to unpack .../053-python3-pkg-resources_74.1.2-2_all.deb ...
Unpacking python3-pkg-resources (74.1.2-2) ...
Selecting previously unselected package python3-zipp.
Preparing to unpack .../054-python3-zipp_3.20.2-1_all.deb ...
Unpacking python3-zipp (3.20.2-1) ...
Selecting previously unselected package python3-setuptools.
Preparing to unpack .../055-python3-setuptools_74.1.2-2_all.deb ...
Unpacking python3-setuptools (74.1.2-2) ...
Selecting previously unselected package dh-python.
Preparing to unpack .../056-dh-python_6.20240824_all.deb ...
Unpacking dh-python (6.20240824) ...
Selecting previously unselected package dumb-init.
Preparing to unpack .../057-dumb-init_1.2.5-3_arm64.deb ...
Unpacking dumb-init (1.2.5-3) ...
Selecting previously unselected package libfakeroot:arm64.
Preparing to unpack .../058-libfakeroot_1.36-1_arm64.deb ...
Unpacking libfakeroot:arm64 (1.36-1) ...
Selecting previously unselected package fakeroot.
Preparing to unpack .../059-fakeroot_1.36-1_arm64.deb ...
Unpacking fakeroot (1.36-1) ...
Selecting previously unselected package libblas3:arm64.
Preparing to unpack .../060-libblas3_3.12.0-3_arm64.deb ...
Unpacking libblas3:arm64 (3.12.0-3) ...
Selecting previously unselected package libdeflate0:arm64.
Preparing to unpack .../061-libdeflate0_1.21-1_arm64.deb ...
Unpacking libdeflate0:arm64 (1.21-1) ...
Selecting previously unselected package libdeflate-dev:arm64.
Preparing to unpack .../062-libdeflate-dev_1.21-1_arm64.deb ...
Unpacking libdeflate-dev:arm64 (1.21-1) ...
Selecting previously unselected package libexpat1-dev:arm64.
Preparing to unpack .../063-libexpat1-dev_2.6.3-1_arm64.deb ...
Unpacking libexpat1-dev:arm64 (2.6.3-1) ...
Selecting previously unselected package libgfortran5:arm64.
Preparing to unpack .../064-libgfortran5_14.2.0-5_arm64.deb ...
Unpacking libgfortran5:arm64 (14.2.0-5) ...
Selecting previously unselected package libjbig0:arm64.
Preparing to unpack .../065-libjbig0_2.1-6.1+b1_arm64.deb ...
Unpacking libjbig0:arm64 (2.1-6.1+b1) ...
Selecting previously unselected package libjbig-dev:arm64.
Preparing to unpack .../066-libjbig-dev_2.1-6.1+b1_arm64.deb ...
Unpacking libjbig-dev:arm64 (2.1-6.1+b1) ...
Selecting previously unselected package libjpeg62-turbo:arm64.
Preparing to unpack .../067-libjpeg62-turbo_1%3a2.1.5-3_arm64.deb ...
Unpacking libjpeg62-turbo:arm64 (1:2.1.5-3) ...
Selecting previously unselected package libjpeg62-turbo-dev:arm64.
Preparing to unpack .../068-libjpeg62-turbo-dev_1%3a2.1.5-3_arm64.deb ...
Unpacking libjpeg62-turbo-dev:arm64 (1:2.1.5-3) ...
Selecting previously unselected package libjpeg-dev:arm64.
Preparing to unpack .../069-libjpeg-dev_1%3a2.1.5-3_arm64.deb ...
Unpacking libjpeg-dev:arm64 (1:2.1.5-3) ...
Selecting previously unselected package libjs-jquery.
Preparing to unpack .../070-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ...
Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ...
Selecting previously unselected package libjs-underscore.
Preparing to unpack .../071-libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ...
Unpacking libjs-underscore (1.13.4~dfsg+~1.11.4-3) ...
Selecting previously unselected package libjs-sphinxdoc.
Preparing to unpack .../072-libjs-sphinxdoc_7.4.7-3_all.deb ...
Unpacking libjs-sphinxdoc (7.4.7-3) ...
Selecting previously unselected package liblapack3:arm64.
Preparing to unpack .../073-liblapack3_3.12.0-3_arm64.deb ...
Unpacking liblapack3:arm64 (3.12.0-3) ...
Selecting previously unselected package liblerc4:arm64.
Preparing to unpack .../074-liblerc4_4.0.0+ds-4+b1_arm64.deb ...
Unpacking liblerc4:arm64 (4.0.0+ds-4+b1) ...
Selecting previously unselected package liblerc-dev:arm64.
Preparing to unpack .../075-liblerc-dev_4.0.0+ds-4+b1_arm64.deb ...
Unpacking liblerc-dev:arm64 (4.0.0+ds-4+b1) ...
Selecting previously unselected package liblzma-dev:arm64.
Preparing to unpack .../076-liblzma-dev_5.6.2-2_arm64.deb ...
Unpacking liblzma-dev:arm64 (5.6.2-2) ...
Selecting previously unselected package libpkgconf3:arm64.
Preparing to unpack .../077-libpkgconf3_1.8.1-3_arm64.deb ...
Unpacking libpkgconf3:arm64 (1.8.1-3) ...
Selecting previously unselected package libpython3.12t64:arm64.
Preparing to unpack .../078-libpython3.12t64_3.12.6-1_arm64.deb ...
Unpacking libpython3.12t64:arm64 (3.12.6-1) ...
Selecting previously unselected package zlib1g-dev:arm64.
Preparing to unpack .../079-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1_arm64.deb ...
Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1) ...
Selecting previously unselected package libpython3.12-dev:arm64.
Preparing to unpack .../080-libpython3.12-dev_3.12.6-1_arm64.deb ...
Unpacking libpython3.12-dev:arm64 (3.12.6-1) ...
Selecting previously unselected package libpython3-dev:arm64.
Preparing to unpack .../081-libpython3-dev_3.12.6-1_arm64.deb ...
Unpacking libpython3-dev:arm64 (3.12.6-1) ...
Selecting previously unselected package libpython3-all-dev:arm64.
Preparing to unpack .../082-libpython3-all-dev_3.12.6-1_arm64.deb ...
Unpacking libpython3-all-dev:arm64 (3.12.6-1) ...
Selecting previously unselected package libsharpyuv0:arm64.
Preparing to unpack .../083-libsharpyuv0_1.4.0-0.1_arm64.deb ...
Unpacking libsharpyuv0:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libsharpyuv-dev:arm64.
Preparing to unpack .../084-libsharpyuv-dev_1.4.0-0.1_arm64.deb ...
Unpacking libsharpyuv-dev:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libzstd-dev:arm64.
Preparing to unpack .../085-libzstd-dev_1.5.6+dfsg-1_arm64.deb ...
Unpacking libzstd-dev:arm64 (1.5.6+dfsg-1) ...
Selecting previously unselected package libwebp7:arm64.
Preparing to unpack .../086-libwebp7_1.4.0-0.1_arm64.deb ...
Unpacking libwebp7:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libwebpdemux2:arm64.
Preparing to unpack .../087-libwebpdemux2_1.4.0-0.1_arm64.deb ...
Unpacking libwebpdemux2:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libwebpmux3:arm64.
Preparing to unpack .../088-libwebpmux3_1.4.0-0.1_arm64.deb ...
Unpacking libwebpmux3:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libwebpdecoder3:arm64.
Preparing to unpack .../089-libwebpdecoder3_1.4.0-0.1_arm64.deb ...
Unpacking libwebpdecoder3:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libwebp-dev:arm64.
Preparing to unpack .../090-libwebp-dev_1.4.0-0.1_arm64.deb ...
Unpacking libwebp-dev:arm64 (1.4.0-0.1) ...
Selecting previously unselected package libtiff6:arm64.
Preparing to unpack .../091-libtiff6_4.5.1+git230720-5_arm64.deb ...
Unpacking libtiff6:arm64 (4.5.1+git230720-5) ...
Selecting previously unselected package libtiffxx6:arm64.
Preparing to unpack .../092-libtiffxx6_4.5.1+git230720-5_arm64.deb ...
Unpacking libtiffxx6:arm64 (4.5.1+git230720-5) ...
Selecting previously unselected package libtiff-dev:arm64.
Preparing to unpack .../093-libtiff-dev_4.5.1+git230720-5_arm64.deb ...
Unpacking libtiff-dev:arm64 (4.5.1+git230720-5) ...
Selecting previously unselected package pkgconf-bin.
Preparing to unpack .../094-pkgconf-bin_1.8.1-3_arm64.deb ...
Unpacking pkgconf-bin (1.8.1-3) ...
Selecting previously unselected package pkgconf:arm64.
Preparing to unpack .../095-pkgconf_1.8.1-3_arm64.deb ...
Unpacking pkgconf:arm64 (1.8.1-3) ...
Selecting previously unselected package python3-packaging.
Preparing to unpack .../096-python3-packaging_24.1-1_all.deb ...
Unpacking python3-packaging (24.1-1) ...
Selecting previously unselected package python3-pyproject-hooks.
Preparing to unpack .../097-python3-pyproject-hooks_1.1.0-2_all.deb ...
Unpacking python3-pyproject-hooks (1.1.0-2) ...
Selecting previously unselected package python3-toml.
Preparing to unpack .../098-python3-toml_0.10.2-1_all.deb ...
Unpacking python3-toml (0.10.2-1) ...
Selecting previously unselected package python3-wheel.
Preparing to unpack .../099-python3-wheel_0.44.0-2_all.deb ...
Unpacking python3-wheel (0.44.0-2) ...
Selecting previously unselected package python3-build.
Preparing to unpack .../100-python3-build_1.2.2-1_all.deb ...
Unpacking python3-build (1.2.2-1) ...
Selecting previously unselected package python3-installer.
Preparing to unpack .../101-python3-installer_0.7.0+dfsg1-3_all.deb ...
Unpacking python3-installer (0.7.0+dfsg1-3) ...
Selecting previously unselected package pybuild-plugin-pyproject.
Preparing to unpack .../102-pybuild-plugin-pyproject_6.20240824_all.deb ...
Unpacking pybuild-plugin-pyproject (6.20240824) ...
Selecting previously unselected package python3-all.
Preparing to unpack .../103-python3-all_3.12.6-1_arm64.deb ...
Unpacking python3-all (3.12.6-1) ...
Selecting previously unselected package python3.12-dev.
Preparing to unpack .../104-python3.12-dev_3.12.6-1_arm64.deb ...
Unpacking python3.12-dev (3.12.6-1) ...
Selecting previously unselected package python3-dev.
Preparing to unpack .../105-python3-dev_3.12.6-1_arm64.deb ...
Unpacking python3-dev (3.12.6-1) ...
Selecting previously unselected package python3-all-dev.
Preparing to unpack .../106-python3-all-dev_3.12.6-1_arm64.deb ...
Unpacking python3-all-dev (3.12.6-1) ...
Selecting previously unselected package python3-bitarray.
Preparing to unpack .../107-python3-bitarray_2.9.2-1+b1_arm64.deb ...
Unpacking python3-bitarray (2.9.2-1+b1) ...
Selecting previously unselected package python3-iniconfig.
Preparing to unpack .../108-python3-iniconfig_1.1.1-2_all.deb ...
Unpacking python3-iniconfig (1.1.1-2) ...
Selecting previously unselected package python3-numpy-dev:arm64.
Preparing to unpack .../109-python3-numpy-dev_2.1.1+ds-3_arm64.deb ...
Unpacking python3-numpy-dev:arm64 (1:2.1.1+ds-3) ...
Selecting previously unselected package python3-numpy.
Preparing to unpack .../110-python3-numpy_2.1.1+ds-3_arm64.deb ...
Unpacking python3-numpy (1:2.1.1+ds-3) ...
Selecting previously unselected package python3-pluggy.
Preparing to unpack .../111-python3-pluggy_1.5.0-1_all.deb ...
Unpacking python3-pluggy (1.5.0-1) ...
Selecting previously unselected package python3-pytest.
Preparing to unpack .../112-python3-pytest_8.3.3-1_all.deb ...
Unpacking python3-pytest (8.3.3-1) ...
Selecting previously unselected package python3-setuptools-scm.
Preparing to unpack .../113-python3-setuptools-scm_8.1.0-1_all.deb ...
Unpacking python3-setuptools-scm (8.1.0-1) ...
Selecting previously unselected package sbuild-build-depends-main-dummy.
Preparing to unpack .../114-sbuild-build-depends-main-dummy_0.invalid.0_arm64.deb ...
Unpacking sbuild-build-depends-main-dummy (0.invalid.0) ...
Setting up media-types (10.1.0) ...
Setting up dumb-init (1.2.5-3) ...
Setting up libfile-stripnondeterminism-perl (1.14.0-1) ...
Setting up libsharpyuv0:arm64 (1.4.0-0.1) ...
Setting up libkeyutils1:arm64 (1.6.3-3) ...
Setting up liblerc4:arm64 (4.0.0+ds-4+b1) ...
Setting up libzstd-dev:arm64 (1.5.6+dfsg-1) ...
Setting up libtirpc-common (1.3.4+ds-1.3) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up libdebhelper-perl (13.20) ...
Setting up libdeflate0:arm64 (1.21-1) ...
Setting up linux-libc-dev (6.10.11-1) ...
Setting up libwebpdecoder3:arm64 (1.4.0-0.1) ...
Setting up m4 (1.4.19-4) ...
Setting up libjbig0:arm64 (2.1-6.1+b1) ...
Setting up libfakeroot:arm64 (1.36-1) ...
Setting up libelf1t64:arm64 (0.191-2) ...
Setting up libkrb5support0:arm64 (1.21.3-3) ...
Setting up fakeroot (1.36-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
Setting up autotools-dev (20220109.1) ...
Setting up libblas3:arm64 (3.12.0-3) ...
update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode
Setting up libpkgconf3:arm64 (1.8.1-3) ...
Setting up rpcsvc-proto (1.4.3-1) ...
Setting up libjpeg62-turbo:arm64 (1:2.1.5-3) ...
Setting up libmpfr6:arm64 (4.2.1-1+b1) ...
Setting up libmpc3:arm64 (1.3.1-1+b2) ...
Setting up libatomic1:arm64 (14.2.0-5) ...
Setting up autopoint (0.22.5-2) ...
Setting up pkgconf-bin (1.8.1-3) ...
Setting up liblerc-dev:arm64 (4.0.0+ds-4+b1) ...
Setting up libncursesw6:arm64 (6.5-2) ...
Setting up libk5crypto3:arm64 (1.21.3-3) ...
Setting up libgfortran5:arm64 (14.2.0-5) ...
Setting up autoconf (2.72-3) ...
Setting up libwebp7:arm64 (1.4.0-0.1) ...
Setting up liblzma-dev:arm64 (5.6.2-2) ...
Setting up libubsan1:arm64 (14.2.0-5) ...
Setting up dh-strip-nondeterminism (1.14.0-1) ...
Setting up dwz (0.15-1+b1) ...
Setting up libhwasan0:arm64 (14.2.0-5) ...
Setting up libcrypt-dev:arm64 (1:4.4.36-5) ...
Setting up libtiff6:arm64 (4.5.1+git230720-5) ...
Setting up libasan8:arm64 (14.2.0-5) ...
Setting up libkrb5-3:arm64 (1.21.3-3) ...
Setting up libtsan2:arm64 (14.2.0-5) ...
Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ...
Setting up libisl23:arm64 (0.27-1) ...
Setting up libsharpyuv-dev:arm64 (1.4.0-0.1) ...
Setting up libc-dev-bin (2.40-3) ...
Setting up libwebpmux3:arm64 (1.4.0-0.1) ...
Setting up libtiffxx6:arm64 (4.5.1+git230720-5) ...
Setting up libdeflate-dev:arm64 (1.21-1) ...
Setting up libcc1-0:arm64 (14.2.0-5) ...
Setting up liblsan0:arm64 (14.2.0-5) ...
Setting up libitm1:arm64 (14.2.0-5) ...
Setting up libjs-underscore (1.13.4~dfsg+~1.11.4-3) ...
Setting up automake (1:1.16.5-1.3) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up liblapack3:arm64 (3.12.0-3) ...
update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode
Setting up libwebpdemux2:arm64 (1.4.0-0.1) ...
Setting up libjbig-dev:arm64 (2.1-6.1+b1) ...
Setting up pkgconf:arm64 (1.8.1-3) ...
Setting up libwebp-dev:arm64 (1.4.0-0.1) ...
Setting up python3-numpy-dev:arm64 (1:2.1.1+ds-3) ...
Setting up libgssapi-krb5-2:arm64 (1.21.3-3) ...
Setting up libjs-sphinxdoc (7.4.7-3) ...
Setting up cpp-14-aarch64-linux-gnu (14.2.0-5) ...
Setting up libc6-dev:arm64 (2.40-3) ...
Setting up libgcc-14-dev:arm64 (14.2.0-5) ...
Setting up libstdc++-14-dev:arm64 (14.2.0-5) ...
Setting up libtirpc3t64:arm64 (1.3.4+ds-1.3) ...
Setting up cpp-aarch64-linux-gnu (4:14.1.0-2) ...
Setting up libexpat1-dev:arm64 (2.6.3-1) ...
Setting up libjpeg62-turbo-dev:arm64 (1:2.1.5-3) ...
Setting up cpp-14 (14.2.0-5) ...
Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1) ...
Setting up cpp (4:14.1.0-2) ...
Setting up libnsl2:arm64 (1.3.0-3+b2) ...
Setting up gcc-14-aarch64-linux-gnu (14.2.0-5) ...
Setting up gcc-aarch64-linux-gnu (4:14.1.0-2) ...
Setting up g++-14-aarch64-linux-gnu (14.2.0-5) ...
Setting up libpython3.12-stdlib:arm64 (3.12.6-1) ...
Setting up python3.12 (3.12.6-1) ...
Setting up libjpeg-dev:arm64 (1:2.1.5-3) ...
Setting up gcc-14 (14.2.0-5) ...
Setting up libpython3.12t64:arm64 (3.12.6-1) ...
Setting up libtiff-dev:arm64 (4.5.1+git230720-5) ...
Setting up g++-aarch64-linux-gnu (4:14.1.0-2) ...
Setting up g++-14 (14.2.0-5) ...
Setting up libpython3-stdlib:arm64 (3.12.6-1) ...
Setting up libtool (2.4.7-7) ...
Setting up python3 (3.12.6-1) ...
Setting up libpython3.12-dev:arm64 (3.12.6-1) ...
Setting up python3-zipp (3.20.2-1) ...
Setting up python3-autocommand (2.2.2-3) ...
Setting up python3-wheel (0.44.0-2) ...
Setting up gcc (4:14.1.0-2) ...
Setting up dh-autoreconf (20) ...
Setting up python3-bitarray (2.9.2-1+b1) ...
Setting up python3-packaging (24.1-1) ...
Setting up python3-pyproject-hooks (1.1.0-2) ...
Setting up python3.12-dev (3.12.6-1) ...
Setting up python3-typing-extensions (4.12.2-2) ...
Setting up python3-toml (0.10.2-1) ...
Setting up python3-installer (0.7.0+dfsg1-3) ...
Setting up python3-pluggy (1.5.0-1) ...
Setting up g++ (4:14.1.0-2) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
Setting up build-essential (12.10) ...
Setting up python3-build (1.2.2-1) ...
Setting up python3-more-itertools (10.4.0-1) ...
Setting up python3-iniconfig (1.1.1-2) ...
Setting up libpython3-dev:arm64 (3.12.6-1) ...
Setting up python3-jaraco.functools (4.0.2-1) ...
Setting up python3-jaraco.context (6.0.0-1) ...
Setting up python3-pytest (8.3.3-1) ...
Setting up python3-typeguard (4.3.0-1) ...
Setting up python3-all (3.12.6-1) ...
Setting up debhelper (13.20) ...
Setting up python3-inflect (7.3.1-2) ...
Setting up libpython3-all-dev:arm64 (3.12.6-1) ...
Setting up python3-dev (3.12.6-1) ...
Setting up python3-pkg-resources (74.1.2-2) ...
Setting up python3-all-dev (3.12.6-1) ...
Setting up python3-setuptools (74.1.2-2) ...
Setting up python3-setuptools-scm (8.1.0-1) ...
Setting up python3-numpy (1:2.1.1+ds-3) ...
Setting up dh-python (6.20240824) ...
Setting up pybuild-plugin-pyproject (6.20240824) ...
Setting up sbuild-build-depends-main-dummy (0.invalid.0) ...
Processing triggers for man-db (2.13.0-1) ...
Processing triggers for libc-bin (2.40-3) ...
+------------------------------------------------------------------------------+
| Check architectures |
+------------------------------------------------------------------------------+
Arch check ok (arm64 included in any all)
+------------------------------------------------------------------------------+
| Build environment |
+------------------------------------------------------------------------------+
Kernel: Linux 6.1.0-25-cloud-arm64 #1 SMP Debian 6.1.106-3 (2024-08-26) arm64 (aarch64)
Toolchain package versions: binutils_2.43.1-5 dpkg-dev_1.22.11 g++-14_14.2.0-5 gcc-14_14.2.0-5 libc6-dev_2.40-3 libstdc++-14-dev_14.2.0-5 libstdc++6_14.2.0-5 linux-libc-dev_6.10.11-1
Package versions: apt_2.9.8 autoconf_2.72-3 automake_1:1.16.5-1.3 autopoint_0.22.5-2 autotools-dev_20220109.1 base-files_13.5 base-passwd_3.6.4 bash_5.2.32-1+b1 binutils_2.43.1-5 binutils-aarch64-linux-gnu_2.43.1-5 binutils-common_2.43.1-5 bsdextrautils_2.40.2-8 bsdutils_1:2.40.2-8 build-essential_12.10 bzip2_1.0.8-6 ca-certificates_20240203 coreutils_9.4-3.1 cpp_4:14.1.0-2 cpp-14_14.2.0-5 cpp-14-aarch64-linux-gnu_14.2.0-5 cpp-aarch64-linux-gnu_4:14.1.0-2 dash_0.5.12-9 debconf_1.5.87 debhelper_13.20 debian-archive-keyring_2023.4 debianutils_5.20 dh-autoreconf_20 dh-python_6.20240824 dh-strip-nondeterminism_1.14.0-1 diffstat_1.66-1 diffutils_1:3.10-1 dpkg_1.22.11 dpkg-dev_1.22.11 dumb-init_1.2.5-3 dwz_0.15-1+b1 e2fsprogs_1.47.1-1 fakeroot_1.36-1 file_1:5.45-3 findutils_4.10.0-3 g++_4:14.1.0-2 g++-14_14.2.0-5 g++-14-aarch64-linux-gnu_14.2.0-5 g++-aarch64-linux-gnu_4:14.1.0-2 gcc_4:14.1.0-2 gcc-14_14.2.0-5 gcc-14-aarch64-linux-gnu_14.2.0-5 gcc-14-base_14.2.0-5 gcc-aarch64-linux-gnu_4:14.1.0-2 gettext_0.22.5-2 gettext-base_0.22.5-2 gpg_2.2.43-8+b1 gpgconf_2.2.43-8+b1 gpgv_2.2.43-8+b1 grep_3.11-4 groff-base_1.23.0-5 gzip_1.12-1.1 hostname_3.23+nmu2 init-system-helpers_1.67 intltool-debian_0.35.0+20060710.6 iso-codes_4.17.0-1 libacl1_2.3.2-2 libaliased-perl_0.34-3 libapt-pkg-perl_0.1.40+b5 libapt-pkg6.0t64_2.9.8 libarchive-zip-perl_1.68-1 libasan8_14.2.0-5 libassuan9_3.0.1-2 libatomic1_14.2.0-5 libattr1_1:2.5.2-1 libaudit-common_1:4.0.1-1 libaudit1_1:4.0.1-1 libb-hooks-endofscope-perl_0.28-1 libb-hooks-op-check-perl_0.22-3+b1 libberkeleydb-perl_0.64-2+b3 libbinutils_2.43.1-5 libblas3_3.12.0-3 libblkid1_2.40.2-8 libbsd0_0.12.2-1 libbz2-1.0_1.0.8-6 libc-bin_2.40-3 libc-dev-bin_2.40-3 libc6_2.40-3 libc6-dev_2.40-3 libcap-ng0_0.8.5-2 libcap2_1:2.66-5 libcapture-tiny-perl_0.48-2 libcc1-0_14.2.0-5 libcgi-pm-perl_4.66-1 libclass-data-inheritable-perl_0.08-3 libclass-inspector-perl_1.36-3 libclass-method-modifiers-perl_2.15-1 libclass-xsaccessor-perl_1.19-4+b3 libclone-perl_0.47-1 libcom-err2_1.47.1-1 libconfig-tiny-perl_2.30-1 libconst-fast-perl_0.014-2 libcpanel-json-xs-perl_4.38-1 libcrypt-dev_1:4.4.36-5 libcrypt1_1:4.4.36-5 libctf-nobfd0_2.43.1-5 libctf0_2.43.1-5 libdata-dpath-perl_0.59-1 libdata-messagepack-perl_1.02-1+b3 libdata-optlist-perl_0.114-1 libdata-validate-domain-perl_0.15-1 libdata-validate-ip-perl_0.31-1 libdata-validate-uri-perl_0.07-3 libdb5.3t64_5.3.28+dfsg2-7 libdebconfclient0_0.272 libdebhelper-perl_13.20 libdeflate-dev_1.21-1 libdeflate0_1.21-1 libdevel-callchecker-perl_0.009-1 libdevel-size-perl_0.84-1 libdevel-stacktrace-perl_2.0500-1 libdpkg-perl_1.22.11 libdynaloader-functions-perl_0.004-1 libelf1t64_0.191-2 libemail-address-xs-perl_1.05-1+b3 libencode-locale-perl_1.05-3 libexception-class-perl_1.45-1 libexpat1_2.6.3-1 libexpat1-dev_2.6.3-1 libext2fs2t64_1.47.1-1 libfakeroot_1.36-1 libffi8_3.4.6-1 libfile-basedir-perl_0.09-2 libfile-find-rule-perl_0.34-3 libfile-listing-perl_6.16-1 libfile-sharedir-perl_1.118-3 libfile-stripnondeterminism-perl_1.14.0-1 libfont-ttf-perl_1.06-2 libgcc-14-dev_14.2.0-5 libgcc-s1_14.2.0-5 libgcrypt20_1.11.0-6 libgdbm-compat4t64_1.24-2 libgdbm6t64_1.24-2 libgfortran5_14.2.0-5 libgmp10_2:6.3.0+dfsg-2+b1 libgnutls30t64_3.8.6-2 libgomp1_14.2.0-5 libgpg-error0_1.50-4 libgprofng0_2.43.1-5 libgssapi-krb5-2_1.21.3-3 libhogweed6t64_3.10-1 libhtml-form-perl_6.11-1 libhtml-html5-entities-perl_0.004-3 libhtml-parser-perl_3.83-1 libhtml-tagset-perl_3.24-1 libhtml-tokeparser-simple-perl_3.16-4 libhtml-tree-perl_5.07-3 libhttp-cookies-perl_6.11-1 libhttp-date-perl_6.06-1 libhttp-message-perl_6.46-1 libhttp-negotiate-perl_6.01-2 libhwasan0_14.2.0-5 libicu72_72.1-5 libidn2-0_2.3.7-2 libimport-into-perl_1.002005-2 libio-html-perl_1.004-3 libio-interactive-perl_1.025-1 libio-socket-ssl-perl_2.089-1 libio-string-perl_1.08-4 libipc-run3-perl_0.049-1 libipc-system-simple-perl_1.30-2 libisl23_0.27-1 libiterator-perl_0.03+ds1-2 libiterator-util-perl_0.02+ds1-2 libitm1_14.2.0-5 libjansson4_2.14-2+b2 libjbig-dev_2.1-6.1+b1 libjbig0_2.1-6.1+b1 libjpeg-dev_1:2.1.5-3 libjpeg62-turbo_1:2.1.5-3 libjpeg62-turbo-dev_1:2.1.5-3 libjs-jquery_3.6.1+dfsg+~3.5.14-1 libjs-sphinxdoc_7.4.7-3 libjs-underscore_1.13.4~dfsg+~1.11.4-3 libjson-maybexs-perl_1.004008-1 libk5crypto3_1.21.3-3 libkeyutils1_1.6.3-3 libkrb5-3_1.21.3-3 libkrb5support0_1.21.3-3 liblapack3_3.12.0-3 liblerc-dev_4.0.0+ds-4+b1 liblerc4_4.0.0+ds-4+b1 liblist-compare-perl_0.55-2 liblist-someutils-perl_0.59-1 liblist-utilsby-perl_0.12-2 liblsan0_14.2.0-5 liblwp-mediatypes-perl_6.04-2 liblwp-protocol-https-perl_6.14-1 liblz1_1.15~pre1-1 liblz4-1_1.9.4-3 liblzma-dev_5.6.2-2 liblzma5_5.6.2-2 liblzo2-2_2.10-3 libmagic-mgc_1:5.45-3 libmagic1t64_1:5.45-3 libmarkdown2_2.2.7-2+b1 libmd0_1.1.0-2 libmldbm-perl_2.05-4 libmodule-implementation-perl_0.09-2 libmodule-runtime-perl_0.016-2 libmoo-perl_2.005005-1 libmoox-aliases-perl_0.001006-2 libmount1_2.40.2-8 libmouse-perl_2.5.11-1 libmpc3_1.3.1-1+b2 libmpfr6_4.2.1-1+b1 libnamespace-clean-perl_0.27-2 libncursesw6_6.5-2 libnet-domain-tld-perl_1.75-4 libnet-http-perl_6.23-1 libnet-ipv6addr-perl_1.02-1 libnet-netmask-perl_2.0002-2 libnet-ssleay-perl_1.94-1+b1 libnetaddr-ip-perl_4.079+dfsg-2+b3 libnettle8t64_3.10-1 libnsl2_1.3.0-3+b2 libnumber-compare-perl_0.03-3 libp11-kit0_0.25.5-2 libpackage-stash-perl_0.40-1 libpam-modules_1.5.3-7 libpam-modules-bin_1.5.3-7 libpam-runtime_1.5.3-7 libpam0g_1.5.3-7 libparams-classify-perl_0.015-2+b3 libparams-util-perl_1.102-3 libpath-tiny-perl_0.146-1 libpcre2-8-0_10.42-4+b1 libperl5.38t64_5.38.2-5 libperlio-gzip-perl_0.20-1+b3 libperlio-utf8-strict-perl_0.010-1+b2 libpipeline1_1.5.8-1 libpkgconf3_1.8.1-3 libproc-processtable-perl_0.636-1+b2 libpython3-all-dev_3.12.6-1 libpython3-dev_3.12.6-1 libpython3-stdlib_3.12.6-1 libpython3.12-dev_3.12.6-1 libpython3.12-minimal_3.12.6-1 libpython3.12-stdlib_3.12.6-1 libpython3.12t64_3.12.6-1 libreadline8t64_8.2-5 libregexp-wildcards-perl_1.05-3 librole-tiny-perl_2.002004-1 libseccomp2_2.5.5-1+b1 libselinux1_3.7-3 libsemanage-common_3.7-2 libsemanage2_3.7-2 libsepol2_3.7-1 libsereal-decoder-perl_5.004+ds-1+b2 libsereal-encoder-perl_5.004+ds-1+b2 libsframe1_2.43.1-5 libsharpyuv-dev_1.4.0-0.1 libsharpyuv0_1.4.0-0.1 libsmartcols1_2.40.2-8 libsort-versions-perl_1.62-3 libsqlite3-0_3.46.1-1 libss2_1.47.1-1 libssl3t64_3.3.2-1 libstdc++-14-dev_14.2.0-5 libstdc++6_14.2.0-5 libstrictures-perl_2.000006-1 libsub-exporter-perl_0.990-1 libsub-exporter-progressive-perl_0.001013-3 libsub-identify-perl_0.14-3+b2 libsub-install-perl_0.929-1 libsub-name-perl_0.27-1+b2 libsub-quote-perl_2.006008-1 libsyntax-keyword-try-perl_0.30-1 libsystemd0_256.6-1 libtasn1-6_4.19.0-3+b2 libterm-readkey-perl_2.38-2+b3 libtext-glob-perl_0.11-3 libtext-levenshteinxs-perl_0.03-5+b3 libtext-markdown-discount-perl_0.16-1+b2 libtext-xslate-perl_3.5.9-2 libtiff-dev_4.5.1+git230720-5 libtiff6_4.5.1+git230720-5 libtiffxx6_4.5.1+git230720-5 libtime-duration-perl_1.21-2 libtime-moment-perl_0.44-2+b3 libtimedate-perl_2.3300-2 libtinfo6_6.5-2 libtirpc-common_1.3.4+ds-1.3 libtirpc3t64_1.3.4+ds-1.3 libtool_2.4.7-7 libtry-tiny-perl_0.32-1 libtsan2_14.2.0-5 libubsan1_14.2.0-5 libuchardet0_0.0.8-1+b1 libudev1_256.6-1 libunicode-utf8-perl_0.62-2+b2 libunistring5_1.2-1 liburi-perl_5.29-1 libuuid1_2.40.2-8 libvariable-magic-perl_0.64-1 libwebp-dev_1.4.0-0.1 libwebp7_1.4.0-0.1 libwebpdecoder3_1.4.0-0.1 libwebpdemux2_1.4.0-0.1 libwebpmux3_1.4.0-0.1 libwww-mechanize-perl_2.19-1 libwww-perl_6.77-1 libwww-robotrules-perl_6.02-1 libxml-libxml-perl_2.0207+dfsg+really+2.0134-4 libxml-namespacesupport-perl_1.12-2 libxml-sax-base-perl_1.09-3 libxml-sax-perl_1.02+dfsg-3 libxml2_2.12.7+dfsg-3+b1 libxs-parse-keyword-perl_0.46-1 libxxhash0_0.8.2-2+b1 libyaml-0-2_0.2.5-1+b1 libyaml-libyaml-perl_0.902.0+ds-1 libzstd-dev_1.5.6+dfsg-1 libzstd1_1.5.6+dfsg-1 lintian_2.118.2 linux-libc-dev_6.10.11-1 login_1:4.16.0-2+really2.40.2-8 login.defs_1:4.16.0-4 logsave_1.47.1-1 lzop_1.04-2 m4_1.4.19-4 make_4.3-4.1 man-db_2.13.0-1 mawk_1.3.4.20240905-1 media-types_10.1.0 mount_2.40.2-8 ncurses-base_6.5-2 ncurses-bin_6.5-2 netbase_6.4 openssl_3.3.2-1 openssl-provider-legacy_3.3.2-1 passwd_1:4.16.0-4 patch_2.7.6-7 patchutils_0.4.2-1 perl_5.38.2-5 perl-base_5.38.2-5 perl-modules-5.38_5.38.2-5 perl-openssl-defaults_7+b2 pkgconf_1.8.1-3 pkgconf-bin_1.8.1-3 plzip_1.11-2 po-debconf_1.0.21+nmu1 pybuild-plugin-pyproject_6.20240824 python3_3.12.6-1 python3-all_3.12.6-1 python3-all-dev_3.12.6-1 python3-autocommand_2.2.2-3 python3-bitarray_2.9.2-1+b1 python3-build_1.2.2-1 python3-dev_3.12.6-1 python3-inflect_7.3.1-2 python3-iniconfig_1.1.1-2 python3-installer_0.7.0+dfsg1-3 python3-jaraco.context_6.0.0-1 python3-jaraco.functools_4.0.2-1 python3-minimal_3.12.6-1 python3-more-itertools_10.4.0-1 python3-numpy_1:2.1.1+ds-3 python3-numpy-dev_1:2.1.1+ds-3 python3-packaging_24.1-1 python3-pkg-resources_74.1.2-2 python3-pluggy_1.5.0-1 python3-pyproject-hooks_1.1.0-2 python3-pytest_8.3.3-1 python3-setuptools_74.1.2-2 python3-setuptools-scm_8.1.0-1 python3-toml_0.10.2-1 python3-typeguard_4.3.0-1 python3-typing-extensions_4.12.2-2 python3-wheel_0.44.0-2 python3-zipp_3.20.2-1 python3.12_3.12.6-1 python3.12-dev_3.12.6-1 python3.12-minimal_3.12.6-1 readline-common_8.2-5 rpcsvc-proto_1.4.3-1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-2 sensible-utils_0.0.24 sysvinit-utils_3.10-2 t1utils_1.41-4 tar_1.35+dfsg-3 tzdata_2024a-4 ucf_3.0043+nmu1 unzip_6.0-28 util-linux_2.40.2-8 xz-utils_5.6.2-2 zlib1g_1:1.3.dfsg+really1.3.1-1 zlib1g-dev_1:1.3.dfsg+really1.3.1-1
+------------------------------------------------------------------------------+
| Build |
+------------------------------------------------------------------------------+
Unpack source
-------------
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 3.0 (quilt)
Source: pylibtiff
Binary: python3-libtiff, pylibtiff
Architecture: any all
Version: 0.6.1-1
Maintainer: Debian GIS Project <pkg-grass-devel@lists.alioth.debian.org>
Uploaders: Antonio Valentino <antonio.valentino@tiscali.it>
Homepage: https://github.com/pearu/pylibtiff
Description: wrapper to the libtiff library to Python using ctypes
PyLibTiff is a package that provides:
.
* a wrapper to the libtiff library to Python using ctypes.
* a pure Python module for reading and writing TIFF and LSM files. The images
are read as numpy.memmap objects so that it is possible to open images that
otherwise would not fit to computers RAM.
.
There exists many Python packages such as PIL, FreeImagePy that support reading
and writing TIFF files. The PyLibTiff project was started to have an efficient
and direct way to read and write TIFF files using the libtiff library without
the need to install any unnecessary packages or libraries. The pure Python
module was created for reading "broken" TIFF files such as LSM files that in
some places use different interpretation of TIFF tags than what specified in
the TIFF specification document. The libtiff library would just fail reading
such files. In addition, the pure Python module is more memory efficient as the
arrays are returned as memory maps. Support for compressed files is not
implemented yet.
.
Warning: pylibtiff currently supports reading and writing images that are
stored using TIFF strips. Patches are welcome to support tiled TIFF images.
Standards-Version: 4.6.2
Vcs-Browser: https://salsa.debian.org/debian-gis-team/pylibtiff
Vcs-Git: https://salsa.debian.org/debian-gis-team/pylibtiff.git
Testsuite: autopkgtest-pkg-pybuild
Build-Depends: debhelper-compat (= 13), dh-python, dh-sequence-numpy3, dh-sequence-python3, libtiff-dev, pybuild-plugin-pyproject, python3-all-dev, python3-bitarray, python3-numpy, python3-pytest <!nocheck>, python3-setuptools, python3-setuptools-scm
Package-List:
pylibtiff deb utils optional arch=all
python3-libtiff deb python optional arch=any
Checksums-Sha1:
4acc21b6fdf4cd6b234c645da54556f67b5fbbb7 89172 pylibtiff_0.6.1.orig.tar.gz
74cfc16bb5a86b195f07ce59e3ba41bbe13d0014 8416 pylibtiff_0.6.1-1.debian.tar.xz
Checksums-Sha256:
2aa867ac8f001927acee6599246acde47ec7fc60753a5326e65170fb08606bdf 89172 pylibtiff_0.6.1.orig.tar.gz
476b7b3344ff2cbfd264db0ccebe77ad0fd4fcad0dfa7616b3c6fb2906d099b4 8416 pylibtiff_0.6.1-1.debian.tar.xz
Files:
a3cd57e74441266bc1556e6a55072605 89172 pylibtiff_0.6.1.orig.tar.gz
0b49dc4ac8ab726e29c4c28d1ffef223 8416 pylibtiff_0.6.1-1.debian.tar.xz
-----BEGIN PGP SIGNATURE-----
iQJRBAEBCgA7FiEEO3DyCaX/1okDxHLF6/SKslePmBIFAmUPHn8dHGFudG9uaW8u
dmFsZW50aW5vQHRpc2NhbGkuaXQACgkQ6/SKslePmBIX3xAAutXVReHVZvmv/vBF
e45rsfmkdhtQd/Ph9SBf8+SJg+hyCjP0ySlmy2vZQlPECO6092W1XcJT1wQlfeOR
TQYECx05sHVkVfQdjRz+HWosoclurLD7M0yKkY+Ip4qbP+nbThyKy7G1mtLl7RJe
37GUtiHFH7heGKKKyJK0rTnVQDDU+c4PTwKbh1E6vk6RNNmOP0qA73rYbmHec1pl
olMHR0ZtT1NEguW/GKi+bul061F7FQg8LmLCVXImZQHq+KLpQiKrBgVct0mcxnI2
6fDJDt5vvFpyoBfWWrpfHrajxksq/Jr/MBXINiSeitBfHY40WI30poEpeay9S2LW
Rs4fw4DZxdYNdThlecW5r1E/C65CY2yOSu0WMDg3mqCq9pw0inMY945quy3Q5k8Y
yIsk7yetKDDbIDwwGgyCh+gS8HlS6oYofx3ew5R9zpzs2Ah8ismG1BccZ+9Vt7GT
CD7vu/9zCGUh/A30/6668Qw7bwWQSFBcNDoUj3LmLoisImNg0O+GW46FNaUlD62Y
IBOzpVGw5Q2/Da2c/2iAttdtB8Bn/nUTRGgwXH5aMbJlKcc6xJYUYJeY55IE9e5h
KSoFdk8Tf7mZbXSZZCtSY49w7wvOeQQz0pNUIyB2Be7j53QNr6ilQPH/j06THGrD
LwmTGSgmESbP66Qw+rccWKt1UpI=
=3UpS
-----END PGP SIGNATURE-----
gpgv: Signature made Sat Sep 23 17:21:03 2023 UTC
gpgv: using RSA key 3B70F209A5FFD68903C472C5EBF48AB2578F9812
gpgv: issuer "antonio.valentino@tiscali.it"
gpgv: Can't check signature: No public key
dpkg-source: warning: cannot verify inline signature for ./pylibtiff_0.6.1-1.dsc: no acceptable signature found
dpkg-source: info: extracting pylibtiff in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking pylibtiff_0.6.1.orig.tar.gz
dpkg-source: info: unpacking pylibtiff_0.6.1-1.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying 0001-Disable-bittools-extension.patch
dpkg-source: info: applying 0002-Robust-definition-list-generation.patch
Check disk space
----------------
Sufficient free space for build
Hack binNMU version
-------------------
Created changelog entry for binNMU version 0.6.1-1+bd1
User Environment
----------------
APT_CONFIG=/var/lib/sbuild/apt.conf
HOME=/sbuild-nonexistent
LANG=en_US.UTF-8
LC_ALL=C.UTF-8
LOGNAME=debusine-worker
OLDPWD=/
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PWD=/<<PKGBUILDDIR>>
SHELL=/bin/sh
USER=debusine-worker
dpkg-buildpackage
-----------------
Command: dpkg-buildpackage --sanitize-env -us -uc -mDebusine Rebuild <debusine@example.net> -B -rfakeroot
dpkg-buildpackage: info: source package pylibtiff
dpkg-buildpackage: info: source version 0.6.1-1+bd1
dpkg-buildpackage: info: source distribution sid
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture arm64
debian/rules clean
dh clean --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary-arch
dh binary-arch --buildsystem=pybuild
dh_update_autotools_config -a -O--buildsystem=pybuild
dh_autoreconf -a -O--buildsystem=pybuild
dh_auto_configure -a -O--buildsystem=pybuild
dh_auto_build -a -O--buildsystem=pybuild
I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" module
I: pybuild base:311: python3.12 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12
* Building wheel...
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-aarch64-cpython-312
creating build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_9.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_6_0.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_3_8_2.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_3_9_4.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_2.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_3_9_5.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/test_bittools.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_4_0.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_sample_plane.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/libtiff_ctypes.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_10.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_array.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/script_options.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_3.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_2_0.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_5_0.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_1_0.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_file.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_3_9_2.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_3_0.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_channels_and_files.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_7.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_6.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_image.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/version.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/lzw.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_8.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/utils.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_h_4_0_1.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/lsm.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_base.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_files.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/tiff_data.py -> build/lib.linux-aarch64-cpython-312/libtiff
copying libtiff/__init__.py -> build/lib.linux-aarch64-cpython-312/libtiff
creating build/lib.linux-aarch64-cpython-312/libtiff/scripts
copying libtiff/scripts/info.py -> build/lib.linux-aarch64-cpython-312/libtiff/scripts
copying libtiff/scripts/convert.py -> build/lib.linux-aarch64-cpython-312/libtiff/scripts
copying libtiff/scripts/__init__.py -> build/lib.linux-aarch64-cpython-312/libtiff/scripts
running egg_info
creating pylibtiff.egg-info
writing pylibtiff.egg-info/PKG-INFO
writing dependency_links to pylibtiff.egg-info/dependency_links.txt
writing entry points to pylibtiff.egg-info/entry_points.txt
writing requirements to pylibtiff.egg-info/requires.txt
writing top-level names to pylibtiff.egg-info/top_level.txt
writing manifest file 'pylibtiff.egg-info/SOURCES.txt'
WARNING setuptools_scm._file_finders.git git archive detected - fallback to listing all files
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'pylibtiff.egg-info/SOURCES.txt'
/usr/lib/python3/dist-packages/setuptools/command/build_py.py:218: _Warning: Package 'libtiff.src' is absent from the `packages` configuration.
!!
********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'libtiff.src' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.
This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'libtiff.src' is explicitly added
to the `packages` configuration field.
Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
If you don't want 'libtiff.src' to be distributed and are
already explicitly excluding 'libtiff.src' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.
You can read more about "package data files" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/datafiles.html
[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************
!!
check.warn(importable)
/usr/lib/python3/dist-packages/setuptools/command/build_py.py:218: _Warning: Package 'libtiff.tests' is absent from the `packages` configuration.
!!
********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'libtiff.tests' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.
This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'libtiff.tests' is explicitly added
to the `packages` configuration field.
Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
If you don't want 'libtiff.tests' to be distributed and are
already explicitly excluding 'libtiff.tests' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.
You can read more about "package data files" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/datafiles.html
[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************
!!
check.warn(importable)
creating build/lib.linux-aarch64-cpython-312/libtiff/src
copying libtiff/src/bittools.c -> build/lib.linux-aarch64-cpython-312/libtiff/src
copying libtiff/src/tif_lzw.c -> build/lib.linux-aarch64-cpython-312/libtiff/src
creating build/lib.linux-aarch64-cpython-312/libtiff/tests
copying libtiff/tests/test_libtiff_ctypes.py -> build/lib.linux-aarch64-cpython-312/libtiff/tests
copying libtiff/tests/test_lzw.py -> build/lib.linux-aarch64-cpython-312/libtiff/tests
copying libtiff/tests/test_simple.py -> build/lib.linux-aarch64-cpython-312/libtiff/tests
copying libtiff/tests/test_tiff_array.py -> build/lib.linux-aarch64-cpython-312/libtiff/tests
copying libtiff/tests/test_tiff_file.py -> build/lib.linux-aarch64-cpython-312/libtiff/tests
copying libtiff/tests/test_tiff_image.py -> build/lib.linux-aarch64-cpython-312/libtiff/tests
running build_ext
building 'libtiff.bittools' extension
creating build/temp.linux-aarch64-cpython-312
creating build/temp.linux-aarch64-cpython-312/libtiff
creating build/temp.linux-aarch64-cpython-312/libtiff/src
aarch64-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/lib/aarch64-linux-gnu/python3-numpy/numpy/_core/include -I/usr/include/python3.12 -c libtiff/src/bittools.c -o build/temp.linux-aarch64-cpython-312/libtiff/src/bittools.o
libtiff/src/bittools.c: In function ‘getbit’:
libtiff/src/bittools.c:42:13: warning: comparison of integer expressions of different signedness: ‘Py_ssize_t’ {aka ‘long int’} and ‘long unsigned int’ [-Wsign-compare]
42 | if (index >= BITS(PyArray_NBYTES((PyArrayObject*)arr)))
| ^~
libtiff/src/bittools.c: In function ‘getword’:
libtiff/src/bittools.c:95:24: warning: comparison of integer expressions of different signedness: ‘Py_ssize_t’ {aka ‘long int’} and ‘long unsigned int’ [-Wsign-compare]
95 | if (((index+width-1) >= BITS(PyArray_NBYTES((PyArrayObject*)arr))) || (width<0))
| ^~
libtiff/src/bittools.c: In function ‘setword’:
libtiff/src/bittools.c:141:27: warning: comparison of integer expressions of different signedness: ‘Py_ssize_t’ {aka ‘long int’} and ‘long unsigned int’ [-Wsign-compare]
141 | if ((index+width-1) >= BITS(PyArray_NBYTES((PyArrayObject*)arr)) || width<0)
| ^~
aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-aarch64-cpython-312/libtiff/src/bittools.o -L/usr/lib/aarch64-linux-gnu -o build/lib.linux-aarch64-cpython-312/libtiff/bittools.cpython-312-aarch64-linux-gnu.so
building 'libtiff.tif_lzw' extension
aarch64-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/lib/aarch64-linux-gnu/python3-numpy/numpy/_core/include -I/usr/include/python3.12 -c libtiff/src/tif_lzw.c -o build/temp.linux-aarch64-cpython-312/libtiff/src/tif_lzw.o
aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-aarch64-cpython-312/libtiff/src/tif_lzw.o -L/usr/lib/aarch64-linux-gnu -o build/lib.linux-aarch64-cpython-312/libtiff/tif_lzw.cpython-312-aarch64-linux-gnu.so
installing to build/bdist.linux-aarch64/wheel
running install
running install_lib
creating build/bdist.linux-aarch64
creating build/bdist.linux-aarch64/wheel
creating build/bdist.linux-aarch64/wheel/libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_9.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_6_0.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_3_8_2.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_3_9_4.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tif_lzw.cpython-312-aarch64-linux-gnu.so -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_2.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_3_9_5.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/test_bittools.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_4_0.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_sample_plane.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/libtiff_ctypes.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_10.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_array.py -> build/bdist.linux-aarch64/wheel/./libtiff
creating build/bdist.linux-aarch64/wheel/libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/tests/test_lzw.py -> build/bdist.linux-aarch64/wheel/./libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/tests/test_simple.py -> build/bdist.linux-aarch64/wheel/./libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/tests/test_libtiff_ctypes.py -> build/bdist.linux-aarch64/wheel/./libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/tests/test_tiff_file.py -> build/bdist.linux-aarch64/wheel/./libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/tests/test_tiff_array.py -> build/bdist.linux-aarch64/wheel/./libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/tests/test_tiff_image.py -> build/bdist.linux-aarch64/wheel/./libtiff/tests
copying build/lib.linux-aarch64-cpython-312/libtiff/script_options.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_3.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_2_0.py -> build/bdist.linux-aarch64/wheel/./libtiff
creating build/bdist.linux-aarch64/wheel/libtiff/src
copying build/lib.linux-aarch64-cpython-312/libtiff/src/bittools.c -> build/bdist.linux-aarch64/wheel/./libtiff/src
copying build/lib.linux-aarch64-cpython-312/libtiff/src/tif_lzw.c -> build/bdist.linux-aarch64/wheel/./libtiff/src
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_5_0.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_1_0.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_file.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_3_9_2.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_3_0.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_channels_and_files.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_7.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_6.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_image.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/bittools.cpython-312-aarch64-linux-gnu.so -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/version.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/lzw.py -> build/bdist.linux-aarch64/wheel/./libtiff
creating build/bdist.linux-aarch64/wheel/libtiff/scripts
copying build/lib.linux-aarch64-cpython-312/libtiff/scripts/info.py -> build/bdist.linux-aarch64/wheel/./libtiff/scripts
copying build/lib.linux-aarch64-cpython-312/libtiff/scripts/convert.py -> build/bdist.linux-aarch64/wheel/./libtiff/scripts
copying build/lib.linux-aarch64-cpython-312/libtiff/scripts/__init__.py -> build/bdist.linux-aarch64/wheel/./libtiff/scripts
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_8.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/utils.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_h_4_0_1.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/lsm.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_base.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_files.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/tiff_data.py -> build/bdist.linux-aarch64/wheel/./libtiff
copying build/lib.linux-aarch64-cpython-312/libtiff/__init__.py -> build/bdist.linux-aarch64/wheel/./libtiff
running install_egg_info
Copying pylibtiff.egg-info to build/bdist.linux-aarch64/wheel/./pylibtiff-0.6.1.egg-info
running install_scripts
creating build/bdist.linux-aarch64/wheel/pylibtiff-0.6.1.dist-info/WHEEL
creating '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/.tmp-ns8ujrdy/pylibtiff-0.6.1-cp312-cp312-linux_aarch64.whl' and adding 'build/bdist.linux-aarch64/wheel' to it
adding 'libtiff/__init__.py'
adding 'libtiff/bittools.cpython-312-aarch64-linux-gnu.so'
adding 'libtiff/libtiff_ctypes.py'
adding 'libtiff/lsm.py'
adding 'libtiff/lzw.py'
adding 'libtiff/script_options.py'
adding 'libtiff/test_bittools.py'
adding 'libtiff/tif_lzw.cpython-312-aarch64-linux-gnu.so'
adding 'libtiff/tiff.py'
adding 'libtiff/tiff_array.py'
adding 'libtiff/tiff_base.py'
adding 'libtiff/tiff_channels_and_files.py'
adding 'libtiff/tiff_data.py'
adding 'libtiff/tiff_file.py'
adding 'libtiff/tiff_files.py'
adding 'libtiff/tiff_h_3_8_2.py'
adding 'libtiff/tiff_h_3_9_2.py'
adding 'libtiff/tiff_h_3_9_4.py'
adding 'libtiff/tiff_h_3_9_5.py'
adding 'libtiff/tiff_h_4_0_1.py'
adding 'libtiff/tiff_h_4_0_10.py'
adding 'libtiff/tiff_h_4_0_2.py'
adding 'libtiff/tiff_h_4_0_3.py'
adding 'libtiff/tiff_h_4_0_6.py'
adding 'libtiff/tiff_h_4_0_7.py'
adding 'libtiff/tiff_h_4_0_8.py'
adding 'libtiff/tiff_h_4_0_9.py'
adding 'libtiff/tiff_h_4_1_0.py'
adding 'libtiff/tiff_h_4_2_0.py'
adding 'libtiff/tiff_h_4_3_0.py'
adding 'libtiff/tiff_h_4_4_0.py'
adding 'libtiff/tiff_h_4_5_0.py'
adding 'libtiff/tiff_h_4_6_0.py'
adding 'libtiff/tiff_image.py'
adding 'libtiff/tiff_sample_plane.py'
adding 'libtiff/utils.py'
adding 'libtiff/version.py'
adding 'libtiff/scripts/__init__.py'
adding 'libtiff/scripts/convert.py'
adding 'libtiff/scripts/info.py'
adding 'libtiff/src/bittools.c'
adding 'libtiff/src/tif_lzw.c'
adding 'libtiff/tests/test_libtiff_ctypes.py'
adding 'libtiff/tests/test_lzw.py'
adding 'libtiff/tests/test_simple.py'
adding 'libtiff/tests/test_tiff_array.py'
adding 'libtiff/tests/test_tiff_file.py'
adding 'libtiff/tests/test_tiff_image.py'
adding 'pylibtiff-0.6.1.dist-info/LICENSE'
adding 'pylibtiff-0.6.1.dist-info/METADATA'
adding 'pylibtiff-0.6.1.dist-info/WHEEL'
adding 'pylibtiff-0.6.1.dist-info/entry_points.txt'
adding 'pylibtiff-0.6.1.dist-info/top_level.txt'
adding 'pylibtiff-0.6.1.dist-info/RECORD'
removing build/bdist.linux-aarch64/wheel
Successfully built pylibtiff-0.6.1-cp312-cp312-linux_aarch64.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module
dh_auto_test -a -O--buildsystem=pybuild
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; python3.12 -m pytest -k "not test_issue19" /<<PKGBUILDDIR>>/libtiff/tests
============================= test session starts ==============================
platform linux -- Python 3.12.6, pytest-8.3.3, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>
configfile: pyproject.toml
plugins: typeguard-4.3.0
collected 44 items / 1 deselected / 43 selected
../../../libtiff/tests/test_libtiff_ctypes.py . [ 2%]
../../../libtiff/tests/test_lzw.py . [ 4%]
../../../libtiff/tests/test_simple.py FF [ 9%]
../../../libtiff/tests/test_tiff_array.py F [ 11%]
../../../libtiff/tests/test_tiff_file.py F [ 13%]
../../../libtiff/tests/test_tiff_image.py FFFFFFFFFFFFFFFFFFFFFFFFF.F... [ 83%]
F...... [100%]
=================================== FAILURES ===================================
_______________________________ test_write_read ________________________________
def test_write_read():
for itype in [uint8, uint16, uint32, uint64,
int8, int16, int32, int64,
float32, float64,
complex64, complex128]:
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFF.open(fn, 'w')
> tif.write_image(image)
../../../libtiff/tests/test_simple.py:17:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/libtiff_ctypes.py:662: in write_image
if arr.dtype in np.sctypes['float']:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
attr = 'sctypes'
def __getattr__(attr):
# Warn for expired attributes
import warnings
if attr == "linalg":
import numpy.linalg as linalg
return linalg
elif attr == "fft":
import numpy.fft as fft
return fft
elif attr == "dtypes":
import numpy.dtypes as dtypes
return dtypes
elif attr == "random":
import numpy.random as random
return random
elif attr == "polynomial":
import numpy.polynomial as polynomial
return polynomial
elif attr == "ma":
import numpy.ma as ma
return ma
elif attr == "ctypeslib":
import numpy.ctypeslib as ctypeslib
return ctypeslib
elif attr == "exceptions":
import numpy.exceptions as exceptions
return exceptions
elif attr == "testing":
import numpy.testing as testing
return testing
elif attr == "matlib":
import numpy.matlib as matlib
return matlib
elif attr == "f2py":
import numpy.f2py as f2py
return f2py
elif attr == "typing":
import numpy.typing as typing
return typing
elif attr == "rec":
import numpy.rec as rec
return rec
elif attr == "char":
import numpy.char as char
return char
elif attr == "array_api":
raise AttributeError("`numpy.array_api` is not available from "
"numpy 2.0 onwards", name=None)
elif attr == "core":
import numpy.core as core
return core
elif attr == "strings":
import numpy.strings as strings
return strings
elif attr == "distutils":
if 'distutils' in __numpy_submodules__:
import numpy.distutils as distutils
return distutils
else:
raise AttributeError("`numpy.distutils` is not available from "
"Python 3.12 onwards", name=None)
if attr in __future_scalars__:
# And future warnings for those that will change, but also give
# the AttributeError
warnings.warn(
f"In the future `np.{attr}` will be defined as the "
"corresponding NumPy scalar.", FutureWarning, stacklevel=2)
if attr in __former_attrs__:
raise AttributeError(__former_attrs__[attr], name=None)
if attr in __expired_attributes__:
> raise AttributeError(
f"`np.{attr}` was removed in the NumPy 2.0 release. "
f"{__expired_attributes__[attr]}",
name=None
)
E AttributeError: `np.sctypes` was removed in the NumPy 2.0 release. Access dtypes explicitly instead.
/usr/lib/python3/dist-packages/numpy/__init__.py:400: AttributeError
_________________________________ test_slicing _________________________________
def test_slicing():
shape = (16, 16)
image = random.randint(255, size=shape)
for i in range(shape[0]):
for j in range(shape[1]):
image1 = image[:i + 1, :j + 1]
fn = mktemp('.tif')
tif = TIFF.open(fn, 'w')
> tif.write_image(image1)
../../../libtiff/tests/test_simple.py:38:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/libtiff_ctypes.py:662: in write_image
if arr.dtype in np.sctypes['float']:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
attr = 'sctypes'
def __getattr__(attr):
# Warn for expired attributes
import warnings
if attr == "linalg":
import numpy.linalg as linalg
return linalg
elif attr == "fft":
import numpy.fft as fft
return fft
elif attr == "dtypes":
import numpy.dtypes as dtypes
return dtypes
elif attr == "random":
import numpy.random as random
return random
elif attr == "polynomial":
import numpy.polynomial as polynomial
return polynomial
elif attr == "ma":
import numpy.ma as ma
return ma
elif attr == "ctypeslib":
import numpy.ctypeslib as ctypeslib
return ctypeslib
elif attr == "exceptions":
import numpy.exceptions as exceptions
return exceptions
elif attr == "testing":
import numpy.testing as testing
return testing
elif attr == "matlib":
import numpy.matlib as matlib
return matlib
elif attr == "f2py":
import numpy.f2py as f2py
return f2py
elif attr == "typing":
import numpy.typing as typing
return typing
elif attr == "rec":
import numpy.rec as rec
return rec
elif attr == "char":
import numpy.char as char
return char
elif attr == "array_api":
raise AttributeError("`numpy.array_api` is not available from "
"numpy 2.0 onwards", name=None)
elif attr == "core":
import numpy.core as core
return core
elif attr == "strings":
import numpy.strings as strings
return strings
elif attr == "distutils":
if 'distutils' in __numpy_submodules__:
import numpy.distutils as distutils
return distutils
else:
raise AttributeError("`numpy.distutils` is not available from "
"Python 3.12 onwards", name=None)
if attr in __future_scalars__:
# And future warnings for those that will change, but also give
# the AttributeError
warnings.warn(
f"In the future `np.{attr}` will be defined as the "
"corresponding NumPy scalar.", FutureWarning, stacklevel=2)
if attr in __former_attrs__:
raise AttributeError(__former_attrs__[attr], name=None)
if attr in __expired_attributes__:
> raise AttributeError(
f"`np.{attr}` was removed in the NumPy 2.0 release. "
f"{__expired_attributes__[attr]}",
name=None
)
E AttributeError: `np.sctypes` was removed in the NumPy 2.0 release. Access dtypes explicitly instead.
/usr/lib/python3/dist-packages/numpy/__init__.py:400: AttributeError
_____________________________ test_simple_slicing ______________________________
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
def test_simple_slicing():
for planar_config in [1, 2]:
for compression in [None, 'lzw']:
for itype in [uint8, uint16, uint32, uint64,
int8, int16, int32, int64,
float32, float64,
complex64, complex128]:
image = random.randint(0, 100, size=(10, 6, 7)).astype(itype)
fn = mktemp('.tif')
if 0:
if planar_config == 2:
continue
tif = TIFF.open(fn, 'w')
tif.write_image(image, compression=compression)
tif.close()
else:
tif = TIFFimage(image)
> tif.write_file(fn,
compression=compression,
planar_config=planar_config)
../../../libtiff/tests/test_tiff_array.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7d058c50>
filename = '/tmp/tmp0ep1h6ca.tif', compression = 0.84, strip_size = 8192
planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -80 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
_______________________________ test_write_read ________________________________
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
def test_write_read():
for compression in [None, 'lzw']:
for itype in [uint8, uint16, uint32, uint64,
int8, int16, int32, int64,
float32, float64,
complex64, complex128]:
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
if 0:
tif = TIFF.open(fn, 'w')
tif.write_image(image, compression=compression)
tif.close()
else:
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_file.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(6)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________________ test_rw_rgb __________________________________
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
def test_rw_rgb():
itype = uint8
dt = dtype(dict(names=list('rgb'), formats=[itype] * 3))
image = zeros((2, 3), dtype=dt)
image['r'][:, 0] = 250
image['g'][:, 1] = 251
image['b'][:, 2] = 252
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression='lzw') # , samples='rgb')
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:34:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(15)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-uint8] __________________________
compression = 'none', itype = <class 'numpy.uint8'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(6)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-uint16] _________________________
compression = 'none', itype = <class 'numpy.uint16'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(12)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-uint32] _________________________
compression = 'none', itype = <class 'numpy.uint32'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(24)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-uint64] _________________________
compression = 'none', itype = <class 'numpy.uint64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(48)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
__________________________ test_write_read[none-int8] __________________________
compression = 'none', itype = <class 'numpy.int8'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(6)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-int16] __________________________
compression = 'none', itype = <class 'numpy.int16'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(12)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-int32] __________________________
compression = 'none', itype = <class 'numpy.int32'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(24)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[none-int64] __________________________
compression = 'none', itype = <class 'numpy.int64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(48)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
________________________ test_write_read[none-float32] _________________________
compression = 'none', itype = <class 'numpy.float32'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(24)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
________________________ test_write_read[none-float64] _________________________
compression = 'none', itype = <class 'numpy.float64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(48)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_______________________ test_write_read[none-complex64] ________________________
compression = 'none', itype = <class 'numpy.complex64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(48)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_______________________ test_write_read[none-complex128] _______________________
compression = 'none', itype = <class 'numpy.complex128'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(96)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
__________________________ test_write_read[lzw-uint8] __________________________
compression = 'lzw', itype = <class 'numpy.uint8'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
> tif.write_file(fn, compression=compression)
../../../libtiff/tests/test_tiff_image.py:51:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7eaf8410>
filename = '/tmp/tmpzr_ssjz0.tif', compression = 0.6666666666666666
strip_size = 8192, planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -3 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
_________________________ test_write_read[lzw-uint16] __________________________
compression = 'lzw', itype = <class 'numpy.uint16'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
> tif.write_file(fn, compression=compression)
../../../libtiff/tests/test_tiff_image.py:51:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7d0ae9c0>
filename = '/tmp/tmpchndjogs.tif', compression = 0.75, strip_size = 8192
planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -4 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
_________________________ test_write_read[lzw-uint32] __________________________
compression = 'lzw', itype = <class 'numpy.uint32'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(18)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[lzw-uint64] __________________________
compression = 'lzw', itype = <class 'numpy.uint64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(23)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
__________________________ test_write_read[lzw-int8] ___________________________
compression = 'lzw', itype = <class 'numpy.int8'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
> tif.write_file(fn, compression=compression)
../../../libtiff/tests/test_tiff_image.py:51:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7d0a9af0>
filename = '/tmp/tmpzrtnh9ay.tif', compression = 0.6666666666666666
strip_size = 8192, planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -3 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
__________________________ test_write_read[lzw-int16] __________________________
compression = 'lzw', itype = <class 'numpy.int16'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
> tif.write_file(fn, compression=compression)
../../../libtiff/tests/test_tiff_image.py:51:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7d0b3c20>
filename = '/tmp/tmpiu4tlrcd.tif', compression = 0.75, strip_size = 8192
planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -4 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
__________________________ test_write_read[lzw-int32] __________________________
compression = 'lzw', itype = <class 'numpy.int32'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(18)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
__________________________ test_write_read[lzw-int64] __________________________
compression = 'lzw', itype = <class 'numpy.int64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(23)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[lzw-float32] _________________________
compression = 'lzw', itype = <class 'numpy.float32'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(21)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_________________________ test_write_read[lzw-float64] _________________________
compression = 'lzw', itype = <class 'numpy.float64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(26)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
________________________ test_write_read[lzw-complex64] ________________________
compression = 'lzw', itype = <class 'numpy.complex64'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(25)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
_______________________ test_write_read[lzw-complex128] ________________________
compression = 'lzw', itype = <class 'numpy.complex128'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
@pytest.mark.parametrize("compression", ["none", "lzw"])
def test_write_read(compression, itype):
image = array([[1, 2, 3], [4, 5, 6]], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
tif.write_file(fn, compression=compression)
del tif
tif = TIFFfile(fn)
> data, names = tif.get_samples()
../../../libtiff/tests/test_tiff_image.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
libtiff/tiff_file.py:487: in get_samples
strip_length_str = bytes2str(strip_length)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
bytes = np.uint32(34)
def bytes2str(bytes):
lst = []
> Pbytes = bytes // 1024**5
E OverflowError: Python integer 1125899906842624 out of bounds for uint32
libtiff/utils.py:22: OverflowError
____________________________ test_write_lzw[uint16] ____________________________
itype = <class 'numpy.uint16'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
def test_write_lzw(itype):
if issubdtype(itype, integer):
# avoid overflow failure from numpy for integer types
image = array([list(range(10000))]).astype(itype)
else:
image = array([list(range(10000))], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
> tif.write_file(fn, compression='lzw')
../../../libtiff/tests/test_tiff_image.py:75:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7cf3f620>
filename = '/tmp/tmp53hiv0hd.tif', compression = 0.7191140514885661
strip_size = 8192, planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -7812 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
____________________________ test_write_lzw[int16] _____________________________
itype = <class 'numpy.int16'>
@pytest.mark.skipif(sys.platform == "darwin", reason="OSX can't resize mmap")
@pytest.mark.parametrize("itype", SUPPORTED_DTYPES)
def test_write_lzw(itype):
if issubdtype(itype, integer):
# avoid overflow failure from numpy for integer types
image = array([list(range(10000))]).astype(itype)
else:
image = array([list(range(10000))], itype)
fn = mktemp('.tif')
tif = TIFFimage(image)
> tif.write_file(fn, compression='lzw')
../../../libtiff/tests/test_tiff_image.py:75:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <libtiff.tiff_image.TIFFimage object at 0xffff7cf3f9b0>
filename = '/tmp/tmpss2zp2xx.tif', compression = 0.7191140514885661
strip_size = 8192, planar_config = 1, validate = False, verbose = False
def write_file(self, filename, compression='none',
strip_size=2 ** 13, planar_config=1,
validate=False, verbose=None):
"""
Write image data to TIFF file.
Parameters
----------
filename : str
compression : {'none', 'lzw'}
strip_size : int
Specify the size of uncompressed strip.
planar_config : int
validate : bool
When True then check compression by decompression.
verbose : {bool, None}
When True then write progress information to stdout. When None
then verbose is assumed for data that has size over 1MB.
Returns
-------
compression : float
Compression factor.
"""
if verbose is None:
nbytes = self.depth * self.length * self.width * \
self.dtype.itemsize
verbose = nbytes >= 1024 ** 2
if os.path.splitext(filename)[1].lower() not in ['.tif', '.tiff']:
filename += '.tif'
if verbose:
sys.stdout.write('Writing TIFF records to %s\n' % filename)
sys.stdout.flush()
compression_map = dict(packbits=32773, none=1, lzw=5, jpeg=6,
ccitt1d=2,
group3fax=3, group4fax=4
)
compress_map = dict(none=lambda _data: _data,
lzw=tif_lzw.encode)
decompress_map = dict(none=lambda _data, _bytes: _data,
lzw=tif_lzw.decode)
compress = compress_map.get(compression or 'none', None)
if compress is None:
raise NotImplementedError(repr(compression))
decompress = decompress_map.get(compression or 'none', None)
# compute tif file size and create image file directories data
image_directories = []
total_size = 8
data_size = 0
image_data_size = 0
for i, image in enumerate(self.data):
if verbose:
sys.stdout.write('\r creating records: %5s%% done ' % (
int(100.0 * i / len(self.data))))
sys.stdout.flush()
if image.dtype.kind == 'V' and len(
image.dtype.names) == 3: # RGB image
sample_format = dict(u=1, i=2, f=3, c=6).get(
image.dtype.fields[image.dtype.names[0]][0].kind)
bits_per_sample = [image.dtype.fields[f][0].itemsize * 8 for f
in image.dtype.names]
samples_per_pixel = 3
photometric_interpretation = 2
else: # gray scale image
sample_format = dict(u=1, i=2, f=3, c=6).get(image.dtype.kind)
bits_per_sample = image.dtype.itemsize * 8
samples_per_pixel = 1
photometric_interpretation = 1
if sample_format is None:
print('Warning(TIFFimage.write_file): unknown data kind %r, '
'mapping to void' % image.dtype.kind)
sample_format = 4
length, width = image.shape
bytes_per_row = width * image.dtype.itemsize
rows_per_strip = min(length,
int(numpy.ceil(
float(strip_size) / bytes_per_row)))
strips_per_image = int(
numpy.floor(float(
length + rows_per_strip - 1) / rows_per_strip))
assert bytes_per_row * rows_per_strip * \
strips_per_image >= image.nbytes
d = dict(ImageWidth=width,
ImageLength=length,
Compression=compression_map.get(compression, 1),
PhotometricInterpretation=photometric_interpretation,
PlanarConfiguration=planar_config,
Orientation=1,
ResolutionUnit=1,
XResolution=1,
YResolution=1,
SamplesPerPixel=samples_per_pixel,
RowsPerStrip=rows_per_strip,
BitsPerSample=bits_per_sample,
SampleFormat=sample_format,
)
if i == 0:
d.update(dict(
ImageDescription=self.description,
Software='http://code.google.com/p/pylibtiff/'))
entries = []
for tagname, value in list(d.items()):
entry = TIFFentry(tagname)
entry.add_value(value)
entries.append(entry)
total_size += 12 + entry.nbytes
data_size += entry.nbytes
strip_byte_counts = TIFFentry('StripByteCounts')
strip_offsets = TIFFentry('StripOffsets')
entries.append(strip_byte_counts)
entries.append(strip_offsets)
# strip_offsets and strip_byte_counts will be filled in the next
# loop
if strips_per_image == 1:
assert strip_byte_counts.type_nbytes <= 4
assert strip_offsets.type_nbytes <= 4
total_size += 2 * 12
else:
total_size += 2 * 12 + strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
data_size += strips_per_image * (
strip_byte_counts.type_nbytes + strip_offsets.type_nbytes)
# image data:
total_size += image.nbytes
data_size += image.nbytes
image_data_size += image.nbytes
# records for nof IFD entries and offset to the next IFD:
total_size += 2 + 4
# entries must be sorted by tag number
entries.sort(key=lambda x: x.tag)
strip_info = strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row
image_directories.append((entries, strip_info, image))
tif = numpy.memmap(filename, dtype=numpy.ubyte, mode='w+',
shape=(total_size,))
# noinspection PyProtectedMember
def tif_write(_tif, _offset, _data):
end = _offset + _data.nbytes
if end > _tif.size:
size_incr = int(
float(end - _tif.size) / 1024 ** 2 + 1) * 1024 ** 2
new_size = _tif.size + size_incr
assert end <= new_size, repr(
(end, _tif.size, size_incr, new_size))
# sys.stdout.write('resizing: %s -> %s\n' % (tif.size,
# new_size))
# tif.resize(end, refcheck=False)
_base = _tif._mmap
if _base is None:
_base = _tif.base
_base.resize(new_size)
new_tif = numpy.ndarray.__new__(numpy.memmap, (_base.size(),),
dtype=_tif.dtype, buffer=_base)
new_tif._parent = _tif
new_tif.__array_finalize__(_tif)
_tif = new_tif
_tif[_offset:end] = _data
return _tif
# write TIFF header
tif[:2].view(dtype=numpy.uint16)[0] = 0x4949 # low-endian
tif[2:4].view(dtype=numpy.uint16)[0] = 42 # magic number
tif[4:8].view(dtype=numpy.uint32)[0] = 8 # offset to the first IFD
offset = 8
data_offset = total_size - data_size
image_data_offset = total_size - image_data_size
first_data_offset = data_offset
first_image_data_offset = image_data_offset
start_time = time.time()
compressed_data_size = 0
for i, (entries, strip_info, image) in enumerate(image_directories):
strip_offsets, strip_byte_counts, strips_per_image, \
rows_per_strip, bytes_per_row = strip_info
# write the nof IFD entries
tif[offset:offset + 2].view(dtype=numpy.uint16)[0] = len(entries)
offset += 2
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
# write image data
data = image.view(dtype=numpy.ubyte).reshape((image.nbytes,))
for j in range(strips_per_image):
c = rows_per_strip * bytes_per_row
k = j * c
c -= max((j + 1) * c - image.nbytes, 0)
assert c > 0, repr(c)
orig_strip = data[k:k + c] # type: numpy.ndarray
strip = compress(orig_strip)
if validate:
test_strip = decompress(strip, orig_strip.nbytes)
if (orig_strip != test_strip).any():
raise RuntimeError(
'Compressed data is corrupted: cannot recover '
'original data')
compressed_data_size += strip.nbytes
# print strip.size, strip.nbytes, strip.shape,
# tif[image_data_offset:image_data_offset+strip.nbytes].shape
strip_offsets.add_value(image_data_offset)
strip_byte_counts.add_value(strip.nbytes)
tif = tif_write(tif, image_data_offset, strip)
image_data_offset += strip.nbytes
# if j == 0:
# first = strip_offsets[0]
# last = strip_offsets[-1] + strip_byte_counts[-1]
# write IFD entries
for entry in entries:
data_size = entry.nbytes
if data_size:
entry.set_offset(data_offset)
assert data_offset + data_size <= total_size, repr(
(data_offset + data_size, total_size))
r = entry.toarray(tif[data_offset:data_offset + data_size])
assert r.nbytes == data_size
data_offset += data_size
assert data_offset <= first_image_data_offset, repr(
(data_offset, first_image_data_offset, i))
tif[offset:offset + 12] = entry.record
offset += 12
assert offset <= first_data_offset, repr(
(offset, first_data_offset, i))
# write offset to the next IFD
tif[offset:offset + 4].view(dtype=numpy.uint32)[0] = offset + 4
offset += 4
assert offset <= first_data_offset, repr(
(offset, first_data_offset))
if verbose:
sys.stdout.write(
'\r filling records: %5s%% done (%s/s)%s' %
(int(100.0 * (i + 1) / len(image_directories)),
bytes2str(int(float(image_data_offset - first_image_data_offset) / (time.time() - start_time))),
' ' * 2))
if (i + 1) == len(image_directories):
sys.stdout.write('\n')
sys.stdout.flush()
# last offset must be 0
tif[offset - 4:offset].view(dtype=numpy.uint32)[0] = 0
compression = 1 / (float(compressed_data_size) / image_data_size)
if compressed_data_size != image_data_size:
sdiff = image_data_size - compressed_data_size
> total_size -= sdiff
E OverflowError: Python integer -7812 out of bounds for uint32
libtiff/tiff_image.py:440: OverflowError
=============================== warnings summary ===============================
libtiff/tests/test_tiff_array.py: 12 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/libtiff/tiff_file.py:795: DeprecationWarning: tostring() is deprecated. Use tobytes() instead.
return value.view('|S{!s}'.format(str(value.nbytes // value.size))).tostring()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED ../../../libtiff/tests/test_simple.py::test_write_read - AttributeErro...
FAILED ../../../libtiff/tests/test_simple.py::test_slicing - AttributeError: ...
FAILED ../../../libtiff/tests/test_tiff_array.py::test_simple_slicing - Overf...
FAILED ../../../libtiff/tests/test_tiff_file.py::test_write_read - OverflowEr...
FAILED ../../../libtiff/tests/test_tiff_image.py::test_rw_rgb - OverflowError...
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-uint8]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-uint16]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-uint32]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-uint64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-int8]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-int16]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-int32]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-int64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-float32]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-float64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-complex64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[none-complex128]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-uint8]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-uint16]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-uint32]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-uint64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-int8]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-int16]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-int32]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-int64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-float32]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-float64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-complex64]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_read[lzw-complex128]
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_lzw[uint16] - Ov...
FAILED ../../../libtiff/tests/test_tiff_image.py::test_write_lzw[int16] - Ove...
=========== 31 failed, 12 passed, 1 deselected, 12 warnings in 1.22s ===========
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; python3.12 -m pytest -k "not test_issue19" /<<PKGBUILDDIR>>/libtiff/tests
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.12 returned exit code 13
make: *** [debian/rules:19: binary-arch] Error 25
dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-26T11:10:31Z
Finished
--------
+------------------------------------------------------------------------------+
| Cleanup |
+------------------------------------------------------------------------------+
Purging /<<BUILDDIR>>
Not cleaning session: cloned chroot in use
E: Build failure (dpkg-buildpackage died)
+------------------------------------------------------------------------------+
| Summary |
+------------------------------------------------------------------------------+
Build Architecture: arm64
Build Type: any
Build-Space: 3508
Build-Time: 8
Distribution: sid
Fail-Stage: build
Host Architecture: arm64
Install-Time: 37
Job: /tmp/debusine-fetch-exec-upload-2ppijh23/pylibtiff_0.6.1-1.dsc
Machine Architecture: arm64
Package: pylibtiff
Package-Time: 70
Source-Version: 0.6.1-1
Space: 3508
Status: attempted
Version: 0.6.1-1+bd1
--------------------------------------------------------------------------------
Finished at 2024-09-26T11:10:31Z
Build needed 00:01:10, 3508k disk space